diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f2370313f1cd4..512481c525896 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,5 @@ { - "image":"quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8", + "image":"quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1", "containerEnv":{ "CI":"true" }, diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c0b6b7ad2c3e1..734c6e0821989 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -39,11 +39,6 @@ sensor/**/* @stackrox/sensor-ecosystem tests/performance/**/* @stackrox/sensor-ecosystem tests/roxctl/**/* @stackrox/sensor-ecosystem -# Listing all users as "Outside collaborators cannot be added to a team" -bats-tests/local/roxctl-netpol-* @zivnevo @adisos @shireenf-ibm -roxctl/netpol/**/* @zivnevo @adisos @shireenf-ibm -tests/roxctl/bats-tests/test-data/np-guard/ @zivnevo @adisos @shireenf-ibm - qa-tests-backend/**/* @janisz /ui/**/* @stackrox/ui @@ -79,9 +74,11 @@ operator/**/* @stackrox/install /sensor/kubernetes/listener/resources/secrets* @stackrox/scanner /SCANNER_VERSION @stackrox/scanner -# The RHTAP maintainers for ACS review all changes related to the Konflux (f.k.a. RHTAP) pipelines, such as new -# pipelines, parameter changes or automated task updates as well as Dockerfile updates. -**/konflux.*Dockerfile @stackrox/rhtap-maintainers -/.konflux/ @stackrox/rhtap-maintainers -/.tekton/ @stackrox/rhtap-maintainers -rpms.* @stackrox/rhtap-maintainers +# Konflux maintainers for ACS review all changes related to the Konflux pipelines, Dockerfiles, etc. +# Release engineers need to merge MintMaker PRs at the time of the release. +# rhacs-bot needs an ability to auto-approve MintMaker PRs for automated task and security updates. +**/konflux.*Dockerfile @stackrox/konflux-maintainers-no-email @stackrox/release-mgmt-no-email @rhacs-bot +/.tekton/ @stackrox/konflux-maintainers-no-email @stackrox/release-mgmt-no-email @rhacs-bot +rpms.* @stackrox/konflux-maintainers-no-email @stackrox/release-mgmt-no-email @rhacs-bot +/.konflux/ @stackrox/konflux-maintainers +.github/renovate.json5 @stackrox/konflux-maintainers diff --git a/.github/actions/job-preamble/action.yaml b/.github/actions/job-preamble/action.yaml index ba21429fbe688..81800f82bbb7c 100644 --- a/.github/actions/job-preamble/action.yaml +++ b/.github/actions/job-preamble/action.yaml @@ -1,6 +1,10 @@ name: Job Preamble description: Common steps for most jobs inputs: + free-disk-space: + description: 'Free disk space desired in GB (2025-06 ubuntu-24.04 runner starts with 20GB free and we can delete and reach 40GB)' + required: false + default: 25 gcp-account: description: 'Account to be used to upload tests data' required: true @@ -22,10 +26,22 @@ runs: set -x cleanup=( /usr/share/dotnet - /usr/local/lib/android + /usr/share/miniconda + /usr/share/swift + /usr/share/kotlinc /opt/ghc /opt/hostedtoolcache/CodeQL /opt/hostedtoolcache/Ruby + /opt/az + /usr/local/lib/android + # container jobs are lower priority: they are already slowed by container image pulls + /__t/CodeQL + /__t/Ruby + /__t/PyPy + /__t/Python + /__t/go + /__t/node + /__t/gcloud ) for d in "${cleanup[@]}"; do if [[ -d "/mnt${d}" ]]; then diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 51a2a644a53a8..fb894aa324e64 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,9 +1,9 @@ { - // This configures Konflux Renovate bot, the thing that keeps our pipelines use up-to-date tasks. + // This configures Konflux Renovate bot a.k.a. MintMaker, the thing that keeps our pipelines use up-to-date tasks. // After making changes to this file, you can validate it by running something like this in the root of the repo: // $ docker run --rm -it --entrypoint=renovate-config-validator -v "$(pwd)":/mnt -w /mnt renovate/renovate --strict - // Note: ignore errors about the config for `rpm`. This is to be addressed with https://issues.redhat.com/browse/CWFHEALTH-4117 + // Note: ignore errors about the config for `rpm-lockfile`. This is to be addressed with https://issues.redhat.com/browse/CWFHEALTH-4117 // There are more validation options, see https://docs.renovatebot.com/config-validation/ "$schema": "https://docs.renovatebot.com/renovate-schema.json", @@ -59,9 +59,10 @@ ], }, }, - "rpm": { + "rpm-lockfile": { "schedule": [ // Override Konflux custom schedule for this manager to our intended one. + // Note that MintMaker will create security updates outside of schedule. "after 3am and before 7am", ], }, @@ -69,6 +70,6 @@ // Restrict Renovate focus on Konflux things since we rely on GitHub's dependabot for everything else. "tekton", "dockerfile", - "rpm", + "rpm-lockfile", ], } diff --git a/.github/workflows/batch-load-test-metrics.yml b/.github/workflows/batch-load-test-metrics.yml index 74340e1393f8c..8c238ce10c8f0 100644 --- a/.github/workflows/batch-load-test-metrics.yml +++ b/.github/workflows/batch-load-test-metrics.yml @@ -11,7 +11,7 @@ jobs: batch-load-test-metrics: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 15ee911887efb..b9d13ecc76e10 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -109,7 +109,7 @@ jobs: UI_PKG_INSTALL_EXTRA_ARGS: --ignore-scripts runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 steps: - name: Checkout uses: actions/checkout@v4 @@ -141,7 +141,7 @@ jobs: pre-build-cli: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: - /usr:/mnt/usr - /opt:/mnt/opt @@ -182,7 +182,10 @@ jobs: needs: define-job-matrix runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 + volumes: + - /usr:/mnt/usr + - /opt:/mnt/opt steps: - name: Checkout uses: actions/checkout@v4 @@ -192,6 +195,7 @@ jobs: - uses: ./.github/actions/job-preamble with: + free-disk-space: '30' gcp-account: ${{ secrets.GCP_SERVICE_ACCOUNT_STACKROX_CI }} - name: Cache Go dependencies @@ -247,7 +251,7 @@ jobs: pre-build-docs: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 steps: - name: Checkout uses: actions/checkout@v4 @@ -304,7 +308,7 @@ jobs: GO_BINARIES_BUILD_ARTIFACT: "" ROX_PRODUCT_BRANDING: "" container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 env: QUAY_RHACS_ENG_RO_USERNAME: ${{ secrets.QUAY_RHACS_ENG_RO_USERNAME }} QUAY_RHACS_ENG_RO_PASSWORD: ${{ secrets.QUAY_RHACS_ENG_RO_PASSWORD }} @@ -356,6 +360,7 @@ jobs: - uses: ./.github/actions/job-preamble with: + free-disk-space: '30' gcp-account: ${{ secrets.GCP_SERVICE_ACCOUNT_STACKROX_CI }} - name: Login to docker.io to mitigate rate limiting on downloading images @@ -485,7 +490,7 @@ jobs: env: ROX_PRODUCT_BRANDING: "" container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 env: QUAY_RHACS_ENG_RO_USERNAME: ${{ secrets.QUAY_RHACS_ENG_RO_USERNAME }} QUAY_RHACS_ENG_RO_PASSWORD: ${{ secrets.QUAY_RHACS_ENG_RO_PASSWORD }} @@ -493,6 +498,9 @@ jobs: QUAY_RHACS_ENG_RW_PASSWORD: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }} QUAY_STACKROX_IO_RW_USERNAME: ${{ secrets.QUAY_STACKROX_IO_RW_USERNAME }} QUAY_STACKROX_IO_RW_PASSWORD: ${{ secrets.QUAY_STACKROX_IO_RW_PASSWORD }} + volumes: + - /usr:/mnt/usr + - /opt:/mnt/opt steps: - name: Setup build env run: | @@ -577,7 +585,7 @@ jobs: needs: - define-job-matrix container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 env: QUAY_RHACS_ENG_RW_USERNAME: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }} QUAY_RHACS_ENG_RW_PASSWORD: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }} @@ -598,6 +606,7 @@ jobs: - uses: ./.github/actions/job-preamble with: + free-disk-space: '30' gcp-account: ${{ secrets.GCP_SERVICE_ACCOUNT_STACKROX_CI }} - name: Cache Go dependencies @@ -662,7 +671,7 @@ jobs: ARTIFACT_DIR: junit-reports/ runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 needs: - pre-build-cli - pre-build-go-binaries diff --git a/.github/workflows/check-crd-compatibility.yaml b/.github/workflows/check-crd-compatibility.yaml index e9b8a978ea7b3..b3672ec266fbd 100644 --- a/.github/workflows/check-crd-compatibility.yaml +++ b/.github/workflows/check-crd-compatibility.yaml @@ -16,7 +16,7 @@ jobs: check-crd-compatibility: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: # job-preamble deletes unused host runner files under /mnt - /usr:/mnt/usr - /opt:/mnt/opt @@ -38,7 +38,7 @@ jobs: with: repository: openshift/crd-schema-checker path: .crd-schema-checker - ref: 9c9f5f57c9f9ea4dba41d9eec5c365a622f08417 # 2025-04-08 + ref: c313b6407231f6d1aabfb602f0823708f8c6b9fb # 2025-09-05 - name: Build crd-schema-checker run: | diff --git a/.github/workflows/ci-failures-report.yml b/.github/workflows/ci-failures-report.yml index dffd3af179af9..99f2b93191dc9 100644 --- a/.github/workflows/ci-failures-report.yml +++ b/.github/workflows/ci-failures-report.yml @@ -14,7 +14,7 @@ jobs: report-e2e-failures-to-slack: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/fixxxer.yaml b/.github/workflows/fixxxer.yaml index e994f7acbb333..274c41266a34a 100644 --- a/.github/workflows/fixxxer.yaml +++ b/.github/workflows/fixxxer.yaml @@ -14,7 +14,7 @@ jobs: if: ${{ github.event.issue.pull_request && github.event.comment.body == '/fixxx' }} runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 steps: - name: Fetch PR metadata diff --git a/.github/workflows/scanner-build.yaml b/.github/workflows/scanner-build.yaml index b85cec68b876f..c965590c5f743 100644 --- a/.github/workflows/scanner-build.yaml +++ b/.github/workflows/scanner-build.yaml @@ -80,7 +80,7 @@ jobs: # race-condition-debug - built with -race matrix: ${{ fromJson(needs.define-scanner-job-matrix.outputs.matrix).pre_build_scanner_go_binary }} container: - image: quay.io/stackrox-io/apollo-ci:scanner-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:scanner-test-0.5.1 steps: - name: Checkout uses: actions/checkout@v4 @@ -137,7 +137,7 @@ jobs: needs: pre-build-scanner-go-binary runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:scanner-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:scanner-test-0.5.1 if: contains(github.event.pull_request.labels.*.name, 'scan-go-binaries') env: ARTIFACT_DIR: junit-reports/ @@ -191,7 +191,7 @@ jobs: # race-condition-debug - built with -race matrix: ${{ fromJson(needs.define-scanner-job-matrix.outputs.matrix).build_and_push_scanner }} container: - image: quay.io/stackrox-io/apollo-ci:scanner-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:scanner-test-0.5.1 env: QUAY_RHACS_ENG_RW_USERNAME: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }} QUAY_RHACS_ENG_RW_PASSWORD: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }} @@ -263,7 +263,7 @@ jobs: # race-condition-debug matrix: ${{ fromJson(needs.define-scanner-job-matrix.outputs.matrix).push_scanner_manifests }} container: - image: quay.io/stackrox-io/apollo-ci:scanner-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:scanner-test-0.5.1 env: QUAY_RHACS_ENG_RW_USERNAME: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }} QUAY_RHACS_ENG_RW_PASSWORD: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }} diff --git a/.github/workflows/scanner-db-integration-tests.yaml b/.github/workflows/scanner-db-integration-tests.yaml index 6375f08d4e642..a6691b74a7fcf 100644 --- a/.github/workflows/scanner-db-integration-tests.yaml +++ b/.github/workflows/scanner-db-integration-tests.yaml @@ -17,7 +17,7 @@ jobs: db-integration-tests: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:scanner-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:scanner-test-0.5.1 steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/scanner-versioned-definitions-update.yaml b/.github/workflows/scanner-versioned-definitions-update.yaml index b8b6bd71efb51..0e2784805d8e6 100644 --- a/.github/workflows/scanner-versioned-definitions-update.yaml +++ b/.github/workflows/scanner-versioned-definitions-update.yaml @@ -108,7 +108,7 @@ jobs: - prepare-environment runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:scanner-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:scanner-test-0.5.1 volumes: # The updater makes heavy use of /tmp files. - /tmp:/tmp @@ -183,7 +183,7 @@ jobs: - prepare-environment runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:scanner-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:scanner-test-0.5.1 volumes: # The updater makes heavy use of /tmp files. - /tmp:/tmp diff --git a/.github/workflows/style.yaml b/.github/workflows/style.yaml index fdc923fac4edc..7eb13efcd9df7 100644 --- a/.github/workflows/style.yaml +++ b/.github/workflows/style.yaml @@ -20,7 +20,7 @@ jobs: ARTIFACT_DIR: junit-reports/ runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 steps: - name: Checkout uses: actions/checkout@v4 @@ -46,7 +46,7 @@ jobs: ARTIFACT_DIR: junit-reports/ runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 steps: - name: Checkout uses: actions/checkout@v4 @@ -84,7 +84,7 @@ jobs: style-check: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: - /usr:/mnt/usr - /opt:/mnt/opt @@ -118,7 +118,7 @@ jobs: timeout-minutes: 240 runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: - /usr:/mnt/usr - /opt:/mnt/opt @@ -131,6 +131,7 @@ jobs: - uses: ./.github/actions/job-preamble with: + free-disk-space: '30' gcp-account: ${{ secrets.GCP_SERVICE_ACCOUNT_STACKROX_CI }} - name: Cache Go dependencies @@ -229,7 +230,7 @@ jobs: openshift-ci-lint: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/tag-more-reviewers.yaml b/.github/workflows/tag-more-reviewers.yaml new file mode 100644 index 0000000000000..f6ce74aac7c50 --- /dev/null +++ b/.github/workflows/tag-more-reviewers.yaml @@ -0,0 +1,26 @@ +name: Tag more reviewers + +on: + pull_request: + types: + - review_requested + +jobs: + tag-konflux-maintainers: + # We have lots of PR traffic from MintMaker (acting as `red-hat-konflux[bot]`), and so it's unsustainable to go + # through these emails every day. Therefore, the notifications are disabled for `konflux-maintainers-no-email` + # team that's set as owner in CODEOWNERS for the Konflux stuff. + # At the same time, we want to be notified when humans, not the bot, request reviews (which happens automatically + # again through CODEOWNERS) for the Konflux-related files. This job invites `konflux-maintainers` team for review + # for such cases. + if: | + github.event.requested_team.name == 'konflux-maintainers-no-email' && + github.event.pull_request.user.login != 'red-hat-konflux[bot]' + env: + GH_TOKEN: ${{ secrets.RHACS_BOT_GITHUB_TOKEN }} + runs-on: ubuntu-latest + steps: + - name: Tag Konflux Maintainers for review + run: | + gh pr --repo "${{ github.repository }}" edit "${{ github.event.pull_request.number }}" \ + --add-reviewer stackrox/konflux-maintainers diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 9a42a7c1d4cde..8d4c932efafaf 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -21,7 +21,7 @@ jobs: outputs: new-jiras: ${{ steps.junit2jira.outputs.new-jiras }} container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: # job-preamble deletes unused host runner files under /mnt - /usr:/mnt/usr - /opt:/mnt/opt @@ -92,7 +92,7 @@ jobs: outputs: new-jiras: ${{ steps.junit2jira.outputs.new-jiras }} container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: # job-preamble deletes unused host runner files under /mnt - /usr:/mnt/usr - /opt:/mnt/opt @@ -152,7 +152,7 @@ jobs: go-bench: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: # job-preamble deletes unused host runner files under /mnt - /usr:/mnt/usr - /opt:/mnt/opt @@ -202,7 +202,7 @@ jobs: outputs: new-jiras: ${{ steps.junit2jira.outputs.new-jiras }} container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: # job-preamble deletes unused host runner files under /mnt - /usr:/mnt/usr - /opt:/mnt/opt @@ -241,7 +241,7 @@ jobs: outputs: new-jiras: ${{ steps.junit2jira.outputs.new-jiras }} container: - image: quay.io/stackrox-io/apollo-ci:stackrox-ui-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-ui-test-0.5.1 volumes: # job-preamble deletes unused host runner files under /mnt - /usr:/mnt/usr - /opt:/mnt/opt @@ -287,7 +287,7 @@ jobs: outputs: new-jiras: ${{ steps.junit2jira.outputs.new-jiras }} container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: # job-preamble deletes unused host runner files under /mnt - /usr:/mnt/usr - /opt:/mnt/opt @@ -331,7 +331,7 @@ jobs: outputs: new-jiras: ${{ steps.junit2jira.outputs.new-jiras }} container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: # job-preamble deletes unused host runner files under /mnt - /usr:/mnt/usr - /opt:/mnt/opt @@ -368,7 +368,7 @@ jobs: openshift-ci-unit-tests: runs-on: ubuntu-latest container: - image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 + image: quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 volumes: # job-preamble deletes unused host runner files under /mnt - /usr:/mnt/usr - /opt:/mnt/opt @@ -397,7 +397,10 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - + - name: Set up Go + uses: actions/setup-go@v6 + with: + go-version-file: go.mod - uses: ./.github/actions/job-preamble with: gcp-account: ${{ secrets.GCP_SERVICE_ACCOUNT_STACKROX_CI }} diff --git a/.golangci.yml b/.golangci.yml index 6d984c7532b85..e58f7023c96ce 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,7 +1,7 @@ version: "2" run: timeout: 240m - go: "1.23" + go: "1.25" build-tags: - integration - scanner_db_integration diff --git a/.openshift-ci/Dockerfile.build_root b/.openshift-ci/Dockerfile.build_root index bf5bec5155875..158314ac8b810 100644 --- a/.openshift-ci/Dockerfile.build_root +++ b/.openshift-ci/Dockerfile.build_root @@ -27,4 +27,4 @@ # For an example, see https://github.com/stackrox/stackrox/pull/2762 and its counterpart # https://github.com/openshift/release/pull/31561 -FROM quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 +FROM quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 diff --git a/.openshift-ci/dev-requirements.txt b/.openshift-ci/dev-requirements.txt index ae56337a62cc4..9900face09fe1 100644 --- a/.openshift-ci/dev-requirements.txt +++ b/.openshift-ci/dev-requirements.txt @@ -1,4 +1,4 @@ -# These versions should match those used in the current CI test image (stackrox-test-0.4.8). +# These versions should match those used in the current CI test image (stackrox-test-0.5.1). # See .github/workflows/{lint,style}.yaml for that. # And the stackrox/rox-ci-image repo for the original source and pinned versions. pycodestyle==2.10.0 diff --git a/.tekton/basic-component-pipeline.yaml b/.tekton/basic-component-pipeline.yaml index 5c7d79dc098a0..b64495c55c61e 100644 --- a/.tekton/basic-component-pipeline.yaml +++ b/.tekton/basic-component-pipeline.yaml @@ -8,20 +8,20 @@ spec: - name: slack-notification params: - name: message - value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' + value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' - name: key-name value: 'acs-konflux-notifications' when: # Run when any task has Failed - input: $(tasks.status) operator: in - values: ["Failed"] + values: [ "Failed" ] taskRef: params: - name: name value: slack-webhook-notification - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:452188df385218d0a1d9d097ff5daa67f11ae3597c917a3c2bb644787453a8e0 + value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:69945a30c11387a766e3d0ae33991b68e865a290c09da1fea44f193d358926ba - name: kind value: task resolver: bundles @@ -35,23 +35,23 @@ spec: - name: name value: show-sbom - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:002f7c8c1d2f9e09904035da414aba1188ae091df0ea9532cd997be05e73d594 + value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:beb0616db051952b4b861dd8c3e00fa1c0eccbd926feddf71194d3bb3ace9ce7 - name: kind value: task resolver: bundles - name: post-metric-end params: - - name: AGGREGATE_TASKS_STATUS - value: $(tasks.status) + - name: AGGREGATE_TASKS_STATUS + value: $(tasks.status) taskRef: &post-bigquery-metrics-ref params: - - name: name - value: post-bigquery-metrics - - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 - - name: kind - value: task + - name: name + value: post-bigquery-metrics + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task resolver: bundles params: @@ -115,7 +115,29 @@ spec: description: This sets the expiration time for intermediate OCI artifacts produced and used during builds after which they can be garbage collected. name: oci-artifact-expires-after type: string + - name: buildah-format + default: docker + type: string + description: The format for the resulting image's mediaType. Valid values are oci or docker. + - name: extra-labels + type: array + description: Additional labels to put on the built containers. + - default: + - linux/amd64 + - linux/arm64 + - linux/ppc64le + - linux/s390x + description: > + List of platforms to build the container images for. The available + set of values is determined by the configuration of the multi-platform-controller + on the cluster: https://konflux.pages.redhat.com/docs/users/getting-started/multi-platform-builds.html + name: build-platforms + type: array + - name: enable-cache-proxy + default: 'false' + description: Enable cache proxy configuration + type: string results: - description: "" name: IMAGE_URL @@ -142,19 +164,21 @@ spec: params: - name: image-url # We can't provide a StackRox-style tag because it is not known at this time (requires cloning source, etc.) - # As a workaround, we still provide a unique tag that's based on a revision to this task to comply with its - # expected input. We later actually add this tag on a built image with build-image-index-konflux task. + # As a workaround, we still provide a unique tag that's based on a revision in order for this task to comply with + # its expected input. We later actually add this tag on a built image with the apply-index-image-tag task. value: $(params.output-image-repo):konflux-$(params.revision) - name: rebuild value: $(params.rebuild) - name: skip-checks value: $(params.skip-checks) + - name: enable-cache-proxy + value: $(params.enable-cache-proxy) taskRef: params: - name: name value: init - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:66e90d31e1386bf516fb548cd3e3f0082b5d0234b8b90dbf9e0d4684b70dbe1a + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:b349d24cb896573695802d6913d311640b44675ec082b3ad167721946a6a0a71 - name: kind value: task resolver: bundles @@ -178,7 +202,7 @@ spec: - name: name value: git-clone-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:8ecf57d5a6697ce709bee65b62781efe79a10b0c2b95e05576442b67fbd61744 + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:56f65a16d3d0485c64ad85af2c1f3e9b0bb4d02d63f2fd0ebb9498d219ca723d - name: kind value: task resolver: bundles @@ -192,16 +216,16 @@ spec: - name: determine-image-expiration params: - - name: DEFAULT_IMAGE_EXPIRES_AFTER - value: $(params.image-expires-after) - - name: SOURCE_ARTIFACT - value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) + - name: DEFAULT_IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: SOURCE_ARTIFACT + value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) taskRef: params: - name: name value: determine-image-expiration - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -212,14 +236,12 @@ spec: value: $(params.output-tag-suffix) - name: SOURCE_ARTIFACT value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) - - name: SOURCE_BRANCH - value: '{{source_branch}}' taskRef: params: - name: name value: determine-image-tag - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -239,7 +261,7 @@ spec: - name: name value: prefetch-dependencies-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:1f6e2c9beba52d21c562ba1dea55f579f67e33b80099615bfd2043864896284d + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:36207773434bfad80fc3991d3ccca409d8429dbf5974c4dcd8d54145235b4b7b - name: kind value: task resolver: bundles @@ -247,125 +269,15 @@ spec: - name: git-basic-auth workspace: git-auth - - name: build-container-amd64 - params: - - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-amd64 - - name: DOCKERFILE - value: $(params.dockerfile) - - name: CONTEXT - value: $(params.path-context) - - name: HERMETIC - value: $(params.hermetic) - - name: PREFETCH_INPUT - value: $(params.prefetch-input) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: BUILD_ARGS - value: - - BUILD_TAG=$(tasks.determine-image-tag.results.IMAGE_TAG) - - name: SOURCE_ARTIFACT - value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - - name: CACHI2_ARTIFACT - value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - taskRef: + - name: build-images + matrix: params: - - name: name - value: buildah-oci-ta - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-oci-ta:0.4@sha256:cfd711876f21a55bb12c3c5745ecccf4429f2a33ba634f80d8c1eedce7fe2d26 - - name: kind - value: task - resolver: bundles - when: - - input: $(tasks.init.results.build) - operator: in - values: [ "true" ] - - - name: build-container-s390x + - name: PLATFORM + value: + - $(params.build-platforms) params: - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-s390x - - name: DOCKERFILE - value: $(params.dockerfile) - - name: CONTEXT - value: $(params.path-context) - - name: HERMETIC - value: $(params.hermetic) - - name: PREFETCH_INPUT - value: $(params.prefetch-input) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: BUILD_ARGS - value: - - BUILD_TAG=$(tasks.determine-image-tag.results.IMAGE_TAG) - - name: SOURCE_ARTIFACT - value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - - name: CACHI2_ARTIFACT - value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - - name: PLATFORM - value: linux/s390x - taskRef: - params: - - name: name - value: buildah-remote-oci-ta - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:687fbe15c00a10ba6949f6aa49d0ccc7dfef7569abaea23e03c547e1efdc3cd5 - - name: kind - value: task - resolver: bundles - when: - - input: $(tasks.init.results.build) - operator: in - values: [ "true" ] - - - name: build-container-ppc64le - params: - - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-ppc64le - - name: DOCKERFILE - value: $(params.dockerfile) - - name: CONTEXT - value: $(params.path-context) - - name: HERMETIC - value: $(params.hermetic) - - name: PREFETCH_INPUT - value: $(params.prefetch-input) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: BUILD_ARGS - value: - - BUILD_TAG=$(tasks.determine-image-tag.results.IMAGE_TAG) - - name: SOURCE_ARTIFACT - value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - - name: CACHI2_ARTIFACT - value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - - name: PLATFORM - value: linux/ppc64le - taskRef: - params: - - name: name - value: buildah-remote-oci-ta - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:687fbe15c00a10ba6949f6aa49d0ccc7dfef7569abaea23e03c547e1efdc3cd5 - - name: kind - value: task - resolver: bundles - when: - - input: $(tasks.init.results.build) - operator: in - values: [ "true" ] - - - name: build-container-arm64 - params: - - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-arm64 + value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG) - name: DOCKERFILE value: $(params.dockerfile) - name: CONTEXT @@ -385,14 +297,24 @@ spec: value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - - name: PLATFORM - value: linux/arm64 + - name: BUILDAH_FORMAT + value: $(params.buildah-format) + - name: LABELS + value: ["$(params.extra-labels[*])"] + - name: BUILD_TIMESTAMP + value: "$(tasks.clone-repository.results.commit-timestamp)" + - name: IMAGE_APPEND_PLATFORM + value: "true" + - name: HTTP_PROXY + value: $(tasks.init.results.http-proxy) + - name: NO_PROXY + value: $(tasks.init.results.no-proxy) taskRef: params: - name: name value: buildah-remote-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:687fbe15c00a10ba6949f6aa49d0ccc7dfef7569abaea23e03c547e1efdc3cd5 + value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.7@sha256:d8b2cd0bd3f8e3fdcafe4aebfee59f3f2fcbca78ef31f9c5dd8ecd781cd02636 - name: kind value: task resolver: bundles @@ -409,18 +331,17 @@ spec: value: $(tasks.clone-repository.results.commit) - name: IMAGES value: - - $(tasks.build-container-amd64.results.IMAGE_REF) - - $(tasks.build-container-s390x.results.IMAGE_REF) - - $(tasks.build-container-ppc64le.results.IMAGE_REF) - - $(tasks.build-container-arm64.results.IMAGE_REF) + - $(tasks.build-images.results.IMAGE_REF[*]) - name: IMAGE_EXPIRES_AFTER value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) + - name: BUILDAH_FORMAT + value: $(params.buildah-format) taskRef: params: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:08abb8b12d69b8a33d5ce465304934c6f78e6850613c1c91eb6bf7e1c27d8319 + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.2@sha256:985d1efe861b02524a7679ecd855624b3d4e3a2e835b6f8a97ec7d135898ec0b - name: kind value: task resolver: bundles @@ -428,27 +349,23 @@ spec: - input: $(tasks.init.results.build) operator: in values: [ "true" ] + runAfter: [ build-images ] - - name: build-image-index-konflux + - name: apply-index-image-tag params: - - name: IMAGE - value: $(params.output-image-repo):konflux-$(params.revision) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: IMAGES + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: ADDITIONAL_TAGS value: - - $(tasks.build-container-amd64.results.IMAGE_REF) - - $(tasks.build-container-s390x.results.IMAGE_REF) - - $(tasks.build-container-ppc64le.results.IMAGE_REF) - - $(tasks.build-container-arm64.results.IMAGE_REF) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) + - konflux-$(params.revision) taskRef: params: - name: name - value: build-image-index + value: apply-tags - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:08abb8b12d69b8a33d5ce465304934c6f78e6850613c1c91eb6bf7e1c27d8319 + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:c89cd10b2a3f4c43789c5f06ef2b86f528b28f156c20af5e751fa8c0facd457d - name: kind value: task resolver: bundles @@ -465,12 +382,14 @@ spec: value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + - name: BINARY_IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) taskRef: params: - name: name value: source-build-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.2@sha256:c5e56643c0f5e19409e86c8fd4de4348413b6f10456aa0875498d5c63bf6ef0e + value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:c35ba219390d77a48ee19347e5ee8d13e5c23e3984299e02291d6da1ed8a986c - name: kind value: task resolver: bundles @@ -493,7 +412,7 @@ spec: - name: name value: deprecated-image-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:ecd33669676b3a193ff4c2c6223cb912cc1b0cf5cc36e080eaec7718500272cf + value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:1cf21de671be4c97d4973b60c09c912997cd15b65c30b93a07eff1b24f43a1f8 - name: kind value: task resolver: bundles @@ -503,6 +422,11 @@ spec: values: [ "false" ] - name: clair-scan + matrix: + params: + - name: image-platform + value: + - $(params.build-platforms) params: - name: image-digest value: $(tasks.build-image-index.results.IMAGE_DIGEST) @@ -513,7 +437,7 @@ spec: - name: name value: clair-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.2@sha256:878ae247ffc58d95a9ac68e4d658ef91ef039363e03e65a386bc0ead02d9d7d8 + value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.3@sha256:654b989d7cdc03d082e56f216a29de04847215ee379a8d9ca315e453ad2b15c2 - name: kind value: task resolver: bundles @@ -523,6 +447,11 @@ spec: values: [ "false" ] - name: ecosystem-cert-preflight-checks + matrix: + params: + - name: platform + value: + - $(params.build-platforms) params: - name: image-url value: $(tasks.build-image-index.results.IMAGE_URL) @@ -531,14 +460,14 @@ spec: - name: name value: ecosystem-cert-preflight-checks - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:302828e9d7abc72b8a44fb2b9be068f86c982d8e5f4550b8bf654571d6361ee8 + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:da4f6a586d06a19fcd581ce01d53910c750743124c7d09b1cdf97cb3caa71ff7 - name: kind value: task resolver: bundles when: - input: $(params.skip-checks) operator: in - values: ["false"] + values: [ "false" ] - name: sast-shell-check params: @@ -555,7 +484,7 @@ spec: - name: name value: sast-shell-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:57b3262138eb06186ae7375f84ca53788bba2a66cfd03d39cb82c78df050aba5 + value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:e7a51575f9188a1461d4520da25aaa4efdd3b896c97dc750941fa22840e55c13 - name: kind value: task resolver: bundles @@ -579,7 +508,7 @@ spec: - name: name value: sast-unicode-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.2@sha256:54d50169b4860b90d38d41b00a973489b1db83612ae4aa40f1bdf0a151bff80d + value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.3@sha256:8817f5081c10d9debf25601d6d99d7eddde19435be1ff24741d9025931639959 - name: kind value: task resolver: bundles @@ -603,7 +532,7 @@ spec: - name: name value: sast-snyk-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:6078ec8ec7caacbb8203138fcaa63db24e88dbf838544340bb0752d5b69f20ae + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:49b7d09db82e6cad98152db8f16707ca3d90a1709e846e3ed8c91a433c88724f - name: kind value: task resolver: bundles @@ -613,6 +542,11 @@ spec: values: [ "false" ] - name: clamav-scan + matrix: + params: + - name: image-arch + value: + - $(params.build-platforms) params: - name: image-digest value: $(tasks.build-image-index.results.IMAGE_DIGEST) @@ -623,7 +557,7 @@ spec: - name: name value: clamav-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.2@sha256:98d94290d6f21b6e231485326e3629bbcdec75c737b84e05ac9eac78f9a2c8b4 + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:b2f25599a10ab0846e4659f76b5b78c0fddf561404656fda52055eda31e70d83 - name: kind value: task resolver: bundles @@ -643,14 +577,14 @@ spec: - name: name value: rpms-signature-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:1bac33bd516072d5f4432efafd9dc4d86cdbb8eea8112cea5662984a0ef80e27 + value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:00417785ba16344c10e8682bf58eeb6ef058cedd88ae2d86bb14ced220135374 - name: kind value: task resolver: bundles when: - input: $(params.skip-checks) operator: in - values: ["false"] + values: [ "false" ] - name: push-dockerfile params: @@ -669,7 +603,7 @@ spec: - name: name value: push-dockerfile-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:d0ee13ab3d9564f7ee806a8ceaced934db493a3a40e11ff6db3a912b8bbace95 + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:08bba4a659ecd48f871bef00b80af58954e5a09fcbb28a1783ddd640c4f6535e - name: kind value: task resolver: bundles diff --git a/.tekton/central-db-build.yaml b/.tekton/central-db-build.yaml index f44903c0ef5e8..ed1524ed9aca0 100644 --- a/.tekton/central-db-build.yaml +++ b/.tekton/central-db-build.yaml @@ -20,8 +20,8 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs - appstudio.openshift.io/component: central-db + appstudio.openshift.io/application: acs-4-8 + appstudio.openshift.io/component: central-db-4-8 pipelines.appstudio.openshift.io/type: build name: central-db-on-push namespace: rh-acs-tenant @@ -54,12 +54,27 @@ spec: value: '0' - name: clone-fetch-tags value: 'true' + - name: extra-labels + value: + # X.Y in the cpe label must be adjusted for every version stream. + - "cpe=cpe:/a:redhat:advanced_cluster_security:4.8::el8" pipelineRef: name: basic-component-pipeline + taskRunSpecs: + - pipelineTaskName: build-source-image + stepSpecs: + # Bump memory for source image build because the one with defaults tends to get sometimes OOM-killed. + - name: build + computeResources: + limits: + memory: 3Gi + requests: + memory: 3Gi + taskRunTemplate: - serviceAccountName: build-pipeline-central-db + serviceAccountName: build-pipeline-central-db-4-8 # IMPORTANT: when changing timeouts here, read and follow timeout instructions in operator-bundle-build.yaml. timeouts: diff --git a/.tekton/create-custom-snapshot.yaml b/.tekton/create-custom-snapshot.yaml new file mode 100644 index 0000000000000..24f4b6ea0b6ec --- /dev/null +++ b/.tekton/create-custom-snapshot.yaml @@ -0,0 +1,265 @@ +apiVersion: tekton.dev/v1 +kind: PipelineRun + +metadata: + annotations: + build.appstudio.openshift.io/repo: https://github.com/stackrox/stackrox?rev={{revision}} + build.appstudio.redhat.com/commit_sha: '{{revision}}' + build.appstudio.redhat.com/pull_request_number: '{{pull_request_number}}' + build.appstudio.redhat.com/target_branch: '{{target_branch}}' + pipelinesascode.tekton.dev/max-keep-runs: "500" + # TODO(ROX-21073): re-enable for all PR branches + pipelinesascode.tekton.dev/on-cel-expression: | + ( + event == "push" && target_branch.matches("^(master|release-.*|refs/tags/.*)$") + ) || ( + event == "pull_request" && ( + target_branch.startsWith("release-") || + source_branch.matches("(konflux|renovate|appstudio|rhtap)") || + (has(body.pull_request) && has(body.pull_request.labels) && body.pull_request.labels.exists(l, l.name == "konflux-build")) + ) && body.action != "ready_for_review" + ) + # The empty `on-label` annotation is a workaround to make sure the pipeline gets triggered when the label gets first + # added to the PR. See the Slack tread linked from ROX-30580. + pipelinesascode.tekton.dev/on-label: "[]" + labels: + appstudio.openshift.io/application: acs-4-8 + name: create-custom-snapshot + namespace: rh-acs-tenant + +spec: + + params: + + taskRunTemplate: + serviceAccountName: build-pipeline-operator-bundle-4-8 + + timeouts: + tasks: 3h30m + # Reserve time for final tasks to run. + finally: 10m + pipeline: 3h40m + + workspaces: + - name: git-auth + secret: + secretName: '{{ git_auth_secret }}' + + pipelineSpec: + + finally: + - name: slack-notification + params: + - name: message + value: ':x: `{{event_type}}` pipeline for (revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' + - name: key-name + value: 'acs-konflux-notifications' + when: + # Run when any task has Failed + - input: $(tasks.status) + operator: in + values: [ "Failed" ] + taskRef: + params: + - name: name + value: slack-webhook-notification + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:69945a30c11387a766e3d0ae33991b68e865a290c09da1fea44f193d358926ba + - name: kind + value: task + resolver: bundles + + - name: post-metric-end + params: + - name: AGGREGATE_TASKS_STATUS + value: $(tasks.status) + taskRef: &post-bigquery-metrics-ref + params: + - name: name + value: post-bigquery-metrics + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task + resolver: bundles + + params: + - name: integration-test-scenario + default: "acs-conforma-prod-like" + description: Name of the IntegrationTestScenario to trigger for the created Snapshot. + type: string + - name: git-url + default: "{{source_url}}" + description: Source Repository URL. + type: string + - name: revision + default: "{{revision}}" + description: Revision of the Source Repository. + type: string + - name: bundle-image-repo + default: quay.io/rhacs-eng/release-operator-bundle + description: Repo of the operator bundle image, used to store OCI artifact with source code. + type: string + - name: oci-artifact-expires-after + default: "1d" + description: This sets the expiration time for intermediate OCI artifacts produced and used during builds after + which they can be garbage collected. + type: string + - name: output-tag-suffix + default: "-fast" + description: Suffix that's appended to the operator-bundle's image tag. + type: string + + results: + - description: Name of the custom Snapshot created. + name: SNAPSHOT_NAME + value: $(tasks.create-acs-style-snapshot.results.SNAPSHOT_NAME) + + workspaces: + - name: git-auth + + tasks: + + - name: post-metric-start + taskRef: *post-bigquery-metrics-ref + + - name: clone-repository + params: + - name: url + value: $(params.git-url) + - name: revision + value: $(params.revision) + - name: depth + value: "0" + - name: fetchTags + value: "true" + - name: ociStorage + value: $(params.bundle-image-repo):konflux-custom-snapshot-$(params.revision).git + - name: ociArtifactExpiresAfter + value: $(params.oci-artifact-expires-after) + taskRef: + params: + - name: name + value: git-clone-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:56f65a16d3d0485c64ad85af2c1f3e9b0bb4d02d63f2fd0ebb9498d219ca723d + - name: kind + value: task + resolver: bundles + workspaces: + - name: basic-auth + workspace: git-auth + + - name: determine-image-tag + params: + - name: TAG_SUFFIX + value: $(params.output-tag-suffix) + - name: SOURCE_ARTIFACT + value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) + taskRef: + params: + - name: name + value: determine-image-tag + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task + resolver: bundles + + - name: wait-for-bundle-image + params: + - name: IMAGE + value: "$(params.bundle-image-repo):v$(tasks.determine-image-tag.results.IMAGE_TAG)" + taskRef: + params: + - name: name + value: wait-for-image + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task + resolver: bundles + # The timemout should be kept in sync with the pipeline timeout in the operator-bundle-build.yaml + timeout: 3h25m + + - name: create-acs-style-snapshot + params: + - name: OPERATOR_BUNDLE_IMAGE + value: $(params.bundle-image-repo)@$(tasks.wait-for-bundle-image.results.IMAGE_DIGEST) + - name: PRODUCT_VERSION + value: $(tasks.determine-image-tag.results.IMAGE_TAG) + - name: INTEGRATION_TEST_SCENARIO + value: $(params.integration-test-scenario) + - name: COMPONENT_MAPPINGS + value: | + [ + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-central-db", + "component": "central-db" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-collector", + "component": "collector" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-main", + "component": "main" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-operator-bundle", + "internalRepo": "quay.io/rhacs-eng/release-operator-bundle", + "component": "operator-bundle" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-rhel8-operator", + "internalRepo": "quay.io/rhacs-eng/release-operator", + "component": "operator" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-roxctl", + "component": "roxctl" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-scanner-db", + "component": "scanner-db" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-slim-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-scanner-db-slim", + "component": "scanner-db-slim" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-scanner", + "component": "scanner" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-scanner-slim", + "component": "scanner-slim" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-scanner-v4-db-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-scanner-v4-db", + "component": "scanner-v4-db" + }, + { + "externalRepo": "registry.redhat.io/advanced-cluster-security/rhacs-scanner-v4-rhel8", + "internalRepo": "quay.io/rhacs-eng/release-scanner-v4", + "component": "scanner-v4" + } + ] + taskRef: + params: + - name: name + value: create-snapshot-from-bundle + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task + resolver: bundles diff --git a/.tekton/images-mirror-set.yaml b/.tekton/images-mirror-set.yaml new file mode 100644 index 0000000000000..3cc93ea45b2df --- /dev/null +++ b/.tekton/images-mirror-set.yaml @@ -0,0 +1,46 @@ +apiVersion: config.openshift.io/v1 +kind: ImageDigestMirrorSet +metadata: + name: quay-proxy +spec: + imageDigestMirrors: + - source: registry.redhat.io/advanced-cluster-security/rhacs-operator-bundle + mirrors: + - quay.io/rhacs-eng/release-operator-bundle + - source: registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8 + mirrors: + - quay.io/rhacs-eng/release-central-db + - source: registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8 + mirrors: + - quay.io/rhacs-eng/release-collector + - source: registry.redhat.io/advanced-cluster-security/rhacs-collector-slim-rhel8 + mirrors: + - quay.io/rhacs-eng/release-collector + - quay.io/rhacs-eng/release-collector-slim + - source: registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8 + mirrors: + - quay.io/rhacs-eng/release-main + - source: registry.redhat.io/advanced-cluster-security/rhacs-rhel8-operator + mirrors: + - quay.io/rhacs-eng/release-operator + - source: registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8 + mirrors: + - quay.io/rhacs-eng/release-roxctl + - source: registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8 + mirrors: + - quay.io/rhacs-eng/release-scanner-db + - source: registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-slim-rhel8 + mirrors: + - quay.io/rhacs-eng/release-scanner-db-slim + - source: registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8 + mirrors: + - quay.io/rhacs-eng/release-scanner + - source: registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8 + mirrors: + - quay.io/rhacs-eng/release-scanner-slim + - source: registry.redhat.io/advanced-cluster-security/rhacs-scanner-v4-db-rhel8 + mirrors: + - quay.io/rhacs-eng/release-scanner-v4-db + - source: registry.redhat.io/advanced-cluster-security/rhacs-scanner-v4-rhel8 + mirrors: + - quay.io/rhacs-eng/release-scanner-v4 diff --git a/.tekton/main-build.yaml b/.tekton/main-build.yaml index 2fc94c18ef93f..3f4bf104ab173 100644 --- a/.tekton/main-build.yaml +++ b/.tekton/main-build.yaml @@ -20,8 +20,8 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs - appstudio.openshift.io/component: main + appstudio.openshift.io/application: acs-4-8 + appstudio.openshift.io/component: main-4-8 pipelines.appstudio.openshift.io/type: build name: main-on-push namespace: rh-acs-tenant @@ -58,48 +58,29 @@ spec: value: '0' - name: clone-fetch-tags value: 'true' + - name: extra-labels + value: + # X.Y in the cpe label must be adjusted for every version stream. + - "cpe=cpe:/a:redhat:advanced_cluster_security:4.8::el8" pipelineRef: name: main-pipeline taskRunSpecs: - # For all sbom-syft-generate steps: - # Memory is increased for the syft command to succeed. Otherwise, there's an error like this in log and container - # exits with 137 (OOMKilled): - # /tekton/scripts/script-2-h7nll: line 7: 33 Killed syft dir:$(cat /shared/container_path) --output cyclonedx-json=/var/workdir/sbom-image.json - - pipelineTaskName: build-container-amd64 - stepSpecs: - - name: build - # CPU requests are increased to speed up builds compared to the defaults. - # Defaults: https://github.com/konflux-ci/build-definitions/blob/main/task/buildah/0.1/buildah.yaml#L147 - # - # Memory is increased for UI builds to succeed. Otherwise, there's an error like this in logs: - # [build] @stackrox/platform-app: The build failed because the process exited too early. This probably means the system ran out of memory or someone called `kill -9` on the process. - # - # Not using buildah-6gb/-8gb/... because these don't have memory requests equal to limits which still occasionally - # leads to failing builds. - computeResources: - limits: - cpu: 4 - memory: 7Gi - requests: - cpu: 4 - memory: 7Gi - - name: sbom-syft-generate - computeResources: - limits: - memory: 3Gi - requests: - memory: 3Gi - - pipelineTaskName: build-container-s390x + - pipelineTaskName: prefetch-dependencies stepSpecs: - - name: sbom-syft-generate + # Limit CPU for Go dependencies prefetch, as it tends to be OOM-killed when it gets lots of it without OOTB limit. + - name: prefetch-dependencies computeResources: limits: - memory: 3Gi + cpu: 2 requests: - memory: 3Gi - - pipelineTaskName: build-container-ppc64le + cpu: 2 + # For all sbom-syft-generate steps: + # Memory is increased for the syft command to succeed. Otherwise, there's an error like this in log and container + # exits with 137 (OOMKilled): + # /tekton/scripts/script-2-h7nll: line 7: 33 Killed syft dir:$(cat /shared/container_path) --output cyclonedx-json=/var/workdir/sbom-image.json + - pipelineTaskName: build-images stepSpecs: - name: sbom-syft-generate computeResources: @@ -107,9 +88,10 @@ spec: memory: 3Gi requests: memory: 3Gi - - pipelineTaskName: build-container-arm64 + - pipelineTaskName: build-source-image stepSpecs: - - name: sbom-syft-generate + # Bump memory for source image build because the one with defaults tends to get sometimes OOM-killed. + - name: build computeResources: limits: memory: 3Gi @@ -117,7 +99,7 @@ spec: memory: 3Gi taskRunTemplate: - serviceAccountName: build-pipeline-main + serviceAccountName: build-pipeline-main-4-8 # IMPORTANT: when changing timeouts here, read and follow timeout instructions in operator-bundle-build.yaml. timeouts: diff --git a/.tekton/main-pipeline.yaml b/.tekton/main-pipeline.yaml index b6cb531447960..3c4b7d12f6953 100644 --- a/.tekton/main-pipeline.yaml +++ b/.tekton/main-pipeline.yaml @@ -8,20 +8,20 @@ spec: - name: slack-notification params: - name: message - value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' + value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' - name: key-name value: 'acs-konflux-notifications' when: # Run when any task has Failed - input: $(tasks.status) operator: in - values: ["Failed"] + values: [ "Failed" ] taskRef: params: - name: name value: slack-webhook-notification - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:452188df385218d0a1d9d097ff5daa67f11ae3597c917a3c2bb644787453a8e0 + value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:69945a30c11387a766e3d0ae33991b68e865a290c09da1fea44f193d358926ba - name: kind value: task resolver: bundles @@ -35,23 +35,23 @@ spec: - name: name value: show-sbom - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:002f7c8c1d2f9e09904035da414aba1188ae091df0ea9532cd997be05e73d594 + value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:beb0616db051952b4b861dd8c3e00fa1c0eccbd926feddf71194d3bb3ace9ce7 - name: kind value: task resolver: bundles - name: post-metric-end params: - - name: AGGREGATE_TASKS_STATUS - value: $(tasks.status) + - name: AGGREGATE_TASKS_STATUS + value: $(tasks.status) taskRef: &post-bigquery-metrics-ref params: - - name: name - value: post-bigquery-metrics - - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 - - name: kind - value: task + - name: name + value: post-bigquery-metrics + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task resolver: bundles params: @@ -115,6 +115,25 @@ spec: description: This sets the expiration time for intermediate OCI artifacts produced and used during builds after which they can be garbage collected. name: oci-artifact-expires-after type: string + - name: buildah-format + default: docker + type: string + description: The format for the resulting image's mediaType. Valid values are oci or docker. + - name: extra-labels + type: array + description: Additional labels to put on the built containers. + - default: + # 4 cpus and 7GB of ram should be enough for amd64 builds, but we have to use the next "smallest" available size. + - linux-d160-m2xlarge/amd64 + - linux-d160-m2xlarge/arm64 + - linux/ppc64le + - linux/s390x + description: > + List of platforms to build the container images for. The available + set of values is determined by the configuration of the multi-platform-controller + on the cluster: https://konflux.pages.redhat.com/docs/users/getting-started/multi-platform-builds.html + name: build-platforms + type: array results: - description: "" @@ -142,8 +161,8 @@ spec: params: - name: image-url # We can't provide a StackRox-style tag because it is not known at this time (requires cloning source, etc.) - # As a workaround, we still provide a unique tag that's based on a revision to this task to comply with its - # expected input. We later actually add this tag on a built image with build-image-index-konflux task. + # As a workaround, we still provide a unique tag that's based on a revision in order for this task to comply with + # its expected input. We later actually add this tag on a built image with the apply-index-image-tag task. value: $(params.output-image-repo):konflux-$(params.revision) - name: rebuild value: $(params.rebuild) @@ -154,7 +173,7 @@ spec: - name: name value: init - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:66e90d31e1386bf516fb548cd3e3f0082b5d0234b8b90dbf9e0d4684b70dbe1a + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:b349d24cb896573695802d6913d311640b44675ec082b3ad167721946a6a0a71 - name: kind value: task resolver: bundles @@ -178,7 +197,7 @@ spec: - name: name value: git-clone-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:8ecf57d5a6697ce709bee65b62781efe79a10b0c2b95e05576442b67fbd61744 + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:56f65a16d3d0485c64ad85af2c1f3e9b0bb4d02d63f2fd0ebb9498d219ca723d - name: kind value: task resolver: bundles @@ -192,16 +211,16 @@ spec: - name: determine-image-expiration params: - - name: DEFAULT_IMAGE_EXPIRES_AFTER - value: $(params.image-expires-after) - - name: SOURCE_ARTIFACT - value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) + - name: DEFAULT_IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: SOURCE_ARTIFACT + value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) taskRef: params: - name: name value: determine-image-expiration - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -212,14 +231,12 @@ spec: value: $(params.output-tag-suffix) - name: SOURCE_ARTIFACT value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) - - name: SOURCE_BRANCH - value: '{{source_branch}}' taskRef: params: - name: name value: determine-image-tag - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -239,7 +256,7 @@ spec: - name: name value: fetch-external-networks - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -264,7 +281,7 @@ spec: - name: name value: prefetch-dependencies-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:1f6e2c9beba52d21c562ba1dea55f579f67e33b80099615bfd2043864896284d + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:36207773434bfad80fc3991d3ccca409d8429dbf5974c4dcd8d54145235b4b7b - name: kind value: task resolver: bundles @@ -272,129 +289,15 @@ spec: - name: git-basic-auth workspace: git-auth - - name: build-container-amd64 - params: - - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-amd64 - - name: DOCKERFILE - value: $(params.dockerfile) - - name: CONTEXT - value: $(params.path-context) - - name: HERMETIC - value: $(params.hermetic) - - name: PREFETCH_INPUT - value: $(params.prefetch-input) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: BUILD_ARGS - value: - - BUILD_TAG=$(tasks.determine-image-tag.results.IMAGE_TAG) - - name: SOURCE_ARTIFACT - value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - - name: CACHI2_ARTIFACT - value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - taskRef: + - name: build-images + matrix: params: - - name: name - value: buildah-oci-ta - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-oci-ta:0.4@sha256:cfd711876f21a55bb12c3c5745ecccf4429f2a33ba634f80d8c1eedce7fe2d26 - - name: kind - value: task - resolver: bundles - when: - - input: $(tasks.init.results.build) - operator: in - values: [ "true" ] - - - name: build-container-s390x + - name: PLATFORM + value: + - $(params.build-platforms) params: - - name: PLATFORM - value: linux/s390x - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-s390x - - name: DOCKERFILE - value: $(params.dockerfile) - - name: CONTEXT - value: $(params.path-context) - - name: HERMETIC - value: $(params.hermetic) - - name: PREFETCH_INPUT - value: $(params.prefetch-input) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: BUILD_ARGS - value: - - BUILD_TAG=$(tasks.determine-image-tag.results.IMAGE_TAG) - - name: SOURCE_ARTIFACT - value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - - name: CACHI2_ARTIFACT - value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - taskRef: - params: - - name: name - value: buildah-remote-oci-ta - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:687fbe15c00a10ba6949f6aa49d0ccc7dfef7569abaea23e03c547e1efdc3cd5 - - name: kind - value: task - resolver: bundles - when: - - input: $(tasks.init.results.build) - operator: in - values: [ "true" ] - timeout: 2h0m0s - - - name: build-container-ppc64le - params: - - name: PLATFORM - value: linux/ppc64le - - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-ppc64le - - name: DOCKERFILE - value: $(params.dockerfile) - - name: CONTEXT - value: $(params.path-context) - - name: HERMETIC - value: $(params.hermetic) - - name: PREFETCH_INPUT - value: $(params.prefetch-input) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: BUILD_ARGS - value: - - BUILD_TAG=$(tasks.determine-image-tag.results.IMAGE_TAG) - - name: SOURCE_ARTIFACT - value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - - name: CACHI2_ARTIFACT - value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - taskRef: - params: - - name: name - value: buildah-remote-oci-ta - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:687fbe15c00a10ba6949f6aa49d0ccc7dfef7569abaea23e03c547e1efdc3cd5 - - name: kind - value: task - resolver: bundles - when: - - input: $(tasks.init.results.build) - operator: in - values: [ "true" ] - timeout: 2h0m0s - - - name: build-container-arm64 - params: - - name: PLATFORM - value: linux/arm64 - - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-arm64 + value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG) - name: DOCKERFILE value: $(params.dockerfile) - name: CONTEXT @@ -414,12 +317,20 @@ spec: value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + - name: BUILDAH_FORMAT + value: $(params.buildah-format) + - name: LABELS + value: ["$(params.extra-labels[*])"] + - name: BUILD_TIMESTAMP + value: "$(tasks.clone-repository.results.commit-timestamp)" + - name: IMAGE_APPEND_PLATFORM + value: "true" taskRef: params: - name: name value: buildah-remote-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:687fbe15c00a10ba6949f6aa49d0ccc7dfef7569abaea23e03c547e1efdc3cd5 + value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.7@sha256:d8b2cd0bd3f8e3fdcafe4aebfee59f3f2fcbca78ef31f9c5dd8ecd781cd02636 - name: kind value: task resolver: bundles @@ -437,18 +348,17 @@ spec: value: $(tasks.clone-repository.results.commit) - name: IMAGES value: - - $(tasks.build-container-amd64.results.IMAGE_REF) - - $(tasks.build-container-s390x.results.IMAGE_REF) - - $(tasks.build-container-ppc64le.results.IMAGE_REF) - - $(tasks.build-container-arm64.results.IMAGE_REF) + - $(tasks.build-images.results.IMAGE_REF[*]) - name: IMAGE_EXPIRES_AFTER value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) + - name: BUILDAH_FORMAT + value: $(params.buildah-format) taskRef: params: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:08abb8b12d69b8a33d5ce465304934c6f78e6850613c1c91eb6bf7e1c27d8319 + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.2@sha256:985d1efe861b02524a7679ecd855624b3d4e3a2e835b6f8a97ec7d135898ec0b - name: kind value: task resolver: bundles @@ -456,27 +366,23 @@ spec: - input: $(tasks.init.results.build) operator: in values: [ "true" ] + runAfter: [ build-images ] - - name: build-image-index-konflux + - name: apply-index-image-tag params: - - name: IMAGE - value: $(params.output-image-repo):konflux-$(params.revision) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: IMAGES + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: ADDITIONAL_TAGS value: - - $(tasks.build-container-amd64.results.IMAGE_REF) - - $(tasks.build-container-s390x.results.IMAGE_REF) - - $(tasks.build-container-ppc64le.results.IMAGE_REF) - - $(tasks.build-container-arm64.results.IMAGE_REF) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) + - konflux-$(params.revision) taskRef: params: - name: name - value: build-image-index + value: apply-tags - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:08abb8b12d69b8a33d5ce465304934c6f78e6850613c1c91eb6bf7e1c27d8319 + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:c89cd10b2a3f4c43789c5f06ef2b86f528b28f156c20af5e751fa8c0facd457d - name: kind value: task resolver: bundles @@ -493,12 +399,14 @@ spec: value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + - name: BINARY_IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) taskRef: params: - name: name value: source-build-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.2@sha256:c5e56643c0f5e19409e86c8fd4de4348413b6f10456aa0875498d5c63bf6ef0e + value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:c35ba219390d77a48ee19347e5ee8d13e5c23e3984299e02291d6da1ed8a986c - name: kind value: task resolver: bundles @@ -521,7 +429,7 @@ spec: - name: name value: deprecated-image-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:ecd33669676b3a193ff4c2c6223cb912cc1b0cf5cc36e080eaec7718500272cf + value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:1cf21de671be4c97d4973b60c09c912997cd15b65c30b93a07eff1b24f43a1f8 - name: kind value: task resolver: bundles @@ -531,6 +439,11 @@ spec: values: [ "false" ] - name: clair-scan + matrix: + params: + - name: image-platform + value: + - $(params.build-platforms) params: - name: image-digest value: $(tasks.build-image-index.results.IMAGE_DIGEST) @@ -541,7 +454,7 @@ spec: - name: name value: clair-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.2@sha256:878ae247ffc58d95a9ac68e4d658ef91ef039363e03e65a386bc0ead02d9d7d8 + value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.3@sha256:654b989d7cdc03d082e56f216a29de04847215ee379a8d9ca315e453ad2b15c2 - name: kind value: task resolver: bundles @@ -551,6 +464,11 @@ spec: values: [ "false" ] - name: ecosystem-cert-preflight-checks + matrix: + params: + - name: platform + value: + - $(params.build-platforms) params: - name: image-url value: $(tasks.build-image-index.results.IMAGE_URL) @@ -559,14 +477,14 @@ spec: - name: name value: ecosystem-cert-preflight-checks - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:302828e9d7abc72b8a44fb2b9be068f86c982d8e5f4550b8bf654571d6361ee8 + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:da4f6a586d06a19fcd581ce01d53910c750743124c7d09b1cdf97cb3caa71ff7 - name: kind value: task resolver: bundles when: - input: $(params.skip-checks) operator: in - values: ["false"] + values: [ "false" ] - name: sast-shell-check params: @@ -583,7 +501,7 @@ spec: - name: name value: sast-shell-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:57b3262138eb06186ae7375f84ca53788bba2a66cfd03d39cb82c78df050aba5 + value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:e7a51575f9188a1461d4520da25aaa4efdd3b896c97dc750941fa22840e55c13 - name: kind value: task resolver: bundles @@ -607,7 +525,7 @@ spec: - name: name value: sast-unicode-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.2@sha256:54d50169b4860b90d38d41b00a973489b1db83612ae4aa40f1bdf0a151bff80d + value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.3@sha256:8817f5081c10d9debf25601d6d99d7eddde19435be1ff24741d9025931639959 - name: kind value: task resolver: bundles @@ -631,7 +549,7 @@ spec: - name: name value: sast-snyk-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:6078ec8ec7caacbb8203138fcaa63db24e88dbf838544340bb0752d5b69f20ae + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:49b7d09db82e6cad98152db8f16707ca3d90a1709e846e3ed8c91a433c88724f - name: kind value: task resolver: bundles @@ -641,6 +559,11 @@ spec: values: [ "false" ] - name: clamav-scan + matrix: + params: + - name: image-arch + value: + - $(params.build-platforms) params: - name: image-digest value: $(tasks.build-image-index.results.IMAGE_DIGEST) @@ -651,7 +574,7 @@ spec: - name: name value: clamav-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.2@sha256:98d94290d6f21b6e231485326e3629bbcdec75c737b84e05ac9eac78f9a2c8b4 + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:b2f25599a10ab0846e4659f76b5b78c0fddf561404656fda52055eda31e70d83 - name: kind value: task resolver: bundles @@ -671,14 +594,14 @@ spec: - name: name value: rpms-signature-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:1bac33bd516072d5f4432efafd9dc4d86cdbb8eea8112cea5662984a0ef80e27 + value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:00417785ba16344c10e8682bf58eeb6ef058cedd88ae2d86bb14ced220135374 - name: kind value: task resolver: bundles when: - input: $(params.skip-checks) operator: in - values: ["false"] + values: [ "false" ] - name: push-dockerfile params: @@ -697,7 +620,7 @@ spec: - name: name value: push-dockerfile-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:d0ee13ab3d9564f7ee806a8ceaced934db493a3a40e11ff6db3a912b8bbace95 + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:08bba4a659ecd48f871bef00b80af58954e5a09fcbb28a1783ddd640c4f6535e - name: kind value: task resolver: bundles diff --git a/.tekton/operator-build.yaml b/.tekton/operator-build.yaml index e87b3c80b2118..825a109e4a1a4 100644 --- a/.tekton/operator-build.yaml +++ b/.tekton/operator-build.yaml @@ -20,8 +20,8 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs - appstudio.openshift.io/component: operator + appstudio.openshift.io/application: acs-4-8 + appstudio.openshift.io/component: operator-4-8 pipelines.appstudio.openshift.io/type: build name: operator-on-push namespace: rh-acs-tenant @@ -53,24 +53,36 @@ spec: value: '0' - name: clone-fetch-tags value: 'true' + - name: extra-labels + value: + # X.Y in the cpe label must be adjusted for every version stream. + - "cpe=cpe:/a:redhat:advanced_cluster_security:4.8::el8" pipelineRef: name: basic-component-pipeline taskRunSpecs: - - pipelineTaskName: build-container-amd64 + - pipelineTaskName: prefetch-dependencies stepSpecs: - - name: build - # CPU requests are increased to speed up builds compared to the defaults. - # Defaults: https://github.com/konflux-ci/build-definitions/blob/main/task/buildah/0.1/buildah.yaml#L147 + # Limit CPU for Go dependencies prefetch, as it tends to be OOM-killed when it gets lots of it without OOTB limit. + - name: prefetch-dependencies computeResources: limits: cpu: 2 requests: cpu: 2 + - pipelineTaskName: build-source-image + stepSpecs: + # Bump memory for source image build because the one with defaults tends to get sometimes OOM-killed. + - name: build + computeResources: + limits: + memory: 3Gi + requests: + memory: 3Gi taskRunTemplate: - serviceAccountName: build-pipeline-operator + serviceAccountName: build-pipeline-operator-4-8 # IMPORTANT: when changing timeouts here, read and follow timeout instructions in operator-bundle-build.yaml. timeouts: diff --git a/.tekton/operator-bundle-build.yaml b/.tekton/operator-bundle-build.yaml index 3bfb574039a25..8186f2921ef18 100644 --- a/.tekton/operator-bundle-build.yaml +++ b/.tekton/operator-bundle-build.yaml @@ -20,8 +20,8 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs - appstudio.openshift.io/component: operator-bundle + appstudio.openshift.io/application: acs-4-8 + appstudio.openshift.io/component: operator-bundle-4-8 pipelines.appstudio.openshift.io/type: build name: operator-bundle-on-push namespace: rh-acs-tenant @@ -54,12 +54,27 @@ spec: value: '0' - name: clone-fetch-tags value: 'true' + - name: extra-labels + value: + # X.Y in the cpe label must be adjusted for every version stream. + - "cpe=cpe:/a:redhat:advanced_cluster_security:4.8::el8" pipelineRef: name: operator-bundle-pipeline + taskRunSpecs: + - pipelineTaskName: build-source-image + stepSpecs: + # Bump memory for source image build because the one with defaults tends to get sometimes OOM-killed. + - name: build + computeResources: + limits: + memory: 3Gi + requests: + memory: 3Gi + taskRunTemplate: - serviceAccountName: build-pipeline-operator-bundle + serviceAccountName: build-pipeline-operator-bundle-4-8 # When building the operator-bundle, we must resolve image digests for all other ACS product images in order to inject # these digests in the bundle's ClusterServiceVersion file. For this, the bundle pipeline waits for each image to be diff --git a/.tekton/operator-bundle-pipeline.yaml b/.tekton/operator-bundle-pipeline.yaml index fbd3553225e8c..e453aa6caad34 100644 --- a/.tekton/operator-bundle-pipeline.yaml +++ b/.tekton/operator-bundle-pipeline.yaml @@ -8,20 +8,20 @@ spec: - name: slack-notification params: - name: message - value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' + value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' - name: key-name value: 'acs-konflux-notifications' when: # Run when any task has Failed - input: $(tasks.status) operator: in - values: ["Failed"] + values: [ "Failed" ] taskRef: params: - name: name value: slack-webhook-notification - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:452188df385218d0a1d9d097ff5daa67f11ae3597c917a3c2bb644787453a8e0 + value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:69945a30c11387a766e3d0ae33991b68e865a290c09da1fea44f193d358926ba - name: kind value: task resolver: bundles @@ -35,23 +35,23 @@ spec: - name: name value: show-sbom - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:002f7c8c1d2f9e09904035da414aba1188ae091df0ea9532cd997be05e73d594 + value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:beb0616db051952b4b861dd8c3e00fa1c0eccbd926feddf71194d3bb3ace9ce7 - name: kind value: task resolver: bundles - name: post-metric-end params: - - name: AGGREGATE_TASKS_STATUS - value: $(tasks.status) + - name: AGGREGATE_TASKS_STATUS + value: $(tasks.status) taskRef: &post-bigquery-metrics-ref params: - - name: name - value: post-bigquery-metrics - - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 - - name: kind - value: task + - name: name + value: post-bigquery-metrics + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task resolver: bundles params: @@ -115,6 +115,13 @@ spec: description: This sets the expiration time for intermediate OCI artifacts produced and used during builds after which they can be garbage collected. name: oci-artifact-expires-after type: string + - name: buildah-format + default: docker + type: string + description: The format for the resulting image's mediaType. Valid values are oci or docker. + - name: extra-labels + type: array + description: Additional labels to put on the built containers. - name: operator-image-build-repo description: Repository where the (unreleased) operator image is pushed by its build pipeline. @@ -228,9 +235,6 @@ spec: - description: "" name: CHAINS-GIT_COMMIT value: $(tasks.clone-repository.results.commit) - - description: "" - name: SNAPSHOT_NAME - value: $(tasks.create-acs-style-snapshot.results.SNAPSHOT_NAME) workspaces: - name: git-auth @@ -256,7 +260,7 @@ spec: - name: name value: init - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:66e90d31e1386bf516fb548cd3e3f0082b5d0234b8b90dbf9e0d4684b70dbe1a + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:b349d24cb896573695802d6913d311640b44675ec082b3ad167721946a6a0a71 - name: kind value: task resolver: bundles @@ -280,7 +284,7 @@ spec: - name: name value: git-clone-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:8ecf57d5a6697ce709bee65b62781efe79a10b0c2b95e05576442b67fbd61744 + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:56f65a16d3d0485c64ad85af2c1f3e9b0bb4d02d63f2fd0ebb9498d219ca723d - name: kind value: task resolver: bundles @@ -294,16 +298,16 @@ spec: - name: determine-image-expiration params: - - name: DEFAULT_IMAGE_EXPIRES_AFTER - value: $(params.image-expires-after) - - name: SOURCE_ARTIFACT - value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) + - name: DEFAULT_IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: SOURCE_ARTIFACT + value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) taskRef: params: - name: name value: determine-image-expiration - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -314,14 +318,12 @@ spec: value: $(params.output-tag-suffix) - name: SOURCE_ARTIFACT value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) - - name: SOURCE_BRANCH - value: '{{source_branch}}' taskRef: params: - name: name value: determine-image-tag - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -341,7 +343,7 @@ spec: - name: name value: prefetch-dependencies-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:1f6e2c9beba52d21c562ba1dea55f579f67e33b80099615bfd2043864896284d + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:36207773434bfad80fc3991d3ccca409d8429dbf5974c4dcd8d54145235b4b7b - name: kind value: task resolver: bundles @@ -358,7 +360,7 @@ spec: - name: name value: wait-for-image - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -426,7 +428,7 @@ spec: - name: IMAGE value: "$(params.collector-image-build-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)" taskRef: *wait-for-image-ref - # The timeout must be the same as the pipeline timeout in `collector-retag.yaml` + # This timeout must be the same as the pipeline timeout in `collector-retag.yaml` timeout: 40m - name: wait-for-roxctl-image @@ -480,12 +482,18 @@ spec: value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + - name: BUILDAH_FORMAT + value: $(params.buildah-format) + - name: LABELS + value: ["$(params.extra-labels[*])"] + - name: BUILD_TIMESTAMP + value: "$(tasks.clone-repository.results.commit-timestamp)" taskRef: params: - name: name value: buildah-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-oci-ta:0.4@sha256:cfd711876f21a55bb12c3c5745ecccf4429f2a33ba634f80d8c1eedce7fe2d26 + value: quay.io/konflux-ci/tekton-catalog/task-buildah-oci-ta:0.7@sha256:7d5818e082e5534cf63946c1a1d380c0ee6b10b5c915340368c9ca081b97c02a - name: kind value: task resolver: bundles @@ -496,17 +504,19 @@ spec: - name: apply-tags params: - - name: IMAGE - value: $(tasks.build-container.results.IMAGE_URL) - name: ADDITIONAL_TAGS value: - konflux-$(params.revision) + - name: IMAGE_URL + value: $(tasks.build-container.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-container.results.IMAGE_DIGEST) taskRef: params: - name: name value: apply-tags - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.1@sha256:1c6f673fe100a49f58aaef62580c8adf0c397790964f4e7bac7fcd3f4d07c92e + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:c89cd10b2a3f4c43789c5f06ef2b86f528b28f156c20af5e751fa8c0facd457d - name: kind value: task resolver: bundles @@ -519,12 +529,14 @@ spec: value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + - name: BINARY_IMAGE_DIGEST + value: $(tasks.build-container.results.IMAGE_DIGEST) taskRef: params: - name: name value: source-build-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.2@sha256:c5e56643c0f5e19409e86c8fd4de4348413b6f10456aa0875498d5c63bf6ef0e + value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:c35ba219390d77a48ee19347e5ee8d13e5c23e3984299e02291d6da1ed8a986c - name: kind value: task resolver: bundles @@ -547,7 +559,7 @@ spec: - name: name value: deprecated-image-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:ecd33669676b3a193ff4c2c6223cb912cc1b0cf5cc36e080eaec7718500272cf + value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:1cf21de671be4c97d4973b60c09c912997cd15b65c30b93a07eff1b24f43a1f8 - name: kind value: task resolver: bundles @@ -567,7 +579,29 @@ spec: - name: name value: clair-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.2@sha256:878ae247ffc58d95a9ac68e4d658ef91ef039363e03e65a386bc0ead02d9d7d8 + value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.3@sha256:654b989d7cdc03d082e56f216a29de04847215ee379a8d9ca315e453ad2b15c2 + - name: kind + value: task + resolver: bundles + when: + - input: $(params.skip-checks) + operator: in + values: [ "false" ] + + - name: fips-operator-bundle-check-oci-ta + params: + - name: image-digest + value: $(tasks.build-container.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-container.results.IMAGE_URL) + - name: SOURCE_ARTIFACT + value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) + taskRef: + params: + - name: name + value: fips-operator-bundle-check-oci-ta + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-fips-operator-bundle-check-oci-ta:0.1@sha256:891c4c2c28f24580ddc1ba613f8ce61c74fc634edae6a057de4def11f3e61fd2 - name: kind value: task resolver: bundles @@ -591,7 +625,7 @@ spec: - name: name value: sast-shell-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:57b3262138eb06186ae7375f84ca53788bba2a66cfd03d39cb82c78df050aba5 + value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:e7a51575f9188a1461d4520da25aaa4efdd3b896c97dc750941fa22840e55c13 - name: kind value: task resolver: bundles @@ -615,7 +649,7 @@ spec: - name: name value: sast-unicode-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.2@sha256:54d50169b4860b90d38d41b00a973489b1db83612ae4aa40f1bdf0a151bff80d + value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.3@sha256:8817f5081c10d9debf25601d6d99d7eddde19435be1ff24741d9025931639959 - name: kind value: task resolver: bundles @@ -639,7 +673,7 @@ spec: - name: name value: sast-snyk-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:6078ec8ec7caacbb8203138fcaa63db24e88dbf838544340bb0752d5b69f20ae + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:49b7d09db82e6cad98152db8f16707ca3d90a1709e846e3ed8c91a433c88724f - name: kind value: task resolver: bundles @@ -659,7 +693,7 @@ spec: - name: name value: clamav-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.2@sha256:98d94290d6f21b6e231485326e3629bbcdec75c737b84e05ac9eac78f9a2c8b4 + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:b2f25599a10ab0846e4659f76b5b78c0fddf561404656fda52055eda31e70d83 - name: kind value: task resolver: bundles @@ -679,14 +713,14 @@ spec: - name: name value: rpms-signature-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:1bac33bd516072d5f4432efafd9dc4d86cdbb8eea8112cea5662984a0ef80e27 + value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:00417785ba16344c10e8682bf58eeb6ef058cedd88ae2d86bb14ced220135374 - name: kind value: task resolver: bundles when: - input: $(params.skip-checks) operator: in - values: ["false"] + values: [ "false" ] - name: push-dockerfile params: @@ -705,131 +739,7 @@ spec: - name: name value: push-dockerfile-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:d0ee13ab3d9564f7ee806a8ceaced934db493a3a40e11ff6db3a912b8bbace95 - - name: kind - value: task - resolver: bundles - - - name: create-acs-style-snapshot - description: Creates a Snapshot representing a valid set of ACS containers unlike the Snapshots created by Konflux automatically - # Explicitly running after all other tasks to ensure that - # - there are no failures that should prevent a release of the operator-bundle image (missing RPMs signatures, deprecated base images, ...) - # - the source image is present as it is required by EC - # Use scripts/ci/jobs/check-konflux-setup.sh to validate and update the list. - runAfter: - - apply-tags - - build-container - - build-source-image - - clair-scan - - clamav-scan - - clone-repository - - deprecated-base-image-check - - determine-image-expiration - - determine-image-tag - - init - - post-metric-start - - prefetch-dependencies - - push-dockerfile - - rpms-signature-scan - - sast-shell-check - - sast-snyk-check - - sast-unicode-check - - wait-for-central-db-image - - wait-for-collector-image - - wait-for-main-image - - wait-for-operator-image - - wait-for-roxctl-image - - wait-for-scanner-db-image - - wait-for-scanner-db-slim-image - - wait-for-scanner-image - - wait-for-scanner-slim-image - - wait-for-scanner-v4-db-image - - wait-for-scanner-v4-image - params: - - name: PRODUCT_VERSION - value: $(tasks.determine-image-tag.results.IMAGE_TAG) - - name: COMPONENTS - value: | - [ - { - "name": "central-db", - "containerImage": "$(params.central-db-image-build-repo)@$(tasks.wait-for-central-db-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-central-db-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-central-db-image.results.GIT_REF)" - }, - { - "name": "collector", - "containerImage": "$(params.collector-image-build-repo)@$(tasks.wait-for-collector-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-collector-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-collector-image.results.GIT_REF)" - }, - { - "name": "main", - "containerImage": "$(params.main-image-build-repo)@$(tasks.wait-for-main-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-main-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-main-image.results.GIT_REF)" - }, - { - "name": "operator", - "containerImage": "$(params.operator-image-build-repo)@$(tasks.wait-for-operator-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-operator-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-operator-image.results.GIT_REF)" - }, - { - "name": "operator-bundle", - "containerImage": "$(tasks.build-container.results.IMAGE_URL)@$(tasks.build-container.results.IMAGE_DIGEST)", - "repository": "$(params.git-url)", - "revision": "$(params.revision)" - }, - { - "name": "roxctl", - "containerImage": "$(params.roxctl-image-build-repo)@$(tasks.wait-for-roxctl-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-roxctl-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-roxctl-image.results.GIT_REF)" - }, - { - "name": "scanner-db", - "containerImage": "$(params.scanner-db-image-build-repo)@$(tasks.wait-for-scanner-db-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-scanner-db-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-scanner-db-image.results.GIT_REF)" - }, - { - "name": "scanner-db-slim", - "containerImage": "$(params.scanner-db-slim-image-build-repo)@$(tasks.wait-for-scanner-db-slim-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-scanner-db-slim-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-scanner-db-slim-image.results.GIT_REF)" - }, - { - "name": "scanner", - "containerImage": "$(params.scanner-image-build-repo)@$(tasks.wait-for-scanner-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-scanner-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-scanner-image.results.GIT_REF)" - }, - { - "name": "scanner-slim", - "containerImage": "$(params.scanner-slim-image-build-repo)@$(tasks.wait-for-scanner-slim-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-scanner-slim-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-scanner-slim-image.results.GIT_REF)" - }, - { - "name": "scanner-v4-db", - "containerImage": "$(params.scanner-v4-db-image-build-repo)@$(tasks.wait-for-scanner-v4-db-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-scanner-v4-db-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-scanner-v4-db-image.results.GIT_REF)" - }, - { - "name": "scanner-v4", - "containerImage": "$(params.scanner-v4-image-build-repo)@$(tasks.wait-for-scanner-v4-image.results.IMAGE_DIGEST)", - "repository": "$(tasks.wait-for-scanner-v4-image.results.GIT_REPO)", - "revision": "$(tasks.wait-for-scanner-v4-image.results.GIT_REF)" - } - ] - taskRef: - params: - - name: name - value: create-snapshot - - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:08bba4a659ecd48f871bef00b80af58954e5a09fcbb28a1783ddd640c4f6535e - name: kind value: task resolver: bundles diff --git a/.tekton/retag-collector.yaml b/.tekton/retag-collector.yaml index b52cb8bdccd4d..8ed33473c460e 100644 --- a/.tekton/retag-collector.yaml +++ b/.tekton/retag-collector.yaml @@ -20,7 +20,7 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs + appstudio.openshift.io/application: acs-4-8 name: retag-collector namespace: rh-acs-tenant @@ -42,7 +42,7 @@ spec: name: retag-pipeline taskRunTemplate: - serviceAccountName: build-pipeline-collector + serviceAccountName: build-pipeline-collector-4-8 timeouts: tasks: 30m diff --git a/.tekton/retag-pipeline.yaml b/.tekton/retag-pipeline.yaml index 56ba44fc9d3ca..8b55f1022357f 100644 --- a/.tekton/retag-pipeline.yaml +++ b/.tekton/retag-pipeline.yaml @@ -8,7 +8,7 @@ spec: - name: slack-notification params: - name: message - value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' + value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' - name: key-name value: 'acs-konflux-notifications' when: @@ -21,23 +21,23 @@ spec: - name: name value: slack-webhook-notification - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:452188df385218d0a1d9d097ff5daa67f11ae3597c917a3c2bb644787453a8e0 + value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:69945a30c11387a766e3d0ae33991b68e865a290c09da1fea44f193d358926ba - name: kind value: task resolver: bundles - name: post-metric-end params: - - name: AGGREGATE_TASKS_STATUS - value: $(tasks.status) + - name: AGGREGATE_TASKS_STATUS + value: $(tasks.status) taskRef: &post-bigquery-metrics-ref params: - - name: name - value: post-bigquery-metrics - - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 - - name: kind - value: task + - name: name + value: post-bigquery-metrics + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task resolver: bundles params: @@ -117,7 +117,7 @@ spec: - name: name value: git-clone-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:8ecf57d5a6697ce709bee65b62781efe79a10b0c2b95e05576442b67fbd61744 + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:56f65a16d3d0485c64ad85af2c1f3e9b0bb4d02d63f2fd0ebb9498d219ca723d - name: kind value: task resolver: bundles @@ -131,14 +131,12 @@ spec: value: $(params.image-tag-suffix) - name: SOURCE_ARTIFACT value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) - - name: SOURCE_BRANCH - value: '{{source_branch}}' taskRef: params: - name: name value: determine-image-tag - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -153,15 +151,36 @@ spec: value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) taskRef: params: - - name: name - value: determine-dependency-image-tag - - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 - - name: kind - value: task + - name: name + value: determine-dependency-image-tag + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task + resolver: bundles + + # We only check the input image is ready and otherwise fail the retag pipeline early and with a meaningful error. + # This confirms that the image is present and that it has successfully passed its build pipeline. + - name: wait-for-image + params: + - name: IMAGE + value: "$(params.input-image-repo):$(tasks.determine-input-image-tag.results.IMAGE_TAG)" + taskRef: + params: + - name: name + value: wait-for-image + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task resolver: bundles + timeout: 5m - name: retag-image + # runAfter needs to be specified, because there is no implicit dependency on wait-for-image's + # results, but we still need it to run before. + runAfter: + - wait-for-image params: - name: INPUT_IMAGE_REPO value: $(params.input-image-repo) @@ -176,7 +195,7 @@ spec: - name: name value: retag-image - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles diff --git a/.tekton/retag-scanner-db-slim.yaml b/.tekton/retag-scanner-db-slim.yaml index 90a941d68117b..2e66f4c35d3b5 100644 --- a/.tekton/retag-scanner-db-slim.yaml +++ b/.tekton/retag-scanner-db-slim.yaml @@ -20,7 +20,7 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs + appstudio.openshift.io/application: acs-4-8 name: retag-scanner-db-slim namespace: rh-acs-tenant @@ -42,7 +42,7 @@ spec: name: retag-pipeline taskRunTemplate: - serviceAccountName: build-pipeline-scanner-db-slim + serviceAccountName: build-pipeline-scanner-db-slim-4-8 timeouts: tasks: 30m diff --git a/.tekton/retag-scanner-db.yaml b/.tekton/retag-scanner-db.yaml index a7d2857d8e8db..1f0ff6d8c48c0 100644 --- a/.tekton/retag-scanner-db.yaml +++ b/.tekton/retag-scanner-db.yaml @@ -20,7 +20,7 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs + appstudio.openshift.io/application: acs-4-8 name: retag-scanner-db namespace: rh-acs-tenant @@ -42,7 +42,7 @@ spec: name: retag-pipeline taskRunTemplate: - serviceAccountName: build-pipeline-scanner-db + serviceAccountName: build-pipeline-scanner-db-4-8 timeouts: tasks: 30m diff --git a/.tekton/retag-scanner-slim.yaml b/.tekton/retag-scanner-slim.yaml index 25b3b3549d88c..5fcdca00ac801 100644 --- a/.tekton/retag-scanner-slim.yaml +++ b/.tekton/retag-scanner-slim.yaml @@ -20,7 +20,7 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs + appstudio.openshift.io/application: acs-4-8 name: retag-scanner-slim namespace: rh-acs-tenant @@ -42,7 +42,7 @@ spec: name: retag-pipeline taskRunTemplate: - serviceAccountName: build-pipeline-scanner-slim + serviceAccountName: build-pipeline-scanner-slim-4-8 timeouts: tasks: 30m diff --git a/.tekton/retag-scanner.yaml b/.tekton/retag-scanner.yaml index ca2485bcffc6b..b40e49e7eef9d 100644 --- a/.tekton/retag-scanner.yaml +++ b/.tekton/retag-scanner.yaml @@ -20,7 +20,7 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs + appstudio.openshift.io/application: acs-4-8 name: retag-scanner namespace: rh-acs-tenant @@ -42,7 +42,7 @@ spec: name: retag-pipeline taskRunTemplate: - serviceAccountName: build-pipeline-scanner + serviceAccountName: build-pipeline-scanner-4-8 timeouts: tasks: 30m diff --git a/.tekton/roxctl-build.yaml b/.tekton/roxctl-build.yaml index df52e07de3a2e..593c74c59009a 100644 --- a/.tekton/roxctl-build.yaml +++ b/.tekton/roxctl-build.yaml @@ -20,8 +20,8 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs - appstudio.openshift.io/component: roxctl + appstudio.openshift.io/application: acs-4-8 + appstudio.openshift.io/component: roxctl-4-8 pipelines.appstudio.openshift.io/type: build name: roxctl-on-push namespace: rh-acs-tenant @@ -53,24 +53,36 @@ spec: value: '0' - name: clone-fetch-tags value: 'true' + - name: extra-labels + value: + # X.Y in the cpe label must be adjusted for every version stream. + - "cpe=cpe:/a:redhat:advanced_cluster_security:4.8::el8" pipelineRef: name: basic-component-pipeline taskRunSpecs: - - pipelineTaskName: build-container-amd64 + - pipelineTaskName: prefetch-dependencies stepSpecs: - - name: build - # CPU requests are increased to speed up builds compared to the defaults. - # Defaults: https://github.com/konflux-ci/build-definitions/blob/main/task/buildah/0.1/buildah.yaml#L147 + # Limit CPU for Go dependencies prefetch, as it tends to be OOM-killed when it gets lots of it without OOTB limit. + - name: prefetch-dependencies computeResources: limits: cpu: 2 requests: cpu: 2 + - pipelineTaskName: build-source-image + stepSpecs: + # Bump memory for source image build because the one with defaults tends to get sometimes OOM-killed. + - name: build + computeResources: + limits: + memory: 3Gi + requests: + memory: 3Gi taskRunTemplate: - serviceAccountName: build-pipeline-roxctl + serviceAccountName: build-pipeline-roxctl-4-8 # IMPORTANT: when changing timeouts here, read and follow timeout instructions in operator-bundle-build.yaml. timeouts: diff --git a/.tekton/scanner-v4-build.yaml b/.tekton/scanner-v4-build.yaml index 200fba3458b93..f7fe2ce7b3999 100644 --- a/.tekton/scanner-v4-build.yaml +++ b/.tekton/scanner-v4-build.yaml @@ -20,8 +20,8 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs - appstudio.openshift.io/component: scanner-v4 + appstudio.openshift.io/application: acs-4-8 + appstudio.openshift.io/component: scanner-v4-4-8 pipelines.appstudio.openshift.io/type: build name: scanner-v4-on-push namespace: rh-acs-tenant @@ -53,24 +53,36 @@ spec: value: '0' - name: clone-fetch-tags value: 'true' + - name: extra-labels + value: + # X.Y in the cpe label must be adjusted for every version stream. + - "cpe=cpe:/a:redhat:advanced_cluster_security:4.8::el8" pipelineRef: name: scanner-v4-pipeline taskRunSpecs: - - pipelineTaskName: build-container-amd64 + - pipelineTaskName: prefetch-dependencies stepSpecs: - - name: build - # CPU requests are increased to speed up builds compared to the defaults. - # Defaults: https://github.com/konflux-ci/build-definitions/blob/main/task/buildah/0.1/buildah.yaml#L147 + # Limit CPU for Go dependencies prefetch, as it tends to be OOM-killed when it gets lots of it without OOTB limit. + - name: prefetch-dependencies computeResources: limits: cpu: 2 requests: cpu: 2 + - pipelineTaskName: build-source-image + stepSpecs: + # Bump memory for source image build because the one with defaults tends to get sometimes OOM-killed. + - name: build + computeResources: + limits: + memory: 3Gi + requests: + memory: 3Gi taskRunTemplate: - serviceAccountName: build-pipeline-scanner-v4 + serviceAccountName: build-pipeline-scanner-v4-4-8 # IMPORTANT: when changing timeouts here, read and follow timeout instructions in operator-bundle-build.yaml. timeouts: diff --git a/.tekton/scanner-v4-db-build.yaml b/.tekton/scanner-v4-db-build.yaml index 67b2f7d654d5b..34694d3c51f90 100644 --- a/.tekton/scanner-v4-db-build.yaml +++ b/.tekton/scanner-v4-db-build.yaml @@ -20,8 +20,8 @@ metadata: ) ) labels: - appstudio.openshift.io/application: acs - appstudio.openshift.io/component: scanner-v4-db + appstudio.openshift.io/application: acs-4-8 + appstudio.openshift.io/component: scanner-v4-db-4-8 pipelines.appstudio.openshift.io/type: build name: scanner-v4-db-on-push namespace: rh-acs-tenant @@ -54,12 +54,27 @@ spec: value: '0' - name: clone-fetch-tags value: 'true' + - name: extra-labels + value: + # X.Y in the cpe label must be adjusted for every version stream. + - "cpe=cpe:/a:redhat:advanced_cluster_security:4.8::el8" pipelineRef: name: basic-component-pipeline + taskRunSpecs: + - pipelineTaskName: build-source-image + stepSpecs: + # Bump memory for source image build because the one with defaults tends to get sometimes OOM-killed. + - name: build + computeResources: + limits: + memory: 3Gi + requests: + memory: 3Gi + taskRunTemplate: - serviceAccountName: build-pipeline-scanner-v4-db + serviceAccountName: build-pipeline-scanner-v4-db-4-8 # IMPORTANT: when changing timeouts here, read and follow timeout instructions in operator-bundle-build.yaml. timeouts: diff --git a/.tekton/scanner-v4-pipeline.yaml b/.tekton/scanner-v4-pipeline.yaml index c6f996d550cde..e18233acbdc27 100644 --- a/.tekton/scanner-v4-pipeline.yaml +++ b/.tekton/scanner-v4-pipeline.yaml @@ -8,20 +8,20 @@ spec: - name: slack-notification params: - name: message - value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' + value: ':x: `{{event_type}}` pipeline for (`$(params.output-image-repo)`, revision <$(params.git-url)/commit/$(params.revision)|$(params.revision)>) has failed.' - name: key-name value: 'acs-konflux-notifications' when: # Run when any task has Failed - input: $(tasks.status) operator: in - values: ["Failed"] + values: [ "Failed" ] taskRef: params: - name: name value: slack-webhook-notification - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:452188df385218d0a1d9d097ff5daa67f11ae3597c917a3c2bb644787453a8e0 + value: quay.io/konflux-ci/tekton-catalog/task-slack-webhook-notification:0.1@sha256:69945a30c11387a766e3d0ae33991b68e865a290c09da1fea44f193d358926ba - name: kind value: task resolver: bundles @@ -35,23 +35,23 @@ spec: - name: name value: show-sbom - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:002f7c8c1d2f9e09904035da414aba1188ae091df0ea9532cd997be05e73d594 + value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:beb0616db051952b4b861dd8c3e00fa1c0eccbd926feddf71194d3bb3ace9ce7 - name: kind value: task resolver: bundles - name: post-metric-end params: - - name: AGGREGATE_TASKS_STATUS - value: $(tasks.status) + - name: AGGREGATE_TASKS_STATUS + value: $(tasks.status) taskRef: &post-bigquery-metrics-ref params: - - name: name - value: post-bigquery-metrics - - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 - - name: kind - value: task + - name: name + value: post-bigquery-metrics + - name: bundle + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 + - name: kind + value: task resolver: bundles params: @@ -115,6 +115,24 @@ spec: description: This sets the expiration time for intermediate OCI artifacts produced and used during builds after which they can be garbage collected. name: oci-artifact-expires-after type: string + - name: buildah-format + default: docker + type: string + description: The format for the resulting image's mediaType. Valid values are oci or docker. + - name: extra-labels + type: array + description: Additional labels to put on the built containers. + - default: + - linux/amd64 + - linux/arm64 + - linux/ppc64le + - linux/s390x + description: > + List of platforms to build the container images for. The available + set of values is determined by the configuration of the multi-platform-controller + on the cluster: https://konflux.pages.redhat.com/docs/users/getting-started/multi-platform-builds.html + name: build-platforms + type: array results: - description: "" @@ -142,8 +160,8 @@ spec: params: - name: image-url # We can't provide a StackRox-style tag because it is not known at this time (requires cloning source, etc.) - # As a workaround, we still provide a unique tag that's based on a revision to this task to comply with its - # expected input. We later actually add this tag on a built image with build-image-index-konflux task. + # As a workaround, we still provide a unique tag that's based on a revision in order for this task to comply with + # its expected input. We later actually add this tag on a built image with the apply-index-image-tag task. value: $(params.output-image-repo):konflux-$(params.revision) - name: rebuild value: $(params.rebuild) @@ -154,7 +172,7 @@ spec: - name: name value: init - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:66e90d31e1386bf516fb548cd3e3f0082b5d0234b8b90dbf9e0d4684b70dbe1a + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:b349d24cb896573695802d6913d311640b44675ec082b3ad167721946a6a0a71 - name: kind value: task resolver: bundles @@ -178,7 +196,7 @@ spec: - name: name value: git-clone-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:8ecf57d5a6697ce709bee65b62781efe79a10b0c2b95e05576442b67fbd61744 + value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:56f65a16d3d0485c64ad85af2c1f3e9b0bb4d02d63f2fd0ebb9498d219ca723d - name: kind value: task resolver: bundles @@ -192,16 +210,16 @@ spec: - name: determine-image-expiration params: - - name: DEFAULT_IMAGE_EXPIRES_AFTER - value: $(params.image-expires-after) - - name: SOURCE_ARTIFACT - value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) + - name: DEFAULT_IMAGE_EXPIRES_AFTER + value: $(params.image-expires-after) + - name: SOURCE_ARTIFACT + value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) taskRef: params: - name: name value: determine-image-expiration - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -212,14 +230,12 @@ spec: value: $(params.output-tag-suffix) - name: SOURCE_ARTIFACT value: $(tasks.clone-repository.results.SOURCE_ARTIFACT) - - name: SOURCE_BRANCH - value: '{{source_branch}}' taskRef: params: - name: name value: determine-image-tag - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -239,7 +255,7 @@ spec: - name: name value: fetch-scanner-v4-vuln-mappings - name: bundle - value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:a430d9d1be902a11cb55e25db21570da8922887bda1b9cb10c7d986166d57961 + value: quay.io/rhacs-eng/konflux-tasks:latest@sha256:9cc5041b2bce6fdce8466a709fca2a93f6c8b0a901ad335986f8b58c0b364e30 - name: kind value: task resolver: bundles @@ -259,7 +275,7 @@ spec: - name: name value: prefetch-dependencies-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:1f6e2c9beba52d21c562ba1dea55f579f67e33b80099615bfd2043864896284d + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.2@sha256:36207773434bfad80fc3991d3ccca409d8429dbf5974c4dcd8d54145235b4b7b - name: kind value: task resolver: bundles @@ -267,125 +283,15 @@ spec: - name: git-basic-auth workspace: git-auth - - name: build-container-amd64 - params: - - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-amd64 - - name: DOCKERFILE - value: $(params.dockerfile) - - name: CONTEXT - value: $(params.path-context) - - name: HERMETIC - value: $(params.hermetic) - - name: PREFETCH_INPUT - value: $(params.prefetch-input) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: BUILD_ARGS - value: - - BUILD_TAG=$(tasks.determine-image-tag.results.IMAGE_TAG) - - name: SOURCE_ARTIFACT - value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - - name: CACHI2_ARTIFACT - value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - taskRef: - params: - - name: name - value: buildah-oci-ta - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-oci-ta:0.4@sha256:cfd711876f21a55bb12c3c5745ecccf4429f2a33ba634f80d8c1eedce7fe2d26 - - name: kind - value: task - resolver: bundles - when: - - input: $(tasks.init.results.build) - operator: in - values: [ "true" ] - - - name: build-container-s390x - params: - - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-s390x - - name: DOCKERFILE - value: $(params.dockerfile) - - name: CONTEXT - value: $(params.path-context) - - name: HERMETIC - value: $(params.hermetic) - - name: PREFETCH_INPUT - value: $(params.prefetch-input) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: BUILD_ARGS - value: - - BUILD_TAG=$(tasks.determine-image-tag.results.IMAGE_TAG) - - name: SOURCE_ARTIFACT - value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - - name: CACHI2_ARTIFACT - value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - - name: PLATFORM - value: linux/s390x - taskRef: - params: - - name: name - value: buildah-remote-oci-ta - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:687fbe15c00a10ba6949f6aa49d0ccc7dfef7569abaea23e03c547e1efdc3cd5 - - name: kind - value: task - resolver: bundles - when: - - input: $(tasks.init.results.build) - operator: in - values: [ "true" ] - - - name: build-container-ppc64le - params: - - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-ppc64le - - name: DOCKERFILE - value: $(params.dockerfile) - - name: CONTEXT - value: $(params.path-context) - - name: HERMETIC - value: $(params.hermetic) - - name: PREFETCH_INPUT - value: $(params.prefetch-input) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: BUILD_ARGS - value: - - BUILD_TAG=$(tasks.determine-image-tag.results.IMAGE_TAG) - - name: SOURCE_ARTIFACT - value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - - name: CACHI2_ARTIFACT - value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - - name: PLATFORM - value: linux/ppc64le - taskRef: + - name: build-images + matrix: params: - - name: name - value: buildah-remote-oci-ta - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:687fbe15c00a10ba6949f6aa49d0ccc7dfef7569abaea23e03c547e1efdc3cd5 - - name: kind - value: task - resolver: bundles - when: - - input: $(tasks.init.results.build) - operator: in - values: [ "true" ] - - - name: build-container-arm64 + - name: PLATFORM + value: + - $(params.build-platforms) params: - name: IMAGE - value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG)-arm64 + value: $(params.output-image-repo):$(tasks.determine-image-tag.results.IMAGE_TAG) - name: DOCKERFILE value: $(params.dockerfile) - name: CONTEXT @@ -405,14 +311,20 @@ spec: value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) - - name: PLATFORM - value: linux/arm64 + - name: BUILDAH_FORMAT + value: $(params.buildah-format) + - name: LABELS + value: ["$(params.extra-labels[*])"] + - name: BUILD_TIMESTAMP + value: "$(tasks.clone-repository.results.commit-timestamp)" + - name: IMAGE_APPEND_PLATFORM + value: "true" taskRef: params: - name: name value: buildah-remote-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.4@sha256:687fbe15c00a10ba6949f6aa49d0ccc7dfef7569abaea23e03c547e1efdc3cd5 + value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.7@sha256:d8b2cd0bd3f8e3fdcafe4aebfee59f3f2fcbca78ef31f9c5dd8ecd781cd02636 - name: kind value: task resolver: bundles @@ -429,18 +341,17 @@ spec: value: $(tasks.clone-repository.results.commit) - name: IMAGES value: - - $(tasks.build-container-amd64.results.IMAGE_REF) - - $(tasks.build-container-s390x.results.IMAGE_REF) - - $(tasks.build-container-ppc64le.results.IMAGE_REF) - - $(tasks.build-container-arm64.results.IMAGE_REF) + - $(tasks.build-images.results.IMAGE_REF[*]) - name: IMAGE_EXPIRES_AFTER value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) + - name: BUILDAH_FORMAT + value: $(params.buildah-format) taskRef: params: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:08abb8b12d69b8a33d5ce465304934c6f78e6850613c1c91eb6bf7e1c27d8319 + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.2@sha256:985d1efe861b02524a7679ecd855624b3d4e3a2e835b6f8a97ec7d135898ec0b - name: kind value: task resolver: bundles @@ -448,27 +359,23 @@ spec: - input: $(tasks.init.results.build) operator: in values: [ "true" ] + runAfter: [ build-images ] - - name: build-image-index-konflux + - name: apply-index-image-tag params: - - name: IMAGE - value: $(params.output-image-repo):konflux-$(params.revision) - - name: COMMIT_SHA - value: $(tasks.clone-repository.results.commit) - - name: IMAGES + - name: IMAGE_URL + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: ADDITIONAL_TAGS value: - - $(tasks.build-container-amd64.results.IMAGE_REF) - - $(tasks.build-container-s390x.results.IMAGE_REF) - - $(tasks.build-container-ppc64le.results.IMAGE_REF) - - $(tasks.build-container-arm64.results.IMAGE_REF) - - name: IMAGE_EXPIRES_AFTER - value: $(tasks.determine-image-expiration.results.IMAGE_EXPIRES_AFTER) + - konflux-$(params.revision) taskRef: params: - name: name - value: build-image-index + value: apply-tags - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:08abb8b12d69b8a33d5ce465304934c6f78e6850613c1c91eb6bf7e1c27d8319 + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:c89cd10b2a3f4c43789c5f06ef2b86f528b28f156c20af5e751fa8c0facd457d - name: kind value: task resolver: bundles @@ -485,12 +392,14 @@ spec: value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT) - name: CACHI2_ARTIFACT value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT) + - name: BINARY_IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) taskRef: params: - name: name value: source-build-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.2@sha256:c5e56643c0f5e19409e86c8fd4de4348413b6f10456aa0875498d5c63bf6ef0e + value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:c35ba219390d77a48ee19347e5ee8d13e5c23e3984299e02291d6da1ed8a986c - name: kind value: task resolver: bundles @@ -513,7 +422,7 @@ spec: - name: name value: deprecated-image-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:ecd33669676b3a193ff4c2c6223cb912cc1b0cf5cc36e080eaec7718500272cf + value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:1cf21de671be4c97d4973b60c09c912997cd15b65c30b93a07eff1b24f43a1f8 - name: kind value: task resolver: bundles @@ -523,6 +432,11 @@ spec: values: [ "false" ] - name: clair-scan + matrix: + params: + - name: image-platform + value: + - $(params.build-platforms) params: - name: image-digest value: $(tasks.build-image-index.results.IMAGE_DIGEST) @@ -533,7 +447,7 @@ spec: - name: name value: clair-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.2@sha256:878ae247ffc58d95a9ac68e4d658ef91ef039363e03e65a386bc0ead02d9d7d8 + value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.3@sha256:654b989d7cdc03d082e56f216a29de04847215ee379a8d9ca315e453ad2b15c2 - name: kind value: task resolver: bundles @@ -543,6 +457,11 @@ spec: values: [ "false" ] - name: ecosystem-cert-preflight-checks + matrix: + params: + - name: platform + value: + - $(params.build-platforms) params: - name: image-url value: $(tasks.build-image-index.results.IMAGE_URL) @@ -551,14 +470,14 @@ spec: - name: name value: ecosystem-cert-preflight-checks - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:302828e9d7abc72b8a44fb2b9be068f86c982d8e5f4550b8bf654571d6361ee8 + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:da4f6a586d06a19fcd581ce01d53910c750743124c7d09b1cdf97cb3caa71ff7 - name: kind value: task resolver: bundles when: - input: $(params.skip-checks) operator: in - values: ["false"] + values: [ "false" ] - name: sast-shell-check params: @@ -575,7 +494,7 @@ spec: - name: name value: sast-shell-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:57b3262138eb06186ae7375f84ca53788bba2a66cfd03d39cb82c78df050aba5 + value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:e7a51575f9188a1461d4520da25aaa4efdd3b896c97dc750941fa22840e55c13 - name: kind value: task resolver: bundles @@ -599,7 +518,7 @@ spec: - name: name value: sast-unicode-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.2@sha256:54d50169b4860b90d38d41b00a973489b1db83612ae4aa40f1bdf0a151bff80d + value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.3@sha256:8817f5081c10d9debf25601d6d99d7eddde19435be1ff24741d9025931639959 - name: kind value: task resolver: bundles @@ -623,7 +542,7 @@ spec: - name: name value: sast-snyk-check-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:6078ec8ec7caacbb8203138fcaa63db24e88dbf838544340bb0752d5b69f20ae + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:49b7d09db82e6cad98152db8f16707ca3d90a1709e846e3ed8c91a433c88724f - name: kind value: task resolver: bundles @@ -633,6 +552,11 @@ spec: values: [ "false" ] - name: clamav-scan + matrix: + params: + - name: image-arch + value: + - $(params.build-platforms) params: - name: image-digest value: $(tasks.build-image-index.results.IMAGE_DIGEST) @@ -643,7 +567,7 @@ spec: - name: name value: clamav-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.2@sha256:98d94290d6f21b6e231485326e3629bbcdec75c737b84e05ac9eac78f9a2c8b4 + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:b2f25599a10ab0846e4659f76b5b78c0fddf561404656fda52055eda31e70d83 - name: kind value: task resolver: bundles @@ -663,14 +587,14 @@ spec: - name: name value: rpms-signature-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:1bac33bd516072d5f4432efafd9dc4d86cdbb8eea8112cea5662984a0ef80e27 + value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:00417785ba16344c10e8682bf58eeb6ef058cedd88ae2d86bb14ced220135374 - name: kind value: task resolver: bundles when: - input: $(params.skip-checks) operator: in - values: ["false"] + values: [ "false" ] - name: push-dockerfile params: @@ -689,7 +613,7 @@ spec: - name: name value: push-dockerfile-oci-ta - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:d0ee13ab3d9564f7ee806a8ceaced934db493a3a40e11ff6db3a912b8bbace95 + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.1@sha256:08bba4a659ecd48f871bef00b80af58954e5a09fcbb28a1783ddd640c4f6535e - name: kind value: task resolver: bundles diff --git a/BUILD_IMAGE_VERSION b/BUILD_IMAGE_VERSION index e0ebe430f100c..44776a28929be 100644 --- a/BUILD_IMAGE_VERSION +++ b/BUILD_IMAGE_VERSION @@ -1 +1 @@ -stackrox-build-0.4.8 +stackrox-build-0.5.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 19d7cc7c26502..d083245930149 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,67 @@ Put an entry in this file if your change is user-visible and you consider it _pa Changes should still be described appropriately in JIRA/doc input pages, for inclusion in downstream release notes. -## [NEXT RELEASE] +## [4.8.8] + +**Full Changelog**: [4.8.7...4.8.8](https://github.com/stackrox/stackrox/compare/4.8.7...4.8.8) + +For a description of the changes, review the [Release Notes](https://docs.redhat.com/en/documentation/red_hat_advanced_cluster_security_for_kubernetes/4.8/html/release_notes/index) on the Red Hat Documentation portal. + +## [4.8.7] + +**Full Changelog**: [4.8.6...4.8.7](https://github.com/stackrox/stackrox/compare/4.8.6...4.8.7) + +For a description of the changes, review the [Release Notes](https://docs.redhat.com/en/documentation/red_hat_advanced_cluster_security_for_kubernetes/4.8/html/release_notes/index) on the Red Hat Documentation portal. + +## [4.8.6] + +### Technical Changes + +- ROX-31138: Resolved an issue where automatically re-scanned images failed to suppress deferred CVEs in the web UI portal, causing the CVEs to reappear in results and reports. +- ROX-31554: Fixed an issue where Central would panic and terminate Sensor connections, when a Sensor sent an event type unknown to Central. This occurred specifically when a Sensor version 4.9 was paired with Central version 4.7 or 4.8 on a cluster using OpenShift Virtualization. This fix ensures Central operates normally under these conditions and has also been applied to Central 4.9 to improve future compatibility with Sensors. +- ROX-31365: Fixed an issue that could cause database connection exhaustion when many Sensors try to reconnect at the same time. + +## [4.8.5] + +### Technical Changes + +- ROX-30462: Reduced log level for semaphore acquisition failures from ERROR to DEBUG. This eliminates log spam during Central shutdown when multiple scans are queued in parallel, making it easier to identify actual shutdown issues. +- ROX-30867: Prevents mutex timeouts and reduces strain on Central and Central-DB during high-volume indicator processing, reducing lock contention and transaction duration when writing large batches of process indicators. Previously, batches of 10K indicators were processed in a single transaction with a held lock, causing timeouts with datasets over 500K indicators. +- ROX-31088: If Compliance Operator is installed, its version is now correctly reported through telemetry. + +## [4.8.4] + +### Technical Changes + +- ROX-30837: The `roxctl` binaries in the RHACS main image are no longer built with `strictfipsruntime` `GOTAGS`, fixing a startup error. This runtime error did not affect upstream built images. + +## [4.8.3] + +### Technical Changes + +- ROX-30447, ROX-30498: Updated `ROX_HASH_FLUSH_INTERVAL` to allow for 0 such that hashes can be turned off entirely. If hashes are turned off, the table will be truncated thus freeing the space used by the table. +- ROX-29776: The `/v1/serviceaccounts` endpoint now respects pagination of results via the query. +- ROX-30685: Starting from version 4.8.3, product container images are built and released using a different set of technologies as compared to earlier versions. This may bring changes to metadata such as container labels, contents and location of SBOMs, and so on. These changes do not affect the functioning of the product but may impact third-party integrations. + +## [4.8.2] + +### Technical Changes + +- ROX-30289, ROX-30307: Move initialization of the rankers out of the main startup path greatly improving startup time. Additionally, resolved inefficiencies in the queries used to initialize the rankers. This improved startup time as well as memory utilization on startup. +- ROX-26366: For vulnerability data v2, data is no longer published in a single-bundle format, as this is no longer required after ACS 4.6. Older versions of Scanner-V4 that consume the v1 data format can continue to support the single-bundle format. + +## [4.8.1] + +### Technical Changes + +- ROX-30059: Fixed backup functionality after upgrading CentralDB to PostgreSQL 15. +- ROX-29649: Removed a log info message saying "Telemetry collection is disabled". +- ROX-30057: Batched the NetworkFlows database table migration #209. +- ROX-29613: Ensured that networking flows and entities are not added to the database after their deployments are deleted. +- ROX-29724: Fixed a memory leak in the network tree resulting from the Remove method of the network tree not actually removing nodes associated with deleted entities. +- ROX-30366: Addressed connectivity problems between product's components caused by gRPC 1.67 upgrade. + +## [4.8.0] **HELM USERS**: Please see ROX-27622 under "technical changes" to avoid upgrade failures! @@ -41,6 +101,7 @@ Scanner V4 claims the images contain vulnerabilities which the official Red Hat - ROX-25570: The data model for image based CVEs has been denormalized - This will result in far more consistent results as 1 image scan will no longer overwrite CVE data of a previous image scan. - `ROX_FLATTEN_CVE_DATA` can be set to false to use the old normalized data model +- ROX-27696: ROX_EXTERNAL_IPS feature flag enabled by default. Note: Collector will still need to be configured for external IPs for this to have an effect. ### Removed Features diff --git a/COLLECTOR_VERSION b/COLLECTOR_VERSION index a7e7070f80db9..d1c71ae4d9a54 100644 --- a/COLLECTOR_VERSION +++ b/COLLECTOR_VERSION @@ -1 +1 @@ -3.22.0 +3.22.7 diff --git a/SCANNER_VERSION b/SCANNER_VERSION index 0f89d21c0e364..00b59241cd454 100644 --- a/SCANNER_VERSION +++ b/SCANNER_VERSION @@ -1 +1 @@ -2.36.x-77-gbbd29cb742 +2.37.10 diff --git a/central/cve/converter/utils/convert_utils_v2.go b/central/cve/converter/utils/convert_utils_v2.go index 9b8f679270822..8b5d31461dbb1 100644 --- a/central/cve/converter/utils/convert_utils_v2.go +++ b/central/cve/converter/utils/convert_utils_v2.go @@ -50,7 +50,7 @@ func ImageCVEV2ToEmbeddedVulnerability(vuln *storage.ImageCVEV2) *storage.Embedd } // EmbeddedVulnerabilityToImageCVEV2 converts *storage.EmbeddedVulnerability object to *storage.ImageCVEV2 object -func EmbeddedVulnerabilityToImageCVEV2(imageID string, componentID string, from *storage.EmbeddedVulnerability) (*storage.ImageCVEV2, error) { +func EmbeddedVulnerabilityToImageCVEV2(imageID string, componentID string, index int, from *storage.EmbeddedVulnerability) (*storage.ImageCVEV2, error) { var nvdCvss float32 nvdVersion := storage.CvssScoreVersion_UNKNOWN_VERSION for _, score := range from.GetCvssMetrics() { @@ -75,10 +75,7 @@ func EmbeddedVulnerabilityToImageCVEV2(imageID string, componentID string, from impactScore = from.GetCvssV2().GetImpactScore() } - cveID, err := cve.IDV2(from, componentID) - if err != nil { - return nil, err - } + cveID := cve.IDV2(from, componentID, index) ret := &storage.ImageCVEV2{ Id: cveID, diff --git a/central/cve/converter/utils/convert_utils_v2_test.go b/central/cve/converter/utils/convert_utils_v2_test.go index fc108f13921f9..0bf10ac6b1f02 100644 --- a/central/cve/converter/utils/convert_utils_v2_test.go +++ b/central/cve/converter/utils/convert_utils_v2_test.go @@ -9,7 +9,6 @@ import ( "github.com/stackrox/rox/pkg/protocompat" "github.com/stackrox/rox/pkg/scancomponent" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) type componentPieces struct { @@ -144,28 +143,24 @@ func TestImageCVEV2ToEmbeddedCVEs(t *testing.T) { func TestEmbeddedCVEToImageCVEV2(t *testing.T) { for idx, embeddedVuln := range testVulns { componentInfo := getComponentInfo(t) - convertedVuln, err := EmbeddedVulnerabilityToImageCVEV2(componentInfo[idx].imageID, componentInfo[idx].componentID, embeddedVuln) + convertedVuln, err := EmbeddedVulnerabilityToImageCVEV2(componentInfo[idx].imageID, componentInfo[idx].componentID, idx, embeddedVuln) assert.NoError(t, err) protoassert.Equal(t, getTestCVEs(t)[idx], convertedVuln) } } -func getTestComponentID(t *testing.T) string { - id, err := scancomponent.ComponentIDV2(testComponent, "sha") - require.NoError(t, err) - return id +func getTestComponentID(index int) string { + return scancomponent.ComponentIDV2(testComponent, "sha", index) } -func getTestCVEID(t *testing.T, testCVE *storage.EmbeddedVulnerability, componentID string) string { - id, err := cve.IDV2(testCVE, componentID) - require.NoError(t, err) - return id +func getTestCVEID(testCVE *storage.EmbeddedVulnerability, componentID string, index int) string { + return cve.IDV2(testCVE, componentID, index) } func getTestCVEs(t *testing.T) []*storage.ImageCVEV2 { return []*storage.ImageCVEV2{ { - Id: getTestCVEID(t, testVulns[0], getTestComponentID(t)), + Id: getTestCVEID(testVulns[0], getTestComponentID(0), 0), ImageId: "sha", CveBaseInfo: &storage.CVEInfo{ Cve: "cve1", @@ -229,10 +224,10 @@ func getTestCVEs(t *testing.T) []*storage.ImageCVEV2 { State: 0, IsFixable: false, HasFixedBy: nil, - ComponentId: getTestComponentID(t), + ComponentId: getTestComponentID(0), }, { - Id: getTestCVEID(t, testVulns[1], getTestComponentID(t)), + Id: getTestCVEID(testVulns[1], getTestComponentID(1), 1), ImageId: "sha", CveBaseInfo: &storage.CVEInfo{ Cve: "cve2", @@ -271,7 +266,7 @@ func getTestCVEs(t *testing.T) []*storage.ImageCVEV2 { HasFixedBy: &storage.ImageCVEV2_FixedBy{ FixedBy: "ver3", }, - ComponentId: getTestComponentID(t), + ComponentId: getTestComponentID(1), }, } } @@ -280,12 +275,12 @@ func getComponentInfo(t *testing.T) []*componentPieces { return []*componentPieces{ { imageID: "sha", - componentID: getTestComponentID(t), + componentID: getTestComponentID(0), cveIndex: 0, }, { imageID: "sha", - componentID: getTestComponentID(t), + componentID: getTestComponentID(1), cveIndex: 1, }, } diff --git a/central/cve/image/v2/datastore/datastore_sac_test.go b/central/cve/image/v2/datastore/datastore_sac_test.go index 92a9afa6734a9..0e7b44e3ba8cf 100644 --- a/central/cve/image/v2/datastore/datastore_sac_test.go +++ b/central/cve/image/v2/datastore/datastore_sac_test.go @@ -54,9 +54,9 @@ func (s *cveV2DataStoreSACTestSuite) SetupSuite() { // operating system information as well. This information is propagated from the image // scan data. // This helper is here to ease testing against the various datastore flavours. -func getImageCVEID(vuln *storage.EmbeddedVulnerability, component *storage.EmbeddedImageScanComponent, imageID string) string { - componentID, _ := scancomponent.ComponentIDV2(component, imageID) - cveID, _ := cve.IDV2(vuln, componentID) +func getImageCVEID(vuln *storage.EmbeddedVulnerability, component *storage.EmbeddedImageScanComponent, imageID string, componentIndex int, cveIndex int) string { + componentID := scancomponent.ComponentIDV2(component, imageID, componentIndex) + cveID := cve.IDV2(vuln, componentID, cveIndex) return cveID } @@ -74,241 +74,241 @@ var ( { contextKey: sacTestUtils.UnrestrictedReadCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): true, }, }, { contextKey: sacTestUtils.UnrestrictedReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): true, }, }, { contextKey: sacTestUtils.Cluster1ReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster1NamespaceAReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster1NamespaceBReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster1NamespacesABReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster1NamespacesBCReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster2ReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): true, }, }, { contextKey: sacTestUtils.Cluster2NamespaceAReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster2NamespaceBReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): true, }, }, { contextKey: sacTestUtils.Cluster2NamespacesACReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster2NamespacesBCReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): true, }, }, { contextKey: sacTestUtils.Cluster3ReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster3NamespaceAReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster3NamespaceBReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { contextKey: sacTestUtils.Cluster3NamespacesABReadWriteCtx, expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): false, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): false, }, }, { @@ -317,16 +317,16 @@ var ( // Therefore, it should see all vulnerabilities. // (images are in cluster1 namespaceA and cluster2 namespaceB). expectedCVEFound: map[string]bool{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageDoctorJekyll2().GetId(), 0, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 0): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1): true, + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2): true, }, }, } @@ -334,7 +334,7 @@ var ( func (s *cveV2DataStoreSACTestSuite) TestSACImageCVEExistsSingleScopeOnly() { // Inject the fixture graph, and test exists for CVE-1234-0001 - cveID := getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()) + cveID := getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0) s.runImageTest("TestSACImageCVEExistsSingleScopeOnly", func(c cveTestCase) { testCtx := s.imageTestContexts[c.contextKey] exists, err := s.imageCVEStore.Exists(testCtx, cveID) @@ -347,7 +347,7 @@ func (s *cveV2DataStoreSACTestSuite) TestSACImageCVEGetSingleScopeOnly() { // Inject the fixture graph, and test retrieval for CVE-1234-0001 targetCVE := fixtures.GetEmbeddedImageCVE1234x0001() cveName := targetCVE.GetCve() - cveID := getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()) + cveID := getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0) cvss := targetCVE.GetCvss() s.runImageTest("TestSACImageCVEGetSingleScopeOnly", func(c cveTestCase) { testCtx := s.imageTestContexts[c.contextKey] @@ -366,13 +366,13 @@ func (s *cveV2DataStoreSACTestSuite) TestSACImageCVEGetSingleScopeOnly() { func (s *cveV2DataStoreSACTestSuite) TestSACImageCVEGetBatch() { batchCVEs := []string{ - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()), - getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId()), - getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId()), - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()), - getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId()), - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()), - getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId()), + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0001(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 0), + getImageCVEID(fixtures.GetEmbeddedImageCVE4567x0002(), fixtures.GetEmbeddedImageComponent1x1(), fixtures.GetImageSherlockHolmes1().GetId(), 0, 1), + getImageCVEID(fixtures.GetEmbeddedImageCVE1234x0003(), fixtures.GetEmbeddedImageComponent1x2(), fixtures.GetImageSherlockHolmes1().GetId(), 1, 0), + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0004(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 0), + getImageCVEID(fixtures.GetEmbeddedImageCVE3456x0005(), fixtures.GetEmbeddedImageComponent1s2x3(), fixtures.GetImageSherlockHolmes1().GetId(), 2, 1), + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0006(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 1), + getImageCVEID(fixtures.GetEmbeddedImageCVE2345x0007(), fixtures.GetEmbeddedImageComponent2x5(), fixtures.GetImageDoctorJekyll2().GetId(), 2, 2), } s.runImageTest("TestSACImageCVEGetBatch", func(c cveTestCase) { diff --git a/central/debug/service/service.go b/central/debug/service/service.go index dd36dfb83a1d9..4274881f7611c 100644 --- a/central/debug/service/service.go +++ b/central/debug/service/service.go @@ -51,6 +51,7 @@ import ( "github.com/stackrox/rox/pkg/sac" "github.com/stackrox/rox/pkg/sac/observe" "github.com/stackrox/rox/pkg/sac/resources" + "github.com/stackrox/rox/pkg/set" "github.com/stackrox/rox/pkg/telemetry/data" "github.com/stackrox/rox/pkg/version" "google.golang.org/grpc" @@ -765,8 +766,11 @@ func (s *serviceImpl) writeZippedDebugDump(ctx context.Context, w http.ResponseW } if s.telemetryGatherer != nil && opts.telemetryMode > noTelemetry { diagBundleTasks.Go(func(ctx context.Context) error { - telemetryData := s.telemetryGatherer.Gather(ctx, opts.telemetryMode >= telemetryCentralAndSensors, - opts.withCentral) + telemetryData := s.telemetryGatherer.Gather( + ctx, + opts.telemetryMode >= telemetryCentralAndSensors, + opts.withCentral, + set.NewStringSet(opts.clusters...)) return writeTelemetryData(zipWriter, telemetryData) }) } diff --git a/central/deployment/cache/cache.go b/central/deployment/cache/cache.go index b0693178f7a7e..156dab88f43dc 100644 --- a/central/deployment/cache/cache.go +++ b/central/deployment/cache/cache.go @@ -7,7 +7,11 @@ import ( ) const ( - deletedDeploymentsRetentionPeriod = 2 * time.Minute + // 30 seconds for collector to send a message to sensor + // 30 seconds for sensor to send a message to central + // 5 minutes for afterglow + // 1 minute for a safety margin + deletedDeploymentsRetentionPeriod = 7 * time.Minute ) var ( diff --git a/central/deployment/datastore/datastore_impl_postgres_test.go b/central/deployment/datastore/datastore_impl_postgres_test.go index 06fa095c0a809..8bc4d518a7d01 100644 --- a/central/deployment/datastore/datastore_impl_postgres_test.go +++ b/central/deployment/datastore/datastore_impl_postgres_test.go @@ -83,19 +83,16 @@ func (s *DeploymentPostgresDataStoreTestSuite) TestSearchWithPostgres() { s.NoError(s.deploymentDatastore.UpsertDeployment(ctx, dep2)) s.NoError(s.deploymentDatastore.UpsertDeployment(ctx, dep3)) - componentIDImg2, err := scancomponent.ComponentIDV2( + componentIDImg2 := scancomponent.ComponentIDV2( img2.GetScan().GetComponents()[0], - img2.GetId()) - s.NoError(err) + img2.GetId(), 0) - componentIDImg1, err := scancomponent.ComponentIDV2( + componentIDImg1 := scancomponent.ComponentIDV2( img1.GetScan().GetComponents()[0], - img1.GetId()) - s.NoError(err) - cveID, err := cve.IDV2( + img1.GetId(), 0) + cveID := cve.IDV2( img1.GetScan().GetComponents()[0].GetVulns()[0], - componentIDImg1) - s.NoError(err) + componentIDImg1, 0) for _, tc := range []struct { desc string diff --git a/central/graphql/resolvers/activestateenum_string.go b/central/graphql/resolvers/activestateenum_string.go index a37dee7b263b4..74f5c0d617b5d 100644 --- a/central/graphql/resolvers/activestateenum_string.go +++ b/central/graphql/resolvers/activestateenum_string.go @@ -19,8 +19,9 @@ const _ActiveStateEnum_name = "UndeterminedInactiveActiveFeatureDisabled" var _ActiveStateEnum_index = [...]uint8{0, 12, 20, 26, 41} func (i ActiveStateEnum) String() string { - if i < 0 || i >= ActiveStateEnum(len(_ActiveStateEnum_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_ActiveStateEnum_index)-1 { return "ActiveStateEnum(" + strconv.FormatInt(int64(i), 10) + ")" } - return _ActiveStateEnum_name[_ActiveStateEnum_index[i]:_ActiveStateEnum_index[i+1]] + return _ActiveStateEnum_name[_ActiveStateEnum_index[idx]:_ActiveStateEnum_index[idx+1]] } diff --git a/central/graphql/resolvers/image_components.go b/central/graphql/resolvers/image_components.go index 7fd45b492dc7c..696b329806374 100644 --- a/central/graphql/resolvers/image_components.go +++ b/central/graphql/resolvers/image_components.go @@ -21,7 +21,6 @@ import ( "github.com/stackrox/rox/pkg/features" pkgMetrics "github.com/stackrox/rox/pkg/metrics" "github.com/stackrox/rox/pkg/protocompat" - "github.com/stackrox/rox/pkg/scancomponent" "github.com/stackrox/rox/pkg/search" "github.com/stackrox/rox/pkg/search/scoped" "github.com/stackrox/rox/pkg/utils" @@ -409,39 +408,6 @@ func getImageCVEResolvers(ctx context.Context, root *Resolver, os string, vulns return paginate(query.GetPagination(), resolverI, nil) } -func getImageCVEV2Resolvers(ctx context.Context, root *Resolver, imageID string, component *storage.EmbeddedImageScanComponent, query *v1.Query) ([]ImageVulnerabilityResolver, error) { - query, _ = search.FilterQueryWithMap(query, mappings.VulnerabilityOptionsMap) - predicate, err := vulnPredicateFactory.GeneratePredicate(query) - if err != nil { - return nil, err - } - - componentID, err := scancomponent.ComponentIDV2(component, imageID) - if err != nil { - return nil, err - } - resolvers := make([]ImageVulnerabilityResolver, 0, len(component.GetVulns())) - for _, vuln := range component.GetVulns() { - if !predicate.Matches(vuln) { - continue - } - converted, err := cveConverter.EmbeddedVulnerabilityToImageCVEV2(imageID, componentID, vuln) - if err != nil { - return nil, err - } - - resolver, err := root.wrapImageCVEV2(converted, true, nil) - if err != nil { - return nil, err - } - resolver.ctx = embeddedobjs.VulnContext(ctx, vuln) - - resolvers = append(resolvers, resolver) - } - - return paginate(query.GetPagination(), resolvers, nil) -} - /* Sub Resolver Functions */ @@ -736,17 +702,7 @@ func (resolver *imageComponentV2Resolver) ImageVulnerabilities(ctx context.Conte resolver.ctx = ctx } - // Short path. Full image is embedded when image scan resolver is called. - embeddedComponent := embeddedobjs.ComponentFromContext(resolver.ctx) - if embeddedComponent == nil { - return resolver.root.ImageVulnerabilities(resolver.imageComponentScopeContext(ctx), args) - } - - query, err := args.AsV1QueryOrEmpty() - if err != nil { - return nil, err - } - return getImageCVEV2Resolvers(resolver.ctx, resolver.root, resolver.ImageId(resolver.ctx), embeddedComponent, query) + return resolver.root.ImageVulnerabilities(resolver.imageComponentScopeContext(ctx), args) } func (resolver *imageComponentV2Resolver) LastScanned(ctx context.Context) (*graphql.Time, error) { @@ -789,29 +745,6 @@ func (resolver *imageComponentV2Resolver) TopImageVulnerability(ctx context.Cont resolver.ctx = ctx } - // Short path. Full image is embedded when image scan resolver is called. - if embeddedComponent := embeddedobjs.ComponentFromContext(resolver.ctx); embeddedComponent != nil { - var topVuln *storage.EmbeddedVulnerability - for _, vuln := range embeddedComponent.GetVulns() { - if topVuln == nil || vuln.GetCvss() > topVuln.GetCvss() { - topVuln = vuln - } - } - if topVuln == nil { - return nil, nil - } - componentID, err := scancomponent.ComponentIDV2(embeddedComponent, resolver.ImageId(resolver.ctx)) - if err != nil { - return nil, err - } - - convertedTopVuln, err := cveConverter.EmbeddedVulnerabilityToImageCVEV2(resolver.ImageId(resolver.ctx), componentID, topVuln) - if err != nil { - return nil, err - } - return resolver.root.wrapImageCVEV2WithContext(resolver.ctx, convertedTopVuln, true, nil) - } - return resolver.root.TopImageVulnerability(resolver.imageComponentScopeContext(ctx), RawQuery{}) } diff --git a/central/graphql/resolvers/image_components_v2_postgres_test.go b/central/graphql/resolvers/image_components_v2_postgres_test.go index 58f7be947a870..61c6f356b0bcf 100644 --- a/central/graphql/resolvers/image_components_v2_postgres_test.go +++ b/central/graphql/resolvers/image_components_v2_postgres_test.go @@ -362,12 +362,12 @@ func (s *GraphQLImageComponentV2TestSuite) TestImageComponentImageVulnerabilitie "comp1os1", s.componentIDMap[comp11], []string{ - getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2018-1", + getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2018-1", SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ FixedBy: "1.1", }, Severity: storage.VulnerabilitySeverity_CRITICAL_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp11]), + }, s.componentIDMap[comp11], 0), }, &VulnerabilityCounterResolver{ all: &VulnerabilityFixableCounterResolver{0, 1}, @@ -381,12 +381,12 @@ func (s *GraphQLImageComponentV2TestSuite) TestImageComponentImageVulnerabilitie "comp2os1", s.componentIDMap[comp21], []string{ - getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2018-1", + getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2018-1", SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ FixedBy: "1.5", }, Severity: storage.VulnerabilitySeverity_CRITICAL_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp21]), + }, s.componentIDMap[comp21], 0), }, &VulnerabilityCounterResolver{ all: &VulnerabilityFixableCounterResolver{0, 1}, @@ -400,14 +400,14 @@ func (s *GraphQLImageComponentV2TestSuite) TestImageComponentImageVulnerabilitie "comp3os1", s.componentIDMap[comp31], []string{ - getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2019-1", + getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2019-1", Cvss: 4, Severity: storage.VulnerabilitySeverity_MODERATE_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp31]), - getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2019-2", + }, s.componentIDMap[comp31], 0), + getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2019-2", Cvss: 3, Severity: storage.VulnerabilitySeverity_LOW_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp31]), + }, s.componentIDMap[comp31], 1), }, &VulnerabilityCounterResolver{ all: &VulnerabilityFixableCounterResolver{0, 0}, @@ -421,12 +421,12 @@ func (s *GraphQLImageComponentV2TestSuite) TestImageComponentImageVulnerabilitie "comp1os2", s.componentIDMap[comp12], []string{ - getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2018-1", + getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2018-1", SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ FixedBy: "1.1", }, Severity: storage.VulnerabilitySeverity_CRITICAL_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp12]), + }, s.componentIDMap[comp12], 0), }, &VulnerabilityCounterResolver{ all: &VulnerabilityFixableCounterResolver{0, 1}, @@ -440,14 +440,14 @@ func (s *GraphQLImageComponentV2TestSuite) TestImageComponentImageVulnerabilitie "comp3os2", s.componentIDMap[comp32], []string{ - getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2019-1", + getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2019-1", Cvss: 4, Severity: storage.VulnerabilitySeverity_MODERATE_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp32]), - getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2019-2", + }, s.componentIDMap[comp32], 0), + getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2019-2", Cvss: 3, Severity: storage.VulnerabilitySeverity_LOW_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp32]), + }, s.componentIDMap[comp32], 1), }, &VulnerabilityCounterResolver{ all: &VulnerabilityFixableCounterResolver{0, 0}, @@ -461,14 +461,14 @@ func (s *GraphQLImageComponentV2TestSuite) TestImageComponentImageVulnerabilitie "comp4os2", s.componentIDMap[comp42], []string{ - getTestCVEID(s.T(), &storage.EmbeddedVulnerability{ + getTestCVEID(&storage.EmbeddedVulnerability{ Cve: "cve-2017-1", Severity: storage.VulnerabilitySeverity_IMPORTANT_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp42]), - getTestCVEID(s.T(), &storage.EmbeddedVulnerability{ + }, s.componentIDMap[comp42], 0), + getTestCVEID(&storage.EmbeddedVulnerability{ Cve: "cve-2017-2", Severity: storage.VulnerabilitySeverity_IMPORTANT_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp42]), + }, s.componentIDMap[comp42], 1), }, &VulnerabilityCounterResolver{ all: &VulnerabilityFixableCounterResolver{0, 0}, @@ -564,10 +564,10 @@ func (s *GraphQLImageComponentV2TestSuite) TestTopImageVulnerability() { comp := s.getImageComponentResolver(ctx, s.componentIDMap[comp31]) - expectedID := graphql.ID(getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2019-1", + expectedID := graphql.ID(getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2019-1", Cvss: 4, Severity: storage.VulnerabilitySeverity_MODERATE_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp31])) + }, s.componentIDMap[comp31], 0)) vuln, err := comp.TopImageVulnerability(ctx) assert.NoError(s.T(), err) @@ -593,11 +593,11 @@ func (s *GraphQLImageComponentV2TestSuite) getImageComponentResolver(ctx context func (s *GraphQLImageComponentV2TestSuite) getComponentIDMap() map[string]string { return map[string]string{ - comp11: getTestComponentID(s.T(), testImages()[0].GetScan().GetComponents()[0], "sha1"), - comp12: getTestComponentID(s.T(), testImages()[1].GetScan().GetComponents()[0], "sha2"), - comp21: getTestComponentID(s.T(), testImages()[0].GetScan().GetComponents()[1], "sha1"), - comp31: getTestComponentID(s.T(), testImages()[0].GetScan().GetComponents()[2], "sha1"), - comp32: getTestComponentID(s.T(), testImages()[1].GetScan().GetComponents()[1], "sha2"), - comp42: getTestComponentID(s.T(), testImages()[1].GetScan().GetComponents()[2], "sha2"), + comp11: getTestComponentID(testImages()[0].GetScan().GetComponents()[0], "sha1", 0), + comp12: getTestComponentID(testImages()[1].GetScan().GetComponents()[0], "sha2", 0), + comp21: getTestComponentID(testImages()[0].GetScan().GetComponents()[1], "sha1", 1), + comp31: getTestComponentID(testImages()[0].GetScan().GetComponents()[2], "sha1", 2), + comp32: getTestComponentID(testImages()[1].GetScan().GetComponents()[1], "sha2", 1), + comp42: getTestComponentID(testImages()[1].GetScan().GetComponents()[2], "sha2", 2), } } diff --git a/central/graphql/resolvers/image_scan.go b/central/graphql/resolvers/image_scan.go index 10259a1371b1f..71badee3c693e 100644 --- a/central/graphql/resolvers/image_scan.go +++ b/central/graphql/resolvers/image_scan.go @@ -5,7 +5,6 @@ import ( "sort" "github.com/stackrox/rox/central/graphql/resolvers/embeddedobjs" - "github.com/stackrox/rox/central/graphql/resolvers/loaders" "github.com/stackrox/rox/central/image/datastore/store/common/v2" "github.com/stackrox/rox/central/image/mappings" v1 "github.com/stackrox/rox/generated/api/v1" @@ -25,13 +24,6 @@ func init() { "imageComponentCount(query: String): Int!", "imageComponents(query: String, pagination: Pagination): [ImageComponent!]!", }), - // deprecated fields - schema.AddExtraResolvers("ImageScan", []string{ - "componentCount(query: String): Int! " + - "@deprecated(reason: \"use 'imageComponentCount'\")", - "components(query: String, pagination: Pagination): [EmbeddedImageScanComponent!]! " + - "@deprecated(reason: \"use 'imageComponents'\")", - }), ) } @@ -41,7 +33,7 @@ func (resolver *imageScanResolver) ImageComponents(_ context.Context, args Pagin return nil, err } if features.FlattenCVEData.Enabled() { - return getImageComponentV2Resolvers(resolver.ctx, resolver.root, resolver.data, query) + return resolver.root.ImageComponents(resolver.ctx, args) } return getImageComponentResolvers(resolver.ctx, resolver.root, resolver.data, query) } @@ -93,69 +85,3 @@ func getImageComponentResolvers(ctx context.Context, root *Resolver, imageScan * } return paginate(query.GetPagination(), resolverI, nil) } - -func getImageComponentV2Resolvers(ctx context.Context, root *Resolver, imageScan *storage.ImageScan, query *v1.Query) ([]ImageComponentResolver, error) { - imageID := getImageIDFromScope(ctx) - if imageID == "" { - return nil, nil - } - - imageLoader, err := loaders.GetImageLoader(ctx) - if err != nil { - return nil, err - } - - image, err := imageLoader.FullImageWithID(ctx, imageID) - if err != nil { - return nil, err - } - - query, _ = search.FilterQueryWithMap(query, mappings.ComponentV2OptionsMap) - predicate, err := componentPredicateFactory.GeneratePredicate(query) - if err != nil { - return nil, err - } - - idToComponent := make(map[string]*imageComponentV2Resolver) - for _, embeddedComponent := range imageScan.GetComponents() { - if !predicate.Matches(embeddedComponent) { - continue - } - - os := imageScan.GetOperatingSystem() - id, err := scancomponent.ComponentIDV2(embeddedComponent, imageID) - if err != nil { - return nil, err - } - if _, exists := idToComponent[id]; !exists { - component, err := common.GenerateImageComponentV2(os, image, embeddedComponent) - if err != nil { - return nil, err - } - - resolver, err := root.wrapImageComponentV2(component, true, nil) - if err != nil { - return nil, err - } - imageScanTime := protocompat.ConvertTimestampToTimeOrNil(imageScan.GetScanTime()) - resolver.ctx = embeddedobjs.ComponentContext(ctx, os, imageScanTime, embeddedComponent) - idToComponent[id] = resolver - } - } - - // For now, sort by IDs. - resolvers := make([]*imageComponentV2Resolver, 0, len(idToComponent)) - for _, component := range idToComponent { - resolvers = append(resolvers, component) - } - if len(query.GetPagination().GetSortOptions()) == 0 { - sort.SliceStable(resolvers, func(i, j int) bool { - return resolvers[i].data.GetId() < resolvers[j].data.GetId() - }) - } - resolverI := make([]ImageComponentResolver, 0, len(resolvers)) - for _, resolver := range resolvers { - resolverI = append(resolverI, resolver) - } - return paginate(query.GetPagination(), resolverI, nil) -} diff --git a/central/graphql/resolvers/image_scan_test.go b/central/graphql/resolvers/image_scan_test.go index 802a60619a3bb..1b35f1f1fde62 100644 --- a/central/graphql/resolvers/image_scan_test.go +++ b/central/graphql/resolvers/image_scan_test.go @@ -103,6 +103,11 @@ func (s *ImageScanResolverTestSuite) TestGetImagesWithScan() { Return([]*storage.Image{cloned}, nil) s.imageDataStore.EXPECT().GetImagesBatch(gomock.Any(), gomock.Any()). Return([]*storage.Image{img}, nil) + if features.FlattenCVEData.Enabled() { + s.imageComponentFlatView.EXPECT().Get(gomock.Any(), gomock.Any()).Return(nil, nil) + s.imageComponentDataStoreV2.EXPECT().SearchRawImageComponents(gomock.Any(), gomock.Any()). + Return(nil, nil) + } response := s.schema.Exec(s.ctx, imageWithScanQuery, "getImages", nil) s.Len(response.Errors, 0) } diff --git a/central/graphql/resolvers/image_vulnerabilities_v2_test.go b/central/graphql/resolvers/image_vulnerabilities_v2_test.go index 0388c5c49ce46..645ae0ba25966 100644 --- a/central/graphql/resolvers/image_vulnerabilities_v2_test.go +++ b/central/graphql/resolvers/image_vulnerabilities_v2_test.go @@ -718,56 +718,56 @@ func getCVEList(ctx context.Context, vulns []ImageVulnerabilityResolver) []strin func (s *GraphQLImageVulnerabilityV2TestSuite) getIDMap() map[string]string { return map[string]string{ - cve111: getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2018-1", + cve111: getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2018-1", SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ FixedBy: "1.1", }, Severity: storage.VulnerabilitySeverity_CRITICAL_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp11]), - cve121: getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2018-1", + }, s.componentIDMap[comp11], 0), + cve121: getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2018-1", SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ FixedBy: "1.5", }, Severity: storage.VulnerabilitySeverity_CRITICAL_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp21]), - cve231: getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2019-1", + }, s.componentIDMap[comp21], 0), + cve231: getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2019-1", Cvss: 4, Severity: storage.VulnerabilitySeverity_MODERATE_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp31]), - cve331: getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2019-2", + }, s.componentIDMap[comp31], 0), + cve331: getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2019-2", Cvss: 3, Severity: storage.VulnerabilitySeverity_LOW_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp31]), - cve112: getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2018-1", + }, s.componentIDMap[comp31], 1), + cve112: getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2018-1", SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ FixedBy: "1.1", }, Severity: storage.VulnerabilitySeverity_CRITICAL_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp12]), - cve232: getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2019-1", + }, s.componentIDMap[comp12], 0), + cve232: getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2019-1", Severity: storage.VulnerabilitySeverity_MODERATE_VULNERABILITY_SEVERITY, Cvss: 4, - }, s.componentIDMap[comp32]), - cve332: getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2019-2", + }, s.componentIDMap[comp32], 0), + cve332: getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2019-2", Severity: storage.VulnerabilitySeverity_LOW_VULNERABILITY_SEVERITY, Cvss: 3, - }, s.componentIDMap[comp32]), - cve442: getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2017-1", + }, s.componentIDMap[comp32], 1), + cve442: getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2017-1", Severity: storage.VulnerabilitySeverity_IMPORTANT_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp42]), - cve542: getTestCVEID(s.T(), &storage.EmbeddedVulnerability{Cve: "cve-2017-2", + }, s.componentIDMap[comp42], 0), + cve542: getTestCVEID(&storage.EmbeddedVulnerability{Cve: "cve-2017-2", Severity: storage.VulnerabilitySeverity_IMPORTANT_VULNERABILITY_SEVERITY, - }, s.componentIDMap[comp42]), + }, s.componentIDMap[comp42], 1), } } func (s *GraphQLImageVulnerabilityV2TestSuite) getComponentIDMap() map[string]string { return map[string]string{ - comp11: getTestComponentID(s.T(), testImages()[0].GetScan().GetComponents()[0], "sha1"), - comp12: getTestComponentID(s.T(), testImages()[1].GetScan().GetComponents()[0], "sha2"), - comp21: getTestComponentID(s.T(), testImages()[0].GetScan().GetComponents()[1], "sha1"), - comp31: getTestComponentID(s.T(), testImages()[0].GetScan().GetComponents()[2], "sha1"), - comp32: getTestComponentID(s.T(), testImages()[1].GetScan().GetComponents()[1], "sha2"), - comp42: getTestComponentID(s.T(), testImages()[1].GetScan().GetComponents()[2], "sha2"), + comp11: getTestComponentID(testImages()[0].GetScan().GetComponents()[0], "sha1", 0), + comp12: getTestComponentID(testImages()[1].GetScan().GetComponents()[0], "sha2", 0), + comp21: getTestComponentID(testImages()[0].GetScan().GetComponents()[1], "sha1", 1), + comp31: getTestComponentID(testImages()[0].GetScan().GetComponents()[2], "sha1", 2), + comp32: getTestComponentID(testImages()[1].GetScan().GetComponents()[1], "sha2", 1), + comp42: getTestComponentID(testImages()[1].GetScan().GetComponents()[2], "sha2", 2), } } diff --git a/central/graphql/resolvers/test_utils.go b/central/graphql/resolvers/test_utils.go index 72d63a9f7b6b6..bf724563c25ec 100644 --- a/central/graphql/resolvers/test_utils.go +++ b/central/graphql/resolvers/test_utils.go @@ -753,16 +753,10 @@ func contextWithClusterPerm(t testing.TB, ctrl *gomock.Controller) context.Conte return authn.ContextWithIdentity(sac.WithAllAccess(loaders.WithLoaderContext(context.Background())), id, t) } -func getTestComponentID(t *testing.T, testComponent *storage.EmbeddedImageScanComponent, imageID string) string { - id, err := scancomponent.ComponentIDV2(testComponent, imageID) - require.NoError(t, err) - - return id +func getTestComponentID(testComponent *storage.EmbeddedImageScanComponent, imageID string, index int) string { + return scancomponent.ComponentIDV2(testComponent, imageID, index) } -func getTestCVEID(t *testing.T, testCVE *storage.EmbeddedVulnerability, componentID string) string { - id, err := cve.IDV2(testCVE, componentID) - require.NoError(t, err) - - return id +func getTestCVEID(testCVE *storage.EmbeddedVulnerability, componentID string, index int) string { + return cve.IDV2(testCVE, componentID, index) } diff --git a/central/hash/datastore/datastore.go b/central/hash/datastore/datastore.go index 57d60b6923fa5..f406b60592b63 100644 --- a/central/hash/datastore/datastore.go +++ b/central/hash/datastore/datastore.go @@ -5,6 +5,8 @@ import ( "github.com/stackrox/rox/central/hash/datastore/store/postgres" "github.com/stackrox/rox/generated/storage" + pg "github.com/stackrox/rox/pkg/postgres" + "github.com/stackrox/rox/pkg/postgres/schema" ) // Datastore implements the datastore interface for Hash objects @@ -12,17 +14,20 @@ type Datastore interface { UpsertHash(ctx context.Context, hash *storage.Hash) error GetHashes(ctx context.Context, clusterID string) (*storage.Hash, bool, error) DeleteHashes(ctx context.Context, clusterID string) error + TruncateHashes(ctx context.Context) error } // NewDatastore returns a new hash flush datastore -func NewDatastore(store postgres.Store) Datastore { +func NewDatastore(store postgres.Store, db pg.DB) Datastore { return &datastoreImpl{ store: store, + db: db, } } type datastoreImpl struct { store postgres.Store + db pg.DB } // UpsertHash inserts the hash into the database @@ -39,3 +44,9 @@ func (d *datastoreImpl) GetHashes(ctx context.Context, clusterID string) (*stora func (d *datastoreImpl) DeleteHashes(ctx context.Context, clusterID string) error { return d.store.Delete(ctx, clusterID) } + +// TruncateHashes truncates the hash table +func (d *datastoreImpl) TruncateHashes(ctx context.Context) error { + _, err := d.db.Exec(ctx, "TRUNCATE TABLE "+schema.HashesTableName) + return err +} diff --git a/central/hash/datastore/datastore_test_constructors.go b/central/hash/datastore/datastore_test_constructors.go index 88a4ec62fc54b..420bcd55da69a 100644 --- a/central/hash/datastore/datastore_test_constructors.go +++ b/central/hash/datastore/datastore_test_constructors.go @@ -9,5 +9,5 @@ import ( // GetTestPostgresDataStore provides a datastore connected to postgres for testing purposes. func GetTestPostgresDataStore(_ testing.TB, pool postgres.DB) Datastore { - return NewDatastore(pgStore.New(pool)) + return NewDatastore(pgStore.New(pool), pool) } diff --git a/central/hash/datastore/singleton.go b/central/hash/datastore/singleton.go index 99c7ae93b5dee..50fdbcda621df 100644 --- a/central/hash/datastore/singleton.go +++ b/central/hash/datastore/singleton.go @@ -15,7 +15,8 @@ var ( // Singleton returns the singleton Hash datastore func Singleton() Datastore { once.Do(func() { - ds = NewDatastore(postgres.New(globaldb.GetPostgres())) + db := globaldb.GetPostgres() + ds = NewDatastore(postgres.New(db), db) }) return ds } diff --git a/central/hash/manager/manager.go b/central/hash/manager/manager.go index e71e248dc627d..9617116cb8a71 100644 --- a/central/hash/manager/manager.go +++ b/central/hash/manager/manager.go @@ -75,6 +75,10 @@ func (m *managerImpl) flushHashes(ctx context.Context) { func (m *managerImpl) Start(ctx context.Context) { if flushInterval == 0 { + err := m.datastore.TruncateHashes(ctx) + if err != nil { + log.Errorf("unable to truncate hashes: %v", err) + } return } t := time.NewTicker(flushInterval) diff --git a/central/image/datastore/datastore.go b/central/image/datastore/datastore.go index 1969b7fd08519..215ae07901158 100644 --- a/central/image/datastore/datastore.go +++ b/central/image/datastore/datastore.go @@ -43,6 +43,6 @@ type DataStore interface { // This should be set to `false` except for some tests. func NewWithPostgres(storage store.Store, risks riskDS.DataStore, imageRanker *ranking.Ranker, imageComponentRanker *ranking.Ranker) DataStore { ds := newDatastoreImpl(storage, search.NewV2(storage), risks, imageRanker, imageComponentRanker) - ds.initializeRankers() + go ds.initializeRankers() return ds } diff --git a/central/image/datastore/datastore_impl.go b/central/image/datastore/datastore_impl.go index 6bf543bd3a400..c6f598290265c 100644 --- a/central/image/datastore/datastore_impl.go +++ b/central/image/datastore/datastore_impl.go @@ -8,6 +8,7 @@ import ( "github.com/stackrox/rox/central/globaldb" "github.com/stackrox/rox/central/image/datastore/search" "github.com/stackrox/rox/central/image/datastore/store" + "github.com/stackrox/rox/central/image/views" "github.com/stackrox/rox/central/metrics" "github.com/stackrox/rox/central/ranking" riskDS "github.com/stackrox/rox/central/risk/datastore" @@ -28,8 +29,7 @@ import ( var ( log = logging.LoggerForModule() - imagesSAC = sac.ForResource(resources.Image) - allAccessCtx = sac.WithAllAccess(context.Background()) + imagesSAC = sac.ForResource(resources.Image) ) type datastoreImpl struct { @@ -303,23 +303,26 @@ func (ds *datastoreImpl) initializeRankers() { sac.AllowFixedScopes( sac.AccessModeScopeKeys(storage.Access_READ_ACCESS), sac.ResourceScopeKeys(resources.Image))) - results, err := ds.searcher.Search(readCtx, pkgSearch.EmptyQuery()) + selects := []*v1.QuerySelect{ + pkgSearch.NewQuerySelect(pkgSearch.ImageSHA).Proto(), + pkgSearch.NewQuerySelect(pkgSearch.ImageRiskScore).Proto(), + } + query := pkgSearch.EmptyQuery() + query.Selects = selects + + // The entire image is not needed to initialize the ranker. We only need the image id and risk score. + var results []*views.ImageRiskView + results, err := ds.storage.GetImagesRiskView(readCtx, query) if err != nil { - log.Error(err) + log.Errorf("unable to initialize image ranking: %v", err) return } - for _, id := range pkgSearch.ResultsToIDs(results) { - image, found, err := ds.storage.GetImageMetadata(allAccessCtx, id) - if err != nil { - log.Error(err) - continue - } else if !found { - continue - } - - ds.imageRanker.Add(id, image.GetRiskScore()) + for _, result := range results { + ds.imageRanker.Add(result.ImageID, result.ImageRiskScore) } + + log.Infof("Initialized image ranking with %d images", len(results)) } func (ds *datastoreImpl) updateListImagePriority(images ...*storage.ListImage) { @@ -331,13 +334,9 @@ func (ds *datastoreImpl) updateListImagePriority(images ...*storage.ListImage) { func (ds *datastoreImpl) updateImagePriority(images ...*storage.Image) { for _, image := range images { image.Priority = ds.imageRanker.GetRankForID(image.GetId()) - for _, component := range image.GetScan().GetComponents() { + for index, component := range image.GetScan().GetComponents() { if features.FlattenCVEData.Enabled() { - componentID, err := scancomponent.ComponentIDV2(component, image.GetId()) - if err != nil { - log.Error(err) - continue - } + componentID := scancomponent.ComponentIDV2(component, image.GetId(), index) component.Priority = ds.imageComponentRanker.GetRankForID(componentID) } else { component.Priority = ds.imageComponentRanker.GetRankForID(scancomponent.ComponentID(component.GetName(), component.GetVersion(), image.GetScan().GetOperatingSystem())) @@ -347,13 +346,9 @@ func (ds *datastoreImpl) updateImagePriority(images ...*storage.Image) { } func (ds *datastoreImpl) updateComponentRisk(image *storage.Image) { - for _, component := range image.GetScan().GetComponents() { + for index, component := range image.GetScan().GetComponents() { if features.FlattenCVEData.Enabled() { - componentID, err := scancomponent.ComponentIDV2(component, image.GetId()) - if err != nil { - log.Error(err) - continue - } + componentID := scancomponent.ComponentIDV2(component, image.GetId(), index) component.RiskScore = ds.imageComponentRanker.GetScoreForID(componentID) } else { component.RiskScore = ds.imageComponentRanker.GetScoreForID(scancomponent.ComponentID(component.GetName(), component.GetVersion(), image.GetScan().GetOperatingSystem())) diff --git a/central/image/datastore/datastore_impl_flat_postgres_test.go b/central/image/datastore/datastore_impl_flat_postgres_test.go index 213fe86078dac..f0380bf0579e1 100644 --- a/central/image/datastore/datastore_impl_flat_postgres_test.go +++ b/central/image/datastore/datastore_impl_flat_postgres_test.go @@ -306,12 +306,12 @@ func (s *ImageFlatPostgresDataStoreTestSuite) TestSortByComponent() { ctx := sac.WithAllAccess(context.Background()) image := fixtures.GetImageWithUniqueComponents(5) componentIDs := make([]string, 0, len(image.GetScan().GetComponents())) - for _, component := range image.GetScan().GetComponents() { - compID, err := scancomponent.ComponentIDV2( + for index, component := range image.GetScan().GetComponents() { + compID := scancomponent.ComponentIDV2( component, image.GetId(), + index, ) - s.NoError(err) componentIDs = append(componentIDs, compID) } @@ -366,12 +366,10 @@ func (s *ImageFlatPostgresDataStoreTestSuite) TestImageDeletes() { testImage.Scan.ScanTime = protocompat.TimestampNow() testImage.Scan.Components = testImage.Scan.Components[:len(testImage.Scan.Components)-1] cveIDsSet := set.NewStringSet() - for _, component := range testImage.GetScan().GetComponents() { - componentID, err := scancomponent.ComponentIDV2(component, testImage.GetId()) - s.NoError(err) - for _, cve := range component.GetVulns() { - cveID, err := pkgCVE.IDV2(cve, componentID) - s.NoError(err) + for compIndex, component := range testImage.GetScan().GetComponents() { + componentID := scancomponent.ComponentIDV2(component, testImage.GetId(), compIndex) + for cveIndex, cve := range component.GetVulns() { + cveID := pkgCVE.IDV2(cve, componentID, cveIndex) cveIDsSet.Add(cveID) } } diff --git a/central/image/datastore/store/common/v2/parts_test.go b/central/image/datastore/store/common/v2/parts_test.go index 985665303f48d..7c1b9e7250e42 100644 --- a/central/image/datastore/store/common/v2/parts_test.go +++ b/central/image/datastore/store/common/v2/parts_test.go @@ -48,8 +48,46 @@ var ( FirstImageOccurrence: ts, FirstSystemOccurrence: ts, }, + // Exact duplicate to make sure we filter that out + { + Cve: "cve2", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ + FixedBy: "ver3", + }, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + }, + }, + { + Name: "comp2", + Version: "ver1", + HasLayerIndex: &storage.EmbeddedImageScanComponent_LayerIndex{ + LayerIndex: 2, + }, + Vulns: []*storage.EmbeddedVulnerability{ + { + Cve: "cve1", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ + FixedBy: "ver2", + }, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + { + Cve: "cve2", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, }, }, + // Exact duplicate to ensure it is filtered out { Name: "comp2", Version: "ver1", @@ -128,13 +166,13 @@ func TestSplitAndMergeImage(t *testing.T) { }, }, SetComponents: &storage.Image_Components{ - Components: 3, + Components: 4, }, SetCves: &storage.Image_Cves{ - Cves: 4, + Cves: 7, }, SetFixable: &storage.Image_FixableCves{ - FixableCves: 2, + FixableCves: 4, }, Scan: &storage.ImageScan{ ScanTime: ts, @@ -171,6 +209,42 @@ func TestSplitAndMergeImage(t *testing.T) { FirstImageOccurrence: ts, FirstSystemOccurrence: ts, }, + { + Cve: "cve2", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ + FixedBy: "ver3", + }, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + }, + }, + { + Name: "comp2", + Version: "ver1", + HasLayerIndex: &storage.EmbeddedImageScanComponent_LayerIndex{ + LayerIndex: 2, + }, + Vulns: []*storage.EmbeddedVulnerability{ + { + Cve: "cve1", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ + FixedBy: "ver2", + }, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + { + Cve: "cve2", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, }, }, { @@ -218,13 +292,13 @@ func TestSplitAndMergeImage(t *testing.T) { ScanTime: ts, }, SetComponents: &storage.Image_Components{ - Components: 3, + Components: 4, }, SetCves: &storage.Image_Cves{ - Cves: 4, + Cves: 7, }, SetFixable: &storage.Image_FixableCves{ - FixableCves: 2, + FixableCves: 4, }, }, ImageCVEEdges: map[string]*storage.ImageCVEEdge{ @@ -247,7 +321,7 @@ func TestSplitAndMergeImage(t *testing.T) { Version: "ver1", }, ComponentV2: &storage.ImageComponentV2{ - Id: getTestComponentID(testComponents[0], "sha"), + Id: getTestComponentID(testComponents[0], "sha", 0), Name: "comp1", Version: "ver1", ImageId: "sha", @@ -272,7 +346,7 @@ func TestSplitAndMergeImage(t *testing.T) { Version: "ver2", }, ComponentV2: &storage.ImageComponentV2{ - Id: getTestComponentID(testComponents[1], "sha"), + Id: getTestComponentID(testComponents[1], "sha", 1), Name: "comp1", Version: "ver2", ImageId: "sha", @@ -304,7 +378,7 @@ func TestSplitAndMergeImage(t *testing.T) { ImageCveId: cve.ID("cve1", ""), }, CVEV2: &storage.ImageCVEV2{ - Id: getTestCVEID(testCVEs["cve1comp1"], getTestComponentID(testComponents[1], "sha")), + Id: getTestCVEID(testCVEs["cve1comp1"], getTestComponentID(testComponents[1], "sha", 1), 0), ImageId: "sha", CveBaseInfo: &storage.CVEInfo{ Cve: "cve1", @@ -312,7 +386,41 @@ func TestSplitAndMergeImage(t *testing.T) { }, NvdScoreVersion: storage.CvssScoreVersion_UNKNOWN_VERSION, FirstImageOccurrence: ts, - ComponentId: getTestComponentID(testComponents[1], "sha"), + ComponentId: getTestComponentID(testComponents[1], "sha", 1), + }, + }, + { + CVE: &storage.ImageCVE{ + Id: cve.ID("cve2", ""), + CveBaseInfo: &storage.CVEInfo{ + Cve: "cve2", + CreatedAt: ts, + }, + NvdScoreVersion: storage.CvssScoreVersion_UNKNOWN_VERSION, + }, + Edge: &storage.ComponentCVEEdge{ + Id: pgSearch.IDFromPks([]string{scancomponent.ComponentID("comp1", "ver2", ""), cve.ID("cve2", "")}), + ImageComponentId: scancomponent.ComponentID("comp1", "ver2", ""), + ImageCveId: cve.ID("cve2", ""), + HasFixedBy: &storage.ComponentCVEEdge_FixedBy{ + FixedBy: "ver3", + }, + IsFixable: true, + }, + CVEV2: &storage.ImageCVEV2{ + Id: getTestCVEID(testCVEs["cve2comp1"], getTestComponentID(testComponents[1], "sha", 1), 1), + ImageId: "sha", + CveBaseInfo: &storage.CVEInfo{ + Cve: "cve2", + CreatedAt: ts, + }, + NvdScoreVersion: storage.CvssScoreVersion_UNKNOWN_VERSION, + HasFixedBy: &storage.ImageCVEV2_FixedBy{ + FixedBy: "ver3", + }, + IsFixable: true, + FirstImageOccurrence: ts, + ComponentId: getTestComponentID(testComponents[1], "sha", 1), }, }, { @@ -334,7 +442,7 @@ func TestSplitAndMergeImage(t *testing.T) { IsFixable: true, }, CVEV2: &storage.ImageCVEV2{ - Id: getTestCVEID(testCVEs["cve2comp1"], getTestComponentID(testComponents[1], "sha")), + Id: getTestCVEID(testCVEs["cve2comp1"], getTestComponentID(testComponents[1], "sha", 1), 2), ImageId: "sha", CveBaseInfo: &storage.CVEInfo{ Cve: "cve2", @@ -346,7 +454,93 @@ func TestSplitAndMergeImage(t *testing.T) { }, IsFixable: true, FirstImageOccurrence: ts, - ComponentId: getTestComponentID(testComponents[1], "sha"), + ComponentId: getTestComponentID(testComponents[1], "sha", 1), + }, + }, + }, + }, + { + Component: &storage.ImageComponent{ + Id: scancomponent.ComponentID("comp2", "ver1", ""), + Name: "comp2", + Version: "ver1", + }, + ComponentV2: &storage.ImageComponentV2{ + Id: getTestComponentID(testComponents[2], "sha", 2), + Name: "comp2", + Version: "ver1", + ImageId: "sha", + HasLayerIndex: &storage.ImageComponentV2_LayerIndex{ + LayerIndex: 2, + }, + }, + Edge: &storage.ImageComponentEdge{ + Id: pgSearch.IDFromPks([]string{"sha", scancomponent.ComponentID("comp2", "ver1", "")}), + ImageId: "sha", + ImageComponentId: scancomponent.ComponentID("comp2", "ver1", ""), + HasLayerIndex: &storage.ImageComponentEdge_LayerIndex{ + LayerIndex: 2, + }, + }, + Children: []CVEParts{ + { + CVE: &storage.ImageCVE{ + Id: cve.ID("cve1", ""), + CveBaseInfo: &storage.CVEInfo{ + Cve: "cve1", + CreatedAt: ts, + }, + NvdScoreVersion: storage.CvssScoreVersion_UNKNOWN_VERSION, + }, + Edge: &storage.ComponentCVEEdge{ + Id: pgSearch.IDFromPks([]string{scancomponent.ComponentID("comp2", "ver1", ""), cve.ID("cve1", "")}), + ImageComponentId: scancomponent.ComponentID("comp2", "ver1", ""), + ImageCveId: cve.ID("cve1", ""), + HasFixedBy: &storage.ComponentCVEEdge_FixedBy{ + FixedBy: "ver2", + }, + IsFixable: true, + }, + CVEV2: &storage.ImageCVEV2{ + Id: getTestCVEID(testCVEs["cve1comp2"], getTestComponentID(testComponents[2], "sha", 2), 0), + ImageId: "sha", + CveBaseInfo: &storage.CVEInfo{ + Cve: "cve1", + CreatedAt: ts, + }, + NvdScoreVersion: storage.CvssScoreVersion_UNKNOWN_VERSION, + HasFixedBy: &storage.ImageCVEV2_FixedBy{ + FixedBy: "ver2", + }, + IsFixable: true, + FirstImageOccurrence: ts, + ComponentId: getTestComponentID(testComponents[2], "sha", 2), + }, + }, + { + CVE: &storage.ImageCVE{ + Id: cve.ID("cve2", ""), + CveBaseInfo: &storage.CVEInfo{ + Cve: "cve2", + CreatedAt: ts, + }, + NvdScoreVersion: storage.CvssScoreVersion_UNKNOWN_VERSION, + }, + Edge: &storage.ComponentCVEEdge{ + Id: pgSearch.IDFromPks([]string{scancomponent.ComponentID("comp2", "ver1", ""), cve.ID("cve2", "")}), + ImageComponentId: scancomponent.ComponentID("comp2", "ver1", ""), + ImageCveId: cve.ID("cve2", ""), + }, + CVEV2: &storage.ImageCVEV2{ + Id: getTestCVEID(testCVEs["cve2comp2"], getTestComponentID(testComponents[2], "sha", 2), 1), + ImageId: "sha", + CveBaseInfo: &storage.CVEInfo{ + Cve: "cve2", + CreatedAt: ts, + }, + NvdScoreVersion: storage.CvssScoreVersion_UNKNOWN_VERSION, + FirstImageOccurrence: ts, + ComponentId: getTestComponentID(testComponents[2], "sha", 2), }, }, }, @@ -358,7 +552,7 @@ func TestSplitAndMergeImage(t *testing.T) { Version: "ver1", }, ComponentV2: &storage.ImageComponentV2{ - Id: getTestComponentID(testComponents[2], "sha"), + Id: getTestComponentID(testComponents[2], "sha", 3), Name: "comp2", Version: "ver1", ImageId: "sha", @@ -394,7 +588,7 @@ func TestSplitAndMergeImage(t *testing.T) { IsFixable: true, }, CVEV2: &storage.ImageCVEV2{ - Id: getTestCVEID(testCVEs["cve1comp2"], getTestComponentID(testComponents[2], "sha")), + Id: getTestCVEID(testCVEs["cve1comp2"], getTestComponentID(testComponents[2], "sha", 3), 0), ImageId: "sha", CveBaseInfo: &storage.CVEInfo{ Cve: "cve1", @@ -406,7 +600,7 @@ func TestSplitAndMergeImage(t *testing.T) { }, IsFixable: true, FirstImageOccurrence: ts, - ComponentId: getTestComponentID(testComponents[2], "sha"), + ComponentId: getTestComponentID(testComponents[2], "sha", 3), }, }, { @@ -424,7 +618,7 @@ func TestSplitAndMergeImage(t *testing.T) { ImageCveId: cve.ID("cve2", ""), }, CVEV2: &storage.ImageCVEV2{ - Id: getTestCVEID(testCVEs["cve2comp2"], getTestComponentID(testComponents[2], "sha")), + Id: getTestCVEID(testCVEs["cve2comp2"], getTestComponentID(testComponents[2], "sha", 3), 1), ImageId: "sha", CveBaseInfo: &storage.CVEInfo{ Cve: "cve2", @@ -432,7 +626,7 @@ func TestSplitAndMergeImage(t *testing.T) { }, NvdScoreVersion: storage.CvssScoreVersion_UNKNOWN_VERSION, FirstImageOccurrence: ts, - ComponentId: getTestComponentID(testComponents[2], "sha"), + ComponentId: getTestComponentID(testComponents[2], "sha", 3), }, }, }, @@ -481,17 +675,137 @@ func TestSplitAndMergeImage(t *testing.T) { } else { imageActual = Merge(splitActual) } - protoassert.Equal(t, image, imageActual) + protoassert.Equal(t, dedupedImage(), imageActual) } -func getTestComponentID(testComponent *storage.EmbeddedImageScanComponent, imageID string) string { - id, _ := scancomponent.ComponentIDV2(testComponent, imageID) - - return id +func getTestComponentID(testComponent *storage.EmbeddedImageScanComponent, imageID string, index int) string { + return scancomponent.ComponentIDV2(testComponent, imageID, index) } -func getTestCVEID(testCVE *storage.EmbeddedVulnerability, componentID string) string { - id, _ := cve.IDV2(testCVE, componentID) +func getTestCVEID(testCVE *storage.EmbeddedVulnerability, componentID string, index int) string { + return cve.IDV2(testCVE, componentID, index) +} - return id +func dedupedImage() *storage.Image { + return &storage.Image{ + Id: "sha", + Name: &storage.ImageName{ + FullName: "name", + }, + Metadata: &storage.ImageMetadata{ + V1: &storage.V1Metadata{ + Created: ts, + }, + }, + SetComponents: &storage.Image_Components{ + Components: 4, + }, + SetCves: &storage.Image_Cves{ + Cves: 7, + }, + SetFixable: &storage.Image_FixableCves{ + FixableCves: 4, + }, + Scan: &storage.ImageScan{ + ScanTime: ts, + Components: []*storage.EmbeddedImageScanComponent{ + { + Name: "comp1", + Version: "ver1", + HasLayerIndex: &storage.EmbeddedImageScanComponent_LayerIndex{ + LayerIndex: 1, + }, + Vulns: []*storage.EmbeddedVulnerability{}, + }, + { + Name: "comp1", + Version: "ver2", + HasLayerIndex: &storage.EmbeddedImageScanComponent_LayerIndex{ + LayerIndex: 3, + }, + Vulns: []*storage.EmbeddedVulnerability{ + { + Cve: "cve1", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + { + Cve: "cve2", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ + FixedBy: "ver3", + }, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + { + Cve: "cve2", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ + FixedBy: "ver3", + }, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + }, + }, + { + Name: "comp2", + Version: "ver1", + HasLayerIndex: &storage.EmbeddedImageScanComponent_LayerIndex{ + LayerIndex: 2, + }, + Vulns: []*storage.EmbeddedVulnerability{ + { + Cve: "cve1", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ + FixedBy: "ver2", + }, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + { + Cve: "cve2", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + }, + }, + { + Name: "comp2", + Version: "ver1", + HasLayerIndex: &storage.EmbeddedImageScanComponent_LayerIndex{ + LayerIndex: 2, + }, + Vulns: []*storage.EmbeddedVulnerability{ + { + Cve: "cve1", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + SetFixedBy: &storage.EmbeddedVulnerability_FixedBy{ + FixedBy: "ver2", + }, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + { + Cve: "cve2", + VulnerabilityType: storage.EmbeddedVulnerability_IMAGE_VULNERABILITY, + VulnerabilityTypes: []storage.EmbeddedVulnerability_VulnerabilityType{storage.EmbeddedVulnerability_IMAGE_VULNERABILITY}, + FirstImageOccurrence: ts, + FirstSystemOccurrence: ts, + }, + }, + }, + }, + }, + } } diff --git a/central/image/datastore/store/common/v2/split_v2.go b/central/image/datastore/store/common/v2/split_v2.go index 15481932bb6a2..eae8054f9f72e 100644 --- a/central/image/datastore/store/common/v2/split_v2.go +++ b/central/image/datastore/store/common/v2/split_v2.go @@ -34,8 +34,8 @@ func SplitV2(image *storage.Image, withComponents bool) (ImageParts, error) { func splitComponentsV2(parts ImageParts) ([]ComponentParts, error) { ret := make([]ComponentParts, 0, len(parts.Image.GetScan().GetComponents())) - for _, component := range parts.Image.GetScan().GetComponents() { - generatedComponentV2, err := GenerateImageComponentV2(parts.Image.GetScan().GetOperatingSystem(), parts.Image, component) + for index, component := range parts.Image.GetScan().GetComponents() { + generatedComponentV2, err := GenerateImageComponentV2(parts.Image.GetScan().GetOperatingSystem(), parts.Image, index, component) if err != nil { return nil, err } @@ -58,8 +58,8 @@ func splitComponentsV2(parts ImageParts) ([]ComponentParts, error) { func splitCVEsV2(imageID string, componentID string, embedded *storage.EmbeddedImageScanComponent) ([]CVEParts, error) { ret := make([]CVEParts, 0, len(embedded.GetVulns())) - for _, cve := range embedded.GetVulns() { - convertedCVE, err := utils.EmbeddedVulnerabilityToImageCVEV2(imageID, componentID, cve) + for index, cve := range embedded.GetVulns() { + convertedCVE, err := utils.EmbeddedVulnerabilityToImageCVEV2(imageID, componentID, index, cve) if err != nil { return nil, err } @@ -74,11 +74,8 @@ func splitCVEsV2(imageID string, componentID string, embedded *storage.EmbeddedI } // GenerateImageComponentV2 returns top-level image component from embedded component. -func GenerateImageComponentV2(os string, image *storage.Image, from *storage.EmbeddedImageScanComponent) (*storage.ImageComponentV2, error) { - componentID, err := scancomponent.ComponentIDV2(from, image.GetId()) - if err != nil { - return nil, err - } +func GenerateImageComponentV2(os string, image *storage.Image, index int, from *storage.EmbeddedImageScanComponent) (*storage.ImageComponentV2, error) { + componentID := scancomponent.ComponentIDV2(from, image.GetId(), index) ret := &storage.ImageComponentV2{ Id: componentID, diff --git a/central/image/datastore/store/mocks/store.go b/central/image/datastore/store/mocks/store.go index cf59adb3f506e..dceee92a2fe9b 100644 --- a/central/image/datastore/store/mocks/store.go +++ b/central/image/datastore/store/mocks/store.go @@ -13,6 +13,7 @@ import ( context "context" reflect "reflect" + views "github.com/stackrox/rox/central/image/views" v1 "github.com/stackrox/rox/generated/api/v1" storage "github.com/stackrox/rox/generated/storage" search "github.com/stackrox/rox/pkg/search" @@ -134,6 +135,21 @@ func (mr *MockStoreMockRecorder) GetImageMetadata(ctx, id any) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImageMetadata", reflect.TypeOf((*MockStore)(nil).GetImageMetadata), ctx, id) } +// GetImagesRiskView mocks base method. +func (m *MockStore) GetImagesRiskView(ctx context.Context, q *v1.Query) ([]*views.ImageRiskView, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetImagesRiskView", ctx, q) + ret0, _ := ret[0].([]*views.ImageRiskView) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetImagesRiskView indicates an expected call of GetImagesRiskView. +func (mr *MockStoreMockRecorder) GetImagesRiskView(ctx, q any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetImagesRiskView", reflect.TypeOf((*MockStore)(nil).GetImagesRiskView), ctx, q) +} + // GetManyImageMetadata mocks base method. func (m *MockStore) GetManyImageMetadata(ctx context.Context, id []string) ([]*storage.Image, error) { m.ctrl.T.Helper() diff --git a/central/image/datastore/store/postgres/store.go b/central/image/datastore/store/postgres/store.go index 040a77f91c4e1..bef1918452881 100644 --- a/central/image/datastore/store/postgres/store.go +++ b/central/image/datastore/store/postgres/store.go @@ -11,6 +11,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/stackrox/rox/central/image/datastore/store" "github.com/stackrox/rox/central/image/datastore/store/common/v2" + "github.com/stackrox/rox/central/image/views" "github.com/stackrox/rox/central/metrics" v1 "github.com/stackrox/rox/generated/api/v1" "github.com/stackrox/rox/generated/storage" @@ -1335,6 +1336,18 @@ func (s *storeImpl) retryableGetManyImageMetadata(ctx context.Context, ids []str return pgSearch.RunGetManyQueryForSchema[storage.Image](ctx, schema, q, s.db) } +// GetImagesRiskView retrieves an image id and risk score to initialize rankers +func (s *storeImpl) GetImagesRiskView(ctx context.Context, q *v1.Query) ([]*views.ImageRiskView, error) { + // The entire image is not needed to initialize the ranker. We only need the image id and risk score. + var results []*views.ImageRiskView + results, err := pgSearch.RunSelectRequestForSchema[views.ImageRiskView](ctx, s.db, pkgSchema.ImagesSchema, q) + if err != nil { + log.Errorf("unable to initialize image ranking: %v", err) + } + + return results, err +} + func (s *storeImpl) UpdateVulnState(ctx context.Context, cve string, imageIDs []string, state storage.VulnerabilityState) error { defer metrics.SetPostgresOperationDurationTime(time.Now(), ops.Update, "UpdateVulnState") diff --git a/central/image/datastore/store/store.go b/central/image/datastore/store/store.go index db34bb97f40ab..3c20a62ac9817 100644 --- a/central/image/datastore/store/store.go +++ b/central/image/datastore/store/store.go @@ -3,6 +3,7 @@ package store import ( "context" + "github.com/stackrox/rox/central/image/views" v1 "github.com/stackrox/rox/generated/api/v1" "github.com/stackrox/rox/generated/storage" "github.com/stackrox/rox/pkg/search" @@ -29,4 +30,7 @@ type Store interface { Delete(ctx context.Context, id string) error UpdateVulnState(ctx context.Context, cve string, imageIDs []string, state storage.VulnerabilityState) error + + // GetImagesRiskView retrieves an image id and risk score to initialize rankers + GetImagesRiskView(ctx context.Context, q *v1.Query) ([]*views.ImageRiskView, error) } diff --git a/central/image/datastore/store/v2/postgres/store.go b/central/image/datastore/store/v2/postgres/store.go index 81afd85f63fb9..e8efe02bdc7fa 100644 --- a/central/image/datastore/store/v2/postgres/store.go +++ b/central/image/datastore/store/v2/postgres/store.go @@ -1,11 +1,7 @@ package postgres import ( - "cmp" "context" - "slices" - "strconv" - "strings" "time" "github.com/jackc/pgx/v5" @@ -15,6 +11,7 @@ import ( convertutils "github.com/stackrox/rox/central/cve/converter/utils" "github.com/stackrox/rox/central/image/datastore/store" "github.com/stackrox/rox/central/image/datastore/store/common/v2" + "github.com/stackrox/rox/central/image/views" "github.com/stackrox/rox/central/metrics" v1 "github.com/stackrox/rox/generated/api/v1" "github.com/stackrox/rox/generated/storage" @@ -595,17 +592,6 @@ func (s *storeImpl) populateImage(ctx context.Context, tx *postgres.Tx, image *s cveParts = append(cveParts, cvePart) } - // TODO(remove when hashing cve): Adding the index of where the vuln appeared in the component - // is not likely sustainable. We cannot easily guarantee the order is the same when - // we pull the data out. This sort is temporary to keep moving, and will be - // removed when the ID of the CVE is adjusted to no longer use the index of where - // the CVE occurs in the component list. - slices.SortStableFunc(cveParts, func(cvePartA, cvePartB common.CVEParts) int { - cveICompIndex := getCVEComponentIndex(cvePartA.CVEV2.GetId()) - cveJCompIndex := getCVEComponentIndex(cvePartB.CVEV2.GetId()) - return cmp.Compare(cveICompIndex, cveJCompIndex) - }) - child := common.ComponentParts{ ComponentV2: component, Children: cveParts, @@ -925,6 +911,18 @@ func (s *storeImpl) retryableGetManyImageMetadata(ctx context.Context, ids []str return pgSearch.RunGetManyQueryForSchema[storage.Image](ctx, schema, q, s.db) } +// GetImagesRiskView retrieves an image id and risk score to initialize rankers +func (s *storeImpl) GetImagesRiskView(ctx context.Context, q *v1.Query) ([]*views.ImageRiskView, error) { + // The entire image is not needed to initialize the ranker. We only need the image id and risk score. + var results []*views.ImageRiskView + results, err := pgSearch.RunSelectRequestForSchema[views.ImageRiskView](ctx, s.db, pkgSchema.ImagesSchema, q) + if err != nil { + log.Errorf("unable to initialize image ranking: %v", err) + } + + return results, err +} + func (s *storeImpl) UpdateVulnState(ctx context.Context, cve string, imageIDs []string, state storage.VulnerabilityState) error { defer metrics.SetPostgresOperationDurationTime(time.Now(), ops.Update, "UpdateVulnState") @@ -1045,19 +1043,6 @@ func gatherKeys(parts *imagePartsAsSlice) [][]byte { return keys } -func getCVEComponentIndex(s string) int { - lastIndex := strings.LastIndex(s, "#") - if lastIndex == -1 { - return 0 - } - - index, err := strconv.Atoi(s[lastIndex+1:]) - if err != nil { - return 0 - } - return index -} - func (s *storeImpl) isComponentsTableEmpty(ctx context.Context, imageID string) (bool, error) { q := search.NewQueryBuilder().AddExactMatches(search.ImageSHA, imageID).ProtoQuery() count, err := pgSearch.RunCountRequestForSchema(ctx, pkgSchema.ImageComponentV2Schema, q, s.db) diff --git a/central/image/service/service_impl.go b/central/image/service/service_impl.go index d0a90549d9096..e4fbd59259b88 100644 --- a/central/image/service/service_impl.go +++ b/central/image/service/service_impl.go @@ -232,9 +232,8 @@ func (s *serviceImpl) saveImage(img *storage.Image) error { // ScanImageInternal handles an image request from Sensor and Admission Controller. func (s *serviceImpl) ScanImageInternal(ctx context.Context, request *v1.ScanImageInternalRequest) (*v1.ScanImageInternalResponse, error) { - err := s.acquireScanSemaphore(ctx) - if err != nil { - log.Errorw("Failed to acquire scan semaphore", + if err := s.acquireScanSemaphore(ctx); err != nil { + log.Debugw("Failed to acquire scan semaphore", logging.FromContext(ctx), logging.ImageName(request.GetImage().GetName().GetFullName()), logging.ImageID(request.GetImage().GetId()), @@ -446,9 +445,8 @@ func (s *serviceImpl) ScanImage(ctx context.Context, request *v1.ScanImageReques // specified by the given components and scan notes. // This is meant to be called by Sensor. func (s *serviceImpl) GetImageVulnerabilitiesInternal(ctx context.Context, request *v1.GetImageVulnerabilitiesInternalRequest) (*v1.ScanImageInternalResponse, error) { - err := s.acquireScanSemaphore(ctx) - if err != nil { - log.Errorw("Failed to acquire scan semaphore", + if err := s.acquireScanSemaphore(ctx); err != nil { + log.Debugw("Failed to acquire scan semaphore", logging.FromContext(ctx), logging.ImageName(request.GetImageName().GetFullName()), logging.ImageID(request.GetImageId()), @@ -482,7 +480,7 @@ func (s *serviceImpl) GetImageVulnerabilitiesInternal(ctx context.Context, reque } comps := scannerTypes.NewScanComponents("", request.GetComponents(), nil) - _, err = s.enricher.EnrichWithVulnerabilities(img, comps, request.GetNotes()) + _, err := s.enricher.EnrichWithVulnerabilities(img, comps, request.GetNotes()) if err != nil { return nil, err } @@ -524,9 +522,8 @@ func (s *serviceImpl) acquireScanSemaphore(ctx context.Context) error { } func (s *serviceImpl) EnrichLocalImageInternal(ctx context.Context, request *v1.EnrichLocalImageInternalRequest) (*v1.ScanImageInternalResponse, error) { - err := s.acquireScanSemaphore(ctx) - if err != nil { - log.Errorw("Failed to acquire scan semaphore", + if err := s.acquireScanSemaphore(ctx); err != nil { + log.Debugw("Failed to acquire scan semaphore", logging.FromContext(ctx), logging.ImageName(request.GetImageName().GetFullName()), logging.ImageID(request.GetImageId()), @@ -560,6 +557,7 @@ func (s *serviceImpl) EnrichLocalImageInternal(ctx context.Context, request *v1. forceScanUpdate := true // Always pull the image from the store if the ID != "" and rescan is not forced. Central will manage the reprocessing over the images. if imgID != "" && !request.GetForce() { + var err error existingImg, imgExists, err = s.datastore.GetImage(ctx, imgID) if err != nil { s.informScanWaiter(request.GetRequestId(), nil, err) @@ -656,6 +654,7 @@ func (s *serviceImpl) EnrichLocalImageInternal(ctx context.Context, request *v1. _ = s.saveImage(img) } + var err error if hasErrors && request.GetRequestId() != "" { // Send an actual error to the waiter so that error handling can be done (ie: retry) // Without this a bare image is returned that will have notes such as MISSING_METADATA diff --git a/central/image/service/service_impl_test.go b/central/image/service/service_impl_test.go index 42ba4a2c10a20..9a8bcfa13cfd1 100644 --- a/central/image/service/service_impl_test.go +++ b/central/image/service/service_impl_test.go @@ -359,3 +359,57 @@ func TestResetClusterLocal(t *testing.T) { }) } } + +// TestEnrichLocalImageInternal_ImageNames ensures that image names are +// populated from the existing image in Central DB when the image +// requires re-enrichment. (ie: when scan has expired) +func TestEnrichLocalImageInternal_ImageNames(t *testing.T) { + ctx := context.Background() + ctrl := gomock.NewController(t) + + genImageName := func(img string) *storage.ImageName { + imgName, _, err := utils.GenerateImageNameFromString(img) + require.NoError(t, err) + return imgName + } + + imageEnricherMock := enricherMocks.NewMockImageEnricher(ctrl) + imageEnricherMock.EXPECT().EnrichWithVulnerabilities(gomock.Any(), gomock.Any(), gomock.Any()). + AnyTimes(). + Return(enricher.EnrichmentResult{}, nil) + imageEnricherMock.EXPECT().EnrichWithSignatureVerificationData(gomock.Any(), gomock.Any()). + AnyTimes(). + Return(enricher.EnrichmentResult{}, nil) + + imageDSMock := imageDSMocks.NewMockDataStore(ctrl) + imageDSMock.EXPECT().GetImage(gomock.Any(), gomock.Any()). + AnyTimes(). + Return(&storage.Image{ + Id: "fake-id", + Scan: nil, // A nil scan should trigger a re-scan. + Names: []*storage.ImageName{ + genImageName("fake/image:A"), + genImageName("fake/image:B"), + }, + }, true, nil) + + riskManagerMock := riskManagerMocks.NewMockManager(ctrl) + riskManagerMock.EXPECT().CalculateRiskAndUpsertImage(gomock.Any()). + AnyTimes(). + Return(nil) + + s := serviceImpl{ + internalScanSemaphore: semaphore.NewWeighted(int64(env.MaxParallelImageScanInternal.IntegerSetting())), + enricher: imageEnricherMock, + datastore: imageDSMock, + riskManager: riskManagerMock, + } + + resp, err := s.EnrichLocalImageInternal(ctx, &v1.EnrichLocalImageInternalRequest{ + ImageId: "fake-id", + ImageName: genImageName("fake/image:C"), + }) + require.NoError(t, err) + // Verify that the names from the cached image are carried forward. + require.Len(t, resp.GetImage().GetNames(), 3) +} diff --git a/central/image/views/image_risk_view.go b/central/image/views/image_risk_view.go new file mode 100644 index 0000000000000..a72dd033e149f --- /dev/null +++ b/central/image/views/image_risk_view.go @@ -0,0 +1,6 @@ +package views + +type ImageRiskView struct { + ImageID string `db:"image_sha"` + ImageRiskScore float32 `db:"image_risk_score"` +} diff --git a/central/imagecomponent/datastore/datastore.go b/central/imagecomponent/datastore/datastore.go index b102a542b60d2..11ab5b468d624 100644 --- a/central/imagecomponent/datastore/datastore.go +++ b/central/imagecomponent/datastore/datastore.go @@ -38,7 +38,7 @@ func New(storage store.Store, searcher search.Searcher, risks riskDataStore.Data imageComponentRanker: ranker, } - ds.initializeRankers() + go ds.initializeRankers() return ds } diff --git a/central/imagecomponent/datastore/datastore_impl.go b/central/imagecomponent/datastore/datastore_impl.go index e19b20e94b9d3..4d31268ca7133 100644 --- a/central/imagecomponent/datastore/datastore_impl.go +++ b/central/imagecomponent/datastore/datastore_impl.go @@ -82,22 +82,16 @@ func (ds *datastoreImpl) initializeRankers() { sac.AllowFixedScopes( sac.AccessModeScopeKeys(storage.Access_READ_ACCESS), sac.ResourceScopeKeys(resources.Image, resources.Node))) - results, err := ds.Search(readCtx, pkgSearch.EmptyQuery()) + err := ds.storage.Walk(readCtx, func(component *storage.ImageComponent) error { + ds.imageComponentRanker.Add(component.GetId(), component.GetRiskScore()) + return nil + }) if err != nil { - log.Error(err) + log.Errorf("unable to initialize image component ranking: %v", err) return } - for _, id := range pkgSearch.ResultsToIDs(results) { - component, found, err := ds.storage.Get(readCtx, id) - if err != nil { - log.Error(err) - continue - } else if !found { - continue - } - ds.imageComponentRanker.Add(id, component.GetRiskScore()) - } + log.Info("Initialized image component ranking") } func (ds *datastoreImpl) updateImageComponentPriority(ics ...*storage.ImageComponent) { diff --git a/central/imagecomponent/store/mocks/store.go b/central/imagecomponent/store/mocks/store.go index b86cf4c8b39d6..2bb196a3c6640 100644 --- a/central/imagecomponent/store/mocks/store.go +++ b/central/imagecomponent/store/mocks/store.go @@ -119,3 +119,17 @@ func (mr *MockStoreMockRecorder) Search(ctx, q any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Search", reflect.TypeOf((*MockStore)(nil).Search), ctx, q) } + +// Walk mocks base method. +func (m *MockStore) Walk(ctx context.Context, fn func(*storage.ImageComponent) error) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Walk", ctx, fn) + ret0, _ := ret[0].(error) + return ret0 +} + +// Walk indicates an expected call of Walk. +func (mr *MockStoreMockRecorder) Walk(ctx, fn any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Walk", reflect.TypeOf((*MockStore)(nil).Walk), ctx, fn) +} diff --git a/central/imagecomponent/store/store.go b/central/imagecomponent/store/store.go index 9a9a234c91050..ad4cc0ffa38a7 100644 --- a/central/imagecomponent/store/store.go +++ b/central/imagecomponent/store/store.go @@ -17,5 +17,7 @@ type Store interface { Get(ctx context.Context, id string) (*storage.ImageComponent, bool, error) GetMany(ctx context.Context, ids []string) ([]*storage.ImageComponent, []int, error) + Walk(ctx context.Context, fn func(obj *storage.ImageComponent) error) error + Exists(ctx context.Context, id string) (bool, error) } diff --git a/central/imagecomponent/v2/datastore/datastore.go b/central/imagecomponent/v2/datastore/datastore.go index c570652374789..ba9c45a1a2718 100644 --- a/central/imagecomponent/v2/datastore/datastore.go +++ b/central/imagecomponent/v2/datastore/datastore.go @@ -37,7 +37,7 @@ func New(storage pgStore.Store, searcher search.Searcher, risks riskDataStore.Da imageComponentRanker: ranker, } - ds.initializeRankers() + go ds.initializeRankers() return ds } diff --git a/central/imagecomponent/v2/datastore/datastore_impl.go b/central/imagecomponent/v2/datastore/datastore_impl.go index 91160c892ea69..94cd6363b2278 100644 --- a/central/imagecomponent/v2/datastore/datastore_impl.go +++ b/central/imagecomponent/v2/datastore/datastore_impl.go @@ -82,22 +82,16 @@ func (ds *datastoreImpl) initializeRankers() { sac.AllowFixedScopes( sac.AccessModeScopeKeys(storage.Access_READ_ACCESS), sac.ResourceScopeKeys(resources.Image, resources.Node))) - results, err := ds.Search(readCtx, pkgSearch.EmptyQuery()) + err := ds.storage.Walk(readCtx, func(component *storage.ImageComponentV2) error { + ds.imageComponentRanker.Add(component.GetId(), component.GetRiskScore()) + return nil + }) if err != nil { - log.Error(err) + log.Errorf("unable to initialize image component ranking: %v", err) return } - for _, id := range pkgSearch.ResultsToIDs(results) { - component, found, err := ds.storage.Get(readCtx, id) - if err != nil { - log.Error(err) - continue - } else if !found { - continue - } - ds.imageComponentRanker.Add(id, component.GetRiskScore()) - } + log.Info("Initialized image component ranking") } func (ds *datastoreImpl) updateImageComponentPriority(ics ...*storage.ImageComponentV2) { diff --git a/central/imagecomponent/v2/datastore/datastore_sac_test.go b/central/imagecomponent/v2/datastore/datastore_sac_test.go index 7aa3129c7dea1..958ee62889f31 100644 --- a/central/imagecomponent/v2/datastore/datastore_sac_test.go +++ b/central/imagecomponent/v2/datastore/datastore_sac_test.go @@ -43,9 +43,8 @@ func (s *componentV2DataStoreSACTestSuite) SetupSuite() { s.imageTestContexts = sacTestUtils.GetNamespaceScopedTestContexts(context.Background(), s.T(), resources.Image) } -func getImageComponentID(component *storage.EmbeddedImageScanComponent, imageID string) string { - componentID, _ := scancomponent.ComponentIDV2(component, imageID) - return componentID +func getImageComponentID(component *storage.EmbeddedImageScanComponent, imageID string, index int) string { + return scancomponent.ComponentIDV2(component, imageID, index) } func (s *componentV2DataStoreSACTestSuite) cleanImageToVulnerabilitiesGraph() { @@ -63,12 +62,12 @@ var ( imageComponent1s2x3 = fixtures.GetEmbeddedImageComponent1s2x3() imageComponent2x4 = fixtures.GetEmbeddedImageComponent2x4() imageComponent2x5 = fixtures.GetEmbeddedImageComponent2x5() - imageComponentID1x1 = getImageComponentID(imageComponent1x1, fixtures.GetImageSherlockHolmes1().GetId()) - imageComponentID1x2 = getImageComponentID(imageComponent1x2, fixtures.GetImageSherlockHolmes1().GetId()) - imageComponentID1s2x3i1 = getImageComponentID(imageComponent1s2x3, fixtures.GetImageSherlockHolmes1().GetId()) - imageComponentID1s2x3i2 = getImageComponentID(imageComponent1s2x3, fixtures.GetImageDoctorJekyll2().GetId()) - imageComponentID2x4 = getImageComponentID(imageComponent2x4, fixtures.GetImageDoctorJekyll2().GetId()) - imageComponentID2x5 = getImageComponentID(imageComponent2x5, fixtures.GetImageDoctorJekyll2().GetId()) + imageComponentID1x1 = getImageComponentID(imageComponent1x1, fixtures.GetImageSherlockHolmes1().GetId(), 0) + imageComponentID1x2 = getImageComponentID(imageComponent1x2, fixtures.GetImageSherlockHolmes1().GetId(), 1) + imageComponentID1s2x3i1 = getImageComponentID(imageComponent1s2x3, fixtures.GetImageSherlockHolmes1().GetId(), 2) + imageComponentID1s2x3i2 = getImageComponentID(imageComponent1s2x3, fixtures.GetImageDoctorJekyll2().GetId(), 0) + imageComponentID2x4 = getImageComponentID(imageComponent2x4, fixtures.GetImageDoctorJekyll2().GetId(), 1) + imageComponentID2x5 = getImageComponentID(imageComponent2x5, fixtures.GetImageDoctorJekyll2().GetId(), 2) imageComponentTestCases = []componentTestCase{ { diff --git a/central/metrics/central.go b/central/metrics/central.go index 9a2aa589c9469..248e18e2aac60 100644 --- a/central/metrics/central.go +++ b/central/metrics/central.go @@ -270,6 +270,26 @@ var ( Name: "signature_verification_reprocessor_duration_seconds", Help: "Duration of the signature verification reprocessor loop in seconds", }) + + msgToSensorNotSentCounter = prometheus.NewCounterVec(prometheus.CounterOpts{ + Namespace: metrics.PrometheusNamespace, + Subsystem: metrics.CentralSubsystem.String(), + Name: "msg_to_sensor_not_sent_count", + Help: "Total messages not sent to Sensor due to errors or other reasons", + }, []string{"ClusterID", "type", "reason"}) +) + +// Reasons for a message not being sent. +var ( + // NotSentError indicates that an attempt was made to send the message + // but an error was encountered. + NotSentError = "error" + // NotSentSignal indicates that a signal prevented the message from being + // sent, such as a timeout. + NotSentSignal = "signal" + // NotSentSkip indicates that no attempt was made to send the message, + // perhaps due to prior errors. + NotSentSkip = "skip" ) func startTimeToMS(t time.Time) float64 { @@ -468,6 +488,16 @@ func SetReprocessorDuration(start time.Time) { reprocessorDurationGauge.Set(time.Since(start).Seconds()) } +// IncrementMsgToSensorNotSentCounter increments the count of messages not sent to Sensor due to +// errors or other reasons. +func IncrementMsgToSensorNotSentCounter(clusterID string, msg *central.MsgToSensor, reason string) { + if msg.GetMsg() == nil { + return + } + typ := event.GetEventTypeWithoutPrefix(msg.GetMsg()) + msgToSensorNotSentCounter.With(prometheus.Labels{"ClusterID": clusterID, "type": typ, "reason": reason}).Inc() +} + // SetSignatureVerificationReprocessorDuration registers how long a signature verification reprocessing step took. func SetSignatureVerificationReprocessorDuration(start time.Time) { signatureVerificationReprocessorDurationGauge.Set(time.Since(start).Seconds()) diff --git a/central/metrics/central_test.go b/central/metrics/central_test.go new file mode 100644 index 0000000000000..ff39bb7952be0 --- /dev/null +++ b/central/metrics/central_test.go @@ -0,0 +1,74 @@ +package metrics + +import ( + "testing" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/stackrox/rox/generated/internalapi/central" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestIncrementMsgToSensorNotSentCounter(t *testing.T) { + t.Run("no panic on nil msg", func(t *testing.T) { + assert.NotPanics(t, func() { + IncrementMsgToSensorNotSentCounter("", nil, "") + }) + }) + + t.Run("no panic on nil inner msg", func(t *testing.T) { + assert.NotPanics(t, func() { + IncrementMsgToSensorNotSentCounter("", ¢ral.MsgToSensor{ + Msg: nil, + }, "") + }) + }) + + t.Run("inc and extract type", func(t *testing.T) { + // Clear any prior values. + prometheus.Unregister(msgToSensorNotSentCounter) + require.NoError(t, prometheus.Register(msgToSensorNotSentCounter)) + + // Get references to the counters. + updImgErrCounter, err := msgToSensorNotSentCounter.GetMetricWith( + prometheus.Labels{"ClusterID": "a", "type": "UpdatedImage", "reason": NotSentError}, + ) + require.NoError(t, err) + updImgSkipCounter, err := msgToSensorNotSentCounter.GetMetricWith( + prometheus.Labels{"ClusterID": "a", "type": "UpdatedImage", "reason": NotSentSkip}, + ) + require.NoError(t, err) + reprocessDeploySignalCounter, err := msgToSensorNotSentCounter.GetMetricWith( + prometheus.Labels{"ClusterID": "b", "type": "ReprocessDeployments", "reason": NotSentSignal}, + ) + require.NoError(t, err) + + // Sanity check. + assert.Equal(t, 0.0, testutil.ToFloat64(updImgErrCounter)) + assert.Equal(t, 0.0, testutil.ToFloat64(updImgSkipCounter)) + assert.Equal(t, 0.0, testutil.ToFloat64(reprocessDeploySignalCounter)) + + // Verify the count is incremented, type extracted, and reason recorded. + IncrementMsgToSensorNotSentCounter("a", ¢ral.MsgToSensor{ + Msg: ¢ral.MsgToSensor_UpdatedImage{}, + }, NotSentError) + assert.Equal(t, 1.0, testutil.ToFloat64(updImgErrCounter)) + assert.Equal(t, 0.0, testutil.ToFloat64(updImgSkipCounter)) + assert.Equal(t, 0.0, testutil.ToFloat64(reprocessDeploySignalCounter)) + + IncrementMsgToSensorNotSentCounter("a", ¢ral.MsgToSensor{ + Msg: ¢ral.MsgToSensor_UpdatedImage{}, + }, NotSentSkip) + assert.Equal(t, 1.0, testutil.ToFloat64(updImgErrCounter)) + assert.Equal(t, 1.0, testutil.ToFloat64(updImgSkipCounter)) + assert.Equal(t, 0.0, testutil.ToFloat64(reprocessDeploySignalCounter)) + + IncrementMsgToSensorNotSentCounter("b", ¢ral.MsgToSensor{ + Msg: ¢ral.MsgToSensor_ReprocessDeployments{}, + }, NotSentSignal) + assert.Equal(t, 1.0, testutil.ToFloat64(updImgErrCounter)) + assert.Equal(t, 1.0, testutil.ToFloat64(updImgSkipCounter)) + assert.Equal(t, 1.0, testutil.ToFloat64(reprocessDeploySignalCounter)) + }) +} diff --git a/central/metrics/init.go b/central/metrics/init.go index 7f24ddb634b7e..7f2f8e9b79f4b 100644 --- a/central/metrics/init.go +++ b/central/metrics/init.go @@ -40,5 +40,6 @@ func init() { signatureVerificationReprocessorDurationGauge, pruningDurationHistogramVec, storeCacheOperationHistogramVec, + msgToSensorNotSentCounter, ) } diff --git a/central/networkbaseline/service/service_impl_sql_test.go b/central/networkbaseline/service/service_impl_sql_test.go index 7207a7499359e..568c1f9c69cfd 100644 --- a/central/networkbaseline/service/service_impl_sql_test.go +++ b/central/networkbaseline/service/service_impl_sql_test.go @@ -136,7 +136,7 @@ func (s *networkBaselineServiceSuite) setupTablesExternalFlowsWithDefaultEntity( fs, err := s.flowDataStore.GetFlowStore(allAllowedCtx, fixtureconsts.Cluster1) s.NoError(err) - err = fs.UpsertFlows(allAllowedCtx, []*storage.NetworkFlow{flow}, timestamp.FromGoTime(ts)) + _, err = fs.UpsertFlows(allAllowedCtx, []*storage.NetworkFlow{flow}, timestamp.FromGoTime(ts)) s.NoError(err) } @@ -200,7 +200,7 @@ func (s *networkBaselineServiceSuite) setupTablesExternalFlows() { fs, err := s.flowDataStore.GetFlowStore(allAllowedCtx, fixtureconsts.Cluster1) s.NoError(err) - err = fs.UpsertFlows(allAllowedCtx, flows, timestamp.FromGoTime(ts)) + _, err = fs.UpsertFlows(allAllowedCtx, flows, timestamp.FromGoTime(ts)) s.NoError(err) } @@ -231,6 +231,7 @@ func (s *networkBaselineServiceSuite) TestExternalStatus() { } func (s *networkBaselineServiceSuite) TestExternalStatusPagination() { + s.T().Skip("Temporarily skipping this test (flake) : TODO(ROX-30337)") s.setupTablesExternalFlows() req := &v1.NetworkBaselineExternalStatusRequest{ diff --git a/central/networkgraph/aggregator/aggregator_impl.go b/central/networkgraph/aggregator/aggregator_impl.go index eaf4a7ced98ca..b2b71f163e970 100644 --- a/central/networkgraph/aggregator/aggregator_impl.go +++ b/central/networkgraph/aggregator/aggregator_impl.go @@ -175,25 +175,12 @@ func (a *aggregateExternalConnByNameImpl) Aggregate(flows []*storage.NetworkFlow flow = flow.CloneVT() - flowProps := flow.GetProps() - if flowProps == nil { - continue - } - - srcEntity, dstEntity = flowProps.SrcEntity, flowProps.DstEntity - // If both endpoints are not known external sources, skip processing. if !networkgraph.IsKnownExternalSrc(srcEntity) && !networkgraph.IsKnownExternalSrc(dstEntity) { ret = append(ret, flow) continue } - // If the entity is discovered, anonymize it to avoid overloading - // the graph with many nodes (external IP details are still accessible - // via other APIs) - flowProps.SrcEntity = anonymizeDiscoveredEntity(flowProps.SrcEntity) - flowProps.DstEntity = anonymizeDiscoveredEntity(flowProps.DstEntity) - updateDupNameExtSrcTracker(srcEntity, dupNameExtSrcTracker) updateDupNameExtSrcTracker(dstEntity, dupNameExtSrcTracker) @@ -365,12 +352,3 @@ func normalizeDupNameExtSrcs(entity *storage.NetworkEntityInfo) { }, } } - -// Return NetworkEntityInfo_INTERNET if entity is a 'discovered' external entity -// Otherwise, return entity. -func anonymizeDiscoveredEntity(entity *storage.NetworkEntityInfo) *storage.NetworkEntityInfo { - if networkgraph.IsExternalDiscovered(entity) { - return networkgraph.InternetEntity().ToProto() - } - return entity -} diff --git a/central/networkgraph/aggregator/aggregator_test.go b/central/networkgraph/aggregator/aggregator_test.go index 908e097734e0f..572ba12462aa3 100644 --- a/central/networkgraph/aggregator/aggregator_test.go +++ b/central/networkgraph/aggregator/aggregator_test.go @@ -5,7 +5,6 @@ import ( "time" "github.com/stackrox/rox/generated/storage" - "github.com/stackrox/rox/pkg/net" "github.com/stackrox/rox/pkg/networkgraph" "github.com/stackrox/rox/pkg/networkgraph/externalsrcs" "github.com/stackrox/rox/pkg/networkgraph/testutils" @@ -330,76 +329,3 @@ func TestAggregateExtConnsByName(t *testing.T) { assert.Len(t, actual, len(expected)) protoassert.ElementsMatch(t, expected, actual) } - -func TestAggregateExtConnsByNameAnonymizeDiscoveredExtEntities(t *testing.T) { - ts1 := time.Now() - ts2 := ts1.Add(-1000 * time.Second) - - d1 := testutils.GetDeploymentNetworkEntity("d1", "d1") - - discovered_entity1 := networkgraph.DiscoveredExternalEntity(net.IPNetworkFromCIDRBytes([]byte{35, 187, 144, 4, 32})).ToProto() - discovered_entity2 := networkgraph.DiscoveredExternalEntity(net.IPNetworkFromCIDRBytes([]byte{35, 187, 144, 5, 32})).ToProto() - internet := networkgraph.InternetEntity().ToProto() - - detailed_flow1 := testutils.GetNetworkFlow(d1, discovered_entity1, 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts1) - detailed_flow2 := testutils.GetNetworkFlow(d1, discovered_entity2, 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts2) - anonymized_flow := testutils.GetNetworkFlow(d1, internet, 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts1) - - for _, testCase := range []struct { - name string - flows []*storage.NetworkFlow - expected []*storage.NetworkFlow - }{ - { - name: "Single flow with discovered entity", - flows: []*storage.NetworkFlow{detailed_flow1}, - expected: []*storage.NetworkFlow{anonymized_flow}, - }, - { - name: "Two flows with discovered entities are aggregated", - flows: []*storage.NetworkFlow{detailed_flow1, detailed_flow2}, - expected: []*storage.NetworkFlow{anonymized_flow}, - }, - } { - t.Run(testCase.name, func(t *testing.T) { - actual := NewDuplicateNameExtSrcConnAggregator().Aggregate(testCase.flows) - - assert.Len(t, actual, len(testCase.expected)) - protoassert.ElementsMatch(t, testCase.expected, actual) - }) - } -} - -func TestAnonymizeDiscoveredEntity(t *testing.T) { - type TestSetEntry struct { - name string - input *storage.NetworkEntityInfo - expected *storage.NetworkEntityInfo - } - - testSet := []TestSetEntry{ - { - name: "Deployment", - input: testutils.GetDeploymentNetworkEntity("d1", "d1"), - expected: testutils.GetDeploymentNetworkEntity("d1", "d1"), - }, - { - name: "NonDiscoveredExternalEntity", - input: testutils.GetExtSrcNetworkEntityInfo("cluster1__e1", "google", "net1", false, false), - expected: testutils.GetExtSrcNetworkEntityInfo("cluster1__e1", "google", "net1", false, false), - }, - { - name: "DiscoveredExternalEntity", - input: networkgraph.DiscoveredExternalEntity(net.IPNetworkFromCIDRBytes([]byte{35, 187, 144, 4, 32})).ToProto(), - expected: networkgraph.InternetEntity().ToProto(), // <- anonymization - }, - } - - for _, testEntry := range testSet { - t.Run(testEntry.name, func(t *testing.T) { - actual := anonymizeDiscoveredEntity(testEntry.input) - - protoassert.Equal(t, testEntry.expected, actual) - }) - } -} diff --git a/central/networkgraph/flow/datastore/flow.go b/central/networkgraph/flow/datastore/flow.go index e115d2a66b56a..6dc1cc867c37e 100644 --- a/central/networkgraph/flow/datastore/flow.go +++ b/central/networkgraph/flow/datastore/flow.go @@ -21,7 +21,8 @@ type FlowDataStore interface { // UpsertFlows upserts the given flows to the store. The flows slice might be modified by this function, so if you // need to use it afterwards, create a copy. - UpsertFlows(ctx context.Context, flows []*storage.NetworkFlow, lastUpdateTS timestamp.MicroTS) error + // Returns the flows actually upserted. + UpsertFlows(ctx context.Context, flows []*storage.NetworkFlow, lastUpdateTS timestamp.MicroTS) ([]*storage.NetworkFlow, error) RemoveFlowsForDeployment(ctx context.Context, id string) error RemoveStaleFlows(ctx context.Context) error // RemoveOrphanedFlows - remove flows that have been orphaned by deployments diff --git a/central/networkgraph/flow/datastore/flow_impl.go b/central/networkgraph/flow/datastore/flow_impl.go index df3da51e0b28c..742f5a1e86c80 100644 --- a/central/networkgraph/flow/datastore/flow_impl.go +++ b/central/networkgraph/flow/datastore/flow_impl.go @@ -91,11 +91,11 @@ func (fds *flowDataStoreImpl) isDeletedDeployment(id string) bool { return fds.deletedDeploymentsCache.Contains(id) } -func (fds *flowDataStoreImpl) UpsertFlows(ctx context.Context, flows []*storage.NetworkFlow, lastUpdateTS timestamp.MicroTS) error { +func (fds *flowDataStoreImpl) UpsertFlows(ctx context.Context, flows []*storage.NetworkFlow, lastUpdateTS timestamp.MicroTS) ([]*storage.NetworkFlow, error) { if ok, err := networkGraphSAC.WriteAllowed(ctx); err != nil { - return err + return nil, err } else if !ok { - return sac.ErrResourceAccessDenied + return nil, sac.ErrResourceAccessDenied } filtered := flows[:0] @@ -109,7 +109,11 @@ func (fds *flowDataStoreImpl) UpsertFlows(ctx context.Context, flows []*storage. filtered = append(filtered, flow) } - return fds.storage.UpsertFlows(ctx, filtered, lastUpdateTS) + if err := fds.storage.UpsertFlows(ctx, filtered, lastUpdateTS); err != nil { + return nil, err + } + + return filtered, nil } func (fds *flowDataStoreImpl) RemoveFlowsForDeployment(ctx context.Context, id string) error { diff --git a/central/networkgraph/flow/datastore/mocks/flow.go b/central/networkgraph/flow/datastore/mocks/flow.go index 916950b1f68c7..59adb4499bed7 100644 --- a/central/networkgraph/flow/datastore/mocks/flow.go +++ b/central/networkgraph/flow/datastore/mocks/flow.go @@ -148,11 +148,12 @@ func (mr *MockFlowDataStoreMockRecorder) RemoveStaleFlows(ctx any) *gomock.Call } // UpsertFlows mocks base method. -func (m *MockFlowDataStore) UpsertFlows(ctx context.Context, flows []*storage.NetworkFlow, lastUpdateTS timestamp.MicroTS) error { +func (m *MockFlowDataStore) UpsertFlows(ctx context.Context, flows []*storage.NetworkFlow, lastUpdateTS timestamp.MicroTS) ([]*storage.NetworkFlow, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "UpsertFlows", ctx, flows, lastUpdateTS) - ret0, _ := ret[0].(error) - return ret0 + ret0, _ := ret[0].([]*storage.NetworkFlow) + ret1, _ := ret[1].(error) + return ret0, ret1 } // UpsertFlows indicates an expected call of UpsertFlows. diff --git a/central/networkgraph/service/service_impl.go b/central/networkgraph/service/service_impl.go index de40e9bd22dde..20410497b6361 100644 --- a/central/networkgraph/service/service_impl.go +++ b/central/networkgraph/service/service_impl.go @@ -15,6 +15,7 @@ import ( networkEntityDS "github.com/stackrox/rox/central/networkgraph/entity/datastore" "github.com/stackrox/rox/central/networkgraph/entity/networktree" networkFlowDS "github.com/stackrox/rox/central/networkgraph/flow/datastore" + "github.com/stackrox/rox/central/networkgraph/transformer" networkPolicyDS "github.com/stackrox/rox/central/networkpolicies/datastore" deploymentMatcher "github.com/stackrox/rox/central/networkpolicies/deployment" "github.com/stackrox/rox/central/role/sachelper" @@ -22,6 +23,7 @@ import ( "github.com/stackrox/rox/generated/storage" "github.com/stackrox/rox/pkg/auth/permissions" "github.com/stackrox/rox/pkg/errox" + "github.com/stackrox/rox/pkg/features" "github.com/stackrox/rox/pkg/grpc/authz" "github.com/stackrox/rox/pkg/grpc/authz/perrpc" "github.com/stackrox/rox/pkg/grpc/authz/user" @@ -537,6 +539,13 @@ func (s *serviceImpl) addDeploymentFlowsToGraph( }, ) + // If aggressive aggregation is enabled, first transform all external discovered + // entities into Internet entities. Subsequent aggregation will combine these + // based on name and timestamp. + if features.NetworkGraphAggregateExternalIPs.Enabled() { + flows = transformer.NewExternalDiscoveredTransformer().Transform(flows) + } + // Aggregate all external flows by node names to control the number of external nodes. flows = aggregator.NewDuplicateNameExtSrcConnAggregator().Aggregate(flows) missingInfoFlows = aggregator.NewDuplicateNameExtSrcConnAggregator().Aggregate(missingInfoFlows) @@ -544,6 +553,12 @@ func (s *serviceImpl) addDeploymentFlowsToGraph( flows = aggregator.NewLatestTimestampAggregator().Aggregate(flows) missingInfoFlows = aggregator.NewLatestTimestampAggregator().Aggregate(missingInfoFlows) + // If aggressive aggregation is disabled, transform the external discovered flows + // at the end, so previous aggregation steps do not combine them into a single edge. + if !features.NetworkGraphAggregateExternalIPs.Enabled() { + flows = transformer.NewExternalDiscoveredTransformer().Transform(flows) + } + graphBuilder.AddFlows(flows) filteredFlows, visibleNeighbors, maskedDeployments, err := filterFlowsAndMaskScopeAlienDeployments(ctx, diff --git a/central/networkgraph/service/service_impl_postgres_benchmark_test.go b/central/networkgraph/service/service_impl_postgres_benchmark_test.go index 50787a3862dbb..cff8d80baa8cb 100644 --- a/central/networkgraph/service/service_impl_postgres_benchmark_test.go +++ b/central/networkgraph/service/service_impl_postgres_benchmark_test.go @@ -5,6 +5,10 @@ package service import ( "context" "fmt" + "math/rand/v2" + "net" + "strconv" + "strings" "testing" "time" @@ -33,9 +37,6 @@ var ( sac.AllowFixedScopes( sac.AccessModeScopeKeys(storage.Access_READ_ACCESS, storage.Access_READ_WRITE_ACCESS), sac.ResourceScopeKeys(resources.NetworkGraph, resources.Deployment))) - - // all entity IPs of the form 1.2.x.y/32 - baseIp = "1.2" ) type networkGraphServiceBenchmarks struct { @@ -91,76 +92,66 @@ func setupBenchmarkForB(b *testing.B) networkGraphServiceBenchmarks { return n } -// setupTables setups up the database for a large number of deployments all -// communicating with the same external IP - it is intended for benchmarks of the -// GetExternalNetworkFlows API endpoint -func (s *networkGraphServiceBenchmarks) setupTables(b *testing.B, numFlows int) string { - cidr := "192.168.0.1/32" - id, err := externalsrcs.NewClusterScopedID(fixtureconsts.Cluster1, cidr) - require.NoError(b, err) - - entity := testutils.GetExtSrcNetworkEntity(id.String(), cidr, cidr, false, fixtureconsts.Cluster1, true) +func (s *networkGraphServiceBenchmarks) createExternalIps(b *testing.B, baseIp string, n int) []*storage.NetworkEntity { + entities := make([]*storage.NetworkEntity, 0, n) - err = s.entityDataStore.CreateExternalNetworkEntity(globalWriteAccessCtx, entity, true) - require.NoError(b, err) + baseIpParts := strings.Split(baseIp, ".") - flows := make([]*storage.NetworkFlow, 0, numFlows) + if len(baseIpParts) > 4 { + require.FailNow(b, "Invalid baseIp provided", baseIp) + } - ts := time.Now() - for i := 0; i < numFlows; i++ { - name := fmt.Sprintf("deployment-%d", i) - deployment := &storage.Deployment{ - Name: name, - Id: uuid.NewV5FromNonUUIDs(fixtureconsts.Namespace1, name).String(), - ClusterId: fixtureconsts.Cluster1, - Namespace: fixtureconsts.Namespace1, + for _, part := range baseIpParts { + if part == "" { + // possible trailing dot, e.g. 1.2. + continue } - deploymentEnt := testutils.GetDeploymentNetworkEntity(deployment.Id, deployment.Name) - err := s.deploymentsDataStore.UpsertDeployment(globalWriteAccessCtx, deployment) - require.NoError(b, err) + if i, err := strconv.Atoi(part); err != nil || i < 0 || i > 255 { + require.FailNow(b, "Invalid octet in baseIp", part) + } + } - // The port is not important for the purposes of benchmarks, so 1234 chosen arbitrarily - flows = append(flows, testutils.GetNetworkFlow(deploymentEnt, entity.Info, 1234, storage.L4Protocol_L4_PROTOCOL_TCP, &ts)) + // pad zeros if given small IP e.g. 1.2 + for len(baseIpParts) < 4 { + baseIpParts = append(baseIpParts, "0") } - flowStore, err := s.flowDataStore.CreateFlowStore(globalWriteAccessCtx, fixtureconsts.Cluster1) - require.NoError(b, err) + ip := net.ParseIP(strings.Join(baseIpParts, ".")).To4() + if ip == nil { + require.FailNow(b, "Invalid IP parts", baseIpParts) + } - err = flowStore.UpsertFlows(globalWriteAccessCtx, flows, timestamp.FromGoTime(time.Now())) - require.NoError(b, err) + base := uint32(ip[0])<<24 | uint32(ip[1])<<16 | uint32(ip[2])<<8 | uint32(ip[3]) - return id.String() -} + for i := 1; i <= n; i++ { + next := base + uint32(i) -// setupTablesForMetadata sets up the database for a large number of entities all -// communicating with a set of deployments - it is intended for benchmarks of the -// GetExternalNetworkFlowsMetadata API endpoint -func (s *networkGraphServiceBenchmarks) setupTablesForMetadata(b *testing.B) { - entities := make([]*storage.NetworkEntity, 0, 255*255) + b1 := byte(next >> 24) + b2 := byte(next >> 16) + b3 := byte(next >> 8) + b4 := byte(next) - // Generate and store all IPs between 1.2.0.0 -> 1.2.254.254 (65000 entities) - for x := 1; x < 254; x++ { - for y := 1; y < 254; y++ { - cidr := fmt.Sprintf("%s.%d.%d/32", baseIp, x, y) - id, err := externalsrcs.NewClusterScopedID(fixtureconsts.Cluster1, cidr) - require.NoError(b, err) + cidr := fmt.Sprintf("%d.%d.%d.%d/32", b1, b2, b3, b4) + id, err := externalsrcs.NewClusterScopedID(fixtureconsts.Cluster1, cidr) + require.NoError(b, err) - entity := testutils.GetExtSrcNetworkEntity(id.String(), cidr, cidr, false, fixtureconsts.Cluster1, true) - entities = append(entities, entity) - } + entity := testutils.GetExtSrcNetworkEntity(id.String(), cidr, cidr, false, fixtureconsts.Cluster1, true) + entities = append(entities, entity) } - _, err := s.entityDataStore.CreateExtNetworkEntitiesForCluster(globalWriteAccessCtx, fixtureconsts.Cluster1, entities...) - require.NoError(b, err) + return entities +} - // entity 0 communicates with 2000 deployments (1.2.1.1) - // first 1000 communicate with deployment 1 (1.2.1.1 -> 1.2.4.233) - // first 10000 communicate with deployment 2 (1.2.1.1 -> 1.2.40.17) +// First deployment will always talk to all the entities +// All other deployments will talk to an even split of the entities +func (s *networkGraphServiceBenchmarks) createFlows(b *testing.B, numDeployments int, entities []*storage.NetworkEntity) []*storage.NetworkFlow { + flows := make([]*storage.NetworkFlow, 0) - flows := make([]*storage.NetworkFlow, 0, 13000) + chunkSize := len(entities) / numDeployments - for i := 0; i < 2000; i++ { + ts := time.Now() + for i := 0; i < numDeployments; i++ { name := fmt.Sprintf("deployment-%d", i) deployment := &storage.Deployment{ Name: name, @@ -174,31 +165,61 @@ func (s *networkGraphServiceBenchmarks) setupTablesForMetadata(b *testing.B) { require.NoError(b, err) if i == 0 { - // deployment-0 talks to the first 1000 entities - ts := time.Now() - for _, entity := range entities[:1000] { - flow := testutils.GetNetworkFlow(deploymentEnt, entity.Info, 1337, storage.L4Protocol_L4_PROTOCOL_TCP, &ts) + // deployment-0 talks to all the entities + for _, entity := range entities { + flow := testutils.GetNetworkFlow(deploymentEnt, entity.Info, rand.IntN(65565), storage.L4Protocol_L4_PROTOCOL_TCP, &ts) flows = append(flows, flow) } - } else if i == 1 { - // deployment-1 talks to the first 10000 entities - ts := time.Now() - for _, entity := range entities[:10000] { - flow := testutils.GetNetworkFlow(deploymentEnt, entity.Info, 1337, storage.L4Protocol_L4_PROTOCOL_TCP, &ts) + } else { + for _, entity := range entities[chunkSize*(i-1) : chunkSize*i] { + flow := testutils.GetNetworkFlow(deploymentEnt, entity.Info, rand.IntN(65565), storage.L4Protocol_L4_PROTOCOL_TCP, &ts) flows = append(flows, flow) } - } else { - // all deployments talk to entity0 - ts := time.Now() - flow := testutils.GetNetworkFlow(deploymentEnt, entities[0].Info, 1337, storage.L4Protocol_L4_PROTOCOL_TCP, &ts) - flows = append(flows, flow) } } + return flows +} + +// setupTables setups up the database for a large number of deployments all +// communicating with the same external IP - it is intended for benchmarks of the +// GetExternalNetworkFlows API endpoint +func (s *networkGraphServiceBenchmarks) setupTables(b *testing.B, numFlows int) string { + cidr := "192.168.0.1/32" + id, err := externalsrcs.NewClusterScopedID(fixtureconsts.Cluster1, cidr) + require.NoError(b, err) + + entity := testutils.GetExtSrcNetworkEntity(id.String(), cidr, cidr, false, fixtureconsts.Cluster1, true) + + err = s.entityDataStore.CreateExternalNetworkEntity(globalWriteAccessCtx, entity, true) + require.NoError(b, err) + + flows := s.createFlows(b, numFlows, []*storage.NetworkEntity{entity}) + + flowStore, err := s.flowDataStore.CreateFlowStore(globalWriteAccessCtx, fixtureconsts.Cluster1) + require.NoError(b, err) + + _, err = flowStore.UpsertFlows(globalWriteAccessCtx, flows, timestamp.FromGoTime(time.Now())) + require.NoError(b, err) + + return id.String() +} + +// setupTablesForMetadata sets up the database for a large number of entities all +// communicating with a set of deployments - it is intended for benchmarks of the +// GetExternalNetworkFlowsMetadata API endpoint +func (s *networkGraphServiceBenchmarks) setupTablesForMetadata(b *testing.B) { + entities := s.createExternalIps(b, "1.2", 255*255) + + _, err := s.entityDataStore.CreateExtNetworkEntitiesForCluster(globalWriteAccessCtx, fixtureconsts.Cluster1, entities...) + require.NoError(b, err) + + flows := s.createFlows(b, 2000, entities) + flowStore, err := s.flowDataStore.CreateFlowStore(globalWriteAccessCtx, fixtureconsts.Cluster1) require.NoError(b, err) - err = flowStore.UpsertFlows(globalWriteAccessCtx, flows, timestamp.FromGoTime(time.Now())) + _, err = flowStore.UpsertFlows(globalWriteAccessCtx, flows, timestamp.FromGoTime(time.Now())) require.NoError(b, err) } @@ -301,3 +322,29 @@ func BenchmarkGetExternalNetworkFlows(b *testing.B) { }, })) } + +func BenchmarkNetworkGraphExternalFlows(b *testing.B) { + suite := setupBenchmarkForB(b) + + entities := suite.createExternalIps(b, "1.2", 10000) + + _, err := suite.entityDataStore.CreateExtNetworkEntitiesForCluster(globalWriteAccessCtx, fixtureconsts.Cluster1, entities...) + require.NoError(b, err) + + flows := suite.createFlows(b, 2000, entities) + + flowStore, err := suite.flowDataStore.CreateFlowStore(globalWriteAccessCtx, fixtureconsts.Cluster1) + require.NoError(b, err) + + _, err = flowStore.UpsertFlows(globalWriteAccessCtx, flows, timestamp.FromGoTime(time.Now())) + require.NoError(b, err) + + b.Run("all graph", func(b *testing.B) { + for i := 0; i < b.N; i++ { + _, err := suite.service.GetNetworkGraph(globalWriteAccessCtx, &v1.NetworkGraphRequest{ + ClusterId: fixtureconsts.Cluster1, + }) + require.NoError(b, err) + } + }) +} diff --git a/central/networkgraph/service/service_impl_postgres_test.go b/central/networkgraph/service/service_impl_postgres_test.go index 700786f4b68e2..edbe77eeba98c 100644 --- a/central/networkgraph/service/service_impl_postgres_test.go +++ b/central/networkgraph/service/service_impl_postgres_test.go @@ -131,6 +131,20 @@ func externalFlow(deployment *storage.Deployment, entity *storage.NetworkEntity, } } +func (s *networkGraphServiceSuite) networkGraphsEqual(expected, actual *v1.NetworkGraph) { + s.Assert().Equal(len(expected.Nodes), len(actual.Nodes)) + + for i, expectedNode := range expected.Nodes { + protoassert.Equal(s.T(), expectedNode.Entity, actual.Nodes[i].Entity) + + for k, expectedEdges := range expectedNode.OutEdges { + actualEdges := actual.Nodes[i].OutEdges[k] + + protoassert.ElementsMatch(s.T(), expectedEdges.Properties, actualEdges.Properties) + } + } +} + func (s *networkGraphServiceSuite) TestGetNetworkGraph() { ctx := sac.WithGlobalAccessScopeChecker( context.Background(), @@ -183,7 +197,7 @@ func (s *networkGraphServiceSuite) TestGetNetworkGraph() { flowStore, err := s.flowDataStore.CreateFlowStore(globalWriteAccessCtx, testCluster) s.NoError(err) - err = flowStore.UpsertFlows(globalWriteAccessCtx, entityFlows, timeNow) + _, err = flowStore.UpsertFlows(globalWriteAccessCtx, entityFlows, timeNow) s.NoError(err) request := &v1.NetworkGraphRequest{ @@ -210,6 +224,16 @@ func (s *networkGraphServiceSuite) TestGetNetworkGraph() { Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, LastActiveTimestamp: lastSeenTimestamp1, }, + { + Port: 1234, + Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + LastActiveTimestamp: lastSeenTimestamp2, + }, + { + Port: 1234, + Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + LastActiveTimestamp: lastSeenTimestamp3, + }, }, }, }, @@ -228,7 +252,7 @@ func (s *networkGraphServiceSuite) TestGetNetworkGraph() { response, err := s.service.GetNetworkGraph(ctx, request) s.NoError(err) - protoassert.Equal(s.T(), expectedResponse, response) + s.networkGraphsEqual(expectedResponse, response) } func (s *networkGraphServiceSuite) TestGetNetworkGraphNormalizedAndUnformalized() { @@ -279,14 +303,16 @@ func (s *networkGraphServiceSuite) TestGetNetworkGraphNormalizedAndUnformalized( _, err = s.entityDataStore.CreateExtNetworkEntitiesForCluster(globalWriteAccessCtx, testCluster, entities...) s.NoError(err) - timeNow := timestamp.FromGoTime(time.Now()) + timeNow := timestamp.FromGoTime(time.Unix(10, 0)) lastSeenTimestamp1 := timeNow.Protobuf() lastSeenTimestamp2 := timeNow.Add(-time.Second).Protobuf() lastSeenTimestamp3 := timeNow.Add(-2 * time.Second).Protobuf() lastSeenTimestamp4 := timeNow.Add(-3 * time.Second).Protobuf() entityFlows := []*storage.NetworkFlow{ + // flows to entities[0] will be aggregated to the latest timestamp (2) externalFlow(deployment, entities[0], false, lastSeenTimestamp1), + externalFlow(deployment, entities[0], false, lastSeenTimestamp2), externalFlow(deployment, entities[1], false, lastSeenTimestamp2), externalFlow(deployment, entities[2], false, lastSeenTimestamp3), externalFlow(deployment, internetEntity, false, lastSeenTimestamp4), @@ -295,11 +321,12 @@ func (s *networkGraphServiceSuite) TestGetNetworkGraphNormalizedAndUnformalized( flowStore, err := s.flowDataStore.CreateFlowStore(globalWriteAccessCtx, testCluster) s.NoError(err) - err = flowStore.UpsertFlows(globalWriteAccessCtx, entityFlows, timeNow) + _, err = flowStore.UpsertFlows(globalWriteAccessCtx, entityFlows, timeNow) s.NoError(err) request := &v1.NetworkGraphRequest{ ClusterId: testCluster, + Since: timestamppb.New(time.Unix(0, 0)), } expectedResponse := &v1.NetworkGraph{ @@ -317,10 +344,27 @@ func (s *networkGraphServiceSuite) TestGetNetworkGraphNormalizedAndUnformalized( OutEdges: map[int32]*v1.NetworkEdgePropertiesBundle{ 1: { Properties: []*v1.NetworkEdgeProperties{ + // Expect 2 edges for 1234/TCP/timestamp 2, one for aggregated + // entities[0] and one for entities[1] { Port: 1234, Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, - LastActiveTimestamp: lastSeenTimestamp1, + LastActiveTimestamp: lastSeenTimestamp2, + }, + { + Port: 1234, + Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + LastActiveTimestamp: lastSeenTimestamp2, + }, + { + Port: 1234, + Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + LastActiveTimestamp: lastSeenTimestamp3, + }, + { + Port: 1234, + Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + LastActiveTimestamp: lastSeenTimestamp4, }, }, }, @@ -340,7 +384,7 @@ func (s *networkGraphServiceSuite) TestGetNetworkGraphNormalizedAndUnformalized( response, err := s.service.GetNetworkGraph(ctx, request) s.NoError(err) - protoassert.Equal(s.T(), expectedResponse, response) + s.networkGraphsEqual(expectedResponse, response) } func (s *networkGraphServiceSuite) TestGetExternalNetworkFlows() { @@ -407,7 +451,7 @@ func (s *networkGraphServiceSuite) TestGetExternalNetworkFlows() { flowStore, err := s.flowDataStore.CreateFlowStore(globalWriteAccessCtx, testCluster) s.NoError(err) - err = flowStore.UpsertFlows(globalWriteAccessCtx, allFlows, timestamp.FromGoTime(time.Now())) + _, err = flowStore.UpsertFlows(globalWriteAccessCtx, allFlows, timestamp.FromGoTime(time.Now())) s.NoError(err) for _, tc := range []struct { @@ -565,7 +609,7 @@ func (s *networkGraphServiceSuite) TestGetExternalNetworkFlowsMetadata() { flowStore, err := s.flowDataStore.CreateFlowStore(globalWriteAccessCtx, testCluster) s.NoError(err) - err = flowStore.UpsertFlows(globalWriteAccessCtx, flows, timestamp.FromGoTime(time.Now())) + _, err = flowStore.UpsertFlows(globalWriteAccessCtx, flows, timestamp.FromGoTime(time.Now())) s.NoError(err) for _, tc := range []struct { diff --git a/central/networkgraph/transformer/external.go b/central/networkgraph/transformer/external.go new file mode 100644 index 0000000000000..4e4c2f4478c6f --- /dev/null +++ b/central/networkgraph/transformer/external.go @@ -0,0 +1,47 @@ +package transformer + +import ( + "github.com/stackrox/rox/generated/storage" + "github.com/stackrox/rox/pkg/networkgraph" +) + +type transformExternalDiscoveredImpl struct{} + +// Transform will convert any discovered external flows to the Internet entity +// for masking/anonymization within the network graph. +func (t *transformExternalDiscoveredImpl) Transform(flows []*storage.NetworkFlow) []*storage.NetworkFlow { + ret := make([]*storage.NetworkFlow, 0, len(flows)) + + for _, flow := range flows { + ret = append(ret, anonymizeDiscoveredFlow(flow)) + } + + return ret +} + +// Return NetworkEntityInfo_INTERNET if entity is a 'discovered' external entity +// Otherwise, return entity. +func anonymizeDiscoveredEntity(entity *storage.NetworkEntityInfo) *storage.NetworkEntityInfo { + if networkgraph.IsExternalDiscovered(entity) { + return networkgraph.InternetEntity().ToProto() + } + return entity +} + +// Transform the Src or Dst entities to INTERNET if they are 'discovered' external +// entities, otherwise the flow is unmodified. +func anonymizeDiscoveredFlow(flow *storage.NetworkFlow) *storage.NetworkFlow { + props := flow.GetProps() + src, dst := props.GetSrcEntity(), props.GetDstEntity() + + if !networkgraph.IsExternalDiscovered(src) && !networkgraph.IsExternalDiscovered(dst) { + return flow + } + + props = flow.GetProps() + + props.SrcEntity = anonymizeDiscoveredEntity(props.SrcEntity) + props.DstEntity = anonymizeDiscoveredEntity(props.DstEntity) + + return flow +} diff --git a/central/networkgraph/transformer/transformer.go b/central/networkgraph/transformer/transformer.go new file mode 100644 index 0000000000000..3ffffbcc13183 --- /dev/null +++ b/central/networkgraph/transformer/transformer.go @@ -0,0 +1,15 @@ +package transformer + +import ( + "github.com/stackrox/rox/generated/storage" +) + +// A NetworkFlowTransformer will modify a list of flows for the +// purposes of masking or anonymization. +type NetworkFlowTransformer interface { + Transform(flows []*storage.NetworkFlow) []*storage.NetworkFlow +} + +func NewExternalDiscoveredTransformer() NetworkFlowTransformer { + return &transformExternalDiscoveredImpl{} +} diff --git a/central/networkgraph/transformer/transformer_test.go b/central/networkgraph/transformer/transformer_test.go new file mode 100644 index 0000000000000..39e5d3894369b --- /dev/null +++ b/central/networkgraph/transformer/transformer_test.go @@ -0,0 +1,41 @@ +package transformer + +import ( + "testing" + "time" + + "github.com/stackrox/rox/generated/storage" + "github.com/stackrox/rox/pkg/networkgraph" + "github.com/stackrox/rox/pkg/networkgraph/testutils" + "github.com/stackrox/rox/pkg/protoassert" +) + +func TestTransformDiscoveredEntities(t *testing.T) { + d1 := testutils.GetDeploymentNetworkEntity("d1", "d1") + d2 := testutils.GetDeploymentNetworkEntity("d2", "d2") + + entities := []*storage.NetworkEntityInfo{ + testutils.GetExtSrcNetworkEntityInfo("entity1", "1", "1.1.1.1/32", false, true), + testutils.GetExtSrcNetworkEntityInfo("entity2", "2", "2.2.2.2/32", false, false), + } + + ts := time.Now() + + flows := []*storage.NetworkFlow{ + testutils.GetNetworkFlow(d1, entities[0], 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts), + testutils.GetNetworkFlow(d1, entities[1], 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts), + testutils.GetNetworkFlow(entities[1], d2, 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts), + testutils.GetNetworkFlow(d1, d2, 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts), + } + + expected := []*storage.NetworkFlow{ + testutils.GetNetworkFlow(d1, networkgraph.InternetEntity().ToProto(), 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts), + testutils.GetNetworkFlow(d1, entities[1], 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts), + testutils.GetNetworkFlow(entities[1], d2, 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts), + testutils.GetNetworkFlow(d1, d2, 8000, storage.L4Protocol_L4_PROTOCOL_TCP, &ts), + } + + result := NewExternalDiscoveredTransformer().Transform(flows) + + protoassert.ElementsMatch(t, expected, result) +} diff --git a/central/node/datastore/datastore.go b/central/node/datastore/datastore.go index 5867905f95ad0..8e0790c18b374 100644 --- a/central/node/datastore/datastore.go +++ b/central/node/datastore/datastore.go @@ -42,7 +42,7 @@ type DataStore interface { // NewWithPostgres returns a new instance of DataStore using the input store, and searcher. func NewWithPostgres(storage store.Store, searcher search.Searcher, risks riskDS.DataStore, nodeRanker *ranking.Ranker, nodeComponentRanker *ranking.Ranker) DataStore { ds := newDatastoreImpl(storage, searcher, risks, nodeRanker, nodeComponentRanker) - ds.initializeRankers() + go ds.initializeRankers() return ds } diff --git a/central/node/datastore/datastore_impl.go b/central/node/datastore/datastore_impl.go index 9d3c069f31045..f99672574babd 100644 --- a/central/node/datastore/datastore_impl.go +++ b/central/node/datastore/datastore_impl.go @@ -266,23 +266,17 @@ func (ds *datastoreImpl) initializeRankers() { sac.AllowFixedScopes( sac.AccessModeScopeKeys(storage.Access_READ_ACCESS), sac.ResourceScopeKeys(resources.Node))) - results, err := ds.searcher.Search(readCtx, pkgSearch.EmptyQuery()) + // The bespoke store does not have a Walk nor a GetByQueryFn. Thus, WalkByQuery must be used. + err := ds.storage.WalkByQuery(readCtx, pkgSearch.EmptyQuery(), func(image *storage.Node) error { + ds.nodeRanker.Add(image.GetId(), image.GetRiskScore()) + return nil + }) if err != nil { - log.Errorf("initializing node rankers: %v", err) + log.Errorf("unable to initialize node ranking: %v", err) return } - for _, id := range pkgSearch.ResultsToIDs(results) { - node, found, err := ds.storage.GetNodeMetadata(readCtx, id) - if err != nil { - log.Errorf("retrieving node for ranker initialization: %v", err) - continue - } else if !found { - continue - } - - ds.nodeRanker.Add(id, node.GetRiskScore()) - } + log.Info("Initialized node ranking") } func (ds *datastoreImpl) updateNodePriority(nodes ...*storage.Node) { diff --git a/central/nodecomponent/datastore/datastore.go b/central/nodecomponent/datastore/datastore.go index 70875c3d5c087..bb122e14c0b38 100644 --- a/central/nodecomponent/datastore/datastore.go +++ b/central/nodecomponent/datastore/datastore.go @@ -37,7 +37,7 @@ func New(storage pgStore.Store, searcher search.Searcher, risks riskDataStore.Da nodeComponentRanker: ranker, } - ds.initializeRankers() + go ds.initializeRankers() return ds } diff --git a/central/nodecomponent/datastore/datastore_impl.go b/central/nodecomponent/datastore/datastore_impl.go index 7fcd46310407d..596b298c61772 100644 --- a/central/nodecomponent/datastore/datastore_impl.go +++ b/central/nodecomponent/datastore/datastore_impl.go @@ -82,22 +82,16 @@ func (ds *datastoreImpl) initializeRankers() { sac.AllowFixedScopes( sac.AccessModeScopeKeys(storage.Access_READ_ACCESS), sac.ResourceScopeKeys(resources.Node))) - results, err := ds.Search(readCtx, pkgSearch.EmptyQuery()) + err := ds.storage.Walk(readCtx, func(component *storage.NodeComponent) error { + ds.nodeComponentRanker.Add(component.GetId(), component.GetRiskScore()) + return nil + }) if err != nil { - log.Error(err) + log.Errorf("unable to initialize node component ranking: %v", err) return } - for _, id := range pkgSearch.ResultsToIDs(results) { - component, found, err := ds.storage.Get(readCtx, id) - if err != nil { - log.Error(err) - continue - } else if !found { - continue - } - ds.nodeComponentRanker.Add(id, component.GetRiskScore()) - } + log.Info("Initialized node component ranking") } func (ds *datastoreImpl) updateNodeComponentPriority(ics ...*storage.NodeComponent) { diff --git a/central/policy/datastore/datastore_impl.go b/central/policy/datastore/datastore_impl.go index f7f4e9380d536..c39cdfe721289 100644 --- a/central/policy/datastore/datastore_impl.go +++ b/central/policy/datastore/datastore_impl.go @@ -170,16 +170,17 @@ func (ds *datastoreImpl) GetAllPolicies(ctx context.Context) ([]*storage.Policy, var policies []*storage.Policy err := ds.storage.Walk(ctx, func(policy *storage.Policy) error { policies = append(policies, policy) - err := ds.fillCategoryNames(ctx, policy) - if err != nil { - return errorsPkg.Wrap(err, "failed to fill category names") - } return nil }) if err != nil { return nil, err } + err = ds.fillCategoryNames(ctx, policies...) + if err != nil { + return nil, errorsPkg.Wrap(err, "failed to fill category names") + } + return policies, err } diff --git a/central/policy/datastore/datastore_impl_postgres_test.go b/central/policy/datastore/datastore_impl_postgres_test.go index 3790c487a0600..b9ce3652e4518 100644 --- a/central/policy/datastore/datastore_impl_postgres_test.go +++ b/central/policy/datastore/datastore_impl_postgres_test.go @@ -27,6 +27,7 @@ import ( "github.com/stackrox/rox/pkg/sac" "github.com/stackrox/rox/pkg/sac/resources" pkgSearch "github.com/stackrox/rox/pkg/search" + "github.com/stackrox/rox/pkg/uuid" "github.com/stretchr/testify/suite" "go.uber.org/mock/gomock" "gorm.io/gorm" @@ -378,3 +379,106 @@ func (s *PolicyPostgresDataStoreTestSuite) TestTransactionRollbacks() { // Clean up policy _ = s.datastoreWithMockCategoryDS.RemovePolicy(ctx, policy) } + +func (s *PolicyPostgresDataStoreTestSuite) TestAddDefaultsDeduplicatesCategoryNames() { + ctx := sac.WithAllAccess(context.Background()) + + // Create a policy with incorrect category names that need to be deduplicated + policy := fixtures.GetPolicy() + policy.Id = "test-policy-dedup" + policy.Name = "Test Policy for Deduplication" + + // Add the policy first + _, err := s.datastore.AddPolicy(ctx, policy) + s.NoError(err) + + // Clear existing categories from the policy + err = s.categoryDS.SetPolicyCategoriesForPolicy(ctx, policy.GetId(), []string{}) + s.NoError(err) + + // Create categories with incorrect names directly using the store to bypass normalization + // These are the incorrect names: "Docker Cis" and "Devops Best Practices" + categoryStorage := categoryPostgres.New(s.db) + edgeStorage := edgePostgres.New(s.db) + edgeDS := policyCategoryEdgeDS.New(edgeStorage, edgeSearch.New(edgeStorage)) + + dockerCisCategory := &storage.PolicyCategory{ + Id: uuid.NewV4().String(), + Name: "Docker Cis", + IsDefault: false, + } + devopsCategory := &storage.PolicyCategory{ + Id: uuid.NewV4().String(), + Name: "Devops Best Practices", + IsDefault: false, + } + + // Upsert the incorrect categories directly to the store + err = categoryStorage.Upsert(ctx, dockerCisCategory) + s.NoError(err) + err = categoryStorage.Upsert(ctx, devopsCategory) + s.NoError(err) + + // Create edges linking the policy to the incorrect categories + dockerCisEdge := &storage.PolicyCategoryEdge{ + Id: uuid.NewV4().String(), + PolicyId: policy.GetId(), + CategoryId: dockerCisCategory.GetId(), + } + devopsEdge := &storage.PolicyCategoryEdge{ + Id: uuid.NewV4().String(), + PolicyId: policy.GetId(), + CategoryId: devopsCategory.GetId(), + } + err = edgeDS.UpsertMany(ctx, []*storage.PolicyCategoryEdge{dockerCisEdge, devopsEdge}) + s.NoError(err) + + // Verify the policy has the incorrect category names + categories, err := s.categoryDS.GetPolicyCategoriesForPolicy(ctx, policy.GetId()) + s.NoError(err) + s.Len(categories, 2) + categoryNames := make([]string, len(categories)) + for i, c := range categories { + categoryNames[i] = c.GetName() + } + s.Contains(categoryNames, "Docker Cis") + s.Contains(categoryNames, "Devops Best Practices") + + // Verify the incorrect category objects exist + searchQuery := pkgSearch.NewQueryBuilder().AddExactMatches(pkgSearch.PolicyCategoryName, "Docker Cis", "Devops Best Practices").ProtoQuery() + results, err := s.categoryDS.Search(ctx, searchQuery) + s.NoError(err) + s.Len(results, 2) // Both incorrect categories should exist + + // Now call addDefaults which should fix the category names + policyStorage := policyStore.New(s.db) + addDefaults(policyStorage, s.categoryDS, s.datastore) + + // Verify the policy now has the correct category names + categories, err = s.categoryDS.GetPolicyCategoriesForPolicy(ctx, policy.GetId()) + s.NoError(err) + s.Len(categories, 2) + categoryNames = make([]string, len(categories)) + for i, c := range categories { + categoryNames[i] = c.GetName() + } + s.Contains(categoryNames, "Docker CIS") + s.Contains(categoryNames, "DevOps Best Practices") + s.NotContains(categoryNames, "Docker Cis") + s.NotContains(categoryNames, "Devops Best Practices") + + // Verify the incorrect category objects have been deleted + searchQuery = pkgSearch.NewQueryBuilder().AddExactMatches(pkgSearch.PolicyCategoryName, "Docker Cis", "Devops Best Practices").ProtoQuery() + results, err = s.categoryDS.Search(ctx, searchQuery) + s.NoError(err) + s.Len(results, 0) // Both incorrect categories should be deleted + + // Verify the correct category objects exist + searchQuery = pkgSearch.NewQueryBuilder().AddExactMatches(pkgSearch.PolicyCategoryName, "Docker CIS", "DevOps Best Practices").ProtoQuery() + results, err = s.categoryDS.Search(ctx, searchQuery) + s.NoError(err) + s.Len(results, 2) // Both correct categories should exist + + // Clean up + s.NoError(s.datastore.RemovePolicy(ctx, policy)) +} diff --git a/central/policy/datastore/singleton.go b/central/policy/datastore/singleton.go index 63539e1f2d9fc..3f0ea1c75623a 100644 --- a/central/policy/datastore/singleton.go +++ b/central/policy/datastore/singleton.go @@ -14,7 +14,9 @@ import ( "github.com/stackrox/rox/pkg/defaults/policies" "github.com/stackrox/rox/pkg/policyutils" "github.com/stackrox/rox/pkg/sac" + searchPkg "github.com/stackrox/rox/pkg/search" "github.com/stackrox/rox/pkg/set" + "github.com/stackrox/rox/pkg/sliceutils" "github.com/stackrox/rox/pkg/sync" "github.com/stackrox/rox/pkg/utils" ) @@ -34,7 +36,7 @@ func initialize() { categoriesDatastore := categoriesDS.Singleton() ad = New(storage, searcher, clusterDatastore, notifierDatastore, categoriesDatastore) - addDefaults(storage, categoriesDatastore) + addDefaults(storage, categoriesDatastore, ad) } // Singleton provides the interface for non-service external interaction. @@ -46,20 +48,69 @@ func Singleton() DataStore { // addDefaults adds the default policies into the postgres table for policies. // TODO: ROX-11279: Data migration for postgres should take care of removing default policies in the bolt bucket named removed_default_policies // from the policies table in postgres -func addDefaults(s policyStore.Store, categoriesDS categoriesDS.DataStore) { +func addDefaults(s policyStore.Store, categoriesDS categoriesDS.DataStore, fullStore DataStore) { policyIDSet := set.NewStringSet() + storedPolicies := make([]*storage.Policy, 0) err := s.Walk(workflowAdministrationCtx, func(p *storage.Policy) error { policyIDSet.Add(p.GetId()) // Unrelated to adding/checking default policies, this was put here to prevent looping through all policies a second time if p.Source == storage.PolicySource_DECLARATIVE { metrics.IncrementTotalExternalPoliciesGauge() } + storedPolicies = append(storedPolicies, p) return nil }) + if err != nil { panic(err) } + // ROX-31406: Fix categories that were impacted by previous bug + for _, p := range storedPolicies { + var categories []*storage.PolicyCategory + categories, err = categoriesDS.GetPolicyCategoriesForPolicy(workflowAdministrationCtx, p.GetId()) + if err != nil { + panic(err) + } + shouldReupsert := false + p.Categories = sliceutils.Map[*storage.PolicyCategory, string](categories, func(c *storage.PolicyCategory) string { + // Both Docker CIS and DevOps Best Practices were broken as a result of a change made in 4.8 that added + // a title case enforcement on policies that were added, not accounting for the fact that words may have + // more than just the first character capitalized. This code section just fixes the default categories + // that may have been duplicated as a result of this. + if c.GetName() == "Docker Cis" { + shouldReupsert = true + return "Docker CIS" + } else if c.GetName() == "Devops Best Practices" { + shouldReupsert = true + return "DevOps Best Practices" + } + return c.GetName() + }) + if shouldReupsert { + // Update policy, taking advantage of the full datastore updating edges for us + err = fullStore.UpdatePolicy(sac.WithAllAccess(context.Background()), p) + if err != nil { + panic(err) + } + } + } + + // Clean up invalid policy categories + var results []searchPkg.Result + q := searchPkg.NewQueryBuilder().AddExactMatches(searchPkg.PolicyCategoryName, "Devops Best Practices", "Docker Cis").ProtoQuery() + results, err = categoriesDS.Search(workflowAdministrationCtx, q) + if err != nil { + panic(err) + } + for _, result := range results { + err = categoriesDS.DeletePolicyCategory(sac.WithAllAccess(context.Background()), result.ID) + if err != nil { + panic(err) + } + } + // End ROX-31406-specific code + // Preload the default policies. defaultPolicies, err := policies.DefaultPolicies() // Hard panic here is okay, since we can always guarantee that we will be able to get the default policies out. diff --git a/central/policycategory/datastore/datastore_impl.go b/central/policycategory/datastore/datastore_impl.go index 8c5c0ccd60baf..8c0321205bae9 100644 --- a/central/policycategory/datastore/datastore_impl.go +++ b/central/policycategory/datastore/datastore_impl.go @@ -26,12 +26,13 @@ import ( var ( log = logging.LoggerForModule() policyCategorySAC = sac.ForResource(resources.WorkflowAdministration) - titleCase = cases.Title(language.English) policyCategoryCtx = sac.WithGlobalAccessScopeChecker(context.Background(), sac.AllowFixedScopes( sac.AccessModeScopeKeys(storage.Access_READ_ACCESS, storage.Access_READ_WRITE_ACCESS), sac.ResourceScopeKeys(resources.WorkflowAdministration))) + + titleCase = cases.Title(language.English, cases.NoLower) ) type datastoreImpl struct { diff --git a/central/processindicator/datastore/bench_test.go b/central/processindicator/datastore/bench_test.go index 00875db723797..7e540dd243e18 100644 --- a/central/processindicator/datastore/bench_test.go +++ b/central/processindicator/datastore/bench_test.go @@ -9,15 +9,17 @@ import ( plopStore "github.com/stackrox/rox/central/processlisteningonport/store/postgres" "github.com/stackrox/rox/generated/storage" "github.com/stackrox/rox/pkg/fixtures" + "github.com/stackrox/rox/pkg/fixtures/fixtureconsts" "github.com/stackrox/rox/pkg/postgres/pgtest" "github.com/stackrox/rox/pkg/sac" + pgSearch "github.com/stackrox/rox/pkg/search" "github.com/stackrox/rox/pkg/uuid" "github.com/stretchr/testify/require" ) func BenchmarkAddIndicator(b *testing.B) { var indicators []*storage.ProcessIndicator - for i := 0; i < 1000; i++ { + for i := 0; i < 100000; i++ { pi := fixtures.GetProcessIndicator() pi.Id = uuid.NewV4().String() indicators = append(indicators, pi) @@ -37,3 +39,42 @@ func BenchmarkAddIndicator(b *testing.B) { require.NoError(b, err) } } + +func BenchmarkSearchIndicator(b *testing.B) { + var indicators []*storage.ProcessIndicator + for i := 0; i < 10000; i++ { + pi := fixtures.GetProcessIndicator() + pi.Id = uuid.NewV4().String() + // spreading these across some deployments to set up search test + switch i % 3 { + case 0: + pi.DeploymentId = fixtureconsts.Deployment1 + case 1: + pi.DeploymentId = fixtureconsts.Deployment2 + case 2: + pi.DeploymentId = fixtureconsts.Deployment3 + } + + indicators = append(indicators, pi) + } + + db := pgtest.ForT(b) + store := postgresStore.New(db) + plopStore := plopStore.New(db) + searcher := search.New(store) + + datastore := New(store, plopStore, searcher, nil) + + ctx := sac.WithAllAccess(context.Background()) + // Add the data first. + err := datastore.AddProcessIndicators(ctx, indicators...) + require.NoError(b, err) + + b.ResetTimer() + query := pgSearch.NewQueryBuilder().AddExactMatches(pgSearch.DeploymentID, fixtureconsts.Deployment1).ProtoQuery() + for i := 0; i < b.N; i++ { + results, err := datastore.SearchRawProcessIndicators(ctx, query) + require.NoError(b, err) + require.True(b, len(results) > 0) + } +} diff --git a/central/processindicator/datastore/datastore_impl.go b/central/processindicator/datastore/datastore_impl.go index 515296ea76b0b..2dc79d5a06e85 100644 --- a/central/processindicator/datastore/datastore_impl.go +++ b/central/processindicator/datastore/datastore_impl.go @@ -13,6 +13,7 @@ import ( v1 "github.com/stackrox/rox/generated/api/v1" "github.com/stackrox/rox/generated/storage" "github.com/stackrox/rox/pkg/concurrency" + "github.com/stackrox/rox/pkg/env" ops "github.com/stackrox/rox/pkg/metrics" "github.com/stackrox/rox/pkg/sac" "github.com/stackrox/rox/pkg/sac/resources" @@ -25,6 +26,8 @@ const ( var ( deploymentExtensionSAC = sac.ForResource(resources.DeploymentExtension) + + addBatchSize = env.ProcessAddBatchSize.IntegerSetting() ) type datastoreImpl struct { @@ -96,7 +99,31 @@ func (ds *datastoreImpl) AddProcessIndicators(ctx context.Context, indicators .. return sac.ErrResourceAccessDenied } - return ds.storage.UpsertMany(ctx, indicators) + localBatchSize := addBatchSize + + for { + if len(indicators) == 0 { + break + } + + if len(indicators) < localBatchSize { + localBatchSize = len(indicators) + } + + identifierBatch := indicators[:localBatchSize] + + err := ds.storage.UpsertMany(ctx, identifierBatch) + if err != nil { + log.Warnf("error adding a batch of indicators: %v", err) + } else { + log.Debugf("successfully added a batch of %d process indicators", len(identifierBatch)) + } + + // Move the slice forward to start the next batch + indicators = indicators[localBatchSize:] + } + + return nil } func (ds *datastoreImpl) WalkAll(ctx context.Context, fn func(pi *storage.ProcessIndicator) error) error { diff --git a/central/reprocessor/reprocessor.go b/central/reprocessor/reprocessor.go index b642e0b155f30..718e7a0cbf6ad 100644 --- a/central/reprocessor/reprocessor.go +++ b/central/reprocessor/reprocessor.go @@ -24,6 +24,7 @@ import ( imageEnricher "github.com/stackrox/rox/pkg/images/enricher" "github.com/stackrox/rox/pkg/images/utils" "github.com/stackrox/rox/pkg/logging" + "github.com/stackrox/rox/pkg/maputil" nodeEnricher "github.com/stackrox/rox/pkg/nodes/enricher" "github.com/stackrox/rox/pkg/sac" "github.com/stackrox/rox/pkg/sac/resources" @@ -37,6 +38,10 @@ import ( "golang.org/x/sync/semaphore" ) +const ( + imageReprocessorSemaphoreSize = int64(5) +) + var ( log = logging.LoggerForModule(administrationEvents.EnableAdministrationEvents()) @@ -141,6 +146,8 @@ func newLoopWithDuration(connManager connection.Manager, imageEnricher imageEnri signatureVerificationSig: concurrency.NewSignal(), connManager: connManager, + + injectMessageTimeoutDur: env.ReprocessInjectMessageTimeout.DurationSetting(), } } @@ -184,6 +191,8 @@ type loopImpl struct { reprocessingInProgress concurrency.Flag connManager connection.Manager + + injectMessageTimeoutDur time.Duration } func (l *loopImpl) ReprocessRiskForDeployments(deploymentIDs ...string) { @@ -356,16 +365,6 @@ func (l *loopImpl) reprocessImage(id string, fetchOpt imageEnricher.FetchOption, return image, true } -func (l *loopImpl) getActiveImageIDs() ([]string, error) { - query := search.NewQueryBuilder().AddStringsHighlighted(search.DeploymentID, search.WildcardString).ProtoQuery() - results, err := l.images.Search(allAccessCtx, query) - if err != nil { - return nil, errors.Wrap(err, "error searching for active image IDs") - } - - return search.ResultsToIDs(results), nil -} - func (l *loopImpl) reprocessImagesAndResyncDeployments(fetchOpt imageEnricher.FetchOption, imgReprocessingFunc imageReprocessingFunc, imageQuery *v1.Query) { if l.stopSig.IsDone() { @@ -382,9 +381,10 @@ func (l *loopImpl) reprocessImagesAndResyncDeployments(fetchOpt imageEnricher.Fe return } - sema := semaphore.NewWeighted(5) + sema := semaphore.NewWeighted(imageReprocessorSemaphoreSize) wg := concurrency.NewWaitGroup(0) nReprocessed := atomic.NewInt32(0) + skipClusterIDs := maputil.NewSyncMap[string, struct{}]() for _, result := range results { wg.Add(1) if err := sema.Acquire(concurrency.AsContext(&l.stopSig), 1); err != nil { @@ -406,19 +406,39 @@ func (l *loopImpl) reprocessImagesAndResyncDeployments(fetchOpt imageEnricher.Fe utils.FilterSuppressedCVEsNoClone(image) utils.StripCVEDescriptionsNoClone(image) + // Send the updated image to relevant clusters. for clusterID := range clusterIDs { conn := l.connManager.GetConnection(clusterID) if conn == nil { continue } - err := conn.InjectMessage(concurrency.AsContext(&l.stopSig), ¢ral.MsgToSensor{ + + msg := ¢ral.MsgToSensor{ Msg: ¢ral.MsgToSensor_UpdatedImage{ UpdatedImage: image, }, - }) + } + + // If were prior errors, do not attempt to send a message to this cluster. + if skipClusterIDs.Contains(clusterID) { + metrics.IncrementMsgToSensorNotSentCounter(clusterID, msg, metrics.NotSentSkip) + log.Debugw("Not sending updated image to cluster due to prior errors", + logging.ImageID(image.GetId()), + logging.ImageName(image.GetName().GetFullName()), + logging.String("dst_cluster", clusterID), + ) + continue + } + + err := l.injectMessage(concurrency.AsContext(&l.stopSig), conn, msg) if err != nil { - log.Errorw("Error sending updated image to sensor "+clusterID, - logging.ImageName(image.GetName().GetFullName()), logging.Err(err)) + skipClusterIDs.Store(clusterID, struct{}{}) + log.Errorw("Error sending updated image to cluster, skipping cluster until next reprocessing cycle", + logging.ImageName(image.GetName().GetFullName()), + logging.ImageID(image.GetId()), logging.Err(err), + // Not using logging.ClusterID() to avoid "duplicate resource ID field found" panic + logging.String("dst_cluster", clusterID), + ) } } }(result.ID, clusterIDSet) @@ -434,14 +454,50 @@ func (l *loopImpl) reprocessImagesAndResyncDeployments(fetchOpt imageEnricher.Fe // Once the images have been rescanned, then reprocess the deployments. // This should not take a particularly long period of time. if !l.stopSig.IsDone() { - l.connManager.BroadcastMessage(¢ral.MsgToSensor{ + msg := ¢ral.MsgToSensor{ Msg: ¢ral.MsgToSensor_ReprocessDeployments{ ReprocessDeployments: ¢ral.ReprocessDeployments{}, }, - }) + } + ctx := concurrency.AsContext(&l.stopSig) + for _, conn := range l.connManager.GetActiveConnections() { + clusterID := conn.ClusterID() + if skipClusterIDs.Contains(clusterID) { + metrics.IncrementMsgToSensorNotSentCounter(clusterID, msg, metrics.NotSentSkip) + log.Errorw("Not sending reprocess deployments to cluster due to prior errors", + logging.ClusterID(clusterID), + ) + continue + } + + err := l.injectMessage(ctx, conn, msg) + if err != nil { + log.Errorw("Error sending reprocess deployments message to cluster", + logging.ClusterID(clusterID), + logging.Err(err), + ) + } + } } } +// injectMessage will inject a message onto connection, an error will be returned if the +// injection fails for any reason, including timeout. +func (l *loopImpl) injectMessage(ctx context.Context, conn connection.SensorConnection, msg *central.MsgToSensor) error { + if l.injectMessageTimeoutDur > 0 { + var cancel context.CancelFunc + ctx, cancel = context.WithTimeout(ctx, l.injectMessageTimeoutDur) + defer cancel() + } + + err := conn.InjectMessage(ctx, msg) + if err != nil { + return errors.Wrap(err, "injecting message to sensor") + } + + return nil +} + func (l *loopImpl) reprocessNode(id string) bool { node, exists, err := l.nodes.GetNode(allAccessCtx, id) if err != nil { diff --git a/central/reprocessor/reprocessor_test.go b/central/reprocessor/reprocessor_test.go index f56a14f5d80a4..7485197ea567a 100644 --- a/central/reprocessor/reprocessor_test.go +++ b/central/reprocessor/reprocessor_test.go @@ -7,72 +7,21 @@ import ( "testing" "time" - deploymentDatastore "github.com/stackrox/rox/central/deployment/datastore" imageDatastore "github.com/stackrox/rox/central/image/datastore" imagePG "github.com/stackrox/rox/central/image/datastore/store/postgres" imagePostgresV2 "github.com/stackrox/rox/central/image/datastore/store/v2/postgres" - platformmatcher "github.com/stackrox/rox/central/platform/matcher" "github.com/stackrox/rox/central/ranking" "github.com/stackrox/rox/generated/storage" "github.com/stackrox/rox/pkg/concurrency" "github.com/stackrox/rox/pkg/features" "github.com/stackrox/rox/pkg/fixtures" - "github.com/stackrox/rox/pkg/postgres" "github.com/stackrox/rox/pkg/postgres/pgtest" - "github.com/stackrox/rox/pkg/process/filter" "github.com/stackrox/rox/pkg/protocompat" "github.com/stackrox/rox/pkg/sac" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.uber.org/mock/gomock" ) -func TestGetActiveImageIDs(t *testing.T) { - t.Parallel() - - testCtx := sac.WithAllAccess(context.Background()) - - var ( - pool postgres.DB - imageDS imageDatastore.DataStore - deploymentsDS deploymentDatastore.DataStore - err error - ) - - testingDB := pgtest.ForT(t) - pool = testingDB.DB - defer pool.Close() - - mockCtrl := gomock.NewController(t) - if features.FlattenCVEData.Enabled() { - imageDS = imageDatastore.NewWithPostgres(imagePostgresV2.New(pool, false, concurrency.NewKeyFence()), nil, ranking.ImageRanker(), ranking.ComponentRanker()) - } else { - imageDS = imageDatastore.NewWithPostgres(imagePG.New(pool, false, concurrency.NewKeyFence()), nil, ranking.ImageRanker(), ranking.ComponentRanker()) - } - deploymentsDS, err = deploymentDatastore.New(pool, nil, nil, nil, nil, nil, filter.NewFilter(5, 5, []int{5}), ranking.NewRanker(), ranking.NewRanker(), ranking.NewRanker(), platformmatcher.GetTestPlatformMatcherWithDefaultPlatformComponentConfig(mockCtrl)) - require.NoError(t, err) - - loop := NewLoop(nil, nil, nil, deploymentsDS, imageDS, nil, nil, nil, nil).(*loopImpl) - - ids, err := loop.getActiveImageIDs() - require.NoError(t, err) - require.Equal(t, 0, len(ids)) - - deployment := fixtures.GetDeployment() - require.NoError(t, deploymentsDS.UpsertDeployment(testCtx, deployment)) - - images := fixtures.DeploymentImages() - imageIDs := make([]string, 0, len(images)) - for _, image := range images { - require.NoError(t, imageDS.UpsertImage(testCtx, image)) - imageIDs = append(imageIDs, image.GetId()) - } - - ids, err = loop.getActiveImageIDs() - require.NoError(t, err) - require.ElementsMatch(t, imageIDs, ids) -} - func TestImagesWithSignaturesQuery(t *testing.T) { t.Parallel() diff --git a/central/reprocessor/reprocessor_unit_test.go b/central/reprocessor/reprocessor_unit_test.go index d6d71502d83a2..754c961dc0664 100644 --- a/central/reprocessor/reprocessor_unit_test.go +++ b/central/reprocessor/reprocessor_unit_test.go @@ -2,13 +2,19 @@ package reprocessor import ( "context" + "fmt" "testing" + "time" "github.com/pkg/errors" mockImageDataStore "github.com/stackrox/rox/central/image/datastore/mocks" nodeDatastoreMocks "github.com/stackrox/rox/central/node/datastore/mocks" riskManagerMocks "github.com/stackrox/rox/central/risk/manager/mocks" + "github.com/stackrox/rox/central/sensor/service/connection" + connectionMocks "github.com/stackrox/rox/central/sensor/service/connection/mocks" + "github.com/stackrox/rox/generated/internalapi/central" "github.com/stackrox/rox/generated/storage" + "github.com/stackrox/rox/pkg/concurrency" "github.com/stackrox/rox/pkg/features" imageEnricher "github.com/stackrox/rox/pkg/images/enricher" "github.com/stackrox/rox/pkg/images/enricher/mocks" @@ -16,8 +22,11 @@ import ( "github.com/stackrox/rox/pkg/protocompat" "github.com/stackrox/rox/pkg/sac" "github.com/stackrox/rox/pkg/sac/resources" + "github.com/stackrox/rox/pkg/search" + "github.com/stackrox/rox/pkg/sensor/event" "github.com/stackrox/rox/pkg/testutils" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" "google.golang.org/protobuf/proto" ) @@ -257,3 +266,141 @@ func TestReprocessImage(t *testing.T) { assert.True(tt, reprocessed) }) } + +func TestReprocessImagesAndResyncDeployments_SkipBrokenSensor(t *testing.T) { + imgs := []*storage.Image{} + for _, cluster := range []string{"a", "b"} { // two clusters + // Create at least one more image than max semaphore size to ensure skip logic is executed. + for i := range imageReprocessorSemaphoreSize + 1 { + imgs = append(imgs, &storage.Image{Id: fmt.Sprintf("img%d-%s", i, cluster)}) + } + } + + results := []search.Result{} + for _, img := range imgs { + results = append(results, search.Result{ + ID: img.Id, + Matches: map[string][]string{ + // Last character of image ID is the cluster. + imageClusterIDFieldPath: {img.Id[len(img.Id)-1:]}, + }}, + ) + } + + newReprocessorLoop := func(t *testing.T) (*loopImpl, *connectionMocks.MockSensorConnection, *connectionMocks.MockSensorConnection) { + ctrl := gomock.NewController(t) + + connA := connectionMocks.NewMockSensorConnection(ctrl) + connB := connectionMocks.NewMockSensorConnection(ctrl) + connManager := connectionMocks.NewMockManager(ctrl) + imageDS := mockImageDataStore.NewMockDataStore(ctrl) + riskManager := riskManagerMocks.NewMockManager(ctrl) + + connA.EXPECT().ClusterID().AnyTimes().Return("a") + connB.EXPECT().ClusterID().AnyTimes().Return("b") + + connManager.EXPECT().GetConnection("a").AnyTimes().Return(connA) + connManager.EXPECT().GetConnection("b").AnyTimes().Return(connB) + connManager.EXPECT().GetActiveConnections().Return([]connection.SensorConnection{connA, connB}) + + imageDS.EXPECT().Search(gomock.Any(), gomock.Any()).AnyTimes().Return(results, nil) + for _, img := range imgs { + imageDS.EXPECT().GetImage(gomock.Any(), img.Id).AnyTimes().Return(img, true, nil) + } + + riskManager.EXPECT().CalculateRiskAndUpsertImage(gomock.Any()).AnyTimes().Return(nil) + + testLoop := &loopImpl{ + images: imageDS, + risk: riskManager, + connManager: connManager, + stopSig: concurrency.NewSignal(), + } + return testLoop, connA, connB + } + + reprocessFuncUpdate := func(_ context.Context, _ imageEnricher.EnrichmentContext, _ *storage.Image) (imageEnricher.EnrichmentResult, error) { + return imageEnricher.EnrichmentResult{ImageUpdated: true}, nil + } + updatedImageTypeCond := gomock.Cond(func(msg *central.MsgToSensor) bool { + return event.GetEventTypeWithoutPrefix(msg.GetMsg()) == "UpdatedImage" + }) + reprocessDeploymentsTypeCond := gomock.Cond(func(msg *central.MsgToSensor) bool { + return event.GetEventTypeWithoutPrefix(msg.GetMsg()) == "ReprocessDeployments" + }) + + t.Run("send all messages when clusters are healthy", func(t *testing.T) { + testLoop, connA, connB := newReprocessorLoop(t) + + // Expect every updated image to be sent. + connA.EXPECT().InjectMessage(gomock.Any(), updatedImageTypeCond).Times(len(imgs) / 2).Return(nil) + connB.EXPECT().InjectMessage(gomock.Any(), updatedImageTypeCond).Times(len(imgs) / 2).Return(nil) + + // Expect each cluster to be sent a reprocess deployments message. + connA.EXPECT().InjectMessage(gomock.Any(), reprocessDeploymentsTypeCond).Times(1).Return(nil) + connB.EXPECT().InjectMessage(gomock.Any(), reprocessDeploymentsTypeCond).Times(1).Return(nil) + + testLoop.reprocessImagesAndResyncDeployments(0, reprocessFuncUpdate, nil) + }) + + t.Run("skip some messages when are broken clusters", func(t *testing.T) { + testLoop, connA, connB := newReprocessorLoop(t) + + // Cluster "a" is healthy, expect all applicable images to be sent. + connA.EXPECT().InjectMessage(gomock.Any(), updatedImageTypeCond).Times(len(imgs) / 2).Return(nil) + // Cluster "b" is not healthy, expect at MOST imageReprocessorSemaphoreSize attempted messages. + connB.EXPECT().InjectMessage(gomock.Any(), updatedImageTypeCond).MaxTimes(int(imageReprocessorSemaphoreSize)).Return(errors.New("broken")) + + connA.EXPECT().InjectMessage(gomock.Any(), reprocessDeploymentsTypeCond).Times(1).Return(nil) + // No reprocess deployments message is sent due to previous failures. + connB.EXPECT().InjectMessage(gomock.Any(), reprocessDeploymentsTypeCond).Times(0).Return(nil) + + testLoop.reprocessImagesAndResyncDeployments(0, reprocessFuncUpdate, nil) + }) +} + +func TestInjectMessage(t *testing.T) { + ctx := context.Background() + msg := ¢ral.MsgToSensor{ + Msg: ¢ral.MsgToSensor_ReprocessDeployments{ + ReprocessDeployments: ¢ral.ReprocessDeployments{}, + }, + } + contextWithTimeout := gomock.Cond(func(ctx context.Context) bool { + _, hasTimeout := ctx.Deadline() + return hasTimeout + }) + contextWithoutTimeout := gomock.Cond(func(ctx context.Context) bool { + _, hasTimeout := ctx.Deadline() + return !hasTimeout + }) + t.Run("use timeout when duration set", func(t *testing.T) { + testLoop := &loopImpl{ + injectMessageTimeoutDur: 1 * time.Millisecond, // Can be anything non-zero + } + + ctrl := gomock.NewController(t) + conn := connectionMocks.NewMockSensorConnection(ctrl) + + // Validate created context has a timeout. + conn.EXPECT().InjectMessage(contextWithTimeout, gomock.Any()).Return(nil) + + err := testLoop.injectMessage(ctx, conn, msg) + require.NoError(t, err) + }) + + t.Run("no timeout when duration zero", func(t *testing.T) { + testLoop := &loopImpl{ + injectMessageTimeoutDur: 0, + } + + ctrl := gomock.NewController(t) + conn := connectionMocks.NewMockSensorConnection(ctrl) + + // Validate created context DOES NOT have a timeout. + conn.EXPECT().InjectMessage(contextWithoutTimeout, gomock.Any()).Return(nil) + + err := testLoop.injectMessage(ctx, conn, msg) + require.NoError(t, err) + }) +} diff --git a/central/risk/manager/manager.go b/central/risk/manager/manager.go index 2593e5f7a7772..f50b336237ffc 100644 --- a/central/risk/manager/manager.go +++ b/central/risk/manager/manager.go @@ -211,8 +211,8 @@ func (e *managerImpl) calculateAndUpsertImageRisk(image *storage.Image) error { } // We want to compute and store risk for image components when image risk is reprocessed. - for _, component := range image.GetScan().GetComponents() { - e.reprocessImageComponentRisk(component, image.GetScan().GetOperatingSystem(), image.GetId()) + for index, component := range image.GetScan().GetComponents() { + e.reprocessImageComponentRisk(component, image.GetScan().GetOperatingSystem(), image.GetId(), index) } image.RiskScore = risk.Score @@ -284,16 +284,22 @@ func scannedByScannerV4(img *storage.Image) bool { // reprocessImageComponentRisk will reprocess risk of image components and save the results. // Image Component ID is generated as : -func (e *managerImpl) reprocessImageComponentRisk(imageComponent *storage.EmbeddedImageScanComponent, os string, imageID string) { +func (e *managerImpl) reprocessImageComponentRisk(imageComponent *storage.EmbeddedImageScanComponent, os string, imageID string, componentIndex int) { defer metrics.ObserveRiskProcessingDuration(time.Now(), "ImageComponent") - risk := e.imageComponentScorer.Score(allAccessCtx, scancomponent.NewFromImageComponent(imageComponent), os, imageComponent, imageID) + risk := e.imageComponentScorer.Score(allAccessCtx, scancomponent.NewFromImageComponent(imageComponent), os, imageComponent, imageID, componentIndex) if risk == nil { return } - oldScore := e.imageComponentRanker.GetScoreForID( - scancomponent.ComponentID(imageComponent.GetName(), imageComponent.GetVersion(), os)) + var oldScore float32 + if features.FlattenCVEData.Enabled() { + oldScore = e.imageComponentRanker.GetScoreForID( + scancomponent.ComponentIDV2(imageComponent, imageID, componentIndex)) + } else { + oldScore = e.imageComponentRanker.GetScoreForID( + scancomponent.ComponentID(imageComponent.GetName(), imageComponent.GetVersion(), os)) + } // Image component risk results are currently unused so if the score is the same then no need to upsert if risk.GetScore() == oldScore { diff --git a/central/risk/scorer/component/image/scorer_test.go b/central/risk/scorer/component/image/scorer_test.go index 4ec969c5c5655..cc89914991fba 100644 --- a/central/risk/scorer/component/image/scorer_test.go +++ b/central/risk/scorer/component/image/scorer_test.go @@ -36,7 +36,7 @@ func TestScore(t *testing.T) { }, } - actualRisk := scorer.Score(ctx, scancomponent.NewFromImageComponent(imageComponent), "", imageComponent, pkgScorer.GetMockImage().GetId()) + actualRisk := scorer.Score(ctx, scancomponent.NewFromImageComponent(imageComponent), "", imageComponent, pkgScorer.GetMockImage().GetId(), 0) protoassert.SlicesEqual(t, expectedRiskResults, actualRisk.GetResults()) assert.InDelta(t, expectedRiskScore, actualRisk.GetScore(), 0.0001) diff --git a/central/risk/scorer/component/image_scorer.go b/central/risk/scorer/component/image_scorer.go index 2ef2be40d81e6..2c5216b2ad447 100644 --- a/central/risk/scorer/component/image_scorer.go +++ b/central/risk/scorer/component/image_scorer.go @@ -12,7 +12,7 @@ import ( // Scorer is the object that encompasses the multipliers for evaluating component risk type ImageScorer interface { - Score(ctx context.Context, component scancomponent.ScanComponent, os string, imageComponent *storage.EmbeddedImageScanComponent, imageID string) *storage.Risk + Score(ctx context.Context, component scancomponent.ScanComponent, os string, imageComponent *storage.EmbeddedImageScanComponent, imageID string, index int) *storage.Risk } // NewComponentScorer returns a new scorer that encompasses multipliers for evaluating component risk @@ -31,7 +31,7 @@ type componentImageScorerImpl struct { } // Score takes a component and evaluates its risk -func (s *componentImageScorerImpl) Score(ctx context.Context, scanComponent scancomponent.ScanComponent, os string, imageComponent *storage.EmbeddedImageScanComponent, imageID string) *storage.Risk { +func (s *componentImageScorerImpl) Score(ctx context.Context, scanComponent scancomponent.ScanComponent, os string, imageComponent *storage.EmbeddedImageScanComponent, imageID string, index int) *storage.Risk { riskResults := make([]*storage.Risk_Result, 0, len(s.ConfiguredMultipliers)) overallScore := float32(1.0) for _, mult := range s.ConfiguredMultipliers { @@ -47,11 +47,7 @@ func (s *componentImageScorerImpl) Score(ctx context.Context, scanComponent scan var componentID string var err error if features.FlattenCVEData.Enabled() { - componentID, err = scancomponent.ComponentIDV2(imageComponent, imageID) - if err != nil { - log.Errorf("Unable to score %s: %v", scanComponent.GetName(), err) - return nil - } + componentID = scancomponent.ComponentIDV2(imageComponent, imageID, index) } else { componentID = scancomponent.ComponentID(scanComponent.GetName(), scanComponent.GetVersion(), os) } diff --git a/central/scannerdefinitions/handler/updatertype_string.go b/central/scannerdefinitions/handler/updatertype_string.go index 7c3e69f7a0f23..82ec4cdeb60a0 100644 --- a/central/scannerdefinitions/handler/updatertype_string.go +++ b/central/scannerdefinitions/handler/updatertype_string.go @@ -18,8 +18,9 @@ const _updaterType_name = "mappingUpdaterTypevulnerabilityUpdaterTypev2UpdaterTy var _updaterType_index = [...]uint8{0, 18, 42, 55} func (i updaterType) String() string { - if i < 0 || i >= updaterType(len(_updaterType_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_updaterType_index)-1 { return "updaterType(" + strconv.FormatInt(int64(i), 10) + ")" } - return _updaterType_name[_updaterType_index[i]:_updaterType_index[i+1]] + return _updaterType_name[_updaterType_index[idx]:_updaterType_index[idx+1]] } diff --git a/central/sensor/service/connection/connection_impl.go b/central/sensor/service/connection/connection_impl.go index 5e1115654ad26..20f09430f6f8a 100644 --- a/central/sensor/service/connection/connection_impl.go +++ b/central/sensor/service/connection/connection_impl.go @@ -243,6 +243,7 @@ func (c *sensorConnection) runSend(server central.SensorService_CommunicateServe return case msg := <-c.sendC: if err := wrappedStream.Send(msg); err != nil { + metrics.IncrementMsgToSensorNotSentCounter(c.clusterID, msg, metrics.NotSentError) c.stopSig.SignalWithError(errors.Wrap(err, "send error")) return } @@ -275,8 +276,13 @@ func (c *sensorConnection) InjectMessage(ctx concurrency.Waitable, msg *central. case c.sendC <- msg: return nil case <-ctx.Done(): + metrics.IncrementMsgToSensorNotSentCounter(c.clusterID, msg, metrics.NotSentSignal) + if errCtx, ok := ctx.(concurrency.ErrorWaitable); ok { + return errors.Wrap(errCtx.Err(), "context aborted") + } return errors.New("context aborted") case <-c.stopSig.Done(): + metrics.IncrementMsgToSensorNotSentCounter(c.clusterID, msg, metrics.NotSentSignal) return errors.Wrap(c.stopSig.Err(), "could not send message as sensor connection was stopped") } } diff --git a/central/sensor/service/pipeline/networkflowupdate/flow_store_updater_impl.go b/central/sensor/service/pipeline/networkflowupdate/flow_store_updater_impl.go index be15e4f0a4cd7..89a1bbf3e881b 100644 --- a/central/sensor/service/pipeline/networkflowupdate/flow_store_updater_impl.go +++ b/central/sensor/service/pipeline/networkflowupdate/flow_store_updater_impl.go @@ -34,18 +34,10 @@ func (s *flowPersisterImpl) update(ctx context.Context, newFlows []*storage.Netw if err != nil { return err } - err = s.updateExternalNetworkEntityIfDiscovered(ctx, newFlow.GetProps().DstEntity) - if err != nil { - return err - } err = s.fixupExternalNetworkEntityIdIfDiscovered(ctx, newFlow.GetProps().SrcEntity) if err != nil { return err } - err = s.updateExternalNetworkEntityIfDiscovered(ctx, newFlow.GetProps().SrcEntity) - if err != nil { - return err - } } } else { // We are not storing the discovered entities. Let net-flows point to INTERNET instead. @@ -80,7 +72,26 @@ func (s *flowPersisterImpl) update(ctx context.Context, newFlows []*storage.Netw s.firstUpdateSeen = true } - return s.flowStore.UpsertFlows(ctx, convertToFlows(flowsByIndicator), now) + upsertedFlows, err := s.flowStore.UpsertFlows(ctx, convertToFlows(flowsByIndicator), now) + if err != nil { + return err + } + + if features.ExternalIPs.Enabled() { + for _, newFlow := range upsertedFlows { + props := newFlow.GetProps() + err := s.updateExternalNetworkEntityIfDiscovered(ctx, props.DstEntity) + if err != nil { + return err + } + err = s.updateExternalNetworkEntityIfDiscovered(ctx, props.SrcEntity) + if err != nil { + return err + } + } + } + + return nil } func (s *flowPersisterImpl) markExistingFlowsAsTerminatedIfNotSeen(ctx context.Context, currentFlows map[networkgraph.NetworkConnIndicator]timestamp.MicroTS) error { diff --git a/central/sensor/service/pipeline/networkflowupdate/flow_store_updater_impl_test.go b/central/sensor/service/pipeline/networkflowupdate/flow_store_updater_impl_test.go index c5540868b282f..0c6453e59f3da 100644 --- a/central/sensor/service/pipeline/networkflowupdate/flow_store_updater_impl_test.go +++ b/central/sensor/service/pipeline/networkflowupdate/flow_store_updater_impl_test.go @@ -260,7 +260,7 @@ func (suite *FlowStoreUpdaterTestSuite) TestUpdateNoExternalIPs() { } } return len(used) == len(expectedUpdateProps) - }), gomock.Any()).Return(nil) + }), gomock.Any()).Return(newFlows, nil) suite.mockEntities.EXPECT().UpdateExternalNetworkEntity(suite.hasWriteCtx, gomock.Any(), true).Times(0) @@ -277,8 +277,10 @@ func (suite *FlowStoreUpdaterTestSuite) TestUpdateWithExternalIPs() { discoveredEntity1 := networkgraph.DiscoveredExternalEntity(net.IPNetworkFromCIDRBytes([]byte{1, 2, 3, 4, 32})).ToProto() discoveredEntity2 := networkgraph.DiscoveredExternalEntity(net.IPNetworkFromCIDRBytes([]byte{2, 3, 4, 5, 32})).ToProto() + discoveredEntity3 := networkgraph.DiscoveredExternalEntity(net.IPNetworkFromCIDRBytes([]byte{3, 4, 5, 6, 32})).ToProto() fixedupDiscoveredEntity1 := networkgraph.DiscoveredExternalEntityClusterScoped("cluster", net.IPNetworkFromCIDRBytes([]byte{1, 2, 3, 4, 32})).ToProto() fixedupDiscoveredEntity2 := networkgraph.DiscoveredExternalEntityClusterScoped("cluster", net.IPNetworkFromCIDRBytes([]byte{2, 3, 4, 5, 32})).ToProto() + fixedupDiscoveredEntity3 := networkgraph.DiscoveredExternalEntityClusterScoped("cluster", net.IPNetworkFromCIDRBytes([]byte{3, 4, 5, 6, 32})).ToProto() secondTimestamp := time.Now() newFlows := []*storage.NetworkFlow{ @@ -300,6 +302,37 @@ func (suite *FlowStoreUpdaterTestSuite) TestUpdateWithExternalIPs() { }, LastSeenTimestamp: protoconv.ConvertTimeToTimestamp(secondTimestamp), }, + { + Props: &storage.NetworkFlowProperties{ + SrcEntity: discoveredEntity3, + DstEntity: &storage.NetworkEntityInfo{Type: storage.NetworkEntityInfo_DEPLOYMENT, Id: "someNode1"}, + DstPort: 4, + L4Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + }, + LastSeenTimestamp: protoconv.ConvertTimeToTimestamp(secondTimestamp), + }, + } + + actuallyUpsertedFlows := []*storage.NetworkFlow{ + { + Props: &storage.NetworkFlowProperties{ + SrcEntity: &storage.NetworkEntityInfo{Type: storage.NetworkEntityInfo_DEPLOYMENT, Id: "someNode1"}, + DstEntity: discoveredEntity1, + DstPort: 3, + L4Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + }, + LastSeenTimestamp: protoconv.ConvertTimeToTimestamp(secondTimestamp), + }, + { + Props: &storage.NetworkFlowProperties{ + SrcEntity: discoveredEntity2, + DstEntity: &storage.NetworkEntityInfo{Type: storage.NetworkEntityInfo_DEPLOYMENT, Id: "someNode1"}, + DstPort: 4, + L4Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + }, + LastSeenTimestamp: protoconv.ConvertTimeToTimestamp(secondTimestamp), + }, + // We simulate that the third flow was filtered out during Upsert(). } // The properties of the flows we expect updates to. Properties identify flows uniquely. @@ -316,6 +349,12 @@ func (suite *FlowStoreUpdaterTestSuite) TestUpdateWithExternalIPs() { DstPort: 4, L4Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, }, + { + SrcEntity: fixedupDiscoveredEntity3, + DstEntity: &storage.NetworkEntityInfo{Type: storage.NetworkEntityInfo_DEPLOYMENT, Id: "someNode1"}, + DstPort: 4, + L4Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + }, } // Return storedFlows on DB read. @@ -351,6 +390,20 @@ func (suite *FlowStoreUpdaterTestSuite) TestUpdateWithExternalIPs() { DstPort: 4, Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, }: timestamp.FromGoTime(secondTimestamp), + { + SrcEntity: networkgraph.Entity{ + Type: storage.NetworkEntityInfo_EXTERNAL_SOURCE, + ID: "cluster__My40LjUuNi8zMg", + ExternalEntityAddress: net.IPNetworkFromCIDRBytes([]byte{3, 4, 5, 6, 32}), + Discovered: true, + }, + DstEntity: networkgraph.Entity{ + Type: storage.NetworkEntityInfo_DEPLOYMENT, + ID: "someNode1", + }, + DstPort: 4, + Protocol: storage.L4Protocol_L4_PROTOCOL_TCP, + }: timestamp.FromGoTime(secondTimestamp), } if len(expectedMap) != len(got) { @@ -394,12 +447,13 @@ func (suite *FlowStoreUpdaterTestSuite) TestUpdateWithExternalIPs() { } } return len(used) == len(expectedUpdateProps) - }), gomock.Any()).Return(nil) + }), gomock.Any()).Return(actuallyUpsertedFlows, nil) suite.mockEntities.EXPECT().UpdateExternalNetworkEntity(suite.hasWriteCtx, testutils.PredMatcher("matches an external entity", func(updatedEntity *storage.NetworkEntity) bool { expectedEntities := []*storage.NetworkEntityInfo{ discoveredEntity1, discoveredEntity2, + // not discoveredEntity3 since the flow was filtered } for i := range expectedEntities { diff --git a/central/sensor/service/pipeline/nodeindex/three_pipelines_test.go b/central/sensor/service/pipeline/nodeindex/three_pipelines_test.go index 144ab58c54e11..557cd2f086d5e 100644 --- a/central/sensor/service/pipeline/nodeindex/three_pipelines_test.go +++ b/central/sensor/service/pipeline/nodeindex/three_pipelines_test.go @@ -603,7 +603,7 @@ func (m *mockComponentScorer) Score(_ context.Context, _ scancomponent.ScanCompo type mockImageComponentScorer struct{} -func (m *mockImageComponentScorer) Score(_ context.Context, _ scancomponent.ScanComponent, _ string, _ *storage.EmbeddedImageScanComponent, _ string) *storage.Risk { +func (m *mockImageComponentScorer) Score(_ context.Context, _ scancomponent.ScanComponent, _ string, _ *storage.EmbeddedImageScanComponent, _ string, _ int) *storage.Risk { return getDummyRisk() } diff --git a/central/sensor/service/pipeline/nodeinventory/two_pipelines_test.go b/central/sensor/service/pipeline/nodeinventory/two_pipelines_test.go index 800a220a760b0..78d3bd17a72af 100644 --- a/central/sensor/service/pipeline/nodeinventory/two_pipelines_test.go +++ b/central/sensor/service/pipeline/nodeinventory/two_pipelines_test.go @@ -385,7 +385,7 @@ func (m *mockComponentScorer) Score(_ context.Context, _ scancomponent.ScanCompo type mockImageComponentScorer struct{} -func (m *mockImageComponentScorer) Score(_ context.Context, _ scancomponent.ScanComponent, _ string, _ *storage.EmbeddedImageScanComponent, _ string) *storage.Risk { +func (m *mockImageComponentScorer) Score(_ context.Context, _ scancomponent.ScanComponent, _ string, _ *storage.EmbeddedImageScanComponent, _ string, _ int) *storage.Risk { return getDummyRisk() } diff --git a/central/serviceaccount/service/service_impl.go b/central/serviceaccount/service/service_impl.go index 1bd34d4ed1c7e..bfd48d73af7cd 100644 --- a/central/serviceaccount/service/service_impl.go +++ b/central/serviceaccount/service/service_impl.go @@ -21,9 +21,14 @@ import ( "github.com/stackrox/rox/pkg/k8srbac" "github.com/stackrox/rox/pkg/sac/resources" "github.com/stackrox/rox/pkg/search" + "github.com/stackrox/rox/pkg/search/paginated" "google.golang.org/grpc" ) +const ( + maxServiceAccountsReturned = 1000 +) + var ( authorizer = perrpc.FromMap(map[authz.Authorizer][]string{ user.With(permissions.View(resources.ServiceAccount)): { @@ -91,6 +96,10 @@ func (s *serviceImpl) ListServiceAccounts(ctx context.Context, rawQuery *v1.RawQ if err != nil { return nil, errors.Wrap(errox.InvalidArgs, err.Error()) } + + // Fill in pagination. + paginated.FillPagination(q, rawQuery.GetPagination(), maxServiceAccountsReturned) + serviceAccounts, err := s.serviceAccounts.SearchRawServiceAccounts(ctx, q) if err != nil { diff --git a/central/telemetry/centralclient/instance_config.go b/central/telemetry/centralclient/instance_config.go index a9937bc67860e..a610124b98653 100644 --- a/central/telemetry/centralclient/instance_config.go +++ b/central/telemetry/centralclient/instance_config.go @@ -125,7 +125,6 @@ func InstanceConfig() *phonehome.Config { startMux.RLock() defer startMux.RUnlock() if !enabled { - log.Info("Telemetry collection is disabled") // This will make InstanceConfig().Enabled() to return false, while // keeping the config configured for eventual Start(). return nil diff --git a/central/telemetry/gatherers/cluster.go b/central/telemetry/gatherers/cluster.go index 2cae0ae5595b3..3c98994783b72 100644 --- a/central/telemetry/gatherers/cluster.go +++ b/central/telemetry/gatherers/cluster.go @@ -17,6 +17,7 @@ import ( "github.com/stackrox/rox/pkg/concurrency" "github.com/stackrox/rox/pkg/logging" "github.com/stackrox/rox/pkg/protocompat" + "github.com/stackrox/rox/pkg/set" "github.com/stackrox/rox/pkg/telemetry" "github.com/stackrox/rox/pkg/telemetry/data" ) @@ -33,6 +34,13 @@ var ( log = logging.LoggerForModule() ) +// shouldIncludeCluster determines if a cluster should be included based on the cluster filter. +// If clusterFilter is nil or empty, all clusters are included. +// Otherwise, only clusters whose names are in the filter are included. +func shouldIncludeCluster(clusterName string, clusterFilter set.StringSet) bool { + return clusterFilter.Cardinality() == 0 || clusterFilter.Contains(clusterName) +} + // newClusterGatherer returns a new ClusterGatherer which will query connected Sensors for telemetry info and collect // the latest info for offline sensors using the given datastores. func newClusterGatherer(clusterDatastore clusterDatastore.DataStore, nodeDatastore nodeDatastore.DataStore, @@ -49,7 +57,7 @@ func newClusterGatherer(clusterDatastore clusterDatastore.DataStore, nodeDatasto } // Gather returns a list of stats about all the clusters monitored by this StackRox installation. -func (c *ClusterGatherer) Gather(ctx context.Context, pullFromSensors bool) []*data.ClusterInfo { +func (c *ClusterGatherer) Gather(ctx context.Context, pullFromSensors bool, clusterFilter set.StringSet) []*data.ClusterInfo { var clusterList []*data.ClusterInfo clusters, err := c.clusterDatastore.GetClusters(ctx) @@ -66,6 +74,10 @@ func (c *ClusterGatherer) Gather(ctx context.Context, pullFromSensors bool) []*d if pullFromSensors { for _, conn := range c.sensorConnMgr.GetActiveConnections() { cluster := clusterMap[conn.ClusterID()] + if !shouldIncludeCluster(cluster.GetName(), clusterFilter) { + continue + } + gatherPool.Go(func(ctx context.Context) (clusterFromSensorResponse, error) { return c.clusterFromSensor(ctx, conn, cluster), nil }) @@ -92,6 +104,10 @@ func (c *ClusterGatherer) Gather(ctx context.Context, pullFromSensors bool) []*d // Get inactive clusters. for _, storageCluster := range clusterMap { + if !shouldIncludeCluster(storageCluster.GetName(), clusterFilter) { + continue + } + clusterList = append(clusterList, c.clusterFromDatastores(ctx, storageCluster)) } diff --git a/central/telemetry/gatherers/cluster_test.go b/central/telemetry/gatherers/cluster_test.go index d6d8a98e45d98..04c6bd0910af7 100644 --- a/central/telemetry/gatherers/cluster_test.go +++ b/central/telemetry/gatherers/cluster_test.go @@ -11,6 +11,7 @@ import ( connectionMocks "github.com/stackrox/rox/central/sensor/service/connection/mocks" "github.com/stackrox/rox/generated/storage" "github.com/stackrox/rox/pkg/protocompat" + "github.com/stackrox/rox/pkg/set" "github.com/stretchr/testify/suite" "go.uber.org/mock/gomock" ) @@ -77,10 +78,26 @@ func (s *clusterGathererTestSuite) TestGather() { s.mockNamespaceDatastore.EXPECT().SearchNamespaces(gomock.Any(), gomock.Any()).Return(nil, nil) s.mockNodeDatastore.EXPECT().SearchRawNodes(gomock.Any(), gomock.Any()).Return(nil, nil) s.mockConnectionManager.EXPECT().GetActiveConnections().Return(nil) - clusters := s.gatherer.Gather(context.Background(), true) + clusters := s.gatherer.Gather(context.Background(), true, nil) s.Len(clusters, 1) cluster := clusters[0] mockCluster := mockClusters[0] s.Equal(mockCluster.GetId(), cluster.ID) s.Equal("Google", cluster.CloudProvider) } + +func (s *clusterGathererTestSuite) TestGatherWithClusterFilter() { + s.mockClusterDatastore.EXPECT().GetClusters(gomock.Any()).Return(mockClusters, nil).Times(2) + s.mockConnectionManager.EXPECT().GetActiveConnections().Return(nil).Times(2) + + // Test filtering out clusters + clusters := s.gatherer.Gather(context.Background(), true, set.NewStringSet("nonexistent")) + s.Len(clusters, 0) + + // Test including the cluster by name - need to mock these calls for the clusterFromDatastores path + s.mockNamespaceDatastore.EXPECT().SearchNamespaces(gomock.Any(), gomock.Any()).Return(nil, nil) + s.mockNodeDatastore.EXPECT().SearchRawNodes(gomock.Any(), gomock.Any()).Return(nil, nil) + clusters = s.gatherer.Gather(context.Background(), true, set.NewStringSet("123")) + s.Len(clusters, 1) + s.Equal(mockClusters[0].GetId(), clusters[0].ID) +} diff --git a/central/telemetry/gatherers/rox.go b/central/telemetry/gatherers/rox.go index 9afcaa7c1ef1a..71b1daca6a9f8 100644 --- a/central/telemetry/gatherers/rox.go +++ b/central/telemetry/gatherers/rox.go @@ -3,6 +3,7 @@ package gatherers import ( "context" + "github.com/stackrox/rox/pkg/set" "github.com/stackrox/rox/pkg/telemetry/data" ) @@ -21,9 +22,9 @@ func newRoxGatherer(central *CentralGatherer, cluster *ClusterGatherer) *RoxGath } // Gather returns telemetry information about this Rox -func (c *RoxGatherer) Gather(ctx context.Context, pullFromSensors bool, pullFromCentral bool) *data.TelemetryData { +func (c *RoxGatherer) Gather(ctx context.Context, pullFromSensors bool, pullFromCentral bool, clusterFilter set.StringSet) *data.TelemetryData { telemetryData := &data.TelemetryData{ - Clusters: c.cluster.Gather(ctx, pullFromSensors), + Clusters: c.cluster.Gather(ctx, pullFromSensors, clusterFilter), } if pullFromCentral { diff --git a/central/views/imagecveflat/view_test.go b/central/views/imagecveflat/view_test.go index c7b4c2fa6e532..ba7b9aac600c3 100644 --- a/central/views/imagecveflat/view_test.go +++ b/central/views/imagecveflat/view_test.go @@ -525,7 +525,7 @@ func (s *ImageCVEFlatViewTestSuite) testCases() []testCase { Source: storage.SourceType_OS, Location: "", Architecture: "", - }, "sha256:05dd8ed5c76ad3c9f06481770828cf17b8c89f1e406c91d548426dd70fe94560"))}, + }, "sha256:05dd8ed5c76ad3c9f06481770828cf17b8c89f1e406c91d548426dd70fe94560", 0), 0)}, Level: v1.SearchCategory_IMAGE_VULNERABILITIES, }, }), @@ -904,16 +904,12 @@ func standardizeImages(images ...*storage.Image) { } } -func getTestComponentID(testComponent *storage.EmbeddedImageScanComponent, imageID string) string { - id, _ := scancomponent.ComponentIDV2(testComponent, imageID) - - return id +func getTestComponentID(testComponent *storage.EmbeddedImageScanComponent, imageID string, index int) string { + return scancomponent.ComponentIDV2(testComponent, imageID, index) } -func getTestCVEID(testCVE *storage.EmbeddedVulnerability, componentID string) string { - id, _ := cve.IDV2(testCVE, componentID) - - return id +func getTestCVEID(testCVE *storage.EmbeddedVulnerability, componentID string, index int) string { + return cve.IDV2(testCVE, componentID, index) } func getTestCVE() *storage.EmbeddedVulnerability { diff --git a/config-controller/Makefile b/config-controller/Makefile index 0934bac044984..936f9edf1f648 100644 --- a/config-controller/Makefile +++ b/config-controller/Makefile @@ -152,50 +152,20 @@ undeploy: kustomize ## Undeploy controller from the K8s cluster specified in ~/. $(KUSTOMIZE) build config/default | $(KUBECTL) delete --ignore-not-found=$(ignore-not-found) -f - ##@ Dependencies - -## Location to install dependencies to -LOCALBIN ?= $(shell pwd)/bin -$(LOCALBIN): - mkdir -p $(LOCALBIN) +PROJECT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) +include $(PROJECT_DIR)/../make/gotools.mk ## Tool Binaries KUBECTL ?= kubectl -KUSTOMIZE ?= $(LOCALBIN)/kustomize -CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen -ENVTEST ?= $(LOCALBIN)/setup-envtest - -## Tool Versions -KUSTOMIZE_VERSION ?= v5.4.2 -CONTROLLER_TOOLS_VERSION ?= v0.15.0 -ENVTEST_VERSION ?= release-0.18 +$(call go-tool, KUSTOMIZE, sigs.k8s.io/kustomize/kustomize/v5, $(PROJECT_DIR)/../operator/tools/kustomize) +$(call go-tool, CONTROLLER_GEN, sigs.k8s.io/controller-tools/cmd/controller-gen, $(PROJECT_DIR)/../operator/tools/controller-gen) +$(call go-tool, ENVTEST, sigs.k8s.io/controller-runtime/tools/setup-envtest, $(PROJECT_DIR)/../operator/tools/envtest) .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. -$(KUSTOMIZE): $(LOCALBIN) - $(call go-install-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v5,$(KUSTOMIZE_VERSION)) .PHONY: controller-gen controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. -$(CONTROLLER_GEN): $(LOCALBIN) - $(call go-install-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen,$(CONTROLLER_TOOLS_VERSION)) .PHONY: envtest -envtest: $(ENVTEST) ## Download setup-envtest locally if necessary. -$(ENVTEST): $(LOCALBIN) - $(call go-install-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest,$(ENVTEST_VERSION)) - -# go-install-tool will 'go install' any package with custom target and name of binary, if it doesn't exist -# $1 - target path with name of binary -# $2 - package url which can be installed -# $3 - specific version of package -define go-install-tool -@[ -f "$(1)-$(3)" ] || { \ -set -e; \ -package=$(2)@$(3) ;\ -echo "Downloading $${package}" ;\ -rm -f $(1) || true ;\ -GOBIN=$(LOCALBIN) go install $${package} ;\ -mv $(1) $(1)-$(3) ;\ -} ;\ -ln -sf $(1)-$(3) $(1) -endef +envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. diff --git a/config-controller/config/crd/bases/config.stackrox.io_securitypolicies.yaml b/config-controller/config/crd/bases/config.stackrox.io_securitypolicies.yaml index 99c74ca97ddd2..17cdbbc892c40 100644 --- a/config-controller/config/crd/bases/config.stackrox.io_securitypolicies.yaml +++ b/config-controller/config/crd/bases/config.stackrox.io_securitypolicies.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: securitypolicies.config.stackrox.io spec: group: config.stackrox.io diff --git a/deploy/common/k8sbased.sh b/deploy/common/k8sbased.sh index c58a2e164d877..d02bcacbc998b 100644 --- a/deploy/common/k8sbased.sh +++ b/deploy/common/k8sbased.sh @@ -533,7 +533,6 @@ function launch_central { if [[ -n "${ROX_DEV_INTERNAL_SSO_CLIENT_SECRET}" ]]; then ${KUBE_COMMAND:-kubectl} create secret generic sensitive-declarative-configurations -n "${central_namespace}" &>/dev/null - export_central_cert setup_internal_sso "${API_ENDPOINT}" "${ROX_DEV_INTERNAL_SSO_CLIENT_SECRET}" fi @@ -610,25 +609,6 @@ description: "This priority class shall be used for collector pods, which must b EOT } -function export_central_cert { - # Export the internal central TLS certificate for roxctl to access central - # through TLS-passthrough router by specifying the TLS server name. - ROX_SERVER_NAME="central.${CENTRAL_NAMESPACE:-stackrox}" - export ROX_SERVER_NAME - - local central_cert - central_cert="$(mktemp -d)/central_cert.pem" - echo "Storing central certificate in ${central_cert}" - - export LOGLEVEL=debug - roxctl -e "$API_ENDPOINT" \ - central cert --insecure-skip-tls-verify 1>"$central_cert" - - ROX_CA_CERT_FILE="$central_cert" - export ROX_CA_CERT_FILE - openssl x509 -in "${ROX_CA_CERT_FILE}" -subject -issuer -noout -} - function launch_sensor { local k8s_dir="$1" local sensor_namespace=${SENSOR_NAMESPACE:-stackrox} @@ -887,14 +867,13 @@ function launch_sensor { else if [[ -x "$(command -v roxctl)" && "$(roxctl version)" == "$MAIN_IMAGE_TAG" ]]; then [[ -n "${ROX_ADMIN_PASSWORD}" ]] || { echo >&2 "ROX_ADMIN_PASSWORD not found! Cannot launch sensor."; return 1; } - export_central_cert - roxctl --endpoint "${API_ENDPOINT}" sensor generate --main-image-repository="${MAIN_IMAGE_REPO}" --central="$CLUSTER_API_ENDPOINT" --name="$CLUSTER" \ + roxctl --endpoint "${API_ENDPOINT}" --ca "" --insecure-skip-tls-verify sensor generate --main-image-repository="${MAIN_IMAGE_REPO}" --central="$CLUSTER_API_ENDPOINT" --name="$CLUSTER" \ --collection-method="$COLLECTION_METHOD" \ "${ORCH}" \ "${extra_config[@]+"${extra_config[@]}"}" mv "sensor-${CLUSTER}" "$k8s_dir/sensor-deploy" if [[ "${GENERATE_SCANNER_DEPLOYMENT_BUNDLE:-}" == "true" ]]; then - roxctl --endpoint "${API_ENDPOINT}" scanner generate \ + roxctl --endpoint "${API_ENDPOINT}" --ca "" --insecure-skip-tls-verify scanner generate \ --output-dir="scanner-deploy" "${scanner_extra_config[@]+"${scanner_extra_config[@]}"}" mv "scanner-deploy" "${k8s_dir}/scanner-deploy" echo "Note: A Scanner deployment bundle has been stored at ${k8s_dir}/scanner-deploy" diff --git a/generated/api/common/extended_rpc_status.pb.go b/generated/api/common/extended_rpc_status.pb.go index 669e44ed976da..4518fb368d931 100644 --- a/generated/api/common/extended_rpc_status.pb.go +++ b/generated/api/common/extended_rpc_status.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/common/extended_rpc_status.proto diff --git a/generated/api/integrations/splunk_service.pb.go b/generated/api/integrations/splunk_service.pb.go index ea22a6425b6bb..18c86ba3137e3 100644 --- a/generated/api/integrations/splunk_service.pb.go +++ b/generated/api/integrations/splunk_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/integrations/splunk_service.proto diff --git a/generated/api/v1/administration_events_service.pb.go b/generated/api/v1/administration_events_service.pb.go index 8b39d800d186f..68907f0c935e0 100644 --- a/generated/api/v1/administration_events_service.pb.go +++ b/generated/api/v1/administration_events_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/administration_events_service.proto diff --git a/generated/api/v1/administration_events_service.pb.gw.go b/generated/api/v1/administration_events_service.pb.gw.go index 700a5b44de248..57855747ef4fb 100644 --- a/generated/api/v1/administration_events_service.pb.gw.go +++ b/generated/api/v1/administration_events_service.pb.gw.go @@ -42,7 +42,9 @@ func request_AdministrationEventService_CountAdministrationEvents_0(ctx context. protoReq CountAdministrationEventsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -74,7 +76,9 @@ func request_AdministrationEventService_GetAdministrationEvent_0(ctx context.Con metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -112,7 +116,9 @@ func request_AdministrationEventService_ListAdministrationEvents_0(ctx context.C protoReq ListAdministrationEventsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/administration_usage_service.pb.go b/generated/api/v1/administration_usage_service.pb.go index dd1b1ef215949..de85fdd860294 100644 --- a/generated/api/v1/administration_usage_service.pb.go +++ b/generated/api/v1/administration_usage_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/administration_usage_service.proto diff --git a/generated/api/v1/administration_usage_service.pb.gw.go b/generated/api/v1/administration_usage_service.pb.gw.go index a6b221311dd25..0889ec45c387c 100644 --- a/generated/api/v1/administration_usage_service.pb.gw.go +++ b/generated/api/v1/administration_usage_service.pb.gw.go @@ -40,7 +40,9 @@ func request_AdministrationUsageService_GetCurrentSecuredUnitsUsage_0(ctx contex protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetCurrentSecuredUnitsUsage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -61,7 +63,9 @@ func request_AdministrationUsageService_GetMaxSecuredUnitsUsage_0(ctx context.Co protoReq TimeRange metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/alert_service.pb.go b/generated/api/v1/alert_service.pb.go index 498e97c43a171..b0b3edfd4cb42 100644 --- a/generated/api/v1/alert_service.pb.go +++ b/generated/api/v1/alert_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/alert_service.proto diff --git a/generated/api/v1/alert_service.pb.gw.go b/generated/api/v1/alert_service.pb.gw.go index 3d826d6922851..07c4e44e552ba 100644 --- a/generated/api/v1/alert_service.pb.gw.go +++ b/generated/api/v1/alert_service.pb.gw.go @@ -41,7 +41,9 @@ func request_AlertService_GetAlert_0(ctx context.Context, marshaler runtime.Mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_AlertService_CountAlerts_0(ctx context.Context, marshaler runtime.M protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -112,7 +116,9 @@ func request_AlertService_ListAlerts_0(ctx context.Context, marshaler runtime.Ma protoReq ListAlertsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -145,7 +151,9 @@ func request_AlertService_GetAlertsGroup_0(ctx context.Context, marshaler runtim protoReq ListAlertsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -178,7 +186,9 @@ func request_AlertService_GetAlertsCounts_0(ctx context.Context, marshaler runti protoReq GetAlertsCountsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -211,7 +221,9 @@ func request_AlertService_GetAlertTimeseries_0(ctx context.Context, marshaler ru protoReq ListAlertsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -246,6 +258,9 @@ func request_AlertService_ResolveAlert_0(ctx context.Context, marshaler runtime. if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -287,6 +302,9 @@ func request_AlertService_ResolveAlerts_0(ctx context.Context, marshaler runtime if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ResolveAlerts(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -310,7 +328,9 @@ func request_AlertService_DeleteAlerts_0(ctx context.Context, marshaler runtime. protoReq DeleteAlertsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/api_token_service.pb.go b/generated/api/v1/api_token_service.pb.go index 1297bf777f6d5..0ae512b169d00 100644 --- a/generated/api/v1/api_token_service.pb.go +++ b/generated/api/v1/api_token_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/api_token_service.proto diff --git a/generated/api/v1/api_token_service.pb.gw.go b/generated/api/v1/api_token_service.pb.gw.go index 3001623def4f5..ad7c42e56b2e6 100644 --- a/generated/api/v1/api_token_service.pb.gw.go +++ b/generated/api/v1/api_token_service.pb.gw.go @@ -41,7 +41,9 @@ func request_APITokenService_GetAPIToken_0(ctx context.Context, marshaler runtim metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_APITokenService_GetAPITokens_0(ctx context.Context, marshaler runti protoReq GetAPITokensRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -113,6 +117,9 @@ func request_APITokenService_GenerateToken_0(ctx context.Context, marshaler runt if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GenerateToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -135,7 +142,9 @@ func request_APITokenService_RevokeToken_0(ctx context.Context, marshaler runtim metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -171,7 +180,9 @@ func request_APITokenService_ListAllowedTokenRoles_0(ctx context.Context, marsha protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ListAllowedTokenRoles(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/audit.pb.go b/generated/api/v1/audit.pb.go index 1a22ebd4d3384..bf608267b207a 100644 --- a/generated/api/v1/audit.pb.go +++ b/generated/api/v1/audit.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/audit.proto diff --git a/generated/api/v1/auth_service.pb.go b/generated/api/v1/auth_service.pb.go index 2a2d7e3ed081a..1d95aad8a65c8 100644 --- a/generated/api/v1/auth_service.pb.go +++ b/generated/api/v1/auth_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/auth_service.proto diff --git a/generated/api/v1/auth_service.pb.gw.go b/generated/api/v1/auth_service.pb.gw.go index 677349d061c06..e8c4600adf4ec 100644 --- a/generated/api/v1/auth_service.pb.gw.go +++ b/generated/api/v1/auth_service.pb.gw.go @@ -40,7 +40,9 @@ func request_AuthService_GetAuthStatus_0(ctx context.Context, marshaler runtime. protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetAuthStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -59,7 +61,9 @@ func request_AuthService_ListAuthMachineToMachineConfigs_0(ctx context.Context, protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ListAuthMachineToMachineConfigs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -79,7 +83,9 @@ func request_AuthService_GetAuthMachineToMachineConfig_0(ctx context.Context, ma metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -118,6 +124,9 @@ func request_AuthService_AddAuthMachineToMachineConfig_0(ctx context.Context, ma if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.AddAuthMachineToMachineConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -143,6 +152,9 @@ func request_AuthService_UpdateAuthMachineToMachineConfig_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["config.id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "config.id") @@ -182,7 +194,9 @@ func request_AuthService_DeleteAuthMachineToMachineConfig_0(ctx context.Context, metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -221,6 +235,9 @@ func request_AuthService_ExchangeAuthMachineToMachineToken_0(ctx context.Context if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ExchangeAuthMachineToMachineToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/authprovider_service.pb.go b/generated/api/v1/authprovider_service.pb.go index 6d47440082a20..118bd1fcc7819 100644 --- a/generated/api/v1/authprovider_service.pb.go +++ b/generated/api/v1/authprovider_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/authprovider_service.proto diff --git a/generated/api/v1/authprovider_service.pb.gw.go b/generated/api/v1/authprovider_service.pb.gw.go index 911c8f3cd0a99..6f928439c544c 100644 --- a/generated/api/v1/authprovider_service.pb.gw.go +++ b/generated/api/v1/authprovider_service.pb.gw.go @@ -41,7 +41,9 @@ func request_AuthProviderService_ListAvailableProviderTypes_0(ctx context.Contex protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ListAvailableProviderTypes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -61,7 +63,9 @@ func request_AuthProviderService_GetAuthProvider_0(ctx context.Context, marshale metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -97,7 +101,9 @@ func request_AuthProviderService_GetLoginAuthProviders_0(ctx context.Context, ma protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetLoginAuthProviders(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -118,7 +124,9 @@ func request_AuthProviderService_GetAuthProviders_0(ctx context.Context, marshal protoReq GetAuthProvidersRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -152,6 +160,9 @@ func request_AuthProviderService_PostAuthProvider_0(ctx context.Context, marshal if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Provider); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostAuthProvider(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -177,6 +188,9 @@ func request_AuthProviderService_UpdateAuthProvider_0(ctx context.Context, marsh if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -219,6 +233,9 @@ func request_AuthProviderService_PutAuthProvider_0(ctx context.Context, marshale if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -260,7 +277,9 @@ func request_AuthProviderService_DeleteAuthProvider_0(ctx context.Context, marsh metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -311,6 +330,9 @@ func request_AuthProviderService_ExchangeToken_0(ctx context.Context, marshaler if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ExchangeToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/backup_service.pb.go b/generated/api/v1/backup_service.pb.go index 7636d66e23b95..46fa1e1e312b4 100644 --- a/generated/api/v1/backup_service.pb.go +++ b/generated/api/v1/backup_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/backup_service.proto diff --git a/generated/api/v1/backup_service.pb.gw.go b/generated/api/v1/backup_service.pb.gw.go index 85f79ec3a5d14..114272eb9be8f 100644 --- a/generated/api/v1/backup_service.pb.gw.go +++ b/generated/api/v1/backup_service.pb.gw.go @@ -42,7 +42,9 @@ func request_ExternalBackupService_GetExternalBackup_0(ctx context.Context, mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -78,7 +80,9 @@ func request_ExternalBackupService_GetExternalBackups_0(ctx context.Context, mar protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetExternalBackups(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -100,6 +104,9 @@ func request_ExternalBackupService_PostExternalBackup_0(ctx context.Context, mar if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostExternalBackup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -125,6 +132,9 @@ func request_ExternalBackupService_PutExternalBackup_0(ctx context.Context, mars if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -166,6 +176,9 @@ func request_ExternalBackupService_TestExternalBackup_0(ctx context.Context, mar if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.TestExternalBackup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -188,7 +201,9 @@ func request_ExternalBackupService_DeleteExternalBackup_0(ctx context.Context, m metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -225,7 +240,9 @@ func request_ExternalBackupService_TriggerExternalBackup_0(ctx context.Context, metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -265,6 +282,9 @@ func request_ExternalBackupService_UpdateExternalBackup_0(ctx context.Context, m if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["external_backup.id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "external_backup.id") @@ -306,6 +326,9 @@ func request_ExternalBackupService_TestUpdatedExternalBackup_0(ctx context.Conte if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.TestUpdatedExternalBackup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/central_health_service.pb.go b/generated/api/v1/central_health_service.pb.go index c322391b3c446..78e5ab0c0b067 100644 --- a/generated/api/v1/central_health_service.pb.go +++ b/generated/api/v1/central_health_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/central_health_service.proto diff --git a/generated/api/v1/central_health_service.pb.gw.go b/generated/api/v1/central_health_service.pb.gw.go index 2b362768b4d7e..744b3bdbb2141 100644 --- a/generated/api/v1/central_health_service.pb.gw.go +++ b/generated/api/v1/central_health_service.pb.gw.go @@ -40,7 +40,9 @@ func request_CentralHealthService_GetUpgradeStatus_0(ctx context.Context, marsha protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetUpgradeStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/cloud_source_service.pb.go b/generated/api/v1/cloud_source_service.pb.go index 2a3970f583002..5bc93fd7f6e06 100644 --- a/generated/api/v1/cloud_source_service.pb.go +++ b/generated/api/v1/cloud_source_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/cloud_source_service.proto diff --git a/generated/api/v1/cloud_source_service.pb.gw.go b/generated/api/v1/cloud_source_service.pb.gw.go index e847a81bfd90b..510f5f44218c0 100644 --- a/generated/api/v1/cloud_source_service.pb.gw.go +++ b/generated/api/v1/cloud_source_service.pb.gw.go @@ -42,7 +42,9 @@ func request_CloudSourcesService_CountCloudSources_0(ctx context.Context, marsha protoReq CountCloudSourcesRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -74,7 +76,9 @@ func request_CloudSourcesService_GetCloudSource_0(ctx context.Context, marshaler metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -112,7 +116,9 @@ func request_CloudSourcesService_ListCloudSources_0(ctx context.Context, marshal protoReq ListCloudSourcesRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -146,6 +152,9 @@ func request_CloudSourcesService_CreateCloudSource_0(ctx context.Context, marsha if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.CreateCloudSource(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -171,6 +180,9 @@ func request_CloudSourcesService_UpdateCloudSource_0(ctx context.Context, marsha if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cloud_source.id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cloud_source.id") @@ -210,7 +222,9 @@ func request_CloudSourcesService_DeleteCloudSource_0(ctx context.Context, marsha metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -249,6 +263,9 @@ func request_CloudSourcesService_TestCloudSource_0(ctx context.Context, marshale if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.TestCloudSource(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/cluster_init_service.pb.go b/generated/api/v1/cluster_init_service.pb.go index d9b2533955493..f7a0bba94a9b1 100644 --- a/generated/api/v1/cluster_init_service.pb.go +++ b/generated/api/v1/cluster_init_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/cluster_init_service.proto diff --git a/generated/api/v1/cluster_init_service.pb.gw.go b/generated/api/v1/cluster_init_service.pb.gw.go index 00e6abff158cf..560ea5707d6f2 100644 --- a/generated/api/v1/cluster_init_service.pb.gw.go +++ b/generated/api/v1/cluster_init_service.pb.gw.go @@ -43,6 +43,9 @@ func request_ClusterInitService_RevokeInitBundle_0(ctx context.Context, marshale if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RevokeInitBundle(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -67,6 +70,9 @@ func request_ClusterInitService_RevokeCRS_0(ctx context.Context, marshaler runti if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RevokeCRS(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -88,7 +94,9 @@ func request_ClusterInitService_GetCAConfig_0(ctx context.Context, marshaler run protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetCAConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -107,7 +115,9 @@ func request_ClusterInitService_GetInitBundles_0(ctx context.Context, marshaler protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetInitBundles(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -126,7 +136,9 @@ func request_ClusterInitService_GetCRSs_0(ctx context.Context, marshaler runtime protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetCRSs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -148,6 +160,9 @@ func request_ClusterInitService_GenerateInitBundle_0(ctx context.Context, marsha if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GenerateInitBundle(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -172,6 +187,9 @@ func request_ClusterInitService_GenerateCRS_0(ctx context.Context, marshaler run if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GenerateCRS(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/cluster_service.pb.go b/generated/api/v1/cluster_service.pb.go index 8d862ea38531f..2c7dff37ccafa 100644 --- a/generated/api/v1/cluster_service.pb.go +++ b/generated/api/v1/cluster_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/cluster_service.proto diff --git a/generated/api/v1/cluster_service.pb.gw.go b/generated/api/v1/cluster_service.pb.gw.go index a62336b7aebed..d0ed73dd50c9c 100644 --- a/generated/api/v1/cluster_service.pb.gw.go +++ b/generated/api/v1/cluster_service.pb.gw.go @@ -43,7 +43,9 @@ func request_ClustersService_GetClusters_0(ctx context.Context, marshaler runtim protoReq GetClustersRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -75,7 +77,9 @@ func request_ClustersService_GetCluster_0(ctx context.Context, marshaler runtime metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -114,6 +118,9 @@ func request_ClustersService_PostCluster_0(ctx context.Context, marshaler runtim if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostCluster(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -139,6 +146,9 @@ func request_ClustersService_PutCluster_0(ctx context.Context, marshaler runtime if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -178,7 +188,9 @@ func request_ClustersService_DeleteCluster_0(ctx context.Context, marshaler runt metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -214,7 +226,9 @@ func request_ClustersService_GetKernelSupportAvailable_0(ctx context.Context, ma protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetKernelSupportAvailable(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -233,7 +247,9 @@ func request_ClustersService_GetClusterDefaultValues_0(ctx context.Context, mars protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetClusterDefaultValues(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/common.pb.go b/generated/api/v1/common.pb.go index 3edd0e2d4e2ce..ebbbb86a37c69 100644 --- a/generated/api/v1/common.pb.go +++ b/generated/api/v1/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/common.proto diff --git a/generated/api/v1/compliance_management_service.pb.go b/generated/api/v1/compliance_management_service.pb.go index 7a9e70ecdecf4..0d639ee186761 100644 --- a/generated/api/v1/compliance_management_service.pb.go +++ b/generated/api/v1/compliance_management_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/compliance_management_service.proto diff --git a/generated/api/v1/compliance_management_service.pb.gw.go b/generated/api/v1/compliance_management_service.pb.gw.go index bd4897241ed4f..d07c28da3c7c6 100644 --- a/generated/api/v1/compliance_management_service.pb.gw.go +++ b/generated/api/v1/compliance_management_service.pb.gw.go @@ -42,7 +42,9 @@ func request_ComplianceManagementService_GetRecentRuns_0(ctx context.Context, ma protoReq GetRecentComplianceRunsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -76,6 +78,9 @@ func request_ComplianceManagementService_TriggerRuns_0(ctx context.Context, mars if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.TriggerRuns(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -99,7 +104,9 @@ func request_ComplianceManagementService_GetRunStatuses_0(ctx context.Context, m protoReq GetComplianceRunStatusesRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/compliance_service.pb.go b/generated/api/v1/compliance_service.pb.go index 7e512f59bba04..749f740fdd85d 100644 --- a/generated/api/v1/compliance_service.pb.go +++ b/generated/api/v1/compliance_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/compliance_service.proto diff --git a/generated/api/v1/compliance_service.pb.gw.go b/generated/api/v1/compliance_service.pb.gw.go index 7bd55d37fb3e0..519f5634ac267 100644 --- a/generated/api/v1/compliance_service.pb.gw.go +++ b/generated/api/v1/compliance_service.pb.gw.go @@ -40,7 +40,9 @@ func request_ComplianceService_GetStandards_0(ctx context.Context, marshaler run protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetStandards(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -60,7 +62,9 @@ func request_ComplianceService_GetStandard_0(ctx context.Context, marshaler runt metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -98,7 +102,9 @@ func request_ComplianceService_GetRunResults_0(ctx context.Context, marshaler ru protoReq GetComplianceRunResultsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -131,7 +137,9 @@ func request_ComplianceService_GetAggregatedResults_0(ctx context.Context, marsh protoReq ComplianceAggregationRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -166,6 +174,9 @@ func request_ComplianceService_UpdateComplianceStandardConfig_0(ctx context.Cont if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/config_service.pb.go b/generated/api/v1/config_service.pb.go index d16b8c5f07307..886dffa989515 100644 --- a/generated/api/v1/config_service.pb.go +++ b/generated/api/v1/config_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/config_service.proto diff --git a/generated/api/v1/config_service.pb.gw.go b/generated/api/v1/config_service.pb.gw.go index 78f83ad9dee03..3f2856264f124 100644 --- a/generated/api/v1/config_service.pb.gw.go +++ b/generated/api/v1/config_service.pb.gw.go @@ -40,7 +40,9 @@ func request_ConfigService_GetPublicConfig_0(ctx context.Context, marshaler runt protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetPublicConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -59,7 +61,9 @@ func request_ConfigService_GetPrivateConfig_0(ctx context.Context, marshaler run protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetPrivateConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -78,7 +82,9 @@ func request_ConfigService_GetVulnerabilityExceptionConfig_0(ctx context.Context protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetVulnerabilityExceptionConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -100,6 +106,9 @@ func request_ConfigService_UpdateVulnerabilityExceptionConfig_0(ctx context.Cont if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UpdateVulnerabilityExceptionConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -121,7 +130,9 @@ func request_ConfigService_GetPlatformComponentConfig_0(ctx context.Context, mar protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetPlatformComponentConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -143,6 +154,9 @@ func request_ConfigService_UpdatePlatformComponentConfig_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UpdatePlatformComponentConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -164,7 +178,9 @@ func request_ConfigService_GetConfig_0(ctx context.Context, marshaler runtime.Ma protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -186,6 +202,9 @@ func request_ConfigService_PutConfig_0(ctx context.Context, marshaler runtime.Ma if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PutConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -207,7 +226,9 @@ func request_ConfigService_GetDefaultRedHatLayeredProductsRegex_0(ctx context.Co protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetDefaultRedHatLayeredProductsRegex(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/credential_expiry_service.pb.go b/generated/api/v1/credential_expiry_service.pb.go index c560b0fe13d4e..924388275e6dd 100644 --- a/generated/api/v1/credential_expiry_service.pb.go +++ b/generated/api/v1/credential_expiry_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/credential_expiry_service.proto diff --git a/generated/api/v1/credential_expiry_service.pb.gw.go b/generated/api/v1/credential_expiry_service.pb.gw.go index 7507c0db547c8..6429afb93f087 100644 --- a/generated/api/v1/credential_expiry_service.pb.gw.go +++ b/generated/api/v1/credential_expiry_service.pb.gw.go @@ -42,7 +42,9 @@ func request_CredentialExpiryService_GetCertExpiry_0(ctx context.Context, marsha protoReq GetCertExpiry_Request metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/cve_service.pb.go b/generated/api/v1/cve_service.pb.go index 1ea70669e1c07..61106920149d0 100644 --- a/generated/api/v1/cve_service.pb.go +++ b/generated/api/v1/cve_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/cve_service.proto diff --git a/generated/api/v1/cve_service.pb.gw.go b/generated/api/v1/cve_service.pb.gw.go index 6e0c35946a42d..20e67b1953419 100644 --- a/generated/api/v1/cve_service.pb.gw.go +++ b/generated/api/v1/cve_service.pb.gw.go @@ -43,6 +43,9 @@ func request_ImageCVEService_SuppressCVEs_0(ctx context.Context, marshaler runti if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.SuppressCVEs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -67,6 +70,9 @@ func request_ImageCVEService_UnsuppressCVEs_0(ctx context.Context, marshaler run if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UnsuppressCVEs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -91,6 +97,9 @@ func request_NodeCVEService_SuppressCVEs_0(ctx context.Context, marshaler runtim if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.SuppressCVEs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -115,6 +124,9 @@ func request_NodeCVEService_UnsuppressCVEs_0(ctx context.Context, marshaler runt if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UnsuppressCVEs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -139,6 +151,9 @@ func request_ClusterCVEService_SuppressCVEs_0(ctx context.Context, marshaler run if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.SuppressCVEs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -163,6 +178,9 @@ func request_ClusterCVEService_UnsuppressCVEs_0(ctx context.Context, marshaler r if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UnsuppressCVEs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/db_service.pb.go b/generated/api/v1/db_service.pb.go index b3097bcabae5b..684b19d0daedf 100644 --- a/generated/api/v1/db_service.pb.go +++ b/generated/api/v1/db_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/db_service.proto diff --git a/generated/api/v1/db_service.pb.gw.go b/generated/api/v1/db_service.pb.gw.go index 229bd234e2bb9..0979bd8be0048 100644 --- a/generated/api/v1/db_service.pb.gw.go +++ b/generated/api/v1/db_service.pb.gw.go @@ -40,7 +40,9 @@ func request_DBService_GetExportCapabilities_0(ctx context.Context, marshaler ru protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetExportCapabilities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -59,7 +61,9 @@ func request_DBService_GetActiveRestoreProcess_0(ctx context.Context, marshaler protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetActiveRestoreProcess(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -79,7 +83,9 @@ func request_DBService_InterruptRestoreProcess_0(ctx context.Context, marshaler metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["process_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "process_id") @@ -132,7 +138,9 @@ func request_DBService_CancelRestoreProcess_0(ctx context.Context, marshaler run metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/debug_service.pb.go b/generated/api/v1/debug_service.pb.go index a4385283ac4ca..8b97ea315e9e7 100644 --- a/generated/api/v1/debug_service.pb.go +++ b/generated/api/v1/debug_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/debug_service.proto diff --git a/generated/api/v1/debug_service.pb.gw.go b/generated/api/v1/debug_service.pb.gw.go index cf1206dda3859..f12ab6475098f 100644 --- a/generated/api/v1/debug_service.pb.gw.go +++ b/generated/api/v1/debug_service.pb.gw.go @@ -42,7 +42,9 @@ func request_DebugService_GetLogLevel_0(ctx context.Context, marshaler runtime.M protoReq GetLogLevelRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -76,6 +78,9 @@ func request_DebugService_SetLogLevel_0(ctx context.Context, marshaler runtime.M if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.SetLogLevel(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -97,7 +102,9 @@ func request_DebugService_StreamAuthzTraces_0(ctx context.Context, marshaler run protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } stream, err := client.StreamAuthzTraces(ctx, &protoReq) if err != nil { return nil, metadata, err @@ -115,7 +122,9 @@ func request_DebugService_ResetDBStats_0(ctx context.Context, marshaler runtime. protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ResetDBStats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/declarative_config_health_service.pb.go b/generated/api/v1/declarative_config_health_service.pb.go index 7c23459fa2550..c2e18e1a8d53a 100644 --- a/generated/api/v1/declarative_config_health_service.pb.go +++ b/generated/api/v1/declarative_config_health_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/declarative_config_health_service.proto diff --git a/generated/api/v1/declarative_config_health_service.pb.gw.go b/generated/api/v1/declarative_config_health_service.pb.gw.go index ccb2dfe8723ac..48ed92ae93aaf 100644 --- a/generated/api/v1/declarative_config_health_service.pb.gw.go +++ b/generated/api/v1/declarative_config_health_service.pb.gw.go @@ -40,7 +40,9 @@ func request_DeclarativeConfigHealthService_GetDeclarativeConfigHealths_0(ctx co protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetDeclarativeConfigHealths(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/delegated_registry_config_service.pb.go b/generated/api/v1/delegated_registry_config_service.pb.go index 95b6d045a3db0..2a3a85b6ecdb7 100644 --- a/generated/api/v1/delegated_registry_config_service.pb.go +++ b/generated/api/v1/delegated_registry_config_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/delegated_registry_config_service.proto diff --git a/generated/api/v1/delegated_registry_config_service.pb.gw.go b/generated/api/v1/delegated_registry_config_service.pb.gw.go index c66dc099c0b3f..5817851ff1903 100644 --- a/generated/api/v1/delegated_registry_config_service.pb.gw.go +++ b/generated/api/v1/delegated_registry_config_service.pb.gw.go @@ -40,7 +40,9 @@ func request_DelegatedRegistryConfigService_GetConfig_0(ctx context.Context, mar protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -59,7 +61,9 @@ func request_DelegatedRegistryConfigService_GetClusters_0(ctx context.Context, m protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetClusters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -81,6 +85,9 @@ func request_DelegatedRegistryConfigService_UpdateConfig_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UpdateConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/deployment_service.pb.go b/generated/api/v1/deployment_service.pb.go index 00706ce6e4d6b..19f0818498996 100644 --- a/generated/api/v1/deployment_service.pb.go +++ b/generated/api/v1/deployment_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/deployment_service.proto diff --git a/generated/api/v1/deployment_service.pb.gw.go b/generated/api/v1/deployment_service.pb.gw.go index 62c4d9921a18f..2e57466fb729a 100644 --- a/generated/api/v1/deployment_service.pb.gw.go +++ b/generated/api/v1/deployment_service.pb.gw.go @@ -41,7 +41,9 @@ func request_DeploymentService_GetDeployment_0(ctx context.Context, marshaler ru metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -78,7 +80,9 @@ func request_DeploymentService_GetDeploymentWithRisk_0(ctx context.Context, mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -116,7 +120,9 @@ func request_DeploymentService_CountDeployments_0(ctx context.Context, marshaler protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -149,7 +155,9 @@ func request_DeploymentService_ListDeployments_0(ctx context.Context, marshaler protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -182,7 +190,9 @@ func request_DeploymentService_ListDeploymentsWithProcessInfo_0(ctx context.Cont protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -213,7 +223,9 @@ func request_DeploymentService_GetLabels_0(ctx context.Context, marshaler runtim protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetLabels(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -234,7 +246,9 @@ func request_DeploymentService_ExportDeployments_0(ctx context.Context, marshale protoReq ExportDeploymentRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/detection_service.pb.go b/generated/api/v1/detection_service.pb.go index 20366ecd05ba3..c12a1e2650323 100644 --- a/generated/api/v1/detection_service.pb.go +++ b/generated/api/v1/detection_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/detection_service.proto diff --git a/generated/api/v1/detection_service.pb.gw.go b/generated/api/v1/detection_service.pb.gw.go index aebeb220ea5fc..9255c15e9c78f 100644 --- a/generated/api/v1/detection_service.pb.gw.go +++ b/generated/api/v1/detection_service.pb.gw.go @@ -43,6 +43,9 @@ func request_DetectionService_DetectBuildTime_0(ctx context.Context, marshaler r if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.DetectBuildTime(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -67,6 +70,9 @@ func request_DetectionService_DetectDeployTime_0(ctx context.Context, marshaler if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.DetectDeployTime(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -91,6 +97,9 @@ func request_DetectionService_DetectDeployTimeFromYAML_0(ctx context.Context, ma if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.DetectDeployTimeFromYAML(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/discovered_cluster_service.pb.go b/generated/api/v1/discovered_cluster_service.pb.go index a4b0cba24acbf..f81787ab7545d 100644 --- a/generated/api/v1/discovered_cluster_service.pb.go +++ b/generated/api/v1/discovered_cluster_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/discovered_cluster_service.proto diff --git a/generated/api/v1/discovered_cluster_service.pb.gw.go b/generated/api/v1/discovered_cluster_service.pb.gw.go index 4ce64e421f6ac..10892f9ceb505 100644 --- a/generated/api/v1/discovered_cluster_service.pb.gw.go +++ b/generated/api/v1/discovered_cluster_service.pb.gw.go @@ -42,7 +42,9 @@ func request_DiscoveredClustersService_CountDiscoveredClusters_0(ctx context.Con protoReq CountDiscoveredClustersRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -74,7 +76,9 @@ func request_DiscoveredClustersService_GetDiscoveredCluster_0(ctx context.Contex metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -112,7 +116,9 @@ func request_DiscoveredClustersService_ListDiscoveredClusters_0(ctx context.Cont protoReq ListDiscoveredClustersRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/empty.pb.go b/generated/api/v1/empty.pb.go index 7ab1a8100bdf4..595783d7fab37 100644 --- a/generated/api/v1/empty.pb.go +++ b/generated/api/v1/empty.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/empty.proto diff --git a/generated/api/v1/feature_flag_service.pb.go b/generated/api/v1/feature_flag_service.pb.go index 857b8b6aa772f..a45d9926995dd 100644 --- a/generated/api/v1/feature_flag_service.pb.go +++ b/generated/api/v1/feature_flag_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/feature_flag_service.proto diff --git a/generated/api/v1/feature_flag_service.pb.gw.go b/generated/api/v1/feature_flag_service.pb.gw.go index 71d48ffecaa45..9f4071025ab44 100644 --- a/generated/api/v1/feature_flag_service.pb.gw.go +++ b/generated/api/v1/feature_flag_service.pb.gw.go @@ -40,7 +40,9 @@ func request_FeatureFlagService_GetFeatureFlags_0(ctx context.Context, marshaler protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetFeatureFlags(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/group_service.pb.go b/generated/api/v1/group_service.pb.go index 00859158ad0fd..88907a4b0c629 100644 --- a/generated/api/v1/group_service.pb.go +++ b/generated/api/v1/group_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/group_service.proto diff --git a/generated/api/v1/group_service.pb.gw.go b/generated/api/v1/group_service.pb.gw.go index 589ad3ee78452..e1d807e755e26 100644 --- a/generated/api/v1/group_service.pb.gw.go +++ b/generated/api/v1/group_service.pb.gw.go @@ -43,7 +43,9 @@ func request_GroupService_GetGroups_0(ctx context.Context, marshaler runtime.Mar protoReq GetGroupsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -76,7 +78,9 @@ func request_GroupService_GetGroup_0(ctx context.Context, marshaler runtime.Mars protoReq storage.GroupProperties metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -110,6 +114,9 @@ func request_GroupService_BatchUpdate_0(ctx context.Context, marshaler runtime.M if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.BatchUpdate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -134,6 +141,9 @@ func request_GroupService_CreateGroup_0(ctx context.Context, marshaler runtime.M if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.CreateGroup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -160,6 +170,9 @@ func request_GroupService_UpdateGroup_0(ctx context.Context, marshaler runtime.M if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Group); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -195,7 +208,9 @@ func request_GroupService_DeleteGroup_0(ctx context.Context, marshaler runtime.M protoReq DeleteGroupRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/grpc_preference_service.pb.go b/generated/api/v1/grpc_preference_service.pb.go index 96f244c2f13d4..1291c32b071aa 100644 --- a/generated/api/v1/grpc_preference_service.pb.go +++ b/generated/api/v1/grpc_preference_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/grpc_preference_service.proto diff --git a/generated/api/v1/grpc_preference_service.pb.gw.go b/generated/api/v1/grpc_preference_service.pb.gw.go index 6158adb37d890..4f64a0282058d 100644 --- a/generated/api/v1/grpc_preference_service.pb.gw.go +++ b/generated/api/v1/grpc_preference_service.pb.gw.go @@ -40,7 +40,9 @@ func request_GRPCPreferencesService_Get_0(ctx context.Context, marshaler runtime protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Get(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/image_integration_service.pb.go b/generated/api/v1/image_integration_service.pb.go index 3e7d5df28aa70..017f3826315c4 100644 --- a/generated/api/v1/image_integration_service.pb.go +++ b/generated/api/v1/image_integration_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/image_integration_service.proto diff --git a/generated/api/v1/image_integration_service.pb.gw.go b/generated/api/v1/image_integration_service.pb.gw.go index ab4d5cdcc8336..2d5fab0235a4b 100644 --- a/generated/api/v1/image_integration_service.pb.gw.go +++ b/generated/api/v1/image_integration_service.pb.gw.go @@ -42,7 +42,9 @@ func request_ImageIntegrationService_GetImageIntegration_0(ctx context.Context, metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -80,7 +82,9 @@ func request_ImageIntegrationService_GetImageIntegrations_0(ctx context.Context, protoReq GetImageIntegrationsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -114,6 +118,9 @@ func request_ImageIntegrationService_PostImageIntegration_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostImageIntegration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -139,6 +146,9 @@ func request_ImageIntegrationService_PutImageIntegration_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -180,6 +190,9 @@ func request_ImageIntegrationService_TestImageIntegration_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.TestImageIntegration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -202,7 +215,9 @@ func request_ImageIntegrationService_DeleteImageIntegration_0(ctx context.Contex metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -242,6 +257,9 @@ func request_ImageIntegrationService_UpdateImageIntegration_0(ctx context.Contex if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["config.id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "config.id") @@ -283,6 +301,9 @@ func request_ImageIntegrationService_TestUpdatedImageIntegration_0(ctx context.C if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.TestUpdatedImageIntegration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/image_service.pb.go b/generated/api/v1/image_service.pb.go index a4a570f77a6e4..e2f1dcbea438e 100644 --- a/generated/api/v1/image_service.pb.go +++ b/generated/api/v1/image_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/image_service.proto diff --git a/generated/api/v1/image_service.pb.gw.go b/generated/api/v1/image_service.pb.gw.go index 868581dfb3289..b90487a79c248 100644 --- a/generated/api/v1/image_service.pb.gw.go +++ b/generated/api/v1/image_service.pb.gw.go @@ -43,7 +43,9 @@ func request_ImageService_GetImage_0(ctx context.Context, marshaler runtime.Mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -93,7 +95,9 @@ func request_ImageService_CountImages_0(ctx context.Context, marshaler runtime.M protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -126,7 +130,9 @@ func request_ImageService_ListImages_0(ctx context.Context, marshaler runtime.Ma protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -160,6 +166,9 @@ func request_ImageService_ScanImage_0(ctx context.Context, marshaler runtime.Mar if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ScanImage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -181,7 +190,9 @@ func request_ImageService_InvalidateScanAndRegistryCaches_0(ctx context.Context, protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.InvalidateScanAndRegistryCaches(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -202,7 +213,9 @@ func request_ImageService_DeleteImages_0(ctx context.Context, marshaler runtime. protoReq DeleteImagesRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -236,6 +249,9 @@ func request_ImageService_WatchImage_0(ctx context.Context, marshaler runtime.Ma if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.WatchImage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -259,7 +275,9 @@ func request_ImageService_UnwatchImage_0(ctx context.Context, marshaler runtime. protoReq UnwatchImageRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -290,7 +308,9 @@ func request_ImageService_GetWatchedImages_0(ctx context.Context, marshaler runt protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetWatchedImages(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -311,7 +331,9 @@ func request_ImageService_ExportImages_0(ctx context.Context, marshaler runtime. protoReq ExportImageRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/integration_health_service.pb.go b/generated/api/v1/integration_health_service.pb.go index 50baeebcb16c1..bafca18d3ea20 100644 --- a/generated/api/v1/integration_health_service.pb.go +++ b/generated/api/v1/integration_health_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/integration_health_service.proto diff --git a/generated/api/v1/integration_health_service.pb.gw.go b/generated/api/v1/integration_health_service.pb.gw.go index 0ffe6a6c4fd3b..3e0b4c0bf7568 100644 --- a/generated/api/v1/integration_health_service.pb.gw.go +++ b/generated/api/v1/integration_health_service.pb.gw.go @@ -40,7 +40,9 @@ func request_IntegrationHealthService_GetImageIntegrations_0(ctx context.Context protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetImageIntegrations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -59,7 +61,9 @@ func request_IntegrationHealthService_GetNotifiers_0(ctx context.Context, marsha protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetNotifiers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -78,7 +82,9 @@ func request_IntegrationHealthService_GetBackupPlugins_0(ctx context.Context, ma protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetBackupPlugins(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -97,7 +103,9 @@ func request_IntegrationHealthService_GetDeclarativeConfigs_0(ctx context.Contex protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetDeclarativeConfigs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -118,7 +126,9 @@ func request_IntegrationHealthService_GetVulnDefinitionsInfo_0(ctx context.Conte protoReq VulnDefinitionsInfoRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/metadata_service.pb.go b/generated/api/v1/metadata_service.pb.go index 1e1cd9d3a0419..de3c69990503f 100644 --- a/generated/api/v1/metadata_service.pb.go +++ b/generated/api/v1/metadata_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/metadata_service.proto diff --git a/generated/api/v1/metadata_service.pb.gw.go b/generated/api/v1/metadata_service.pb.gw.go index 1890aa006916c..38d8e5bbb1052 100644 --- a/generated/api/v1/metadata_service.pb.gw.go +++ b/generated/api/v1/metadata_service.pb.gw.go @@ -40,7 +40,9 @@ func request_MetadataService_GetMetadata_0(ctx context.Context, marshaler runtim protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetMetadata(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -61,7 +63,9 @@ func request_MetadataService_TLSChallenge_0(ctx context.Context, marshaler runti protoReq TLSChallengeRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -92,7 +96,9 @@ func request_MetadataService_GetDatabaseStatus_0(ctx context.Context, marshaler protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetDatabaseStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -111,7 +117,9 @@ func request_MetadataService_GetDatabaseBackupStatus_0(ctx context.Context, mars protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetDatabaseBackupStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -130,7 +138,9 @@ func request_MetadataService_GetCentralCapabilities_0(ctx context.Context, marsh protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetCentralCapabilities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/mitre_service.pb.go b/generated/api/v1/mitre_service.pb.go index 3de629646f87f..94203c53758f9 100644 --- a/generated/api/v1/mitre_service.pb.go +++ b/generated/api/v1/mitre_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/mitre_service.proto diff --git a/generated/api/v1/mitre_service.pb.gw.go b/generated/api/v1/mitre_service.pb.gw.go index 86ad1b5aed1a0..20d08c6b0f6f3 100644 --- a/generated/api/v1/mitre_service.pb.gw.go +++ b/generated/api/v1/mitre_service.pb.gw.go @@ -40,7 +40,9 @@ func request_MitreAttackService_ListMitreAttackVectors_0(ctx context.Context, ma protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ListMitreAttackVectors(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -60,7 +62,9 @@ func request_MitreAttackService_GetMitreAttackVector_0(ctx context.Context, mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/namespace_service.pb.go b/generated/api/v1/namespace_service.pb.go index 77a7092828b57..726f6de8717ff 100644 --- a/generated/api/v1/namespace_service.pb.go +++ b/generated/api/v1/namespace_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/namespace_service.proto diff --git a/generated/api/v1/namespace_service.pb.gw.go b/generated/api/v1/namespace_service.pb.gw.go index bc88c376cf418..0234b1f9b1610 100644 --- a/generated/api/v1/namespace_service.pb.gw.go +++ b/generated/api/v1/namespace_service.pb.gw.go @@ -42,7 +42,9 @@ func request_NamespaceService_GetNamespaces_0(ctx context.Context, marshaler run protoReq GetNamespaceRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -74,7 +76,9 @@ func request_NamespaceService_GetNamespace_0(ctx context.Context, marshaler runt metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/network_baseline_service.pb.go b/generated/api/v1/network_baseline_service.pb.go index c357336af8a94..8cb6b4de1018e 100644 --- a/generated/api/v1/network_baseline_service.pb.go +++ b/generated/api/v1/network_baseline_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/network_baseline_service.proto diff --git a/generated/api/v1/network_baseline_service.pb.gw.go b/generated/api/v1/network_baseline_service.pb.gw.go index 147aa33372b6a..b8351ab14126a 100644 --- a/generated/api/v1/network_baseline_service.pb.gw.go +++ b/generated/api/v1/network_baseline_service.pb.gw.go @@ -44,6 +44,9 @@ func request_NetworkBaselineService_GetNetworkBaselineStatusForFlows_0(ctx conte if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["deployment_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "deployment_id") @@ -85,7 +88,9 @@ func request_NetworkBaselineService_GetNetworkBaselineStatusForExternalFlows_0(c metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["deployment_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "deployment_id") @@ -134,7 +139,9 @@ func request_NetworkBaselineService_GetNetworkBaseline_0(ctx context.Context, ma metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -174,6 +181,9 @@ func request_NetworkBaselineService_ModifyBaselineStatusForPeers_0(ctx context.C if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["deployment_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "deployment_id") @@ -216,6 +226,9 @@ func request_NetworkBaselineService_LockNetworkBaseline_0(ctx context.Context, m if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -258,6 +271,9 @@ func request_NetworkBaselineService_UnlockNetworkBaseline_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/network_graph_service.pb.go b/generated/api/v1/network_graph_service.pb.go index 2a3fcf84225f7..f0d416bedbe62 100644 --- a/generated/api/v1/network_graph_service.pb.go +++ b/generated/api/v1/network_graph_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/network_graph_service.proto diff --git a/generated/api/v1/network_graph_service.pb.gw.go b/generated/api/v1/network_graph_service.pb.gw.go index e2d6dec69c828..f4854fbfcd6c8 100644 --- a/generated/api/v1/network_graph_service.pb.gw.go +++ b/generated/api/v1/network_graph_service.pb.gw.go @@ -43,7 +43,9 @@ func request_NetworkGraphService_GetNetworkGraph_0(ctx context.Context, marshale metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -94,7 +96,9 @@ func request_NetworkGraphService_GetExternalNetworkEntities_0(ctx context.Contex metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -145,7 +149,9 @@ func request_NetworkGraphService_GetExternalNetworkFlows_0(ctx context.Context, metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -212,7 +218,9 @@ func request_NetworkGraphService_GetExternalNetworkFlowsMetadata_0(ctx context.C metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -264,6 +272,9 @@ func request_NetworkGraphService_CreateExternalNetworkEntity_0(ctx context.Conte if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -306,6 +317,9 @@ func request_NetworkGraphService_PatchExternalNetworkEntity_0(ctx context.Contex if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -345,7 +359,9 @@ func request_NetworkGraphService_DeleteExternalNetworkEntity_0(ctx context.Conte metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -381,7 +397,9 @@ func request_NetworkGraphService_GetNetworkGraphConfig_0(ctx context.Context, ma protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetNetworkGraphConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -403,6 +421,9 @@ func request_NetworkGraphService_PutNetworkGraphConfig_0(ctx context.Context, ma if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PutNetworkGraphConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/network_policy_service.pb.go b/generated/api/v1/network_policy_service.pb.go index 3ae9dbbcac79d..1c971f9af0ac2 100644 --- a/generated/api/v1/network_policy_service.pb.go +++ b/generated/api/v1/network_policy_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/network_policy_service.proto diff --git a/generated/api/v1/network_policy_service.pb.gw.go b/generated/api/v1/network_policy_service.pb.gw.go index 1694d578a781b..c472d6ec1006f 100644 --- a/generated/api/v1/network_policy_service.pb.gw.go +++ b/generated/api/v1/network_policy_service.pb.gw.go @@ -41,7 +41,9 @@ func request_NetworkPolicyService_GetNetworkPolicy_0(ctx context.Context, marsha metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_NetworkPolicyService_GetNetworkPolicies_0(ctx context.Context, mars protoReq GetNetworkPoliciesRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -113,7 +117,9 @@ func request_NetworkPolicyService_GetNetworkGraph_0(ctx context.Context, marshal metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -163,7 +169,9 @@ func request_NetworkPolicyService_GetNetworkGraphEpoch_0(ctx context.Context, ma protoReq GetNetworkGraphEpochRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -198,6 +206,9 @@ func request_NetworkPolicyService_ApplyNetworkPolicy_0(ctx context.Context, mars if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Modification); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -237,7 +248,9 @@ func request_NetworkPolicyService_GetUndoModification_0(ctx context.Context, mar metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -279,6 +292,9 @@ func request_NetworkPolicyService_SimulateNetworkGraph_0(ctx context.Context, ma if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Modification); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -335,6 +351,9 @@ func request_NetworkPolicyService_SendNetworkPolicyYAML_0(ctx context.Context, m if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Modification); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -388,7 +407,9 @@ func request_NetworkPolicyService_GenerateNetworkPolicies_0(ctx context.Context, metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -440,6 +461,9 @@ func request_NetworkPolicyService_GetBaselineGeneratedNetworkPolicyForDeployment if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["deployment_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "deployment_id") @@ -479,7 +503,9 @@ func request_NetworkPolicyService_GetAllowedPeersFromCurrentPolicyForDeployment_ metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -519,6 +545,9 @@ func request_NetworkPolicyService_ApplyNetworkPolicyYamlForDeployment_0(ctx cont if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["deployment_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "deployment_id") @@ -558,7 +587,9 @@ func request_NetworkPolicyService_GetUndoModificationForDeployment_0(ctx context metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -595,7 +626,9 @@ func request_NetworkPolicyService_GetDiffFlowsBetweenPolicyAndBaselineForDeploym metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -632,7 +665,9 @@ func request_NetworkPolicyService_GetDiffFlowsFromUndoModificationForDeployment_ metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/node_service.pb.go b/generated/api/v1/node_service.pb.go index 12a36b3085029..5d7ccd68c2e3f 100644 --- a/generated/api/v1/node_service.pb.go +++ b/generated/api/v1/node_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/node_service.proto diff --git a/generated/api/v1/node_service.pb.gw.go b/generated/api/v1/node_service.pb.gw.go index a059db4f9c756..02ab873b2bdf9 100644 --- a/generated/api/v1/node_service.pb.gw.go +++ b/generated/api/v1/node_service.pb.gw.go @@ -41,7 +41,9 @@ func request_NodeService_ListNodes_0(ctx context.Context, marshaler runtime.Mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -78,7 +80,9 @@ func request_NodeService_GetNode_0(ctx context.Context, marshaler runtime.Marsha metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -132,7 +136,9 @@ func request_NodeService_ExportNodes_0(ctx context.Context, marshaler runtime.Ma protoReq ExportNodeRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/notifications.pb.go b/generated/api/v1/notifications.pb.go index 77363409576f5..0847b3d8d64b5 100644 --- a/generated/api/v1/notifications.pb.go +++ b/generated/api/v1/notifications.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/notifications.proto diff --git a/generated/api/v1/notifier_service.pb.go b/generated/api/v1/notifier_service.pb.go index 927826b64062e..c39869c4bfcc3 100644 --- a/generated/api/v1/notifier_service.pb.go +++ b/generated/api/v1/notifier_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/notifier_service.proto diff --git a/generated/api/v1/notifier_service.pb.gw.go b/generated/api/v1/notifier_service.pb.gw.go index ad04be835cf4a..a6efe55dc4d07 100644 --- a/generated/api/v1/notifier_service.pb.gw.go +++ b/generated/api/v1/notifier_service.pb.gw.go @@ -42,7 +42,9 @@ func request_NotifierService_GetNotifier_0(ctx context.Context, marshaler runtim metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -78,7 +80,9 @@ func request_NotifierService_GetNotifiers_0(ctx context.Context, marshaler runti protoReq GetNotifiersRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetNotifiers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -101,6 +105,9 @@ func request_NotifierService_PutNotifier_0(ctx context.Context, marshaler runtim if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -142,6 +149,9 @@ func request_NotifierService_PostNotifier_0(ctx context.Context, marshaler runti if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostNotifier(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -166,6 +176,9 @@ func request_NotifierService_TestNotifier_0(ctx context.Context, marshaler runti if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.TestNotifier(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -190,7 +203,9 @@ func request_NotifierService_DeleteNotifier_0(ctx context.Context, marshaler run metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -242,6 +257,9 @@ func request_NotifierService_UpdateNotifier_0(ctx context.Context, marshaler run if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["notifier.id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "notifier.id") @@ -283,6 +301,9 @@ func request_NotifierService_TestUpdatedNotifier_0(ctx context.Context, marshale if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.TestUpdatedNotifier(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/pagination.pb.go b/generated/api/v1/pagination.pb.go index 19d0a01eed326..e201bc6b14f19 100644 --- a/generated/api/v1/pagination.pb.go +++ b/generated/api/v1/pagination.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/pagination.proto diff --git a/generated/api/v1/ping_service.pb.go b/generated/api/v1/ping_service.pb.go index 38dd1faeb021a..4648ff87fae63 100644 --- a/generated/api/v1/ping_service.pb.go +++ b/generated/api/v1/ping_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/ping_service.proto diff --git a/generated/api/v1/ping_service.pb.gw.go b/generated/api/v1/ping_service.pb.gw.go index c3c08abdd724d..24e298ade5fc6 100644 --- a/generated/api/v1/ping_service.pb.gw.go +++ b/generated/api/v1/ping_service.pb.gw.go @@ -40,7 +40,9 @@ func request_PingService_Ping_0(ctx context.Context, marshaler runtime.Marshaler protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.Ping(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/pod_service.pb.go b/generated/api/v1/pod_service.pb.go index 6cde2a340103a..08d963f0aba86 100644 --- a/generated/api/v1/pod_service.pb.go +++ b/generated/api/v1/pod_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/pod_service.proto diff --git a/generated/api/v1/pod_service.pb.gw.go b/generated/api/v1/pod_service.pb.gw.go index 9b82a56e8ec22..39b12fc48f088 100644 --- a/generated/api/v1/pod_service.pb.gw.go +++ b/generated/api/v1/pod_service.pb.gw.go @@ -42,7 +42,9 @@ func request_PodService_GetPods_0(ctx context.Context, marshaler runtime.Marshal protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -75,7 +77,9 @@ func request_PodService_ExportPods_0(ctx context.Context, marshaler runtime.Mars protoReq ExportPodRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/policy_category_service.pb.go b/generated/api/v1/policy_category_service.pb.go index 1aecbc7e49cba..0f875ad2c8add 100644 --- a/generated/api/v1/policy_category_service.pb.go +++ b/generated/api/v1/policy_category_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/policy_category_service.proto diff --git a/generated/api/v1/policy_category_service.pb.gw.go b/generated/api/v1/policy_category_service.pb.gw.go index 3de44110a6fd1..86e759ec0dbdc 100644 --- a/generated/api/v1/policy_category_service.pb.gw.go +++ b/generated/api/v1/policy_category_service.pb.gw.go @@ -41,7 +41,9 @@ func request_PolicyCategoryService_GetPolicyCategory_0(ctx context.Context, mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_PolicyCategoryService_GetPolicyCategories_0(ctx context.Context, ma protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -113,6 +117,9 @@ func request_PolicyCategoryService_PostPolicyCategory_0(ctx context.Context, mar if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.PolicyCategory); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostPolicyCategory(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -137,6 +144,9 @@ func request_PolicyCategoryService_RenamePolicyCategory_0(ctx context.Context, m if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RenamePolicyCategory(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -159,7 +169,9 @@ func request_PolicyCategoryService_DeletePolicyCategory_0(ctx context.Context, m metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/policy_service.pb.go b/generated/api/v1/policy_service.pb.go index 7c9b86e4ee1ad..dc544410b3c49 100644 --- a/generated/api/v1/policy_service.pb.go +++ b/generated/api/v1/policy_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/policy_service.proto diff --git a/generated/api/v1/policy_service.pb.gw.go b/generated/api/v1/policy_service.pb.gw.go index 4b1d7642bcb1b..2477addfe0469 100644 --- a/generated/api/v1/policy_service.pb.gw.go +++ b/generated/api/v1/policy_service.pb.gw.go @@ -42,7 +42,9 @@ func request_PolicyService_GetPolicy_0(ctx context.Context, marshaler runtime.Ma metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -81,7 +83,9 @@ func request_PolicyService_GetPolicyMitreVectors_0(ctx context.Context, marshale metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -131,7 +135,9 @@ func request_PolicyService_ListPolicies_0(ctx context.Context, marshaler runtime protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -167,6 +173,9 @@ func request_PolicyService_PostPolicy_0(ctx context.Context, marshaler runtime.M if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Policy); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -204,6 +213,9 @@ func request_PolicyService_PutPolicy_0(ctx context.Context, marshaler runtime.Ma if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -246,6 +258,9 @@ func request_PolicyService_PatchPolicy_0(ctx context.Context, marshaler runtime. if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -285,7 +300,9 @@ func request_PolicyService_DeletePolicy_0(ctx context.Context, marshaler runtime metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -325,6 +342,9 @@ func request_PolicyService_EnableDisablePolicyNotification_0(ctx context.Context if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["policy_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "policy_id") @@ -363,7 +383,9 @@ func request_PolicyService_ReassessPolicies_0(ctx context.Context, marshaler run protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ReassessPolicies(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -385,6 +407,9 @@ func request_PolicyService_DryRunPolicy_0(ctx context.Context, marshaler runtime if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.DryRunPolicy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -409,6 +434,9 @@ func request_PolicyService_SubmitDryRunPolicyJob_0(ctx context.Context, marshale if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.SubmitDryRunPolicyJob(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -431,7 +459,9 @@ func request_PolicyService_QueryDryRunJobStatus_0(ctx context.Context, marshaler metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["job_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "job_id") @@ -468,7 +498,9 @@ func request_PolicyService_CancelDryRunJob_0(ctx context.Context, marshaler runt metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["job_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "job_id") @@ -504,7 +536,9 @@ func request_PolicyService_GetPolicyCategories_0(ctx context.Context, marshaler protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetPolicyCategories(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -526,6 +560,9 @@ func request_PolicyService_ExportPolicies_0(ctx context.Context, marshaler runti if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ExportPolicies(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -550,6 +587,9 @@ func request_PolicyService_PolicyFromSearch_0(ctx context.Context, marshaler run if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PolicyFromSearch(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -574,6 +614,9 @@ func request_PolicyService_ImportPolicies_0(ctx context.Context, marshaler runti if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ImportPolicies(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/probe_upload_service.pb.go b/generated/api/v1/probe_upload_service.pb.go index 8ad9736082a80..7db622430ffcf 100644 --- a/generated/api/v1/probe_upload_service.pb.go +++ b/generated/api/v1/probe_upload_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/probe_upload_service.proto diff --git a/generated/api/v1/probe_upload_service.pb.gw.go b/generated/api/v1/probe_upload_service.pb.gw.go index 128a79b8e0de4..f35454c7cde77 100644 --- a/generated/api/v1/probe_upload_service.pb.gw.go +++ b/generated/api/v1/probe_upload_service.pb.gw.go @@ -42,7 +42,9 @@ func request_ProbeUploadService_GetExistingProbes_0(ctx context.Context, marshal protoReq GetExistingProbesRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/process_baseline_service.pb.go b/generated/api/v1/process_baseline_service.pb.go index 7104d05f16b34..e435d8061eae5 100644 --- a/generated/api/v1/process_baseline_service.pb.go +++ b/generated/api/v1/process_baseline_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/process_baseline_service.proto diff --git a/generated/api/v1/process_baseline_service.pb.gw.go b/generated/api/v1/process_baseline_service.pb.gw.go index 918f77365d9ad..de4e8508cb12e 100644 --- a/generated/api/v1/process_baseline_service.pb.gw.go +++ b/generated/api/v1/process_baseline_service.pb.gw.go @@ -42,7 +42,9 @@ func request_ProcessBaselineService_GetProcessBaseline_0(ctx context.Context, ma protoReq GetProcessBaselineRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -76,6 +78,9 @@ func request_ProcessBaselineService_UpdateProcessBaselines_0(ctx context.Context if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UpdateProcessBaselines(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -100,6 +105,9 @@ func request_ProcessBaselineService_LockProcessBaselines_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.LockProcessBaselines(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -123,7 +131,9 @@ func request_ProcessBaselineService_DeleteProcessBaselines_0(ctx context.Context protoReq DeleteProcessBaselinesRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/process_listening_on_port_service.pb.go b/generated/api/v1/process_listening_on_port_service.pb.go index 9d16b2e46d34b..ca0d7b2057d22 100644 --- a/generated/api/v1/process_listening_on_port_service.pb.go +++ b/generated/api/v1/process_listening_on_port_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/process_listening_on_port_service.proto diff --git a/generated/api/v1/process_listening_on_port_service.pb.gw.go b/generated/api/v1/process_listening_on_port_service.pb.gw.go index a41111434e7f2..ad3a52474e845 100644 --- a/generated/api/v1/process_listening_on_port_service.pb.gw.go +++ b/generated/api/v1/process_listening_on_port_service.pb.gw.go @@ -43,7 +43,9 @@ func request_ListeningEndpointsService_GetListeningEndpoints_0(ctx context.Conte metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["deployment_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "deployment_id") diff --git a/generated/api/v1/process_service.pb.go b/generated/api/v1/process_service.pb.go index f0e62b4fb32bc..13667c49d9dc8 100644 --- a/generated/api/v1/process_service.pb.go +++ b/generated/api/v1/process_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/process_service.proto diff --git a/generated/api/v1/process_service.pb.gw.go b/generated/api/v1/process_service.pb.gw.go index 616b32aadb381..f25925019271f 100644 --- a/generated/api/v1/process_service.pb.gw.go +++ b/generated/api/v1/process_service.pb.gw.go @@ -42,7 +42,9 @@ func request_ProcessService_CountProcesses_0(ctx context.Context, marshaler runt protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -74,7 +76,9 @@ func request_ProcessService_GetProcessesByDeployment_0(ctx context.Context, mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["deployment_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "deployment_id") @@ -111,7 +115,9 @@ func request_ProcessService_GetGroupedProcessByDeployment_0(ctx context.Context, metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["deployment_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "deployment_id") @@ -148,7 +154,9 @@ func request_ProcessService_GetGroupedProcessByDeploymentAndContainer_0(ctx cont metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["deployment_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "deployment_id") diff --git a/generated/api/v1/rbac_service.pb.go b/generated/api/v1/rbac_service.pb.go index 9a7de1fc9c585..d724bc6fa2490 100644 --- a/generated/api/v1/rbac_service.pb.go +++ b/generated/api/v1/rbac_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/rbac_service.proto diff --git a/generated/api/v1/rbac_service.pb.gw.go b/generated/api/v1/rbac_service.pb.gw.go index e1a3b47332fb8..83e52643eb37b 100644 --- a/generated/api/v1/rbac_service.pb.gw.go +++ b/generated/api/v1/rbac_service.pb.gw.go @@ -41,7 +41,9 @@ func request_RbacService_GetRole_0(ctx context.Context, marshaler runtime.Marsha metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_RbacService_ListRoles_0(ctx context.Context, marshaler runtime.Mars protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -111,7 +115,9 @@ func request_RbacService_GetRoleBinding_0(ctx context.Context, marshaler runtime metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -149,7 +155,9 @@ func request_RbacService_ListRoleBindings_0(ctx context.Context, marshaler runti protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -181,7 +189,9 @@ func request_RbacService_GetSubject_0(ctx context.Context, marshaler runtime.Mar metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -219,7 +229,9 @@ func request_RbacService_ListSubjects_0(ctx context.Context, marshaler runtime.M protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/report_configuration_service.pb.go b/generated/api/v1/report_configuration_service.pb.go index f6f1a650d732e..bd38a331752f6 100644 --- a/generated/api/v1/report_configuration_service.pb.go +++ b/generated/api/v1/report_configuration_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/report_configuration_service.proto diff --git a/generated/api/v1/report_configuration_service.pb.gw.go b/generated/api/v1/report_configuration_service.pb.gw.go index 19441a3fe5ee7..7c692d670a60e 100644 --- a/generated/api/v1/report_configuration_service.pb.gw.go +++ b/generated/api/v1/report_configuration_service.pb.gw.go @@ -42,7 +42,9 @@ func request_ReportConfigurationService_GetReportConfigurations_0(ctx context.Co protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -74,7 +76,9 @@ func request_ReportConfigurationService_GetReportConfiguration_0(ctx context.Con metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -113,6 +117,9 @@ func request_ReportConfigurationService_PostReportConfiguration_0(ctx context.Co if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostReportConfiguration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -138,6 +145,9 @@ func request_ReportConfigurationService_UpdateReportConfiguration_0(ctx context. if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -177,7 +187,9 @@ func request_ReportConfigurationService_DeleteReportConfiguration_0(ctx context. metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -215,7 +227,9 @@ func request_ReportConfigurationService_CountReportConfigurations_0(ctx context. protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/report_service.pb.go b/generated/api/v1/report_service.pb.go index 80c524ff12135..758951ad3d8b8 100644 --- a/generated/api/v1/report_service.pb.go +++ b/generated/api/v1/report_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/report_service.proto diff --git a/generated/api/v1/report_service.pb.gw.go b/generated/api/v1/report_service.pb.gw.go index 9cae8b14aa269..a66e4b832751e 100644 --- a/generated/api/v1/report_service.pb.gw.go +++ b/generated/api/v1/report_service.pb.gw.go @@ -41,7 +41,9 @@ func request_ReportService_RunReport_0(ctx context.Context, marshaler runtime.Ma metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/resource_collection_service.pb.go b/generated/api/v1/resource_collection_service.pb.go index 06e380c766163..0527180658a81 100644 --- a/generated/api/v1/resource_collection_service.pb.go +++ b/generated/api/v1/resource_collection_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/resource_collection_service.proto diff --git a/generated/api/v1/resource_collection_service.pb.gw.go b/generated/api/v1/resource_collection_service.pb.gw.go index 1efc21590ecb6..6de4f6646b426 100644 --- a/generated/api/v1/resource_collection_service.pb.gw.go +++ b/generated/api/v1/resource_collection_service.pb.gw.go @@ -40,7 +40,9 @@ func request_CollectionService_ListCollectionSelectors_0(ctx context.Context, ma protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ListCollectionSelectors(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -62,7 +64,9 @@ func request_CollectionService_GetCollection_0(ctx context.Context, marshaler ru metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -112,7 +116,9 @@ func request_CollectionService_GetCollectionCount_0(ctx context.Context, marshal protoReq GetCollectionCountRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -146,6 +152,9 @@ func request_CollectionService_CreateCollection_0(ctx context.Context, marshaler if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.CreateCollection(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -171,6 +180,9 @@ func request_CollectionService_UpdateCollection_0(ctx context.Context, marshaler if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -211,7 +223,9 @@ func request_CollectionService_ListCollections_0(ctx context.Context, marshaler protoReq ListCollectionsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -243,7 +257,9 @@ func request_CollectionService_DeleteCollection_0(ctx context.Context, marshaler metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -282,6 +298,9 @@ func request_CollectionService_DryRunCollection_0(ctx context.Context, marshaler if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.DryRunCollection(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/role_service.pb.go b/generated/api/v1/role_service.pb.go index 7403312ed9ce0..860e7bc6d5550 100644 --- a/generated/api/v1/role_service.pb.go +++ b/generated/api/v1/role_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/role_service.proto diff --git a/generated/api/v1/role_service.pb.gw.go b/generated/api/v1/role_service.pb.gw.go index a292c97a1e13e..69f19e28bf71c 100644 --- a/generated/api/v1/role_service.pb.gw.go +++ b/generated/api/v1/role_service.pb.gw.go @@ -41,7 +41,9 @@ func request_RoleService_GetRoles_0(ctx context.Context, marshaler runtime.Marsh protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetRoles(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -61,7 +63,9 @@ func request_RoleService_GetRole_0(ctx context.Context, marshaler runtime.Marsha metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -97,7 +101,9 @@ func request_RoleService_GetMyPermissions_0(ctx context.Context, marshaler runti protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetMyPermissions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -120,6 +126,9 @@ func request_RoleService_CreateRole_0(ctx context.Context, marshaler runtime.Mar if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Role); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") @@ -162,6 +171,9 @@ func request_RoleService_UpdateRole_0(ctx context.Context, marshaler runtime.Mar if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") @@ -201,7 +213,9 @@ func request_RoleService_DeleteRole_0(ctx context.Context, marshaler runtime.Mar metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -237,7 +251,9 @@ func request_RoleService_GetResources_0(ctx context.Context, marshaler runtime.M protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetResources(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -257,7 +273,9 @@ func request_RoleService_GetPermissionSet_0(ctx context.Context, marshaler runti metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -293,7 +311,9 @@ func request_RoleService_ListPermissionSets_0(ctx context.Context, marshaler run protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ListPermissionSets(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -315,6 +335,9 @@ func request_RoleService_PostPermissionSet_0(ctx context.Context, marshaler runt if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostPermissionSet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -340,6 +363,9 @@ func request_RoleService_PutPermissionSet_0(ctx context.Context, marshaler runti if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -379,7 +405,9 @@ func request_RoleService_DeletePermissionSet_0(ctx context.Context, marshaler ru metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -416,7 +444,9 @@ func request_RoleService_GetSimpleAccessScope_0(ctx context.Context, marshaler r metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -452,7 +482,9 @@ func request_RoleService_ListSimpleAccessScopes_0(ctx context.Context, marshaler protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ListSimpleAccessScopes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -474,6 +506,9 @@ func request_RoleService_PostSimpleAccessScope_0(ctx context.Context, marshaler if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostSimpleAccessScope(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -499,6 +534,9 @@ func request_RoleService_PutSimpleAccessScope_0(ctx context.Context, marshaler r if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -538,7 +576,9 @@ func request_RoleService_DeleteSimpleAccessScope_0(ctx context.Context, marshale metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -579,6 +619,9 @@ func request_RoleService_ComputeEffectiveAccessScope_0(ctx context.Context, mars if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.AccessScope); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -614,7 +657,9 @@ func request_RoleService_GetClustersForPermissions_0(ctx context.Context, marsha protoReq GetClustersForPermissionsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -648,7 +693,9 @@ func request_RoleService_GetNamespacesForClusterAndPermissions_0(ctx context.Con metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") diff --git a/generated/api/v1/search_service.pb.go b/generated/api/v1/search_service.pb.go index 70077aeb33821..ac0191ceab942 100644 --- a/generated/api/v1/search_service.pb.go +++ b/generated/api/v1/search_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/search_service.proto diff --git a/generated/api/v1/search_service.pb.gw.go b/generated/api/v1/search_service.pb.gw.go index b5a3bee89c681..d3552e35e4529 100644 --- a/generated/api/v1/search_service.pb.gw.go +++ b/generated/api/v1/search_service.pb.gw.go @@ -42,7 +42,9 @@ func request_SearchService_Search_0(ctx context.Context, marshaler runtime.Marsh protoReq RawSearchRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -75,7 +77,9 @@ func request_SearchService_Options_0(ctx context.Context, marshaler runtime.Mars protoReq SearchOptionsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -108,7 +112,9 @@ func request_SearchService_Autocomplete_0(ctx context.Context, marshaler runtime protoReq RawSearchRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/secret_service.pb.go b/generated/api/v1/secret_service.pb.go index c0c88a28e0e0f..d6f594afbcd60 100644 --- a/generated/api/v1/secret_service.pb.go +++ b/generated/api/v1/secret_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/secret_service.proto diff --git a/generated/api/v1/secret_service.pb.gw.go b/generated/api/v1/secret_service.pb.gw.go index b33711f295e38..1895e60057754 100644 --- a/generated/api/v1/secret_service.pb.gw.go +++ b/generated/api/v1/secret_service.pb.gw.go @@ -41,7 +41,9 @@ func request_SecretService_GetSecret_0(ctx context.Context, marshaler runtime.Ma metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_SecretService_CountSecrets_0(ctx context.Context, marshaler runtime protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -112,7 +116,9 @@ func request_SecretService_ListSecrets_0(ctx context.Context, marshaler runtime. protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/sensor_upgrade_service.pb.go b/generated/api/v1/sensor_upgrade_service.pb.go index 54770c654f6c3..c0b791f82ed0e 100644 --- a/generated/api/v1/sensor_upgrade_service.pb.go +++ b/generated/api/v1/sensor_upgrade_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/sensor_upgrade_service.proto diff --git a/generated/api/v1/sensor_upgrade_service.pb.gw.go b/generated/api/v1/sensor_upgrade_service.pb.gw.go index a0e3402afe02f..77e2081bf85f1 100644 --- a/generated/api/v1/sensor_upgrade_service.pb.gw.go +++ b/generated/api/v1/sensor_upgrade_service.pb.gw.go @@ -40,7 +40,9 @@ func request_SensorUpgradeService_GetSensorUpgradeConfig_0(ctx context.Context, protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetSensorUpgradeConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -62,6 +64,9 @@ func request_SensorUpgradeService_UpdateSensorUpgradeConfig_0(ctx context.Contex if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.UpdateSensorUpgradeConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -84,7 +89,9 @@ func request_SensorUpgradeService_TriggerSensorUpgrade_0(ctx context.Context, ma metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -121,7 +128,9 @@ func request_SensorUpgradeService_TriggerSensorCertRotation_0(ctx context.Contex metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/service_account_service.pb.go b/generated/api/v1/service_account_service.pb.go index 6e2a594740f73..2b6a590890069 100644 --- a/generated/api/v1/service_account_service.pb.go +++ b/generated/api/v1/service_account_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/service_account_service.proto diff --git a/generated/api/v1/service_account_service.pb.gw.go b/generated/api/v1/service_account_service.pb.gw.go index 4f25643aafc89..8958f848a264f 100644 --- a/generated/api/v1/service_account_service.pb.gw.go +++ b/generated/api/v1/service_account_service.pb.gw.go @@ -41,7 +41,9 @@ func request_ServiceAccountService_GetServiceAccount_0(ctx context.Context, mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_ServiceAccountService_ListServiceAccounts_0(ctx context.Context, ma protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v1/service_identity_service.pb.go b/generated/api/v1/service_identity_service.pb.go index 7ebc45c68547d..dbf47ac4a2cc6 100644 --- a/generated/api/v1/service_identity_service.pb.go +++ b/generated/api/v1/service_identity_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/service_identity_service.proto diff --git a/generated/api/v1/service_identity_service.pb.gw.go b/generated/api/v1/service_identity_service.pb.gw.go index 230cd69efecbd..1a41ee5bc2e12 100644 --- a/generated/api/v1/service_identity_service.pb.gw.go +++ b/generated/api/v1/service_identity_service.pb.gw.go @@ -40,7 +40,9 @@ func request_ServiceIdentityService_GetServiceIdentities_0(ctx context.Context, protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetServiceIdentities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -62,6 +64,9 @@ func request_ServiceIdentityService_CreateServiceIdentity_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.CreateServiceIdentity(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -83,7 +88,9 @@ func request_ServiceIdentityService_GetAuthorities_0(ctx context.Context, marsha protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetAuthorities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/signal.pb.go b/generated/api/v1/signal.pb.go index 4012fcf2a0a46..42e0c194cb07f 100644 --- a/generated/api/v1/signal.pb.go +++ b/generated/api/v1/signal.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/signal.proto diff --git a/generated/api/v1/signature_integration_service.pb.go b/generated/api/v1/signature_integration_service.pb.go index 95fb9c33d26b9..5d80f1bdf76d3 100644 --- a/generated/api/v1/signature_integration_service.pb.go +++ b/generated/api/v1/signature_integration_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/signature_integration_service.proto diff --git a/generated/api/v1/signature_integration_service.pb.gw.go b/generated/api/v1/signature_integration_service.pb.gw.go index 691de720a2a24..9159179d308eb 100644 --- a/generated/api/v1/signature_integration_service.pb.gw.go +++ b/generated/api/v1/signature_integration_service.pb.gw.go @@ -41,7 +41,9 @@ func request_SignatureIntegrationService_ListSignatureIntegrations_0(ctx context protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ListSignatureIntegrations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -61,7 +63,9 @@ func request_SignatureIntegrationService_GetSignatureIntegration_0(ctx context.C metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -100,6 +104,9 @@ func request_SignatureIntegrationService_PostSignatureIntegration_0(ctx context. if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostSignatureIntegration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -125,6 +132,9 @@ func request_SignatureIntegrationService_PutSignatureIntegration_0(ctx context.C if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -164,7 +174,9 @@ func request_SignatureIntegrationService_DeleteSignatureIntegration_0(ctx contex metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/telemetry_service.pb.go b/generated/api/v1/telemetry_service.pb.go index db69a968cdb2e..e63e6274fad7d 100644 --- a/generated/api/v1/telemetry_service.pb.go +++ b/generated/api/v1/telemetry_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/telemetry_service.proto diff --git a/generated/api/v1/telemetry_service.pb.gw.go b/generated/api/v1/telemetry_service.pb.gw.go index 14dbf9a7c1799..a3a4be99d03a9 100644 --- a/generated/api/v1/telemetry_service.pb.gw.go +++ b/generated/api/v1/telemetry_service.pb.gw.go @@ -40,7 +40,9 @@ func request_TelemetryService_GetTelemetryConfiguration_0(ctx context.Context, m protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetTelemetryConfiguration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -62,6 +64,9 @@ func request_TelemetryService_ConfigureTelemetry_0(ctx context.Context, marshale if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ConfigureTelemetry(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -83,7 +88,9 @@ func request_TelemetryService_GetConfig_0(ctx context.Context, marshaler runtime protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -102,7 +109,9 @@ func request_TelemetryService_PostConfigReload_0(ctx context.Context, marshaler protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostConfigReload(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/user_service.pb.go b/generated/api/v1/user_service.pb.go index f21452851f320..65cca961f5955 100644 --- a/generated/api/v1/user_service.pb.go +++ b/generated/api/v1/user_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/user_service.proto diff --git a/generated/api/v1/user_service.pb.gw.go b/generated/api/v1/user_service.pb.gw.go index b3fb87b2a80ae..231759af351f3 100644 --- a/generated/api/v1/user_service.pb.gw.go +++ b/generated/api/v1/user_service.pb.gw.go @@ -40,7 +40,9 @@ func request_UserService_GetUsers_0(ctx context.Context, marshaler runtime.Marsh protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetUsers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -60,7 +62,9 @@ func request_UserService_GetUser_0(ctx context.Context, marshaler runtime.Marsha metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -96,7 +100,9 @@ func request_UserService_GetUsersAttributes_0(ctx context.Context, marshaler run protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.GetUsersAttributes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/api/v1/vuln_mgmt_req_service.pb.go b/generated/api/v1/vuln_mgmt_req_service.pb.go index 1c90690ffc38d..7d6f81d51ba08 100644 --- a/generated/api/v1/vuln_mgmt_req_service.pb.go +++ b/generated/api/v1/vuln_mgmt_req_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/vuln_mgmt_req_service.proto diff --git a/generated/api/v1/vuln_mgmt_req_service.pb.gw.go b/generated/api/v1/vuln_mgmt_req_service.pb.gw.go index e12d61e07aab8..b76a72077a446 100644 --- a/generated/api/v1/vuln_mgmt_req_service.pb.gw.go +++ b/generated/api/v1/vuln_mgmt_req_service.pb.gw.go @@ -41,7 +41,9 @@ func request_VulnerabilityRequestService_GetVulnerabilityRequest_0(ctx context.C metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_VulnerabilityRequestService_ListVulnerabilityRequests_0(ctx context protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -113,6 +117,9 @@ func request_VulnerabilityRequestService_DeferVulnerability_0(ctx context.Contex if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.DeferVulnerability(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -137,6 +144,9 @@ func request_VulnerabilityRequestService_FalsePositiveVulnerability_0(ctx contex if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.FalsePositiveVulnerability(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -162,6 +172,9 @@ func request_VulnerabilityRequestService_ApproveVulnerabilityRequest_0(ctx conte if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -204,6 +217,9 @@ func request_VulnerabilityRequestService_DenyVulnerabilityRequest_0(ctx context. if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -246,6 +262,9 @@ func request_VulnerabilityRequestService_UpdateVulnerabilityRequest_0(ctx contex if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -285,7 +304,9 @@ func request_VulnerabilityRequestService_UndoVulnerabilityRequest_0(ctx context. metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -322,7 +343,9 @@ func request_VulnerabilityRequestService_DeleteVulnerabilityRequest_0(ctx contex metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v1/vuln_mgmt_service.pb.go b/generated/api/v1/vuln_mgmt_service.pb.go index 220f17c81f8a8..4213e5e4ab00d 100644 --- a/generated/api/v1/vuln_mgmt_service.pb.go +++ b/generated/api/v1/vuln_mgmt_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v1/vuln_mgmt_service.proto diff --git a/generated/api/v1/vuln_mgmt_service.pb.gw.go b/generated/api/v1/vuln_mgmt_service.pb.gw.go index 7e79a1bfaea09..211534deb1394 100644 --- a/generated/api/v1/vuln_mgmt_service.pb.gw.go +++ b/generated/api/v1/vuln_mgmt_service.pb.gw.go @@ -42,7 +42,9 @@ func request_VulnMgmtService_VulnMgmtExportWorkloads_0(ctx context.Context, mars protoReq VulnMgmtExportWorkloadsRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v2/common.pb.go b/generated/api/v2/common.pb.go index dc8aa3b0b12f1..92fdce76e996c 100644 --- a/generated/api/v2/common.pb.go +++ b/generated/api/v2/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/common.proto diff --git a/generated/api/v2/compliance_common.pb.go b/generated/api/v2/compliance_common.pb.go index d3b1aef88c37a..db1ab969cb485 100644 --- a/generated/api/v2/compliance_common.pb.go +++ b/generated/api/v2/compliance_common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/compliance_common.proto diff --git a/generated/api/v2/compliance_integration_service.pb.go b/generated/api/v2/compliance_integration_service.pb.go index aec8c3d6d7f1f..588e84eafca60 100644 --- a/generated/api/v2/compliance_integration_service.pb.go +++ b/generated/api/v2/compliance_integration_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/compliance_integration_service.proto diff --git a/generated/api/v2/compliance_integration_service.pb.gw.go b/generated/api/v2/compliance_integration_service.pb.gw.go index 116cc2676d03a..b3ae5fb8f858a 100644 --- a/generated/api/v2/compliance_integration_service.pb.gw.go +++ b/generated/api/v2/compliance_integration_service.pb.gw.go @@ -42,7 +42,9 @@ func request_ComplianceIntegrationService_ListComplianceIntegrations_0(ctx conte protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v2/compliance_profile_service.pb.go b/generated/api/v2/compliance_profile_service.pb.go index 0bfebedc066b5..baff9f874189b 100644 --- a/generated/api/v2/compliance_profile_service.pb.go +++ b/generated/api/v2/compliance_profile_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/compliance_profile_service.proto diff --git a/generated/api/v2/compliance_profile_service.pb.gw.go b/generated/api/v2/compliance_profile_service.pb.gw.go index 7990955c49026..76840ac44f315 100644 --- a/generated/api/v2/compliance_profile_service.pb.gw.go +++ b/generated/api/v2/compliance_profile_service.pb.gw.go @@ -41,7 +41,9 @@ func request_ComplianceProfileService_GetComplianceProfile_0(ctx context.Context metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_ComplianceProfileService_ListComplianceProfiles_0(ctx context.Conte protoReq ProfilesForClusterRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -112,7 +116,9 @@ func request_ComplianceProfileService_ListProfileSummaries_0(ctx context.Context protoReq ClustersProfileSummaryRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/generated/api/v2/compliance_results_service.pb.go b/generated/api/v2/compliance_results_service.pb.go index 599da4bb9b7db..fc0e9d8f8b084 100644 --- a/generated/api/v2/compliance_results_service.pb.go +++ b/generated/api/v2/compliance_results_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/compliance_results_service.proto diff --git a/generated/api/v2/compliance_results_service.pb.gw.go b/generated/api/v2/compliance_results_service.pb.gw.go index cd5bd6dfa585a..1e74de8c07eb7 100644 --- a/generated/api/v2/compliance_results_service.pb.gw.go +++ b/generated/api/v2/compliance_results_service.pb.gw.go @@ -41,7 +41,9 @@ func request_ComplianceResultsService_GetComplianceScanCheckResult_0(ctx context metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_ComplianceResultsService_GetComplianceScanResults_0(ctx context.Con protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -113,7 +117,9 @@ func request_ComplianceResultsService_GetComplianceScanConfigurationResults_0(ct metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["scan_config_name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "scan_config_name") @@ -164,7 +170,9 @@ func request_ComplianceResultsService_GetComplianceProfileResults_0(ctx context. metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["profile_name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "profile_name") @@ -215,7 +223,9 @@ func request_ComplianceResultsService_GetComplianceProfileCheckResult_0(ctx cont metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["profile_name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "profile_name") @@ -282,7 +292,9 @@ func request_ComplianceResultsService_GetComplianceProfileClusterResults_0(ctx c metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["profile_name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "profile_name") @@ -349,7 +361,9 @@ func request_ComplianceResultsService_GetComplianceProfileCheckDetails_0(ctx con metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["profile_name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "profile_name") diff --git a/generated/api/v2/compliance_results_stats_service.pb.go b/generated/api/v2/compliance_results_stats_service.pb.go index 68c41457b11be..200871e0c7c30 100644 --- a/generated/api/v2/compliance_results_stats_service.pb.go +++ b/generated/api/v2/compliance_results_stats_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/compliance_results_stats_service.proto diff --git a/generated/api/v2/compliance_results_stats_service.pb.gw.go b/generated/api/v2/compliance_results_stats_service.pb.gw.go index 321ace872b734..a5a101f60df19 100644 --- a/generated/api/v2/compliance_results_stats_service.pb.gw.go +++ b/generated/api/v2/compliance_results_stats_service.pb.gw.go @@ -43,7 +43,9 @@ func request_ComplianceResultsStatsService_GetComplianceProfileStats_0(ctx conte metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["profile_name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "profile_name") @@ -93,7 +95,9 @@ func request_ComplianceResultsStatsService_GetComplianceProfilesStats_0(ctx cont protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -127,7 +131,9 @@ func request_ComplianceResultsStatsService_GetComplianceProfilesClusterStats_0(c metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -178,7 +184,9 @@ func request_ComplianceResultsStatsService_GetComplianceProfileCheckStats_0(ctx metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["profile_name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "profile_name") @@ -245,7 +253,9 @@ func request_ComplianceResultsStatsService_GetComplianceClusterScanStats_0(ctx c metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") @@ -295,7 +305,9 @@ func request_ComplianceResultsStatsService_GetComplianceOverallClusterStats_0(ct protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -329,7 +341,9 @@ func request_ComplianceResultsStatsService_GetComplianceClusterStats_0(ctx conte metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["profile_name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "profile_name") diff --git a/generated/api/v2/compliance_rule_service.pb.go b/generated/api/v2/compliance_rule_service.pb.go index 3f5fd3c328fcd..a7f9966ccb335 100644 --- a/generated/api/v2/compliance_rule_service.pb.go +++ b/generated/api/v2/compliance_rule_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/compliance_rule_service.proto diff --git a/generated/api/v2/compliance_rule_service.pb.gw.go b/generated/api/v2/compliance_rule_service.pb.gw.go index fc5decfbbc025..4a934175a8038 100644 --- a/generated/api/v2/compliance_rule_service.pb.gw.go +++ b/generated/api/v2/compliance_rule_service.pb.gw.go @@ -43,7 +43,9 @@ func request_ComplianceRuleService_GetComplianceRule_0(ctx context.Context, mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["rule_name"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "rule_name") diff --git a/generated/api/v2/compliance_scan_configuration_service.pb.go b/generated/api/v2/compliance_scan_configuration_service.pb.go index ea3fdfc679e9e..4f6c7792b8db8 100644 --- a/generated/api/v2/compliance_scan_configuration_service.pb.go +++ b/generated/api/v2/compliance_scan_configuration_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/compliance_scan_configuration_service.proto diff --git a/generated/api/v2/compliance_scan_configuration_service.pb.gw.go b/generated/api/v2/compliance_scan_configuration_service.pb.gw.go index 7aa004a3ebb8c..67b0864a0e3f9 100644 --- a/generated/api/v2/compliance_scan_configuration_service.pb.gw.go +++ b/generated/api/v2/compliance_scan_configuration_service.pb.gw.go @@ -42,7 +42,9 @@ func request_ComplianceScanConfigurationService_ListComplianceScanConfigurations protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -74,7 +76,9 @@ func request_ComplianceScanConfigurationService_GetComplianceScanConfiguration_0 metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -113,6 +117,9 @@ func request_ComplianceScanConfigurationService_CreateComplianceScanConfiguratio if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.CreateComplianceScanConfiguration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -138,6 +145,9 @@ func request_ComplianceScanConfigurationService_UpdateComplianceScanConfiguratio if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -177,7 +187,9 @@ func request_ComplianceScanConfigurationService_DeleteComplianceScanConfiguratio metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -214,7 +226,9 @@ func request_ComplianceScanConfigurationService_RunComplianceScanConfiguration_0 metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -253,6 +267,9 @@ func request_ComplianceScanConfigurationService_RunReport_0(ctx context.Context, if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RunReport(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -277,7 +294,9 @@ func request_ComplianceScanConfigurationService_GetReportHistory_0(ctx context.C metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -328,7 +347,9 @@ func request_ComplianceScanConfigurationService_GetMyReportHistory_0(ctx context metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -377,7 +398,9 @@ func request_ComplianceScanConfigurationService_DeleteReport_0(ctx context.Conte metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -415,7 +438,9 @@ func request_ComplianceScanConfigurationService_ListComplianceScanConfigProfiles protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -449,7 +474,9 @@ func request_ComplianceScanConfigurationService_ListComplianceScanConfigClusterP metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["cluster_id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") diff --git a/generated/api/v2/pagination.pb.go b/generated/api/v2/pagination.pb.go index ede7774d1da19..29d8d526f0d2a 100644 --- a/generated/api/v2/pagination.pb.go +++ b/generated/api/v2/pagination.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/pagination.proto diff --git a/generated/api/v2/report_service.pb.go b/generated/api/v2/report_service.pb.go index e00ea7551ab68..e1770f6272ee3 100644 --- a/generated/api/v2/report_service.pb.go +++ b/generated/api/v2/report_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/report_service.proto diff --git a/generated/api/v2/report_service.pb.gw.go b/generated/api/v2/report_service.pb.gw.go index 0f5c1ee869532..a90b6f6db869a 100644 --- a/generated/api/v2/report_service.pb.gw.go +++ b/generated/api/v2/report_service.pb.gw.go @@ -43,6 +43,9 @@ func request_ReportService_PostReportConfiguration_0(ctx context.Context, marsha if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.PostReportConfiguration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -68,6 +71,9 @@ func request_ReportService_UpdateReportConfiguration_0(ctx context.Context, mars if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -108,7 +114,9 @@ func request_ReportService_ListReportConfigurations_0(ctx context.Context, marsh protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -141,7 +149,9 @@ func request_ReportService_CountReportConfigurations_0(ctx context.Context, mars protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -173,7 +183,9 @@ func request_ReportService_GetReportConfiguration_0(ctx context.Context, marshal metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -210,7 +222,9 @@ func request_ReportService_DeleteReportConfiguration_0(ctx context.Context, mars metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -247,7 +261,9 @@ func request_ReportService_GetReportStatus_0(ctx context.Context, marshaler runt metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -286,7 +302,9 @@ func request_ReportService_GetReportHistory_0(ctx context.Context, marshaler run metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -337,7 +355,9 @@ func request_ReportService_GetMyReportHistory_0(ctx context.Context, marshaler r metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -388,6 +408,9 @@ func request_ReportService_RunReport_0(ctx context.Context, marshaler runtime.Ma if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.RunReport(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -410,7 +433,9 @@ func request_ReportService_CancelReport_0(ctx context.Context, marshaler runtime metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -447,7 +472,9 @@ func request_ReportService_DeleteReport_0(ctx context.Context, marshaler runtime metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v2/search_query.pb.go b/generated/api/v2/search_query.pb.go index 8eb54105f0513..aaafd59630d4c 100644 --- a/generated/api/v2/search_query.pb.go +++ b/generated/api/v2/search_query.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/search_query.proto diff --git a/generated/api/v2/user.pb.go b/generated/api/v2/user.pb.go index e7e8e24bb213e..bddd1ffd99b6a 100644 --- a/generated/api/v2/user.pb.go +++ b/generated/api/v2/user.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/user.proto diff --git a/generated/api/v2/vuln_exception_service.pb.go b/generated/api/v2/vuln_exception_service.pb.go index 87be619b4b554..1a0016e86b7d5 100644 --- a/generated/api/v2/vuln_exception_service.pb.go +++ b/generated/api/v2/vuln_exception_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/vuln_exception_service.proto diff --git a/generated/api/v2/vuln_exception_service.pb.gw.go b/generated/api/v2/vuln_exception_service.pb.gw.go index 9ee1d139725ab..c2cf3ff4bdc5c 100644 --- a/generated/api/v2/vuln_exception_service.pb.gw.go +++ b/generated/api/v2/vuln_exception_service.pb.gw.go @@ -41,7 +41,9 @@ func request_VulnerabilityExceptionService_GetVulnerabilityException_0(ctx conte metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -79,7 +81,9 @@ func request_VulnerabilityExceptionService_ListVulnerabilityExceptions_0(ctx con protoReq RawQuery metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -113,6 +117,9 @@ func request_VulnerabilityExceptionService_CreateDeferVulnerabilityException_0(c if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.CreateDeferVulnerabilityException(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -137,6 +144,9 @@ func request_VulnerabilityExceptionService_CreateFalsePositiveVulnerabilityExcep if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.CreateFalsePositiveVulnerabilityException(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -162,6 +172,9 @@ func request_VulnerabilityExceptionService_ApproveVulnerabilityException_0(ctx c if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -204,6 +217,9 @@ func request_VulnerabilityExceptionService_DenyVulnerabilityException_0(ctx cont if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -246,6 +262,9 @@ func request_VulnerabilityExceptionService_UpdateVulnerabilityException_0(ctx co if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -285,7 +304,9 @@ func request_VulnerabilityExceptionService_CancelVulnerabilityException_0(ctx co metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -322,7 +343,9 @@ func request_VulnerabilityExceptionService_DeleteVulnerabilityException_0(ctx co metadata runtime.ServerMetadata err error ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } val, ok := pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") diff --git a/generated/api/v2/vuln_state.pb.go b/generated/api/v2/vuln_state.pb.go index dde7f1118fddd..ea0a9e46f9113 100644 --- a/generated/api/v2/vuln_state.pb.go +++ b/generated/api/v2/vuln_state.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: api/v2/vuln_state.proto diff --git a/generated/internalapi/central/auth.pb.go b/generated/internalapi/central/auth.pb.go index 36fc05853988d..cad51058504ae 100644 --- a/generated/internalapi/central/auth.pb.go +++ b/generated/internalapi/central/auth.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/auth.proto diff --git a/generated/internalapi/central/baseline_sync.pb.go b/generated/internalapi/central/baseline_sync.pb.go index 4a41cbedecf44..112d639bb268d 100644 --- a/generated/internalapi/central/baseline_sync.pb.go +++ b/generated/internalapi/central/baseline_sync.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/baseline_sync.proto diff --git a/generated/internalapi/central/cluster_config.pb.go b/generated/internalapi/central/cluster_config.pb.go index 0c7858a3dec6d..0563927571a2a 100644 --- a/generated/internalapi/central/cluster_config.pb.go +++ b/generated/internalapi/central/cluster_config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/cluster_config.proto diff --git a/generated/internalapi/central/cluster_metrics.pb.go b/generated/internalapi/central/cluster_metrics.pb.go index 0e9348a958cef..ab4adc02b8ea6 100644 --- a/generated/internalapi/central/cluster_metrics.pb.go +++ b/generated/internalapi/central/cluster_metrics.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/cluster_metrics.proto diff --git a/generated/internalapi/central/cluster_status.pb.go b/generated/internalapi/central/cluster_status.pb.go index 0c85f93cd3e6a..f9dcc27860178 100644 --- a/generated/internalapi/central/cluster_status.pb.go +++ b/generated/internalapi/central/cluster_status.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/cluster_status.proto diff --git a/generated/internalapi/central/compliance_operator.pb.go b/generated/internalapi/central/compliance_operator.pb.go index 1f4e914dde17b..2173dfe8733ad 100644 --- a/generated/internalapi/central/compliance_operator.pb.go +++ b/generated/internalapi/central/compliance_operator.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/compliance_operator.proto diff --git a/generated/internalapi/central/delegated_registry_config.pb.go b/generated/internalapi/central/delegated_registry_config.pb.go index 37a885708f361..6cfdce8a46fab 100644 --- a/generated/internalapi/central/delegated_registry_config.pb.go +++ b/generated/internalapi/central/delegated_registry_config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/delegated_registry_config.proto diff --git a/generated/internalapi/central/deployment_enhancement.pb.go b/generated/internalapi/central/deployment_enhancement.pb.go index 564b36e3e94a7..ae9d1e037591f 100644 --- a/generated/internalapi/central/deployment_enhancement.pb.go +++ b/generated/internalapi/central/deployment_enhancement.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/deployment_enhancement.proto diff --git a/generated/internalapi/central/development_service.pb.go b/generated/internalapi/central/development_service.pb.go index 03fcc79ffcc01..c725e4f0ba0e3 100644 --- a/generated/internalapi/central/development_service.pb.go +++ b/generated/internalapi/central/development_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/development_service.proto diff --git a/generated/internalapi/central/development_service.pb.gw.go b/generated/internalapi/central/development_service.pb.gw.go index 601b46c953902..1de6586c60742 100644 --- a/generated/internalapi/central/development_service.pb.gw.go +++ b/generated/internalapi/central/development_service.pb.gw.go @@ -43,6 +43,9 @@ func request_DevelopmentService_ReplicateImage_0(ctx context.Context, marshaler if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ReplicateImage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -66,7 +69,9 @@ func request_DevelopmentService_URLHasValidCert_0(ctx context.Context, marshaler protoReq URLHasValidCertRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -99,7 +104,9 @@ func request_DevelopmentService_RandomData_0(ctx context.Context, marshaler runt protoReq RandomDataRequest metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -130,7 +137,9 @@ func request_DevelopmentService_EnvVars_0(ctx context.Context, marshaler runtime protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.EnvVars(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -149,7 +158,9 @@ func request_DevelopmentService_ReconciliationStatsByCluster_0(ctx context.Conte protoReq Empty metadata runtime.ServerMetadata ) - io.Copy(io.Discard, req.Body) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } msg, err := client.ReconciliationStatsByCluster(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } diff --git a/generated/internalapi/central/hello.pb.go b/generated/internalapi/central/hello.pb.go index 823ffe9b905ee..9edf039e357bf 100644 --- a/generated/internalapi/central/hello.pb.go +++ b/generated/internalapi/central/hello.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/hello.proto diff --git a/generated/internalapi/central/image.pb.go b/generated/internalapi/central/image.pb.go index fc6b058df0e9b..582685c6c27dd 100644 --- a/generated/internalapi/central/image.pb.go +++ b/generated/internalapi/central/image.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/image.proto diff --git a/generated/internalapi/central/local_scanner.pb.go b/generated/internalapi/central/local_scanner.pb.go index 0f5c3331aa1f8..c911e96c5124c 100644 --- a/generated/internalapi/central/local_scanner.pb.go +++ b/generated/internalapi/central/local_scanner.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/local_scanner.proto diff --git a/generated/internalapi/central/network_baseline_sync.pb.go b/generated/internalapi/central/network_baseline_sync.pb.go index f3142228860a4..648f3ba3c3f59 100644 --- a/generated/internalapi/central/network_baseline_sync.pb.go +++ b/generated/internalapi/central/network_baseline_sync.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/network_baseline_sync.proto diff --git a/generated/internalapi/central/network_flow.pb.go b/generated/internalapi/central/network_flow.pb.go index 2d29f3f26ac3a..daf6c51e8f4c7 100644 --- a/generated/internalapi/central/network_flow.pb.go +++ b/generated/internalapi/central/network_flow.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/network_flow.proto diff --git a/generated/internalapi/central/policy_sync.pb.go b/generated/internalapi/central/policy_sync.pb.go index 0a24b2338bdd1..4a0f1359ba9e2 100644 --- a/generated/internalapi/central/policy_sync.pb.go +++ b/generated/internalapi/central/policy_sync.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/policy_sync.proto diff --git a/generated/internalapi/central/process_listening_on_ports_update.pb.go b/generated/internalapi/central/process_listening_on_ports_update.pb.go index 75a204ed22811..9bb355387bfd3 100644 --- a/generated/internalapi/central/process_listening_on_ports_update.pb.go +++ b/generated/internalapi/central/process_listening_on_ports_update.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/process_listening_on_ports_update.proto diff --git a/generated/internalapi/central/secured_cluster_cert_refresh.pb.go b/generated/internalapi/central/secured_cluster_cert_refresh.pb.go index 89a60c56b3186..5eee7915e7144 100644 --- a/generated/internalapi/central/secured_cluster_cert_refresh.pb.go +++ b/generated/internalapi/central/secured_cluster_cert_refresh.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/secured_cluster_cert_refresh.proto diff --git a/generated/internalapi/central/sensor_events.pb.go b/generated/internalapi/central/sensor_events.pb.go index d024b0dc92b64..be333c6c06be6 100644 --- a/generated/internalapi/central/sensor_events.pb.go +++ b/generated/internalapi/central/sensor_events.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/sensor_events.proto diff --git a/generated/internalapi/central/sensor_iservice.pb.go b/generated/internalapi/central/sensor_iservice.pb.go index bc485f30a5bb0..a5f24a6e60ca0 100644 --- a/generated/internalapi/central/sensor_iservice.pb.go +++ b/generated/internalapi/central/sensor_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/sensor_iservice.proto diff --git a/generated/internalapi/central/sensor_upgrade.pb.go b/generated/internalapi/central/sensor_upgrade.pb.go index 37980d82d709d..35f2c04f7a51e 100644 --- a/generated/internalapi/central/sensor_upgrade.pb.go +++ b/generated/internalapi/central/sensor_upgrade.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/sensor_upgrade.proto diff --git a/generated/internalapi/central/sensor_upgrade_ctrl_iservice.pb.go b/generated/internalapi/central/sensor_upgrade_ctrl_iservice.pb.go index 1a3b92efe2716..7106e5916036e 100644 --- a/generated/internalapi/central/sensor_upgrade_ctrl_iservice.pb.go +++ b/generated/internalapi/central/sensor_upgrade_ctrl_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/sensor_upgrade_ctrl_iservice.proto diff --git a/generated/internalapi/central/telemetry.pb.go b/generated/internalapi/central/telemetry.pb.go index 121c4efc7f108..cecbd1343067a 100644 --- a/generated/internalapi/central/telemetry.pb.go +++ b/generated/internalapi/central/telemetry.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/central/telemetry.proto diff --git a/generated/internalapi/compliance/compliance_data.pb.go b/generated/internalapi/compliance/compliance_data.pb.go index 3fe401d9dde3a..98d28096c9695 100644 --- a/generated/internalapi/compliance/compliance_data.pb.go +++ b/generated/internalapi/compliance/compliance_data.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/compliance/compliance_data.proto diff --git a/generated/internalapi/scanner/v4/common.pb.go b/generated/internalapi/scanner/v4/common.pb.go index 1aeca3f146087..8fc352b60086a 100644 --- a/generated/internalapi/scanner/v4/common.pb.go +++ b/generated/internalapi/scanner/v4/common.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/scanner/v4/common.proto diff --git a/generated/internalapi/scanner/v4/index_report.pb.go b/generated/internalapi/scanner/v4/index_report.pb.go index a12f96befb126..e8b6b921edb9a 100644 --- a/generated/internalapi/scanner/v4/index_report.pb.go +++ b/generated/internalapi/scanner/v4/index_report.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/scanner/v4/index_report.proto diff --git a/generated/internalapi/scanner/v4/indexer_service.pb.go b/generated/internalapi/scanner/v4/indexer_service.pb.go index a7d83f4db9069..77bf8941c45e8 100644 --- a/generated/internalapi/scanner/v4/indexer_service.pb.go +++ b/generated/internalapi/scanner/v4/indexer_service.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/scanner/v4/indexer_service.proto diff --git a/generated/internalapi/scanner/v4/matcher_service.pb.go b/generated/internalapi/scanner/v4/matcher_service.pb.go index 6dd884fdbcb43..d7136797aa293 100644 --- a/generated/internalapi/scanner/v4/matcher_service.pb.go +++ b/generated/internalapi/scanner/v4/matcher_service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/scanner/v4/matcher_service.proto diff --git a/generated/internalapi/scanner/v4/vulnerability_report.pb.go b/generated/internalapi/scanner/v4/vulnerability_report.pb.go index fe11a7e61daa3..227a28d5b59e5 100644 --- a/generated/internalapi/scanner/v4/vulnerability_report.pb.go +++ b/generated/internalapi/scanner/v4/vulnerability_report.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/scanner/v4/vulnerability_report.proto diff --git a/generated/internalapi/sensor/admission_control.pb.go b/generated/internalapi/sensor/admission_control.pb.go index 6546cca7b0f0d..a1e2a5bc7d51e 100644 --- a/generated/internalapi/sensor/admission_control.pb.go +++ b/generated/internalapi/sensor/admission_control.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/admission_control.proto diff --git a/generated/internalapi/sensor/admission_control_iservice.pb.go b/generated/internalapi/sensor/admission_control_iservice.pb.go index 24a839f1c8cfe..43c1d563e1be1 100644 --- a/generated/internalapi/sensor/admission_control_iservice.pb.go +++ b/generated/internalapi/sensor/admission_control_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/admission_control_iservice.proto diff --git a/generated/internalapi/sensor/cert_distribution_iservice.pb.go b/generated/internalapi/sensor/cert_distribution_iservice.pb.go index 603a59e500e7a..98bb3ba1531e7 100644 --- a/generated/internalapi/sensor/cert_distribution_iservice.pb.go +++ b/generated/internalapi/sensor/cert_distribution_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/cert_distribution_iservice.proto diff --git a/generated/internalapi/sensor/collector.pb.go b/generated/internalapi/sensor/collector.pb.go index 1db65f884d94d..15f3ac9bbc20e 100644 --- a/generated/internalapi/sensor/collector.pb.go +++ b/generated/internalapi/sensor/collector.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/collector.proto diff --git a/generated/internalapi/sensor/collector_iservice.pb.go b/generated/internalapi/sensor/collector_iservice.pb.go index 6074e7212a326..f5e35fecb9a6c 100644 --- a/generated/internalapi/sensor/collector_iservice.pb.go +++ b/generated/internalapi/sensor/collector_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/collector_iservice.proto diff --git a/generated/internalapi/sensor/compliance_iservice.pb.go b/generated/internalapi/sensor/compliance_iservice.pb.go index a069dfff7a7c9..fd7fa5b9e5341 100644 --- a/generated/internalapi/sensor/compliance_iservice.pb.go +++ b/generated/internalapi/sensor/compliance_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/compliance_iservice.proto diff --git a/generated/internalapi/sensor/deployment_iservice.pb.go b/generated/internalapi/sensor/deployment_iservice.pb.go index 21417c18185cf..7bd73b2f35061 100644 --- a/generated/internalapi/sensor/deployment_iservice.pb.go +++ b/generated/internalapi/sensor/deployment_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/deployment_iservice.proto diff --git a/generated/internalapi/sensor/image_iservice.pb.go b/generated/internalapi/sensor/image_iservice.pb.go index a6d753336795a..9d6005c05689d 100644 --- a/generated/internalapi/sensor/image_iservice.pb.go +++ b/generated/internalapi/sensor/image_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/image_iservice.proto diff --git a/generated/internalapi/sensor/network_connection_info.pb.go b/generated/internalapi/sensor/network_connection_info.pb.go index 229eaf4804ac3..8f444819e247b 100644 --- a/generated/internalapi/sensor/network_connection_info.pb.go +++ b/generated/internalapi/sensor/network_connection_info.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/network_connection_info.proto diff --git a/generated/internalapi/sensor/network_connection_iservice.pb.go b/generated/internalapi/sensor/network_connection_iservice.pb.go index 1a5adce048e93..5e09d185903f2 100644 --- a/generated/internalapi/sensor/network_connection_iservice.pb.go +++ b/generated/internalapi/sensor/network_connection_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/network_connection_iservice.proto diff --git a/generated/internalapi/sensor/network_enums.pb.go b/generated/internalapi/sensor/network_enums.pb.go index d0a2b9320311b..c8d0928728cce 100644 --- a/generated/internalapi/sensor/network_enums.pb.go +++ b/generated/internalapi/sensor/network_enums.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/network_enums.proto diff --git a/generated/internalapi/sensor/signal_iservice.pb.go b/generated/internalapi/sensor/signal_iservice.pb.go index b7e95fe1b8c35..98256753f8d4c 100644 --- a/generated/internalapi/sensor/signal_iservice.pb.go +++ b/generated/internalapi/sensor/signal_iservice.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/sensor/signal_iservice.proto diff --git a/generated/internalapi/wrapper/splunk_alert.pb.go b/generated/internalapi/wrapper/splunk_alert.pb.go index f9818e2e4b3fe..a131fa5545642 100644 --- a/generated/internalapi/wrapper/splunk_alert.pb.go +++ b/generated/internalapi/wrapper/splunk_alert.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: internalapi/wrapper/splunk_alert.proto diff --git a/generated/storage/active_component.pb.go b/generated/storage/active_component.pb.go index 02c74a09b427d..5dc0454315597 100644 --- a/generated/storage/active_component.pb.go +++ b/generated/storage/active_component.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/active_component.proto diff --git a/generated/storage/administration_event.pb.go b/generated/storage/administration_event.pb.go index 6165707fca195..661ea025c3fcf 100644 --- a/generated/storage/administration_event.pb.go +++ b/generated/storage/administration_event.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/administration_event.proto diff --git a/generated/storage/administration_usage.pb.go b/generated/storage/administration_usage.pb.go index ffb36c0097931..717d50e316f03 100644 --- a/generated/storage/administration_usage.pb.go +++ b/generated/storage/administration_usage.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/administration_usage.proto diff --git a/generated/storage/alert.pb.go b/generated/storage/alert.pb.go index 67db565279462..0725b654def04 100644 --- a/generated/storage/alert.pb.go +++ b/generated/storage/alert.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/alert.proto diff --git a/generated/storage/api_token.pb.go b/generated/storage/api_token.pb.go index 971d87b4374d9..da32b0ed2c112 100644 --- a/generated/storage/api_token.pb.go +++ b/generated/storage/api_token.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/api_token.proto diff --git a/generated/storage/auth_machine_to_machine.pb.go b/generated/storage/auth_machine_to_machine.pb.go index bcaf0227b6edb..5b920a2957939 100644 --- a/generated/storage/auth_machine_to_machine.pb.go +++ b/generated/storage/auth_machine_to_machine.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/auth_machine_to_machine.proto diff --git a/generated/storage/auth_provider.pb.go b/generated/storage/auth_provider.pb.go index e1f5a7d77fb0d..fc2abd38ff505 100644 --- a/generated/storage/auth_provider.pb.go +++ b/generated/storage/auth_provider.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/auth_provider.proto diff --git a/generated/storage/blob.pb.go b/generated/storage/blob.pb.go index 5a0ad202fd6d0..e6924e7c9e557 100644 --- a/generated/storage/blob.pb.go +++ b/generated/storage/blob.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/blob.proto diff --git a/generated/storage/cloud_source.pb.go b/generated/storage/cloud_source.pb.go index 7cefb473e5bfe..8960496fda13b 100644 --- a/generated/storage/cloud_source.pb.go +++ b/generated/storage/cloud_source.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/cloud_source.proto diff --git a/generated/storage/cluster.pb.go b/generated/storage/cluster.pb.go index 821a692c3523c..eb716087db03d 100644 --- a/generated/storage/cluster.pb.go +++ b/generated/storage/cluster.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/cluster.proto diff --git a/generated/storage/cluster_init.pb.go b/generated/storage/cluster_init.pb.go index ea847dea8b554..73da2b557bc75 100644 --- a/generated/storage/cluster_init.pb.go +++ b/generated/storage/cluster_init.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/cluster_init.proto diff --git a/generated/storage/common.pb.go b/generated/storage/common.pb.go index 036209589ef30..8260c7e282ce5 100644 --- a/generated/storage/common.pb.go +++ b/generated/storage/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/common.proto diff --git a/generated/storage/compliance.pb.go b/generated/storage/compliance.pb.go index b9d90e4f75422..df68e94f11c3c 100644 --- a/generated/storage/compliance.pb.go +++ b/generated/storage/compliance.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/compliance.proto diff --git a/generated/storage/compliance_config.pb.go b/generated/storage/compliance_config.pb.go index a58cc2da78b78..84e2e85139ac9 100644 --- a/generated/storage/compliance_config.pb.go +++ b/generated/storage/compliance_config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/compliance_config.proto diff --git a/generated/storage/compliance_integration.pb.go b/generated/storage/compliance_integration.pb.go index 0b610aab15655..54b17ff1e3f9e 100644 --- a/generated/storage/compliance_integration.pb.go +++ b/generated/storage/compliance_integration.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/compliance_integration.proto diff --git a/generated/storage/compliance_operator.pb.go b/generated/storage/compliance_operator.pb.go index a41eee5ebcc59..c95fef0fdf663 100644 --- a/generated/storage/compliance_operator.pb.go +++ b/generated/storage/compliance_operator.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/compliance_operator.proto diff --git a/generated/storage/compliance_operator_v2.pb.go b/generated/storage/compliance_operator_v2.pb.go index 71ab962354648..647662c13439e 100644 --- a/generated/storage/compliance_operator_v2.pb.go +++ b/generated/storage/compliance_operator_v2.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/compliance_operator_v2.proto diff --git a/generated/storage/config.pb.go b/generated/storage/config.pb.go index 164b8edf9e8a9..bbff6b2309d67 100644 --- a/generated/storage/config.pb.go +++ b/generated/storage/config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/config.proto diff --git a/generated/storage/container_runtime.pb.go b/generated/storage/container_runtime.pb.go index db30d2fae9431..cd411ca7b90da 100644 --- a/generated/storage/container_runtime.pb.go +++ b/generated/storage/container_runtime.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/container_runtime.proto diff --git a/generated/storage/cve.pb.go b/generated/storage/cve.pb.go index e3dab9d29068e..b7f58a596c14f 100644 --- a/generated/storage/cve.pb.go +++ b/generated/storage/cve.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/cve.proto diff --git a/generated/storage/declarative_config_health.pb.go b/generated/storage/declarative_config_health.pb.go index 6091413bf5868..a42f016c489f3 100644 --- a/generated/storage/declarative_config_health.pb.go +++ b/generated/storage/declarative_config_health.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/declarative_config_health.proto diff --git a/generated/storage/delegated_registry_config.pb.go b/generated/storage/delegated_registry_config.pb.go index acda8e6074c68..1492cb387bbf8 100644 --- a/generated/storage/delegated_registry_config.pb.go +++ b/generated/storage/delegated_registry_config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/delegated_registry_config.proto diff --git a/generated/storage/deployment.pb.go b/generated/storage/deployment.pb.go index 35c72a629e773..fad5890fc02eb 100644 --- a/generated/storage/deployment.pb.go +++ b/generated/storage/deployment.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/deployment.proto diff --git a/generated/storage/discovered_cluster.pb.go b/generated/storage/discovered_cluster.pb.go index 7191b7020beb4..65110a313faf4 100644 --- a/generated/storage/discovered_cluster.pb.go +++ b/generated/storage/discovered_cluster.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/discovered_cluster.proto diff --git a/generated/storage/external_backup.pb.go b/generated/storage/external_backup.pb.go index 805a19045d5eb..ef69200415842 100644 --- a/generated/storage/external_backup.pb.go +++ b/generated/storage/external_backup.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/external_backup.proto diff --git a/generated/storage/group.pb.go b/generated/storage/group.pb.go index 75388dcd70a45..0725e0eca4b64 100644 --- a/generated/storage/group.pb.go +++ b/generated/storage/group.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/group.proto diff --git a/generated/storage/hash.pb.go b/generated/storage/hash.pb.go index 43a2cac189b01..fa18fb0b86039 100644 --- a/generated/storage/hash.pb.go +++ b/generated/storage/hash.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/hash.proto diff --git a/generated/storage/helm_cluster.pb.go b/generated/storage/helm_cluster.pb.go index 150380cdb3517..7f060f95ca899 100644 --- a/generated/storage/helm_cluster.pb.go +++ b/generated/storage/helm_cluster.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/helm_cluster.proto diff --git a/generated/storage/http_endpoint.pb.go b/generated/storage/http_endpoint.pb.go index 75e3937510a88..8bab6ed6774e1 100644 --- a/generated/storage/http_endpoint.pb.go +++ b/generated/storage/http_endpoint.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/http_endpoint.proto diff --git a/generated/storage/image.pb.go b/generated/storage/image.pb.go index 31f41784038c3..6b005eaa287ba 100644 --- a/generated/storage/image.pb.go +++ b/generated/storage/image.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/image.proto diff --git a/generated/storage/image_component.pb.go b/generated/storage/image_component.pb.go index 9c8c8a7fc3fbb..75b3cf7e055b2 100644 --- a/generated/storage/image_component.pb.go +++ b/generated/storage/image_component.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/image_component.proto diff --git a/generated/storage/image_integration.pb.go b/generated/storage/image_integration.pb.go index 5dfb4116c62c9..e8ff5c4f8677e 100644 --- a/generated/storage/image_integration.pb.go +++ b/generated/storage/image_integration.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/image_integration.proto diff --git a/generated/storage/installation.pb.go b/generated/storage/installation.pb.go index 8277997828007..501201c6f1acc 100644 --- a/generated/storage/installation.pb.go +++ b/generated/storage/installation.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/installation.proto diff --git a/generated/storage/integration_health.pb.go b/generated/storage/integration_health.pb.go index c8ed15d44a866..462b18594bb60 100644 --- a/generated/storage/integration_health.pb.go +++ b/generated/storage/integration_health.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/integration_health.proto diff --git a/generated/storage/kube_event.pb.go b/generated/storage/kube_event.pb.go index 2bef169704d2c..76270a2f6f3ec 100644 --- a/generated/storage/kube_event.pb.go +++ b/generated/storage/kube_event.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/kube_event.proto diff --git a/generated/storage/labels.pb.go b/generated/storage/labels.pb.go index d6ca0433e490f..15a92cafebc7c 100644 --- a/generated/storage/labels.pb.go +++ b/generated/storage/labels.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/labels.proto diff --git a/generated/storage/log.pb.go b/generated/storage/log.pb.go index 1526fdb0d543a..c607d1173b4b1 100644 --- a/generated/storage/log.pb.go +++ b/generated/storage/log.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/log.proto diff --git a/generated/storage/mitre.pb.go b/generated/storage/mitre.pb.go index c298828883cc2..305bbf0cfbd83 100644 --- a/generated/storage/mitre.pb.go +++ b/generated/storage/mitre.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/mitre.proto diff --git a/generated/storage/namespace_metadata.pb.go b/generated/storage/namespace_metadata.pb.go index 52ba7078f849a..109982dcc89ad 100644 --- a/generated/storage/namespace_metadata.pb.go +++ b/generated/storage/namespace_metadata.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/namespace_metadata.proto diff --git a/generated/storage/network_baseline.pb.go b/generated/storage/network_baseline.pb.go index 7fbfa27626cee..0f1cf77cb5bb9 100644 --- a/generated/storage/network_baseline.pb.go +++ b/generated/storage/network_baseline.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/network_baseline.proto diff --git a/generated/storage/network_flow.pb.go b/generated/storage/network_flow.pb.go index 8ebec2c6f1c2e..e9955c43d2c8f 100644 --- a/generated/storage/network_flow.pb.go +++ b/generated/storage/network_flow.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/network_flow.proto diff --git a/generated/storage/network_graph_config.pb.go b/generated/storage/network_graph_config.pb.go index 214fcd310c1e1..88e2112d5878f 100644 --- a/generated/storage/network_graph_config.pb.go +++ b/generated/storage/network_graph_config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/network_graph_config.proto diff --git a/generated/storage/network_policy.pb.go b/generated/storage/network_policy.pb.go index 68be4fc0dadc8..339cec59d5cbb 100644 --- a/generated/storage/network_policy.pb.go +++ b/generated/storage/network_policy.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/network_policy.proto diff --git a/generated/storage/node.pb.go b/generated/storage/node.pb.go index a9b005fd648e7..213a180a36493 100644 --- a/generated/storage/node.pb.go +++ b/generated/storage/node.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/node.proto diff --git a/generated/storage/node_component.pb.go b/generated/storage/node_component.pb.go index 783491dacc16b..fe3d18428e4ee 100644 --- a/generated/storage/node_component.pb.go +++ b/generated/storage/node_component.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/node_component.proto diff --git a/generated/storage/node_integration.pb.go b/generated/storage/node_integration.pb.go index fa8a015de04bc..3e27ce9a64ca5 100644 --- a/generated/storage/node_integration.pb.go +++ b/generated/storage/node_integration.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/node_integration.proto diff --git a/generated/storage/notification_schedule.pb.go b/generated/storage/notification_schedule.pb.go index fdc9484be3511..eee642dbb68f4 100644 --- a/generated/storage/notification_schedule.pb.go +++ b/generated/storage/notification_schedule.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/notification_schedule.proto diff --git a/generated/storage/notifier.pb.go b/generated/storage/notifier.pb.go index 23298ee7cbc8b..b3807306951db 100644 --- a/generated/storage/notifier.pb.go +++ b/generated/storage/notifier.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/notifier.proto diff --git a/generated/storage/notifier_enc_config.pb.go b/generated/storage/notifier_enc_config.pb.go index 3a930d8d2a1f1..2ebf4e597ac3d 100644 --- a/generated/storage/notifier_enc_config.pb.go +++ b/generated/storage/notifier_enc_config.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/notifier_enc_config.proto diff --git a/generated/storage/operation_status.pb.go b/generated/storage/operation_status.pb.go index 915de01f9f8a3..ad059a60076c6 100644 --- a/generated/storage/operation_status.pb.go +++ b/generated/storage/operation_status.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/operation_status.proto diff --git a/generated/storage/orchestrator_integration.pb.go b/generated/storage/orchestrator_integration.pb.go index 5f4d4e493e247..aafb1ab0ce64f 100644 --- a/generated/storage/orchestrator_integration.pb.go +++ b/generated/storage/orchestrator_integration.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/orchestrator_integration.proto diff --git a/generated/storage/policy.pb.go b/generated/storage/policy.pb.go index 929893ac97cb5..f345c8340dc49 100644 --- a/generated/storage/policy.pb.go +++ b/generated/storage/policy.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/policy.proto diff --git a/generated/storage/policy_category.pb.go b/generated/storage/policy_category.pb.go index 239c6dd9a735f..c62917c620269 100644 --- a/generated/storage/policy_category.pb.go +++ b/generated/storage/policy_category.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/policy_category.proto diff --git a/generated/storage/process_baseline.pb.go b/generated/storage/process_baseline.pb.go index 7221002221179..749f0f1678bf1 100644 --- a/generated/storage/process_baseline.pb.go +++ b/generated/storage/process_baseline.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/process_baseline.proto diff --git a/generated/storage/process_indicator.pb.go b/generated/storage/process_indicator.pb.go index bd74d16310021..45cec4652ff2e 100644 --- a/generated/storage/process_indicator.pb.go +++ b/generated/storage/process_indicator.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/process_indicator.proto diff --git a/generated/storage/process_listening_on_port.pb.go b/generated/storage/process_listening_on_port.pb.go index 75a0015293870..aa0a32a1d3c1a 100644 --- a/generated/storage/process_listening_on_port.pb.go +++ b/generated/storage/process_listening_on_port.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/process_listening_on_port.proto diff --git a/generated/storage/rbac.pb.go b/generated/storage/rbac.pb.go index eced7b8910ba9..e79992f958bdc 100644 --- a/generated/storage/rbac.pb.go +++ b/generated/storage/rbac.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/rbac.proto diff --git a/generated/storage/relations.pb.go b/generated/storage/relations.pb.go index 294a6ce89b958..c4a58bddd145e 100644 --- a/generated/storage/relations.pb.go +++ b/generated/storage/relations.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/relations.proto diff --git a/generated/storage/report_configuration.pb.go b/generated/storage/report_configuration.pb.go index b6a64d5db8819..b2ddc01d8f2a3 100644 --- a/generated/storage/report_configuration.pb.go +++ b/generated/storage/report_configuration.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/report_configuration.proto diff --git a/generated/storage/report_notifier_configuration.pb.go b/generated/storage/report_notifier_configuration.pb.go index 070926fd1d295..41301869c760a 100644 --- a/generated/storage/report_notifier_configuration.pb.go +++ b/generated/storage/report_notifier_configuration.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/report_notifier_configuration.proto diff --git a/generated/storage/report_snapshot.pb.go b/generated/storage/report_snapshot.pb.go index f9a39cdd1f2c8..da5ed2df780fe 100644 --- a/generated/storage/report_snapshot.pb.go +++ b/generated/storage/report_snapshot.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/report_snapshot.proto diff --git a/generated/storage/resource_collection.pb.go b/generated/storage/resource_collection.pb.go index eebb468b0dbb7..15173d2168edd 100644 --- a/generated/storage/resource_collection.pb.go +++ b/generated/storage/resource_collection.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/resource_collection.proto diff --git a/generated/storage/risk.pb.go b/generated/storage/risk.pb.go index abaedc005b669..fc3fce175d2e6 100644 --- a/generated/storage/risk.pb.go +++ b/generated/storage/risk.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/risk.proto diff --git a/generated/storage/role.pb.go b/generated/storage/role.pb.go index 830642c9ad9c6..700bb5c5d2b61 100644 --- a/generated/storage/role.pb.go +++ b/generated/storage/role.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/role.proto diff --git a/generated/storage/schedule.pb.go b/generated/storage/schedule.pb.go index 86427dd0e283b..b3a9b1ae8b66c 100644 --- a/generated/storage/schedule.pb.go +++ b/generated/storage/schedule.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/schedule.proto diff --git a/generated/storage/scope.pb.go b/generated/storage/scope.pb.go index acf22c162edbc..b48656e577a73 100644 --- a/generated/storage/scope.pb.go +++ b/generated/storage/scope.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/scope.proto diff --git a/generated/storage/secret.pb.go b/generated/storage/secret.pb.go index 7b2de702bf87b..8885c465993ff 100644 --- a/generated/storage/secret.pb.go +++ b/generated/storage/secret.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/secret.proto diff --git a/generated/storage/sensor_upgrade.pb.go b/generated/storage/sensor_upgrade.pb.go index d49063d150822..ebb2bb115fb6d 100644 --- a/generated/storage/sensor_upgrade.pb.go +++ b/generated/storage/sensor_upgrade.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/sensor_upgrade.proto diff --git a/generated/storage/service_account.pb.go b/generated/storage/service_account.pb.go index 017142536afb1..601fad25ae6dd 100644 --- a/generated/storage/service_account.pb.go +++ b/generated/storage/service_account.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/service_account.proto diff --git a/generated/storage/service_identity.pb.go b/generated/storage/service_identity.pb.go index ec4c39c4114c6..8c23f16e32582 100644 --- a/generated/storage/service_identity.pb.go +++ b/generated/storage/service_identity.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/service_identity.proto diff --git a/generated/storage/signature_integration.pb.go b/generated/storage/signature_integration.pb.go index 32e6419c3fd55..2451e7cb117e3 100644 --- a/generated/storage/signature_integration.pb.go +++ b/generated/storage/signature_integration.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/signature_integration.proto diff --git a/generated/storage/system_info.pb.go b/generated/storage/system_info.pb.go index cba0294a288ee..70a473d3a487b 100644 --- a/generated/storage/system_info.pb.go +++ b/generated/storage/system_info.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/system_info.proto diff --git a/generated/storage/taints.pb.go b/generated/storage/taints.pb.go index 81d840527facc..74b6144173225 100644 --- a/generated/storage/taints.pb.go +++ b/generated/storage/taints.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/taints.proto diff --git a/generated/storage/telemetry.pb.go b/generated/storage/telemetry.pb.go index e2f13ba455cb7..2d44be7362d98 100644 --- a/generated/storage/telemetry.pb.go +++ b/generated/storage/telemetry.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/telemetry.proto diff --git a/generated/storage/test.pb.go b/generated/storage/test.pb.go index 098b01eae05b3..2c234f0971796 100644 --- a/generated/storage/test.pb.go +++ b/generated/storage/test.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/test.proto diff --git a/generated/storage/traits.pb.go b/generated/storage/traits.pb.go index 76d5d407c78d1..533c7bae8a900 100644 --- a/generated/storage/traits.pb.go +++ b/generated/storage/traits.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/traits.proto diff --git a/generated/storage/user.pb.go b/generated/storage/user.pb.go index 1bbee1e174cc7..dc5bba660037e 100644 --- a/generated/storage/user.pb.go +++ b/generated/storage/user.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/user.proto diff --git a/generated/storage/version.pb.go b/generated/storage/version.pb.go index 29eae7e61c3a3..621f82e684f2f 100644 --- a/generated/storage/version.pb.go +++ b/generated/storage/version.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/version.proto diff --git a/generated/storage/vuln_requests.pb.go b/generated/storage/vuln_requests.pb.go index ad201e96d12fc..41b19c184bffd 100644 --- a/generated/storage/vuln_requests.pb.go +++ b/generated/storage/vuln_requests.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/vuln_requests.proto diff --git a/generated/storage/vulnerability.pb.go b/generated/storage/vulnerability.pb.go index 9fd58ba1e4dce..8ad91ac3a0f3f 100644 --- a/generated/storage/vulnerability.pb.go +++ b/generated/storage/vulnerability.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: storage/vulnerability.proto @@ -148,15 +148,15 @@ type EmbeddedVulnerability struct { // For internal purposes only. VulnerabilityType EmbeddedVulnerability_VulnerabilityType `protobuf:"varint,11,opt,name=vulnerability_type,json=vulnerabilityType,proto3,enum=storage.EmbeddedVulnerability_VulnerabilityType" json:"vulnerability_type,omitempty"` VulnerabilityTypes []EmbeddedVulnerability_VulnerabilityType `protobuf:"varint,18,rep,packed,name=vulnerability_types,json=vulnerabilityTypes,proto3,enum=storage.EmbeddedVulnerability_VulnerabilityType" json:"vulnerability_types,omitempty" hash:"ignore"` // @gotags: hash:"ignore" - Suppressed bool `protobuf:"varint,12,opt,name=suppressed,proto3" json:"suppressed,omitempty" search:"CVE Snoozed" hash:"ignore"` // @gotags: search:"CVE Snoozed" hash:"ignore" - SuppressActivation *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=suppress_activation,json=suppressActivation,proto3" json:"suppress_activation,omitempty" hash:"ignore"` // @gotags: hash:"ignore" - SuppressExpiry *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=suppress_expiry,json=suppressExpiry,proto3" json:"suppress_expiry,omitempty" hash:"ignore"` // @gotags: hash:"ignore" + Suppressed bool `protobuf:"varint,12,opt,name=suppressed,proto3" json:"suppressed,omitempty" search:"CVE Snoozed"` // @gotags: search:"CVE Snoozed" + SuppressActivation *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=suppress_activation,json=suppressActivation,proto3" json:"suppress_activation,omitempty"` + SuppressExpiry *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=suppress_expiry,json=suppressExpiry,proto3" json:"suppress_expiry,omitempty"` // Time when the CVE was first seen, for this specific distro, in the system. FirstSystemOccurrence *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=first_system_occurrence,json=firstSystemOccurrence,proto3" json:"first_system_occurrence,omitempty" policy:"First System Occurrence Timestamp" hash:"ignore"` // @gotags: policy:"First System Occurrence Timestamp" hash:"ignore" // Time when the CVE was first seen in this image. FirstImageOccurrence *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=first_image_occurrence,json=firstImageOccurrence,proto3" json:"first_image_occurrence,omitempty" policy:"First Image Occurrence Timestamp" hash:"ignore"` // @gotags: policy:"First Image Occurrence Timestamp" hash:"ignore" Severity VulnerabilitySeverity `protobuf:"varint,19,opt,name=severity,proto3,enum=storage.VulnerabilitySeverity" json:"severity,omitempty" policy:"Severity"` // @gotags: policy:"Severity" - State VulnerabilityState `protobuf:"varint,20,opt,name=state,proto3,enum=storage.VulnerabilityState" json:"state,omitempty" search:"Vulnerability State" hash:"ignore"` // @gotags: search:"Vulnerability State" hash:"ignore" + State VulnerabilityState `protobuf:"varint,20,opt,name=state,proto3,enum=storage.VulnerabilityState" json:"state,omitempty" search:"Vulnerability State"` // @gotags: search:"Vulnerability State" // cvss_metrics stores list of cvss scores from different sources like nvd, Redhat etc CvssMetrics []*CVSSScore `protobuf:"bytes,21,rep,name=cvss_metrics,json=cvssMetrics,proto3" json:"cvss_metrics,omitempty"` NvdCvss float32 `protobuf:"fixed32,22,opt,name=nvd_cvss,json=nvdCvss,proto3" json:"nvd_cvss,omitempty" search:"NVD CVSS,store"` // @gotags: search:"NVD CVSS,store" diff --git a/generated/test/test.pb.go b/generated/test/test.pb.go index fdd851baf5106..48d04dabd5c10 100644 --- a/generated/test/test.pb.go +++ b/generated/test/test.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: test/test.proto diff --git a/generated/tools/local-sensor/message.pb.go b/generated/tools/local-sensor/message.pb.go index bcb2f5e9f45a0..2fa6c3cd848c5 100644 --- a/generated/tools/local-sensor/message.pb.go +++ b/generated/tools/local-sensor/message.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc v4.25.3 // source: tools/local-sensor/message.proto diff --git a/go.mod b/go.mod index 7eb3c9858bc19..af3fdc38d4664 100644 --- a/go.mod +++ b/go.mod @@ -1,19 +1,17 @@ module github.com/stackrox/rox -go 1.23.4 - -toolchain go1.23.6 +go 1.25.0 require ( cloud.google.com/go/artifactregistry v1.17.1 - cloud.google.com/go/compute/metadata v0.7.0 + cloud.google.com/go/compute/metadata v0.9.0 cloud.google.com/go/containeranalysis v0.14.1 - cloud.google.com/go/securitycenter v1.36.2 - cloud.google.com/go/storage v1.54.0 + cloud.google.com/go/securitycenter v1.38.0 + cloud.google.com/go/storage v1.57.1 dario.cat/mergo v1.0.2 github.com/Azure/azure-sdk-for-go-extensions v0.1.9 - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry v0.2.3 github.com/Azure/azure-sdk-for-go/sdk/monitor/ingestion/azlogs v1.0.0 github.com/BurntSushi/toml v1.5.0 @@ -27,21 +25,21 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adhocore/gronx v1.19.6 github.com/andygrunwald/go-jira v1.16.0 - github.com/aws/aws-sdk-go-v2 v1.36.3 - github.com/aws/aws-sdk-go-v2/config v1.29.14 - github.com/aws/aws-sdk-go-v2/credentials v1.17.67 - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 + github.com/aws/aws-sdk-go-v2 v1.40.0 + github.com/aws/aws-sdk-go-v2/config v1.32.2 + github.com/aws/aws-sdk-go-v2/credentials v1.19.2 + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14 github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.77 - github.com/aws/aws-sdk-go-v2/service/ecr v1.44.0 - github.com/aws/aws-sdk-go-v2/service/s3 v1.80.0 + github.com/aws/aws-sdk-go-v2/service/ecr v1.51.2 + github.com/aws/aws-sdk-go-v2/service/s3 v1.88.3 github.com/aws/aws-sdk-go-v2/service/securityhub v1.57.4 - github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 - github.com/aws/smithy-go v1.22.3 + github.com/aws/aws-sdk-go-v2/service/sts v1.41.2 + github.com/aws/smithy-go v1.24.0 github.com/cenkalti/backoff/v3 v3.2.2 github.com/cloudflare/cfssl v1.6.5 github.com/cockroachdb/pebble v1.1.4 github.com/containers/image/v5 v5.35.0 - github.com/coreos/go-oidc/v3 v3.14.1 + github.com/coreos/go-oidc/v3 v3.17.0 github.com/coreos/go-systemd/v22 v22.5.0 github.com/dave/jennifer v1.7.1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc @@ -51,27 +49,27 @@ require ( github.com/fatih/color v1.18.0 github.com/georgysavva/scany/v2 v2.1.4 github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 - github.com/go-jose/go-jose/v4 v4.0.5 + github.com/go-jose/go-jose/v4 v4.1.3 github.com/go-logr/logr v1.4.3 github.com/go-logr/zapr v1.3.0 github.com/gobwas/glob v0.2.3 github.com/godbus/dbus/v5 v5.1.0 github.com/golang-jwt/jwt/v4 v4.5.2 - github.com/google/certificate-transparency-go v1.3.1 - github.com/google/gnostic-models v0.6.9 + github.com/google/certificate-transparency-go v1.3.2 + github.com/google/gnostic-models v0.7.0 github.com/google/go-cmp v0.7.0 - github.com/google/go-containerregistry v0.20.3 + github.com/google/go-containerregistry v0.20.7 github.com/google/go-github/v60 v60.0.0 github.com/google/uuid v1.6.0 - github.com/googleapis/gax-go/v2 v2.14.2 + github.com/googleapis/gax-go/v2 v2.15.0 github.com/gorilla/schema v1.4.1 github.com/grafana/pyroscope-go v1.2.2 github.com/graph-gophers/graphql-go v1.5.0 - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0 + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 github.com/hashicorp/go-multierror v1.1.1 - github.com/hashicorp/go-retryablehttp v0.7.7 + github.com/hashicorp/go-retryablehttp v0.7.8 github.com/hashicorp/go-version v1.7.0 github.com/hashicorp/golang-lru/v2 v2.0.7 github.com/heimdalr/dag v1.5.0 @@ -82,7 +80,7 @@ require ( github.com/jackc/pgx/v5 v5.7.5 github.com/jeremywohl/flatten v1.0.1 github.com/joshdk/go-junit v1.0.0 - github.com/klauspost/compress v1.18.0 + github.com/klauspost/compress v1.18.1 github.com/lib/pq v1.10.9 github.com/machinebox/graphql v0.2.2 github.com/mailru/easyjson v0.9.0 @@ -92,14 +90,14 @@ require ( github.com/np-guard/cluster-topology-analyzer/v2 v2.3.0 github.com/np-guard/netpol-analyzer v1.4.4 github.com/nxadm/tail v1.4.11 - github.com/olekukonko/tablewriter v1.0.7 + github.com/olekukonko/tablewriter v1.1.0 github.com/onsi/ginkgo/v2 v2.23.4 github.com/onsi/gomega v1.37.0 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.1 github.com/openshift-online/ocm-sdk-go v0.1.465 - github.com/openshift/api v0.0.0-20240415161129-d7aff303fa1a - github.com/openshift/client-go v0.0.0-20240415191513-dcdeb09390b4 + github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7 + github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235 github.com/openshift/runtime-utils v0.0.0-20230921210328-7bdb5b9c177b github.com/operator-framework/helm-operator-plugins v0.0.0-00010101000000-000000000000 github.com/owenrumney/go-sarif/v2 v2.3.3 @@ -107,10 +105,10 @@ require ( github.com/pkg/errors v0.9.1 github.com/planetscale/vtprotobuf v0.6.1-0.20240409071808-615f978279ca github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 - github.com/prometheus/client_golang v1.22.0 + github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.64.0 - github.com/quay/claircore v1.5.37 + github.com/prometheus/common v0.67.4 + github.com/quay/claircore v1.5.38 github.com/quay/claircore/toolkit v1.2.5-0.20250120211107-bea8a6c197b2 github.com/quay/zlog v1.1.8 github.com/remind101/migrate v0.0.0-20170729031349-52c1edff7319 @@ -119,79 +117,78 @@ require ( github.com/russellhaering/goxmldsig v1.5.0 github.com/segmentio/analytics-go/v3 v3.3.0 github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 - github.com/sigstore/cosign/v2 v2.5.0 - github.com/sigstore/rekor v1.3.10 - github.com/sigstore/sigstore v1.9.4 - github.com/sourcegraph/conc v0.3.0 - github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.6 - github.com/spf13/viper v1.20.1 + github.com/sigstore/cosign/v3 v3.0.3 + github.com/sigstore/rekor v1.4.3 + github.com/sigstore/sigstore v1.10.0 + github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 + github.com/spf13/cobra v1.10.2 + github.com/spf13/pflag v1.0.10 + github.com/spf13/viper v1.21.0 github.com/stackrox/external-network-pusher v0.0.0-20231115153210-b82d72f500a2 github.com/stackrox/helmtest v0.0.5 github.com/stackrox/k8s-overlay-patch v0.0.0-20250224110925-13b5b47fd812 github.com/stackrox/pkcs7 v0.0.0-20240314170115-841ca6b5f88d github.com/stackrox/scanner v0.0.0-20240830165150-d133ba942d59 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 github.com/tidwall/gjson v1.18.0 github.com/tkuchiki/go-timezone v0.2.3 github.com/travelaudience/go-promhttp v1.0.1 github.com/vbauerster/mpb/v4 v4.12.2 go.uber.org/atomic v1.11.0 go.uber.org/goleak v1.3.0 - go.uber.org/mock v0.5.2 - go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.38.0 - golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 - golang.org/x/mod v0.24.0 - golang.org/x/net v0.40.0 - golang.org/x/oauth2 v0.30.0 - golang.org/x/sync v0.14.0 - golang.org/x/sys v0.33.0 - golang.org/x/term v0.32.0 - golang.org/x/text v0.25.0 - golang.org/x/time v0.11.0 - golang.org/x/tools v0.33.0 + go.uber.org/mock v0.6.0 + go.uber.org/zap v1.27.1 + golang.org/x/crypto v0.45.0 + golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b + golang.org/x/mod v0.30.0 + golang.org/x/net v0.47.0 + golang.org/x/oauth2 v0.33.0 + golang.org/x/sync v0.18.0 + golang.org/x/sys v0.38.0 + golang.org/x/term v0.37.0 + golang.org/x/text v0.31.0 + golang.org/x/time v0.14.0 + golang.org/x/tools v0.39.0 golang.stackrox.io/grpc-http1 v0.4.0 - google.golang.org/api v0.236.0 - google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 - google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2 - google.golang.org/grpc v1.72.2 - google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20 - google.golang.org/protobuf v1.36.6 + google.golang.org/api v0.256.0 + google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9 + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 + google.golang.org/grpc v1.77.0 + google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6 + google.golang.org/protobuf v1.36.10 gopkg.in/mcuadros/go-syslog.v2 v2.3.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/robfig/cron.v2 v2.0.0-20150107220207-be2e0b0deed5 gopkg.in/yaml.v3 v3.0.1 gorm.io/driver/postgres v1.6.0 gorm.io/gorm v1.30.0 - helm.sh/helm/v3 v3.17.3 - k8s.io/api v0.32.5 - k8s.io/apiextensions-apiserver v0.32.5 - k8s.io/apimachinery v0.32.5 - k8s.io/apiserver v0.32.5 - k8s.io/cli-runtime v0.32.5 - k8s.io/client-go v0.32.5 - k8s.io/kubectl v0.32.5 + helm.sh/helm/v3 v3.18.4 + k8s.io/api v0.34.2 + k8s.io/apiextensions-apiserver v0.33.2 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.33.2 + k8s.io/cli-runtime v0.33.2 + k8s.io/client-go v0.34.2 + k8s.io/kubectl v0.33.2 k8s.io/kubelet v0.29.15 - k8s.io/utils v0.0.0-20241210054802-24370beab758 + k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d sigs.k8s.io/controller-runtime v0.20.4 sigs.k8s.io/controller-tools v0.14.0 sigs.k8s.io/e2e-framework v0.3.0 - sigs.k8s.io/yaml v1.4.0 + sigs.k8s.io/yaml v1.6.0 ) require ( - cel.dev/expr v0.20.0 // indirect - cloud.google.com/go v0.121.0 // indirect - cloud.google.com/go/auth v0.16.1 // indirect + cel.dev/expr v0.25.1 // indirect + cloud.google.com/go v0.121.6 // indirect + cloud.google.com/go/auth v0.17.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/iam v1.5.2 // indirect + cloud.google.com/go/iam v1.5.3 // indirect cloud.google.com/go/longrunning v0.6.7 // indirect cloud.google.com/go/monitoring v1.24.2 // indirect - github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider v0.14.0 // indirect github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.29 // indirect @@ -201,11 +198,11 @@ require ( 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/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 // indirect github.com/DataDog/zstd v1.4.5 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.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/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.54.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.3.1 // indirect @@ -227,21 +224,22 @@ require ( github.com/aliyun/credentials-go v1.3.2 // indirect github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect github.com/andybalholm/brotli v1.1.0 // indirect - github.com/antlr4-go/antlr/v4 v4.13.0 // indirect + github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.10 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.34 // indirect - github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.31.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.15 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect - github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.14 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.14 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.9 // indirect + github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.38.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.9 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.14 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.0.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.10 // indirect + github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.11.0 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/beevik/etree v1.5.0 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -250,12 +248,13 @@ require ( github.com/blang/semver/v4 v4.0.0 // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.2 // 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.3.7 // indirect - github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect + github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect @@ -263,88 +262,92 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coder/websocket v1.8.12 // indirect github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect - github.com/containerd/containerd v1.7.27 // indirect + github.com/containerd/containerd v1.7.29 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect + github.com/containerd/stargz-snapshotter/estargz v0.18.1 // indirect github.com/containers/storage v1.58.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect github.com/cyphar/filepath-securejoin v0.4.1 // 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 v28.0.4+incompatible // indirect - github.com/docker/docker v28.0.4+incompatible // indirect - github.com/docker/docker-credential-helpers v0.9.3 // indirect - github.com/docker/go-connections v0.5.0 // indirect - github.com/docker/go-metrics v0.0.1 // indirect + github.com/docker/cli v29.0.3+incompatible // indirect + github.com/docker/docker-credential-helpers v0.9.4 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect github.com/doug-martin/goqu/v8 v8.6.0 // indirect github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/emicklei/go-restful/v3 v3.11.2 // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect - github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.35.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect - github.com/evanphx/json-patch v5.9.0+incompatible // indirect + github.com/evanphx/json-patch v5.9.11+incompatible // indirect github.com/evanphx/json-patch/v5 v5.9.11 // indirect github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect github.com/facebookincubator/flog v0.0.0-20190930132826-d2511d0ce33c // indirect github.com/fatih/camelcase v1.0.0 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/getsentry/sentry-go v0.27.0 // indirect - github.com/go-chi/chi v4.1.2+incompatible // indirect + github.com/go-chi/chi/v5 v5.2.3 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.1 // indirect github.com/go-git/go-git/v5 v5.13.1 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.4 // indirect github.com/go-logr/stdr v1.2.2 // 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.1 // indirect - github.com/go-openapi/validate v0.24.0 // indirect + github.com/go-openapi/analysis v0.24.1 // indirect + github.com/go-openapi/errors v0.22.4 // indirect + github.com/go-openapi/jsonpointer v0.22.1 // indirect + github.com/go-openapi/jsonreference v0.21.3 // indirect + github.com/go-openapi/loads v0.23.2 // indirect + github.com/go-openapi/runtime v0.29.2 // indirect + github.com/go-openapi/spec v0.22.1 // indirect + github.com/go-openapi/strfmt v0.25.0 // indirect + github.com/go-openapi/swag v0.25.4 // indirect + github.com/go-openapi/swag/cmdutils v0.25.4 // indirect + github.com/go-openapi/swag/conv v0.25.4 // indirect + github.com/go-openapi/swag/fileutils v0.25.4 // indirect + github.com/go-openapi/swag/jsonname v0.25.4 // indirect + github.com/go-openapi/swag/jsonutils v0.25.4 // indirect + github.com/go-openapi/swag/loading v0.25.4 // indirect + github.com/go-openapi/swag/mangling v0.25.4 // indirect + github.com/go-openapi/swag/netutils v0.25.4 // indirect + github.com/go-openapi/swag/stringutils v0.25.4 // indirect + github.com/go-openapi/swag/typeutils v0.25.4 // indirect + github.com/go-openapi/swag/yamlutils v0.25.4 // indirect + github.com/go-openapi/validate v0.25.1 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gobuffalo/flect v1.0.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect - github.com/golang/glog v1.2.4 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/golang/glog v1.2.5 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/cel-go v0.22.0 // indirect - github.com/google/go-github/v55 v55.0.0 // indirect + github.com/google/cel-go v0.26.1 // indirect + github.com/google/go-github/v73 v73.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect + github.com/google/pprof v0.0.0-20250602020802-c6617b811d0e // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.7 // indirect github.com/gorilla/css v1.0.0 // indirect - github.com/gorilla/mux v1.8.1 // indirect - github.com/gorilla/websocket v1.5.1 // indirect + github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect github.com/gosuri/uitable v0.0.4 // indirect github.com/grafana/pyroscope-go/godeltaprof v0.1.8 // indirect github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/huandu/xstrings v1.5.0 // indirect - github.com/in-toto/attestation v1.1.1 // indirect + github.com/in-toto/attestation v1.1.2 // indirect github.com/in-toto/in-toto-golang v0.9.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/itchyny/gojq v0.12.15 // indirect @@ -375,7 +378,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect - github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec // indirect + github.com/letsencrypt/boulder v0.20251110.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/matryer/is v1.4.1 // indirect github.com/mattermost/xml-roundtrip-validator v0.1.0 // indirect @@ -388,14 +391,13 @@ require ( github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/locker v1.0.1 // indirect github.com/moby/spdystream v0.5.0 // indirect github.com/moby/sys/capability v0.4.0 // indirect github.com/moby/sys/mountinfo v0.7.2 // indirect github.com/moby/sys/user v0.4.0 // indirect github.com/moby/term v0.5.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/mozillazg/docker-credential-acr-helper v0.4.0 // indirect github.com/mschoch/smat v0.2.0 // indirect @@ -407,61 +409,61 @@ require ( github.com/nwaples/rardecode v1.1.3 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/errors v1.1.0 // indirect - github.com/olekukonko/ll v0.0.8 // indirect + github.com/olekukonko/ll v0.0.9 // indirect github.com/opencontainers/runtime-spec v1.2.1 // indirect - github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/operator-framework/operator-lib v0.17.0 // indirect github.com/package-url/packageurl-go v0.1.3 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/procfs v0.17.0 // indirect github.com/quay/claircore/updater/driver v1.0.0 // indirect github.com/quay/goval-parser v0.8.8 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/rogpeppe/go-internal v1.13.2-0.20241226121412-a5dc8ff20d0a // indirect - github.com/rubenv/sql-migrate v1.7.1 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect + github.com/rubenv/sql-migrate v1.8.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sagikazarmark/locafero v0.7.0 // indirect + github.com/sagikazarmark/locafero v0.11.0 // indirect github.com/sassoftware/relic v7.2.1+incompatible // indirect - github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.9.1 // indirect github.com/segmentio/backo-go v1.0.1 // indirect - github.com/segmentio/ksuid v1.0.4 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect - github.com/sigstore/fulcio v1.6.6 // indirect - github.com/sigstore/protobuf-specs v0.4.1 // indirect - github.com/sigstore/sigstore-go v0.7.1 // indirect - github.com/sigstore/timestamp-authority v1.2.5 // indirect - github.com/sirupsen/logrus v1.9.3 // indirect + github.com/sigstore/fulcio v1.8.3 // indirect + github.com/sigstore/protobuf-specs v0.5.0 // indirect + github.com/sigstore/rekor-tiles/v2 v2.0.1 // indirect + github.com/sigstore/sigstore-go v1.1.4-0.20251201121426-2cdedea80894 // indirect + github.com/sigstore/timestamp-authority/v2 v2.0.3 // indirect + github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af // indirect github.com/skeema/knownhosts v1.3.0 // indirect github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect github.com/spdx/tools-golang v0.5.5 // indirect - github.com/spf13/afero v1.12.0 // indirect - github.com/spf13/cast v1.7.1 // indirect - github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect + github.com/spf13/afero v1.15.0 // indirect + github.com/spf13/cast v1.10.0 // indirect + github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect github.com/stackrox/dotnet-scraper v0.0.0-20201023051640-72ef543323dd // indirect github.com/stackrox/istio-cves v0.0.0-20221007013142-0bde9b541ec8 // indirect github.com/stackrox/k8s-cves v0.0.0-20220818200547-7d0d1420c58d // indirect - github.com/stoewer/go-strcase v1.3.0 // indirect + github.com/stoewer/go-strcase v1.3.1 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thales-e-security/pool v0.0.2 // indirect github.com/theupdateframework/go-tuf v0.7.0 // indirect - github.com/theupdateframework/go-tuf/v2 v2.0.2 // indirect + github.com/theupdateframework/go-tuf/v2 v2.3.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect github.com/tjfoc/gmsm v1.4.1 // indirect + github.com/transparency-dev/formats v0.0.0-20251017110053-404c0d5b696c // indirect github.com/transparency-dev/merkle v0.0.2 // indirect github.com/trivago/tgo v1.0.7 // indirect - github.com/ulikunitz/xz v0.5.12 // indirect - github.com/vbatts/tar-split v0.12.1 // indirect - github.com/weppos/publicsuffix-go v0.30.3-0.20240510084413-5f1d03393b3d // indirect + github.com/ulikunitz/xz v0.5.14 // indirect + github.com/vbatts/tar-split v0.12.2 // indirect + github.com/weppos/publicsuffix-go v0.50.1-0.20250829105427-5340293a34a1 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect @@ -469,49 +471,53 @@ require ( github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect github.com/xlab/treeprint v1.2.0 // indirect - github.com/zeebo/errs v1.4.0 // indirect - github.com/zmap/zcrypto v0.0.0-20231219022726-a1f61fb1661c // indirect - github.com/zmap/zlint/v3 v3.6.0 // indirect - gitlab.com/gitlab-org/api/client-go v0.127.0 // indirect + github.com/zmap/zcrypto v0.0.0-20250129210703-03c45d0bae98 // indirect + github.com/zmap/zlint/v3 v3.6.6 // indirect + gitlab.com/gitlab-org/api/client-go v0.160.0 // indirect go.etcd.io/bbolt v1.4.0 // indirect - go.mongodb.org/mongo-driver v1.14.0 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect - go.opentelemetry.io/proto/otlp v1.4.0 // indirect + go.mongodb.org/mongo-driver v1.17.6 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.38.0 // 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.38.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/metric v1.38.0 // indirect + go.opentelemetry.io/otel/sdk v1.38.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251103181224-f26f9409b101 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/component-base v0.32.5 // indirect + k8s.io/component-base v0.33.2 // indirect + k8s.io/component-helpers v0.33.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect - modernc.org/libc v1.62.1 // indirect + k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect + modernc.org/libc v1.65.7 // indirect modernc.org/mathutil v1.7.1 // indirect - modernc.org/memory v1.9.1 // indirect - modernc.org/sqlite v1.37.0 // indirect - oras.land/oras-go v1.2.5 // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/kustomize/api v0.18.0 // indirect - sigs.k8s.io/kustomize/kyaml v0.18.1 // indirect + modernc.org/memory v1.11.0 // indirect + modernc.org/sqlite v1.37.1 // indirect + oras.land/oras-go/v2 v2.6.0 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/kustomize/api v0.19.0 // indirect + sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect sigs.k8s.io/network-policy-api v0.1.5 // indirect - sigs.k8s.io/release-utils v0.11.1 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/release-utils v0.12.2 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect ) // HOW TO BUMP diff --git a/go.sum b/go.sum index 12ef7b1f51f40..54fed1d0cc782 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ -cel.dev/expr v0.20.0 h1:OunBvVCfvpWlt4dN7zg3FM6TDkzOePe1+foGJ9AXeeI= -cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +al.essio.dev/pkg/shellescape v1.6.0 h1:NxFcEqzFSEVCGN2yq7Huv/9hyCEGVa/TncnOOBBeXHA= +al.essio.dev/pkg/shellescape v1.6.0/go.mod h1:6sIqp7X2P6mThCQ7twERpZTuigpr6KbZWtls1U8I890= +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.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= @@ -28,12 +30,12 @@ cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.121.0 h1:pgfwva8nGw7vivjZiRfrmglGWiCJBP+0OmDpenG/Fwg= -cloud.google.com/go v0.121.0/go.mod h1:rS7Kytwheu/y9buoDmu5EIpMMCI4Mb8ND4aeN4Vwj7Q= +cloud.google.com/go v0.121.6 h1:waZiuajrI28iAf40cWgycWNgaXPO06dupuS+sgibK6c= +cloud.google.com/go v0.121.6/go.mod h1:coChdst4Ea5vUpiALcYKXEpR1S9ZgXbhEzzMcMR66vI= cloud.google.com/go/artifactregistry v1.17.1 h1:A20kj2S2HO9vlyBVyVFHPxArjxkXvLP5LjcdE7NhaPc= cloud.google.com/go/artifactregistry v1.17.1/go.mod h1:06gLv5QwQPWtaudI2fWO37gfwwRUHwxm3gA8Fe568Hc= -cloud.google.com/go/auth v0.16.1 h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU= -cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth v0.17.0 h1:74yCm7hCj2rUyyAocqnFzsAYXgJhrG26XCFimrc/Kz4= +cloud.google.com/go/auth v0.17.0/go.mod h1:6wv/t5/6rOPAX4fJiRjKkJCvswLwdet7G8+UGXt7nCQ= 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/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -43,17 +45,17 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +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/containeranalysis v0.14.1 h1:1SoHlNqL3XrhqcoozB+3eoHif2sRUFtp/JeASQTtGKo= cloud.google.com/go/containeranalysis v0.14.1/go.mod h1:28e+tlZgauWGHmEbnI5UfIsjMmrkoR1tFN0K2i71jBI= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= -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.21.2 h1:c/PRUSMNQ8zXrc1sdAUnsenWWaNXN+PzTXfXOcSFdoE= -cloud.google.com/go/kms v1.21.2/go.mod h1:8wkMtHV/9Z8mLXEXr1GK7xPSBdi6knuLXIhqjuWcI6w= +cloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc= +cloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU= +cloud.google.com/go/kms v1.23.2 h1:4IYDQL5hG4L+HzJBhzejUySoUOheh3Lk5YT4PCyyW6k= +cloud.google.com/go/kms v1.23.2/go.mod h1:rZ5kK0I7Kn9W4erhYVoIRPtpizjunlrfU4fUkumUp8g= 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= @@ -64,21 +66,17 @@ cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2k cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/securitycenter v1.36.2 h1:hLA58IBYmWrNiXDIONvuCUQ4sHLVPy8JvDo2j1wSYCw= -cloud.google.com/go/securitycenter v1.36.2/go.mod h1:80ocoXS4SNWxmpqeEPhttYrmlQzCPVGaPzL3wVcoJvE= +cloud.google.com/go/securitycenter v1.38.0 h1:sU+tckApsBLZHrTALVvetgz4XcPsgbL0TXREjcPM3qM= +cloud.google.com/go/securitycenter v1.38.0/go.mod h1:Ge2D/SlG2lP1FrQD7wXHy8qyeloRenvKXeB4e7zO6z0= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.54.0 h1:Du3XEyliAiftfyW0bwfdppm2MMLdpVAfiIg4T2nAI+0= -cloud.google.com/go/storage v1.54.0/go.mod h1:hIi9Boe8cHxTyaeqh7KMMwKg088VblFK46C2x/BWaZE= +cloud.google.com/go/storage v1.57.1 h1:gzao6odNJ7dR3XXYvAgPK+Iw4fVPPznEPPyNjbaVkq8= +cloud.google.com/go/storage v1.57.1/go.mod h1:329cwlpzALLgJuu8beyJ/uvQznDHpa2U5lGjWednkzg= 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-20241125120445-2c00c104c6e1 h1:mRwydyTyhtRX2wXS3mqYWzR2qlv6KsmoKXmlz5vInjg= -cuelabs.dev/go/oci/ociregistry v0.0.0-20241125120445-2c00c104c6e1/go.mod h1:5A4xfTzHTXfeVJBU6RAUf+QrlfTCW+017q/QiW+sMLg= -cuelang.org/go v0.12.1 h1:5I+zxmXim9MmiN2tqRapIqowQxABv2NKTgbOspud1Eo= -cuelang.org/go v0.12.1/go.mod h1:B4+kjvGGQnbkz+GuAv1dq/R308gTkp0sO28FdMrJ2Kw= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -94,22 +92,22 @@ github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0 github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go-extensions v0.1.9 h1:bLtHrA9ZKx6TIvAzj45IXOmcTDVGYWe0AWMuxyo4ung= github.com/Azure/azure-sdk-for-go-extensions v0.1.9/go.mod h1:jUub1P7aPW+gzLHrY0vhXjjFv9tZhCRKI1+zp2d56oA= -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.0 h1:j8BorDEigD8UFOSZQiSqAMOOleyQOOQPnUAwV+Ls1gA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.0/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 h1:JXg2dwJUmPB9JmtVmdEB16APJ7jurfbY5jnfXpJoRMc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry v0.2.3 h1:ldKsKtEIblsgsr6mPwrd9yRntoX6uLz/K89wsldwx/k= github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry v0.2.3/go.mod h1:MAm7bk0oDLmD8yIkvfbxPW04fxzphPyL+7GzwHxOp6Y= -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/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= github.com/Azure/azure-sdk-for-go/sdk/monitor/ingestion/azlogs v1.0.0 h1:pjEAC5RiMJd3Qc2x5MlDLii8bVjLhPeNcriRMUYnzXk= github.com/Azure/azure-sdk-for-go/sdk/monitor/ingestion/azlogs v1.0.0/go.mod h1:creAgI4tQiVrsK7UBv1RHoAQo3crd5ATEanZhLXtgLU= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.3.1 h1:Wgf5rZba3YZqeTNJPtvqZoBu1sBN/L4sry+u2U3Y75w= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.3.1/go.mod h1:xxCBG/f/4Vbmh2XQJBsOmNdxWUY5j/s27jujKPbQf14= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1 h1:bFWuoEKg+gImo7pvkiQEFAc8ocibADgXeiLAxWhWmkI= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1/go.mod h1:Vih/3yc6yac2JzU4hzpaDupBJP0Flaia9rXXrU8xyww= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0 h1:E4MgwLBGeVB5f2MdcIVD3ELVAWpr+WD6MUe1i+tM/PA= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0/go.mod h1:Y2b/1clN4zsAoUd/pgNAQHjLDnTis/6ROkUfyob6psM= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 h1:nCYfgcSyHZXJI8J0IWE5MsCGlb2xp9fJiXyxWgmOFg4= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0/go.mod h1:ucUjca2JtSZboY8IoUqyQyuuXvwbMBVwFOm0vdQPNhA= 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= @@ -137,8 +135,8 @@ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUM github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -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/AzureAD/microsoft-authentication-library-for-go v1.6.0 h1:XRzhVemXdgvJqCH0sFfrBUTnUJSBrBf7++ypk+twtRs= +github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= @@ -152,14 +150,14 @@ github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= -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/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.54.0 h1:lhhYARPUu3LmHysQ/igznQphfzynnqI3D75oUyw1HXk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.54.0/go.mod h1:l9rva3ApbBpEJxSNYnwT9N4CDLrWgtq3u8736C5hyJw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0 h1:xfK3bbi6F2RDtaZFtUdKO3osOBIhNb+xTs8lFW6yx9o= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 h1:s0WlVbf9qpvkh1c/uDAPElam0WrL7fHRIidgZJ7UqZI= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -176,22 +174,15 @@ github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA4 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/Microsoft/hcsshim v0.12.9 h1:2zJy5KA+l0loz1HzEGqyNnjd3fyZA31ZBCGKacp6lLg= -github.com/Microsoft/hcsshim v0.12.9/go.mod h1:fJ0gkFAna6ukt0bLdKB8djt4XIJhF/vEPuoIWYVvZ8Y= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= -github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/PagerDuty/go-pagerduty v1.8.0 h1:MTFqTffIcAervB83U7Bx6HERzLbyaSPL/+oxH3zyluI= github.com/PagerDuty/go-pagerduty v1.8.0/go.mod h1:nzIeAqyFSJAFkjWKvMzug0JtwDg+V+UoCWjFrfFH5mI= -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/RoaringBitmap/roaring v1.9.4 h1:yhEIoH4YezLYT04s1nHehNO64EKFTop/wBhxv2QzDdQ= github.com/RoaringBitmap/roaring v1.9.4/go.mod h1:6AXUsoIEzDTFFQCe1RbGA6uFONMhvejWj5rqITANK90= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/toxiproxy/v2 v2.12.0 h1:d1x++lYZg/zijXPPcv7PH0MvHMzEI5aX/YuUi/Sw+yg= github.com/Shopify/toxiproxy/v2 v2.12.0/go.mod h1:R9Z38Pw6k2cGZWXHe7tbxjGW9azmY1KbDQJ1kd+h7Tk= github.com/ThalesIgnite/crypto11 v1.2.5 h1:1IiIIEqYmBvUYFeMnHqRft4bwf/O36jryEUpY+9ef8E= @@ -203,14 +194,10 @@ github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpH github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= github.com/adhocore/gronx v1.19.6 h1:5KNVcoR9ACgL9HhEqCm5QXsab/gI4QDIybTAWcXDKDc= github.com/adhocore/gronx v1.19.6/go.mod h1:7oUY1WAU8rEJWmAxXR2DN0JaO4gi9khSgKjiRypqteg= -github.com/agnivade/levenshtein v1.2.0 h1:U9L4IOT0Y3i0TIlUIDJ7rVUziKi/zPbrJGaFrtYH3SY= -github.com/agnivade/levenshtein v1.2.0/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -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= @@ -266,8 +253,8 @@ github.com/andygrunwald/go-jira v1.16.0/go.mod h1:UQH4IBVxIYWbgagc0LF/k9FRs9xjIi 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/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= -github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= +github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= +github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -278,56 +265,58 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd 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/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= -github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM= -github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.10 h1:zAybnyUQXIZ5mok5Jqwlf58/TFE7uvd3IAsa1aF9cXs= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.10/go.mod h1:qqvMj6gHLR/EXWZw4ZbqlPbQUyenf4h82UQUlKc+l14= -github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM= -github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= +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.40.0 h1:/WMUA0kjhZExjOQN2z3oLALDREea1A7TobfuiBrKlwc= +github.com/aws/aws-sdk-go-v2 v1.40.0/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 h1:i8p8P4diljCr60PpJp6qZXNlgX4m2yQFpYk+9ZT+J4E= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1/go.mod h1:ddqbooRZYNoJ2dsTwOty16rM+/Aqmk/GOXrK8cg7V00= +github.com/aws/aws-sdk-go-v2/config v1.32.2 h1:4liUsdEpUUPZs5WVapsJLx5NPmQhQdez7nYFcovrytk= +github.com/aws/aws-sdk-go-v2/config v1.32.2/go.mod h1:l0hs06IFz1eCT+jTacU/qZtC33nvcnLADAPL/XyrkZI= +github.com/aws/aws-sdk-go-v2/credentials v1.19.2 h1:qZry8VUyTK4VIo5aEdUcBjPZHL2v4FyQ3QEOaWcFLu4= +github.com/aws/aws-sdk-go-v2/credentials v1.19.2/go.mod h1:YUqm5a1/kBnoK+/NY5WEiMocZihKSo15/tJdmdXnM5g= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14 h1:WZVR5DbDgxzA0BJeudId89Kmgy6DIU4ORpxwsVHz0qA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14/go.mod h1:Dadl9QO0kHgbrH1GRqGiZdYtW5w+IXXaBNCHTIaheM4= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.77 h1:xaRN9fags7iJznsMEjtcEuON1hGfCZ0y5MVfEMKtrx8= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.77/go.mod h1:lolsiGkT47AZ3DWqtxgEQM/wVMpayi7YWNjl3wHSRx8= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.34 h1:ZNTqv4nIdE/DiBfUUfXcLZ/Spcuz+RjeziUtNJackkM= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.34/go.mod h1:zf7Vcd1ViW7cPqYWEHLHJkS50X0JS2IKz9Cgaj6ugrs= -github.com/aws/aws-sdk-go-v2/service/ecr v1.44.0 h1:E+UTVTDH6XTSjqxHWRuY8nB6s+05UllneWxnycplHFk= -github.com/aws/aws-sdk-go-v2/service/ecr v1.44.0/go.mod h1:iQ1skgw1XRK+6Lgkb0I9ODatAP72WoTILh0zXQ5DtbU= -github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.31.2 h1:E6/Myrj9HgLF22medmDrKmbpm4ULsa+cIBNx3phirBk= -github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.31.2/go.mod h1:OQ8NALFcchBJ/qruak6zKUQodovnTKKaReTuCkc5/9Y= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.2 h1:BCG7DCXEXpNCcpwCxg1oi9pkJWH2+eZzTn9MY56MbVw= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.2/go.mod h1:iu6FSzgt+M2/x3Dk8zhycdIcHjEFb36IS8HVUVFoMg0= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.15 h1:moLQUoVq91LiqT1nbvzDukyqAlCv89ZmwaHw/ZFlFZg= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.15/go.mod h1:ZH34PJUc8ApjBIfgQCFvkWcUDBtl/WTD+uiYHjd8igA= -github.com/aws/aws-sdk-go-v2/service/kms v1.38.1 h1:tecq7+mAav5byF+Mr+iONJnCBf4B4gon8RSp4BrweSc= -github.com/aws/aws-sdk-go-v2/service/kms v1.38.1/go.mod h1:cQn6tAF77Di6m4huxovNM7NVAozWTZLsDRp9t8Z/WYk= -github.com/aws/aws-sdk-go-v2/service/s3 v1.80.0 h1:fV4XIU5sn/x8gjRouoJpDVHj+ExJaUk4prYF+eb6qTs= -github.com/aws/aws-sdk-go-v2/service/s3 v1.80.0/go.mod h1:qbn305Je/IofWBJ4bJz/Q7pDEtnnoInw/dGt71v6rHE= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.14 h1:PZHqQACxYb8mYgms4RZbhZG0a7dPW06xOjmaH0EJC/I= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.14/go.mod h1:VymhrMJUWs69D8u0/lZ7jSB6WgaG/NqHi3gX0aYf6U0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.14 h1:bOS19y6zlJwagBfHxs0ESzr1XCOU2KXJCWcq3E2vfjY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.14/go.mod h1:1ipeGBMAxZ0xcTm6y6paC2C/J6f6OO7LBODV9afuAyM= +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.9 h1:w9LnHqTq8MEdlnyhV4Bwfizd65lfNCNgdlNC6mM5paE= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.9/go.mod h1:LGEP6EK4nj+bwWNdrvX/FnDTFowdBNwcSPuZu/ouFys= +github.com/aws/aws-sdk-go-v2/service/ecr v1.51.2 h1:aq2N/9UkbEyljIQ7OFcudEgUsJzO8MYucmfsM/k/dmc= +github.com/aws/aws-sdk-go-v2/service/ecr v1.51.2/go.mod h1:1NVD1KuMjH2GqnPwMotPndQaT/MreKkWpjkF12d6oKU= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.38.2 h1:9fe6w8bydUwNAhFVmjo+SRqAJjbBMOyILL/6hTTVkyA= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.38.2/go.mod h1:x7gU4CAyAz4BsM9hlRkhHiYw2GIr1QCmN45uwQw9l/E= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.9 h1:by3nYZLR9l8bUH7kgaMU4dJgYFjyRdFEfORlDpPILB4= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.9/go.mod h1:IWjQYlqw4EX9jw2g3qnEPPWvCE6bS8fKzhMed1OK7c8= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.14 h1:FIouAnCE46kyYqyhs0XEBDFFSREtdnr8HQuLPQPLCrY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.14/go.mod h1:UTwDc5COa5+guonQU8qBikJo1ZJ4ln2r1MkF7Dqag1E= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9 h1:wuZ5uW2uhJR63zwNlqWH2W4aL4ZjeJP3o92/W+odDY4= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9/go.mod h1:/G58M2fGszCrOzvJUkDdY8O9kycodunH4VdT5oBAqls= +github.com/aws/aws-sdk-go-v2/service/kms v1.49.1 h1:U0asSZ3ifpuIehDPkRI2rxHbmFUMplDA2VeR9Uogrmw= +github.com/aws/aws-sdk-go-v2/service/kms v1.49.1/go.mod h1:NZo9WJqQ0sxQ1Yqu1IwCHQFQunTms2MlVgejg16S1rY= +github.com/aws/aws-sdk-go-v2/service/s3 v1.88.3 h1:P18I4ipbk+b/3dZNq5YYh+Hq6XC0vp5RWkLp1tJldDA= +github.com/aws/aws-sdk-go-v2/service/s3 v1.88.3/go.mod h1:Rm3gw2Jov6e6kDuamDvyIlZJDMYk97VeCZ82wz/mVZ0= github.com/aws/aws-sdk-go-v2/service/securityhub v1.57.4 h1:zmT1vKCgD9/wkMxp+amWav59vRjkgkFKfZlvC9lzgCo= github.com/aws/aws-sdk-go-v2/service/securityhub v1.57.4/go.mod h1:nlk2QJ/8+iXIcD82iJ/4tgcZTM1WNus+mUhNAOFecHA= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= -github.com/aws/smithy-go v1.22.3 h1:Z//5NuZCSW6R4PhQ93hShNbyBbn8BWCmCVCt+Q8Io5k= -github.com/aws/smithy-go v1.22.3/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= -github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1 h1:50sS0RWhGpW/yZx2KcDNEb1u1MANv5BMEkJgcieEDTA= -github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1/go.mod h1:ErZOtbzuHabipRTDTor0inoRlYwbsV1ovwSxjGs/uJo= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.2 h1:MxMBdKTYBjPQChlJhi4qlEueqB1p1KcbTEa7tD5aqPs= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.2/go.mod h1:iS6EPmNeqCsGo+xQmXv0jIMjyYtQfnwg36zl2FwEouk= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.5 h1:ksUT5KtgpZd3SAiFJNJ0AFEJVva3gjBmN7eXUZjzUwQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.5/go.mod h1:av+ArJpoYf3pgyrj6tcehSFW+y9/QvAY8kMooR9bZCw= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.10 h1:GtsxyiF3Nd3JahRBJbxLCCdYW9ltGQYrFWg8XdkGDd8= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.10/go.mod h1:/j67Z5XBVDx8nZVp9EuFM9/BS5dvBznbqILGuu73hug= +github.com/aws/aws-sdk-go-v2/service/sts v1.41.2 h1:a5UTtD4mHBU3t0o6aHQZFJTNKVfxFWfPX7J0Lr7G+uY= +github.com/aws/aws-sdk-go-v2/service/sts v1.41.2/go.mod h1:6TxbXoDSgBQ225Qd8Q+MbxUxUh6TtNKwbRt/EPS9xso= +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.11.0 h1:GOPttfOAf5qAgx7r6b+zCWZrvCsfKffkL4H6mSYx1kA= +github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.11.0/go.mod h1:a2HN6+p7k0JLDO8514sMr0l4cnrR52z4sWoZ/Uc82ho= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/beevik/etree v1.5.0 h1:iaQZFSDS+3kYZiGoc9uKeOkUY3nYMXOKLl6KIJxiJWs= @@ -350,23 +339,12 @@ github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4Yn github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/bugsnag/bugsnag-go v1.5.3 h1:yeRUT3mUE13jL1tGwvoQsKdVbAsQx9AJ+fqahKveP04= -github.com/bugsnag/bugsnag-go v1.5.3/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/panicwrap v1.2.0 h1:OzrKrRvXis8qEvOkfcxNcYbOd2O7xXS2nnKMEMABFQA= -github.com/bugsnag/panicwrap v1.2.0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/buildkite/agent/v3 v3.95.1 h1:soe8EyQf068snMYtsQM10+l/l2wwbZIz0P7aDbz+Zws= -github.com/buildkite/agent/v3 v3.95.1/go.mod h1:k2rfXF1U6fl/wejFXuS4YWXX4nDXZFpvKjCc5KUOAXg= -github.com/buildkite/go-pipeline v0.13.3 h1:llI7sAdZ7sqYE7r8ePlmDADRhJ1K0Kua2+gv74Z9+Es= -github.com/buildkite/go-pipeline v0.13.3/go.mod h1:1uC2XdHkTV1G5jYv9K8omERIwrsYbBruBrPx1Zu1uFw= -github.com/buildkite/interpolate v0.1.5 h1:v2Ji3voik69UZlbfoqzx+qfcsOKLA61nHdU79VV+tPU= -github.com/buildkite/interpolate v0.1.5/go.mod h1:dHnrwHew5O8VNOAgMDpwRlFnhL5VSN6M1bHVmRZ9Ccc= -github.com/buildkite/roko v1.3.1 h1:t7K30ceLLYn6k7hQP4oq1c7dVlhgD5nRcuSRDEEnY1s= -github.com/buildkite/roko v1.3.1/go.mod h1:23R9e6nHxgedznkwwfmqZ6+0VJZJZ2Sg/uVcp2cP46I= -github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= 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/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -389,7 +367,6 @@ github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn 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.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -402,12 +379,10 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -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/cockroachdb/cockroach-go/v2 v2.2.0 h1:/5znzg5n373N/3ESjHF5SMLxiW4RKB05Ql//KWfeTFs= github.com/cockroachdb/cockroach-go/v2 v2.2.0/go.mod h1:u3MiKYGupPPjkn3ozknpMUpxPaNLTFWAya419/zv6eI= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= @@ -430,32 +405,22 @@ github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NA github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs= 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/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= -github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo= -github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins= -github.com/containerd/containerd v1.7.27 h1:yFyEyojddO3MIGVER2xJLWoCIn+Up4GaHFquP7hsFII= -github.com/containerd/containerd v1.7.27/go.mod h1:xZmPnl75Vc+BLGt4MIfu6bp+fy03gdHAn9bz+FreFR0= -github.com/containerd/continuity v0.4.4 h1:/fNVfTJ7wIl/YPMHjf+5H32uFhl63JucB34PlCpMKII= -github.com/containerd/continuity v0.4.4/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= +github.com/containerd/containerd v1.7.29 h1:90fWABQsaN9mJhGkoVnuzEY+o1XDPbg9BTC9QTAHnuE= +github.com/containerd/containerd v1.7.29/go.mod h1:azUkWcOvHrWvaiUjSQH0fjzuHIwSPg1WL5PshGP4Szs= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= -github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= -github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8= -github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU= -github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= -github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40= -github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= +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/containers/image/v5 v5.35.0 h1:T1OeyWp3GjObt47bchwD9cqiaAm/u4O4R9hIWdrdrP8= github.com/containers/image/v5 v5.35.0/go.mod h1:8vTsgb+1gKcBL7cnjyNOInhJQfTUQjJoO2WWkKDoebM= github.com/containers/storage v1.58.0 h1:Q7SyyCCjqgT3wYNgRNIL8o/wUS92heIj2/cc8Sewvcc= github.com/containers/storage v1.58.0/go.mod h1:w7Jl6oG+OpeLGLzlLyOZPkmUso40kjpzgrHUk5tyBlo= -github.com/coreos/go-oidc/v3 v3.14.1 h1:9ePWwfdwC4QKRlCXsJGou56adA/owXczOzwKdOumLqk= -github.com/coreos/go-oidc/v3 v3.14.1/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU= +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/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= @@ -463,8 +428,9 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= +github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= @@ -473,8 +439,8 @@ github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 h github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467/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/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= +github.com/danieljoos/wincred v1.2.3/go.mod h1:6qqX0WNrS4RzPZ1tnroDzq9kY3fu1KwE7MRLQK4X0bs= github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo= github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -493,20 +459,16 @@ github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 h1:lxmTCgmHE1G 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/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc= -github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI= +github.com/distribution/distribution/v3 v3.0.0 h1:q4R8wemdRQDClzoNNStftB2ZAfqOiN6UX90KJc4HjyM= +github.com/distribution/distribution/v3 v3.0.0/go.mod h1:tRNuFoZsUdyRVegq8xGNeds4KLjwLCRin/tTo6i1DhU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v28.0.4+incompatible h1:pBJSJeNd9QeIWPjRcV91RVJihd/TXB77q1ef64XEu4A= -github.com/docker/cli v28.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +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 v28.0.4+incompatible h1:JNNkBctYKurkw6FrHfKqY0nKIDf5nrbxjVBtS+cdcok= -github.com/docker/docker v28.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -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/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= -github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/docker-credential-helpers v0.9.4 h1:76ItO69/AP/V4yT9V4uuuItG0B1N8hvt0T0c0NN/DzI= +github.com/docker/docker-credential-helpers v0.9.4/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= @@ -524,10 +486,8 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= -github.com/emicklei/go-restful/v3 v3.11.2 h1:1onLa9DcsMYO9P+CXaL0dStDqQ2EHHXLiz+BtnqkLAU= -github.com/emicklei/go-restful/v3 v3.11.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/proto v1.13.4 h1:myn1fyf8t7tAqIzV91Tj9qXpvyXXGXk8OS2H6IBSc9g= -github.com/emicklei/proto v1.13.4/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= +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/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= @@ -539,18 +499,18 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= -github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= -github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329/go.mod h1:Alz8LEClvR7xKsrq3qzoc4N0guvVNSS8KmSChGYr9hs= +github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= 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 v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= -github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= -github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +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/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4= @@ -576,10 +536,10 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +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/georgysavva/scany/v2 v2.1.4 h1:nrzHEJ4oQVRoiKmocRqA1IyGOmM/GQOEsg9UjMR5Ip4= github.com/georgysavva/scany/v2 v2.1.4/go.mod h1:fqp9yHZzM/PFVa3/rYEC57VmDx+KDch0LoqrJzkvtos= github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= @@ -589,8 +549,8 @@ github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ER github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= 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-chi/chi/v5 v5.2.3 h1:WQIt9uxdsAbgIYgid+BpYc+liqQZGMHRaUwp0JUcvdE= +github.com/go-chi/chi/v5 v5.2.3/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= @@ -606,12 +566,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= -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.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= -github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +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-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= @@ -626,35 +582,61 @@ 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-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.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= -github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= -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/v2 v2.3.0 h1:kKkrYlgLQTMPA6BiSL25A7/x4CEh2YCG7rtb/aTkx+g= -github.com/go-piv/piv-go/v2 v2.3.0/go.mod h1:ShZi74nnrWNQEdWzRUd/3cSig3uNOcEZp+EWl0oewnI= +github.com/go-openapi/analysis v0.24.1 h1:Xp+7Yn/KOnVWYG8d+hPksOYnCYImE3TieBa7rBOesYM= +github.com/go-openapi/analysis v0.24.1/go.mod h1:dU+qxX7QGU1rl7IYhBC8bIfmWQdX4Buoea4TGtxXY84= +github.com/go-openapi/errors v0.22.4 h1:oi2K9mHTOb5DPW2Zjdzs/NIvwi2N3fARKaTJLdNabaM= +github.com/go-openapi/errors v0.22.4/go.mod h1:z9S8ASTUqx7+CP1Q8dD8ewGH/1JWFFLX/2PmAYNQLgk= +github.com/go-openapi/jsonpointer v0.22.1 h1:sHYI1He3b9NqJ4wXLoJDKmUmHkWy/L7rtEo92JUxBNk= +github.com/go-openapi/jsonpointer v0.22.1/go.mod h1:pQT9OsLkfz1yWoMgYFy4x3U5GY5nUlsOn1qSBH5MkCM= +github.com/go-openapi/jsonreference v0.21.3 h1:96Dn+MRPa0nYAR8DR1E03SblB5FJvh7W6krPI0Z7qMc= +github.com/go-openapi/jsonreference v0.21.3/go.mod h1:RqkUP0MrLf37HqxZxrIAtTWW4ZJIK1VzduhXYBEeGc4= +github.com/go-openapi/loads v0.23.2 h1:rJXAcP7g1+lWyBHC7iTY+WAF0rprtM+pm8Jxv1uQJp4= +github.com/go-openapi/loads v0.23.2/go.mod h1:IEVw1GfRt/P2Pplkelxzj9BYFajiWOtY2nHZNj4UnWY= +github.com/go-openapi/runtime v0.29.2 h1:UmwSGWNmWQqKm1c2MGgXVpC2FTGwPDQeUsBMufc5Yj0= +github.com/go-openapi/runtime v0.29.2/go.mod h1:biq5kJXRJKBJxTDJXAa00DOTa/anflQPhT0/wmjuy+0= +github.com/go-openapi/spec v0.22.1 h1:beZMa5AVQzRspNjvhe5aG1/XyBSMeX1eEOs7dMoXh/k= +github.com/go-openapi/spec v0.22.1/go.mod h1:c7aeIQT175dVowfp7FeCvXXnjN/MrpaONStibD2WtDA= +github.com/go-openapi/strfmt v0.25.0 h1:7R0RX7mbKLa9EYCTHRcCuIPcaqlyQiWNPTXwClK0saQ= +github.com/go-openapi/strfmt v0.25.0/go.mod h1:nNXct7OzbwrMY9+5tLX4I21pzcmE6ccMGXl3jFdPfn8= +github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU= +github.com/go-openapi/swag v0.25.4/go.mod h1:zNfJ9WZABGHCFg2RnY0S4IOkAcVTzJ6z2Bi+Q4i6qFQ= +github.com/go-openapi/swag/cmdutils v0.25.4 h1:8rYhB5n6WawR192/BfUu2iVlxqVR9aRgGJP6WaBoW+4= +github.com/go-openapi/swag/cmdutils v0.25.4/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= +github.com/go-openapi/swag/conv v0.25.4 h1:/Dd7p0LZXczgUcC/Ikm1+YqVzkEeCc9LnOWjfkpkfe4= +github.com/go-openapi/swag/conv v0.25.4/go.mod h1:3LXfie/lwoAv0NHoEuY1hjoFAYkvlqI/Bn5EQDD3PPU= +github.com/go-openapi/swag/fileutils v0.25.4 h1:2oI0XNW5y6UWZTC7vAxC8hmsK/tOkWXHJQH4lKjqw+Y= +github.com/go-openapi/swag/fileutils v0.25.4/go.mod h1:cdOT/PKbwcysVQ9Tpr0q20lQKH7MGhOEb6EwmHOirUk= +github.com/go-openapi/swag/jsonname v0.25.4 h1:bZH0+MsS03MbnwBXYhuTttMOqk+5KcQ9869Vye1bNHI= +github.com/go-openapi/swag/jsonname v0.25.4/go.mod h1:GPVEk9CWVhNvWhZgrnvRA6utbAltopbKwDu8mXNUMag= +github.com/go-openapi/swag/jsonutils v0.25.4 h1:VSchfbGhD4UTf4vCdR2F4TLBdLwHyUDTd1/q4i+jGZA= +github.com/go-openapi/swag/jsonutils v0.25.4/go.mod h1:7OYGXpvVFPn4PpaSdPHJBtF0iGnbEaTk8AvBkoWnaAY= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4 h1:IACsSvBhiNJwlDix7wq39SS2Fh7lUOCJRmx/4SN4sVo= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4/go.mod h1:Mt0Ost9l3cUzVv4OEZG+WSeoHwjWLnarzMePNDAOBiM= +github.com/go-openapi/swag/loading v0.25.4 h1:jN4MvLj0X6yhCDduRsxDDw1aHe+ZWoLjW+9ZQWIKn2s= +github.com/go-openapi/swag/loading v0.25.4/go.mod h1:rpUM1ZiyEP9+mNLIQUdMiD7dCETXvkkC30z53i+ftTE= +github.com/go-openapi/swag/mangling v0.25.4 h1:2b9kBJk9JvPgxr36V23FxJLdwBrpijI26Bx5JH4Hp48= +github.com/go-openapi/swag/mangling v0.25.4/go.mod h1:6dxwu6QyORHpIIApsdZgb6wBk/DPU15MdyYj/ikn0Hg= +github.com/go-openapi/swag/netutils v0.25.4 h1:Gqe6K71bGRb3ZQLusdI8p/y1KLgV4M/k+/HzVSqT8H0= +github.com/go-openapi/swag/netutils v0.25.4/go.mod h1:m2W8dtdaoX7oj9rEttLyTeEFFEBvnAx9qHd5nJEBzYg= +github.com/go-openapi/swag/stringutils v0.25.4 h1:O6dU1Rd8bej4HPA3/CLPciNBBDwZj9HiEpdVsb8B5A8= +github.com/go-openapi/swag/stringutils v0.25.4/go.mod h1:GTsRvhJW5xM5gkgiFe0fV3PUlFm0dr8vki6/VSRaZK0= +github.com/go-openapi/swag/typeutils v0.25.4 h1:1/fbZOUN472NTc39zpa+YGHn3jzHWhv42wAJSN91wRw= +github.com/go-openapi/swag/typeutils v0.25.4/go.mod h1:Ou7g//Wx8tTLS9vG0UmzfCsjZjKhpjxayRKTHXf2pTE= +github.com/go-openapi/swag/yamlutils v0.25.4 h1:6jdaeSItEUb7ioS9lFoCZ65Cne1/RZtPBZ9A56h92Sw= +github.com/go-openapi/swag/yamlutils v0.25.4/go.mod h1:MNzq1ulQu+yd8Kl7wPOut/YHAAU/H6hL91fF+E2RFwc= +github.com/go-openapi/testify/enable/yaml/v2 v2.0.2 h1:0+Y41Pz1NkbTHz8NngxTuAXxEodtNSI1WG1c/m5Akw4= +github.com/go-openapi/testify/enable/yaml/v2 v2.0.2/go.mod h1:kme83333GCtJQHXQ8UKX3IBZu6z8T5Dvy5+CW3NLUUg= +github.com/go-openapi/testify/v2 v2.0.2 h1:X999g3jeLcoY8qctY/c/Z8iBHTbwLz7R2WXd6Ub6wls= +github.com/go-openapi/testify/v2 v2.0.2/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= +github.com/go-openapi/validate v0.25.1 h1:sSACUI6Jcnbo5IWqbYHgjibrhhmt3vR6lCzKZnmAgBw= +github.com/go-openapi/validate v0.25.1/go.mod h1:RMVyVFYte0gbSTaZ0N4KmTn6u/kClvAFp+mAVfS/DQc= 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.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -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-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= +github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= 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= @@ -662,8 +644,8 @@ github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZ github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U= github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA= github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -685,11 +667,11 @@ github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w 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-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc= -github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= +github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -728,18 +710,16 @@ github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= -github.com/gomodule/redigo v1.8.2/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= 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/cel-go v0.22.0 h1:b3FJZxpiv1vTMo2/5RDUqAHPxkT8mmMfJIrq1llbf7g= -github.com/google/cel-go v0.22.0/go.mod h1:BuznPXXfQDpXKWQ9sPW3TzlAJN5zzFe+i9tIs0yC4s8= -github.com/google/certificate-transparency-go v1.3.1 h1:akbcTfQg0iZlANZLn0L9xOeWtyCIdeoYhKrqi5iH3Go= -github.com/google/certificate-transparency-go v1.3.1/go.mod h1:gg+UQlx6caKEDQ9EElFOujyxEQEfOiQzAt6782Bvi8k= -github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= -github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= +github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ= +github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= +github.com/google/certificate-transparency-go v1.3.2 h1:9ahSNZF2o7SYMaKaXhAumVEzXB2QaayzII9C8rv7v+A= +github.com/google/certificate-transparency-go v1.3.2/go.mod h1:H5FpMUaGa5Ab2+KCYsxg6sELw3Flkl7pGZzWdBoYLXs= +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= @@ -758,14 +738,13 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI= -github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI= +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/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= -github.com/google/go-github/v50 v50.2.0/go.mod h1:VBY8FB6yPIjrtKhozXv4FQupxKLS6H4m6xFZlT43q8Q= -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-github/v73 v73.0.0 h1:aR+Utnh+Y4mMkS+2qLQwcQ/cF9mOTpdwnzlaw//rG24= +github.com/google/go-github/v73 v73.0.0/go.mod h1:fa6w8+/V+edSU0muqdhCVY7Beh1M8F1IlQPZIANKIYw= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= @@ -794,58 +773,60 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= -github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= +github.com/google/pprof v0.0.0-20250602020802-c6617b811d0e h1:FJta/0WsADCe1r9vQjdHbd3KuiLPu7Y9WlyLGwMUNyE= +github.com/google/pprof v0.0.0-20250602020802-c6617b811d0e/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= 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/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -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/trillian v1.7.2 h1:EPBxc4YWY4Ak8tcuhyFleY+zYlbCDCa4Sn24e1Ka8Js= +github.com/google/trillian v1.7.2/go.mod h1:mfQJW4qRH6/ilABtPYNBerVJAJ/upxHLX81zxNQw05s= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.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/enterprise-certificate-proxy v0.3.7 h1:zrn2Ee/nWmHulBx5sAVrGgAa0f2/R35S4DJwfFaUPFQ= +github.com/googleapis/enterprise-certificate-proxy v0.3.7/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= +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/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= -github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/schema v1.4.1 h1:jUg5hUjCSDZpNGLuXQOgIWGdlgrIdYvgQ0wZtdK1M3E= github.com/gorilla/schema v1.4.1/go.mod h1:Dg5SSm5PV60mhF2NFaTV1xuYYj8tV8NOPRo4FggUMnM= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +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/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= github.com/grafana/pyroscope-go v1.2.2 h1:uvKCyZMD724RkaCEMrSTC38Yn7AnFe8S2wiAIYdDPCE= github.com/grafana/pyroscope-go v1.2.2/go.mod h1:zzT9QXQAp2Iz2ZdS216UiV8y9uXJYQiGE1q8v1FyhqU= github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= +github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/graph-gophers/graphql-go v1.5.0 h1:fDqblo50TEpD0LY7RXk/LFVYEVqo3+tXMNMPSVXA1yc= github.com/graph-gophers/graphql-go v1.5.0/go.mod h1:YtmJZDLbF1YYNrlNAuiO5zAStUWc3XZT07iGsVqe1Os= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0 h1:kQ0NI7W1B3HwiN5gAYtY+XFItDPbLBwYRxAqbFTyDes= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0/go.mod h1:zrT2dxOAjNFPRGjTUe2Xmb4q4YdUwVvQFV6xiCSf+z0= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 h1:JYghRBlGCZyCF2wNUJ8W0cwaQdtpcssJ4CgC406g+WU= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99/go.mod h1:3bDW6wMZJB7tiONtC/1Xpicra6Wp5GgbTbQWCbI5fkc= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -867,17 +848,17 @@ github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+ 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.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -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-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48= +github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw= 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/parseutil v0.2.0 h1:U+kC2dOhMFQctRfhK0gRctKAPTloZdMU5ZJxaesJ/VM= +github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0= 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.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -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-sockaddr v1.0.7 h1:G+pTkSO01HpR5qCxg7lxfsFEZaG+C0VssTy/9dbT+Fw= +github.com/hashicorp/go-sockaddr v1.0.7/go.mod h1:FZQbEYa1pxkQ7WLpyXJ6cbjpT8q0YgQaK/JakXqGyWw= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -885,14 +866,15 @@ github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKe github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= -github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5 h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU= 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.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -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/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I= +github.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= @@ -900,8 +882,8 @@ github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/vault/api v1.16.0 h1:nbEYGJiAPGzT9U4oWgaaB0g+Rj8E59QuHKyA5LhwQN4= -github.com/hashicorp/vault/api v1.16.0/go.mod h1:KhuUhzOD8lDSk29AtzNjgAu2kxRA9jL9NAbkFlqvkBA= +github.com/hashicorp/vault/api v1.22.0 h1:+HYFquE35/B74fHoIeXlZIP2YADVboaPjaSicHEZiH0= +github.com/hashicorp/vault/api v1.22.0/go.mod h1:IUZA2cDvr4Ok3+NtK2Oq/r+lJeXkeCrHRmqdyWfpmGM= github.com/heimdalr/dag v1.5.0 h1:hqVtijvY776P5OKP3QbdVBRt3Xxq6BYopz3XgklsGvo= github.com/heimdalr/dag v1.5.0/go.mod h1:lthekrHl01dddmzqyBQ1YZbi7XcVGGzjFo0jIky5knc= github.com/helm/helm-mapkubeapis v0.5.2 h1:pxiy9J5CtIAH2KCBaJEvgHxeoPhgTwzF2AXa92hPUzs= @@ -914,8 +896,8 @@ github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/in-toto/attestation v1.1.1 h1:QD3d+oATQ0dFsWoNh5oT0udQ3tUrOsZZ0Fc3tSgWbzI= -github.com/in-toto/attestation v1.1.1/go.mod h1:Dcq1zVwA2V7Qin8I7rgOi+i837wEf/mOZwRm047Sjys= +github.com/in-toto/attestation v1.1.2 h1:MBFn6lsMq6dptQZJBhalXTcWMb/aJy3V+GX3VYj/V1E= +github.com/in-toto/attestation v1.1.2/go.mod h1:gYFddHMZj3DiQ0b62ltNi1Vj5rC879bTmBbrv9CRHpM= 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.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -937,8 +919,6 @@ github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8 github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= github.com/jackc/pgconn v1.14.3 h1:bVoTr12EGANZz66nZPkMInAV/KHD2TxH9npjXXgiB3w= github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM= -github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438 h1:Dj0L5fhJ9F82ZJyVOmBx6msDp/kfd1t9GRfny/mfJA0= -github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= @@ -987,8 +967,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl 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/jellydator/ttlcache/v3 v3.4.0 h1:YS4P125qQS0tNhtL6aeYkheEaB/m8HCqdMMP4mnWdTY= +github.com/jellydator/ttlcache/v3 v3.4.0/go.mod h1:Hw9EgjymziQD3yGsQdf1FqFdpp7YjFMd4Srg5EJlgD4= github.com/jeremywohl/flatten v1.0.1 h1:LrsxmB3hfwJuE+ptGOijix1PIfOoKLJ3Uee/mzbgtrs= github.com/jeremywohl/flatten v1.0.1/go.mod h1:4AmD/VxjWcI5SRB0n6szE2A6s2fsNHDLO0nAlMHgfLQ= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -1008,7 +988,6 @@ github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFF github.com/joshdk/go-junit v1.0.0 h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE= github.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -1018,8 +997,6 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= 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/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= @@ -1030,8 +1007,8 @@ github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 h1:veS9QfglfvqAw github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co= +github.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= @@ -1061,8 +1038,8 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= -github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec h1:2tTW6cDth2TSgRbAhD7yjZzTQmcN25sDRPEeinR51yQ= -github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec/go.mod h1:TmwEoGCwIti7BCeJ9hescZgRtatxRE+A72pCoPfmcfk= +github.com/letsencrypt/boulder v0.20251110.0 h1:J8MnKICeilO91dyQ2n5eBbab24neHzUpYMUIOdOtbjc= +github.com/letsencrypt/boulder v0.20251110.0/go.mod h1:ogKCJQwll82m7OVHWyTuf8eeFCjuzdRQlgnZcCl0V+8= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1109,16 +1086,16 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/mattn/go-sqlite3 v1.14.27 h1:drZCnuvf37yPfs95E5jd9s3XhdVWLal+6BOK6qrv6IU= -github.com/mattn/go-sqlite3 v1.14.27/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A= +github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/microcosm-cc/bluemonday v1.0.23 h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY= github.com/microcosm-cc/bluemonday v1.0.23/go.mod h1:mN70sk7UkkF8TUr2IGBpNN0jAgStuPzlK76QuruE/z4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= -github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= +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= @@ -1139,8 +1116,6 @@ github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374 github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= 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/sys/capability v0.4.0 h1:4D4mI6KlNtWMCM1Z/K0i7RV1FkX+DBDHKVJpCndZoHk= @@ -1149,8 +1124,6 @@ github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9Kou github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4= github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= -github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= -github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= 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= @@ -1158,8 +1131,9 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w 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 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= 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= @@ -1173,6 +1147,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= 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/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A= +github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM= 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= @@ -1189,14 +1165,12 @@ github.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9l github.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= 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 v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/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.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= -github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= +github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= +github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= 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= @@ -1212,8 +1186,6 @@ github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9 github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/open-policy-agent/opa v1.1.0 h1:HMz2evdEMTyNqtdLjmu3Vyx06BmhNYAx67Yz3Ll9q2s= -github.com/open-policy-agent/opa v1.1.0/go.mod h1:T1pASQ1/vwfTa+e2fYcfpLCvWgYtqtiUv+IuA/dLPQs= 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= @@ -1222,13 +1194,12 @@ github.com/opencontainers/runtime-spec v1.2.1 h1:S4k4ryNgEpxW1dzyqffOmhI1BHYcjzU github.com/opencontainers/runtime-spec v1.2.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/openshift-online/ocm-sdk-go v0.1.465 h1:RZr92sdcAKyLVcL19/RYOn6KVtspDUH1wc3UuO4LgiE= github.com/openshift-online/ocm-sdk-go v0.1.465/go.mod h1:EOkylgH0bafd+SlU9YvMrIIxHJw0Hk1EnC7W1VZeW8I= -github.com/openshift/api v0.0.0-20240415161129-d7aff303fa1a h1:BJqjjh5Q10aJEr84zUnoW0RKGfSIihTxU+iNnPqRzKQ= -github.com/openshift/api v0.0.0-20240415161129-d7aff303fa1a/go.mod h1:CxgbWAlvu2iQB0UmKTtRu1YfepRg1/vJ64n2DlIEVz4= -github.com/openshift/client-go v0.0.0-20240415191513-dcdeb09390b4 h1:l/gocTF9qYhmm+RWgPS9GVPyeisDqCYluSUy2+F3G2E= -github.com/openshift/client-go v0.0.0-20240415191513-dcdeb09390b4/go.mod h1:Q3mt/X5xrxnR5R6BE7duF2ToLioRQJYnTYaaDS4QZTs= +github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7 h1:Ot2fbEEPmF3WlPQkyEW/bUCV38GMugH/UmZvxpWceNc= +github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7/go.mod h1:d5uzF0YN2nQQFA0jIEWzzOZ+edmo6wzlGLvx5Fhz4uY= +github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235 h1:9JBeIXmnHlpXTQPi7LPmu1jdxznBhAE7bb1K+3D8gxY= +github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235/go.mod h1:L49W6pfrZkfOE5iC1PqEkuLkXG4W0BX4w8b+L2Bv7fM= github.com/openshift/runtime-utils v0.0.0-20230921210328-7bdb5b9c177b h1:oXzC1N6E9gw76/WH2gEA8GEHvuq09wuVQ9GoCuR8GF4= github.com/openshift/runtime-utils v0.0.0-20230921210328-7bdb5b9c177b/go.mod h1:l9/qeKZuAmYUMl0yicJlbkPGDsIycGhwxOvOAWyaP0E= -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/operator-framework/operator-lib v0.17.0 h1:cbz51wZ9+GpWR1ZYP4CSKSSBxDlWxmmnseaHVZZjZt4= github.com/operator-framework/operator-lib v0.17.0/go.mod h1:TGopBxIE8L6E/Cojzo26R3NFp1eNlqhQNmzqhOblaLw= @@ -1239,13 +1210,11 @@ github.com/package-url/packageurl-go v0.1.3 h1:4juMED3hHiz0set3Vq3KeQ75KD1avthoX github.com/package-url/packageurl-go v0.1.3/go.mod h1:nKAWB8E6uk1MHqiS/lQb9pYBGH2+mdJ2PJc2s50dQY0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -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.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= 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.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +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/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= @@ -1279,10 +1248,9 @@ github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +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-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1293,19 +1261,19 @@ github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7q github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= +github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d h1:HWfigq7lB31IeJL8iy7jkUmU/PG1Sr8jVGhS749dbUA= -github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= -github.com/quay/claircore v1.5.37 h1:98ncka8WqIAM04l62nwu96iFV7mf0z0BLKqNxQL3Iwo= -github.com/quay/claircore v1.5.37/go.mod h1:3yfkeVOtu1BW54yyNrC4hWKxQQkPRbcH6AvQVInBeIU= +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/quay/claircore v1.5.38 h1:0CkZo7XCpM1Sln7PPcu6HFrrQ+y/ViT3vL7QXMBh0x8= +github.com/quay/claircore v1.5.38/go.mod h1:U3zn/sn3NKOMO1a5kEGkBXmLR98w2OIPiE0eKLT5Fy4= github.com/quay/claircore/toolkit v1.0.0/go.mod h1:3ELtgf92x7o1JCTSKVOAqhcnCTXc4s5qiGaEDx62i20= github.com/quay/claircore/toolkit v1.2.5-0.20250120211107-bea8a6c197b2 h1:v4MBdtms7OhJgipiFSYNgfQ0nr7O+VPVESYwpS2Wb4M= github.com/quay/claircore/toolkit v1.2.5-0.20250120211107-bea8a6c197b2/go.mod h1:7CB7Q7tUGC0GwprVcq354sLRPRzmKJiLMgqJ1BzIwYc= @@ -1315,10 +1283,12 @@ github.com/quay/goval-parser v0.8.8 h1:Uf+f9iF2GIR5GPUY2pGoa9il2+4cdES44ZlM0mWm4 github.com/quay/goval-parser v0.8.8/go.mod h1:Y0NTNfPYOC7yxsYKzJOrscTWUPq1+QbtHw4XpPXWPMc= github.com/quay/zlog v1.1.8 h1:/cKgHpqKu3g7mB9OlvnfbqrbPIssyxeameDBytGPrNs= github.com/quay/zlog v1.1.8/go.mod h1:wg9IIQicn8f4ofUbCTC51FmqpxTpsGOQU+hIeIAe8Aw= -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/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= -github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= +github.com/redis/go-redis/extra/rediscmd/v9 v9.5.3 h1:1/BDligzCa40GTllkDnY3Y5DTHuKCONbB2JcRyIfl20= +github.com/redis/go-redis/extra/rediscmd/v9 v9.5.3/go.mod h1:3dZmcLn3Qw6FLlWASn1g4y+YO9ycEFUOM+bhBmzLVKQ= +github.com/redis/go-redis/extra/redisotel/v9 v9.5.3 h1:kuvuJL/+MZIEdvtb/kTBRiRgYaOmx1l+lYJyVdrRUOs= +github.com/redis/go-redis/extra/redisotel/v9 v9.5.3/go.mod h1:7f/FMrf5RRRVHXgfk7CzSVzXHiWeuOQUu2bsVqWoa+g= +github.com/redis/go-redis/v9 v9.14.1 h1:nDCrEiJmfOWhD76xlaw+HXT0c9hfNWeXgl0vIRYSDvQ= +github.com/redis/go-redis/v9 v9.14.1/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= github.com/remind101/migrate v0.0.0-20170729031349-52c1edff7319 h1:ukjThsA2ou7AmovpwtMVkNQSuoN/v5U16+JomTz3c7o= github.com/remind101/migrate v0.0.0-20170729031349-52c1edff7319/go.mod h1:rhSvwcijY9wfmrBYrfCvapX8/xOTV46NAUjBRgUyJqc= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= @@ -1329,16 +1299,16 @@ github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.13.2-0.20241226121412-a5dc8ff20d0a h1:w3tdWGKbLGBPtR/8/oO74W6hmz0qE5q0z9aqSAewaaM= -github.com/rogpeppe/go-internal v1.13.2-0.20241226121412-a5dc8ff20d0a/go.mod h1:S8kfXMp+yh77OxPD4fdM6YUknrZpQxLhvxzS4gDHENY= +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/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= -github.com/rubenv/sql-migrate v1.7.1 h1:f/o0WgfO/GqNuVg+6801K/KW3WdDSupzSjDYODmiUq4= -github.com/rubenv/sql-migrate v1.7.1/go.mod h1:Ob2Psprc0/3ggbM6wCzyYVFFuc6FyZrb2AS+ezLDFb4= +github.com/rubenv/sql-migrate v1.8.0 h1:dXnYiJk9k3wetp7GfQbKJcPHjVJL6YK19tKj8t2Ns0o= +github.com/rubenv/sql-migrate v1.8.0/go.mod h1:F2bGFBwCU+pnmbtNYDeKvSuvL6lBVtXDXUUv5t+u1qw= github.com/russellhaering/gosaml2 v0.10.0 h1:z7JTpKmC4JVG94tvSQz4lszUdKLt+uy5c6lEkhdEz3Y= github.com/russellhaering/gosaml2 v0.10.0/go.mod h1:XLwI/5aWV4E2X9p+qj6LgRwiYGv2nh4YS6pQBGlQ0Cc= github.com/russellhaering/goxmldsig v1.5.0 h1:AU2UkkYIUOTyZRbe08XMThaOCelArgvNfYapcmSjBNw= @@ -1349,22 +1319,20 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb 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/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= -github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= -github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= +github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= +github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= 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/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/secure-systems-lab/go-securesystemslib v0.9.0 h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc= -github.com/secure-systems-lab/go-securesystemslib v0.9.0/go.mod h1:DVHKMcZ+V4/woA/peqr+L0joiRXbPpQ042GgJckkFgw= +github.com/secure-systems-lab/go-securesystemslib v0.9.1 h1:nZZaNz4DiERIQguNy0cL5qTdn9lR8XKHf4RUyG1Sx3g= +github.com/secure-systems-lab/go-securesystemslib v0.9.1/go.mod h1:np53YzT0zXGMv6x4iEWc9Z59uR+x+ndLwCLqPYpLXVU= github.com/segmentio/analytics-go/v3 v3.3.0 h1:8VOMaVGBW03pdBrj1CMFfY9o/rnjJC+1wyQHlVxjw5o= github.com/segmentio/analytics-go/v3 v3.3.0/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= github.com/segmentio/backo-go v1.0.1 h1:68RQccglxZeyURy93ASB/2kc9QudzgIDexJ927N++y4= github.com/segmentio/backo-go v1.0.1/go.mod h1:9/Rh6yILuLysoQnZ2oNooD2g7aBnvM7r/fNVxRNWfBc= -github.com/segmentio/ksuid v1.0.4 h1:sBo2BdShXjmcugAMwjugoGUdUV0pcxY5mW4xKRn3v4c= -github.com/segmentio/ksuid v1.0.4/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= @@ -1374,36 +1342,38 @@ github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9Nz github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= -github.com/sigstore/cosign/v2 v2.5.0 h1:1aRfPgRQHHlODI3Mvs/JkPBS9dJT9bRLCuHZgnHxFt8= -github.com/sigstore/cosign/v2 v2.5.0/go.mod h1:2V2hmo+jjFNnDb5Q5VL6PXvLU9Vujio7T5yldrpNTRw= -github.com/sigstore/fulcio v1.6.6 h1:XaMYX6TNT+8n7Npe8D94nyZ7/ERjEsNGFC+REdi/wzw= -github.com/sigstore/fulcio v1.6.6/go.mod h1:BhQ22lwaebDgIxVBEYOOqLRcN5+xOV+C9bh/GUXRhOk= -github.com/sigstore/protobuf-specs v0.4.1 h1:5SsMqZbdkcO/DNHudaxuCUEjj6x29tS2Xby1BxGU7Zc= -github.com/sigstore/protobuf-specs v0.4.1/go.mod h1:+gXR+38nIa2oEupqDdzg4qSBT0Os+sP7oYv6alWewWc= -github.com/sigstore/rekor v1.3.10 h1:/mSvRo4MZ/59ECIlARhyykAlQlkmeAQpvBPlmJtZOCU= -github.com/sigstore/rekor v1.3.10/go.mod h1:JvryKJ40O0XA48MdzYUPu0y4fyvqt0C4iSY7ri9iu3A= -github.com/sigstore/sigstore v1.9.4 h1:64+OGed80+A4mRlNzRd055vFcgBeDghjZw24rPLZgDU= -github.com/sigstore/sigstore v1.9.4/go.mod h1:Q7tGTC3gbtK7c3jcxEmGc2MmK4rRpIRzi3bxRFWKvEY= -github.com/sigstore/sigstore-go v0.7.1 h1:lyzi3AjO6+BHc5zCf9fniycqPYOt3RaC08M/FRmQhVY= -github.com/sigstore/sigstore-go v0.7.1/go.mod h1:AIRj4I3LC82qd07VFm3T2zXYiddxeBV1k/eoS8nTz0E= -github.com/sigstore/sigstore/pkg/signature/kms/aws v1.9.1 h1:/YcNq687WnXpIRXl04nLfJX741G4iW+w+7Nem2Zy0f4= -github.com/sigstore/sigstore/pkg/signature/kms/aws v1.9.1/go.mod h1:ApL9RpKsi7gkSYN0bMNdm/3jZ9EefxMmfYHfUmq2ZYM= -github.com/sigstore/sigstore/pkg/signature/kms/azure v1.9.1 h1:FnusXyTIInnwfIOzzl5PFilRm1I97dxMSOcCkZBu9Kc= -github.com/sigstore/sigstore/pkg/signature/kms/azure v1.9.1/go.mod h1:d5m5LOa/69a+t2YC9pDPwS1n2i/PhqB4cUKbpVDlKKE= -github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.1 h1:LFiYK1DEWQ6Hf/nroFzBMM+s5rVSjVL45Alpb5Ctl5A= -github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.1/go.mod h1:GFyFmDsE2wDuIHZD+4+JErGpA0S4zJsKNz5l2JVJd8s= -github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.9.1 h1:sIW6xe4yU5eIMH8fve2C78d+r29KmHnIb+7po+80bsY= -github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.9.1/go.mod h1:3pNf99GnK9eu3XUa5ebHzgEQSVYf9hqAoPFwbwD6O6M= -github.com/sigstore/timestamp-authority v1.2.5 h1:W22JmwRv1Salr/NFFuP7iJuhytcZszQjldoB8GiEdnw= -github.com/sigstore/timestamp-authority v1.2.5/go.mod h1:gWPKWq4HMWgPCETre0AakgBzcr9DRqHrsgbrRqsigOs= +github.com/sigstore/cosign/v3 v3.0.3 h1:IknuTUYM+tZ/ToghM7mvg9V0O31NG3rev97u1IJIuYA= +github.com/sigstore/cosign/v3 v3.0.3/go.mod h1:poeQqwvpDNIDyim7a2ljUhonVKpCys+fx3SY0Lkmi/4= +github.com/sigstore/fulcio v1.8.3 h1:zkuAkRHbD53hhYGlBHHeAW4NRDrrTiDHumAbcfSyyFw= +github.com/sigstore/fulcio v1.8.3/go.mod h1:YxP7TTdn9H5Gg+dXOsu61X36LLYxT2ZuvODhWelMNwA= +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.4.3 h1:2+aw4Gbgumv8vYM/QVg6b+hvr4x4Cukur8stJrVPKU0= +github.com/sigstore/rekor v1.4.3/go.mod h1:o0zgY087Q21YwohVvGwV9vK1/tliat5mfnPiVI3i75o= +github.com/sigstore/rekor-tiles/v2 v2.0.1 h1:1Wfz15oSRNGF5Dzb0lWn5W8+lfO50ork4PGIfEKjZeo= +github.com/sigstore/rekor-tiles/v2 v2.0.1/go.mod h1:Pjsbhzj5hc3MKY8FfVTYHBUHQEnP0ozC4huatu4x7OU= +github.com/sigstore/sigstore v1.10.0 h1:lQrmdzqlR8p9SCfWIpFoGUqdXEzJSZT2X+lTXOMPaQI= +github.com/sigstore/sigstore v1.10.0/go.mod h1:Ygq+L/y9Bm3YnjpJTlQrOk/gXyrjkpn3/AEJpmk1n9Y= +github.com/sigstore/sigstore-go v1.1.4-0.20251201121426-2cdedea80894 h1:K8hnZhun6XacjxAdCdxkowSi7+FpmfYnAcMhTXZQyPg= +github.com/sigstore/sigstore-go v1.1.4-0.20251201121426-2cdedea80894/go.mod h1:uuR+Edo6P+iwi0HKscycUm8mxXL748nAureqSg6jFLA= +github.com/sigstore/sigstore/pkg/signature/kms/aws v1.10.0 h1:UOHpiyezCj5RuixgIvCV3QyuxIGQT+N6nGZEXA7OTTY= +github.com/sigstore/sigstore/pkg/signature/kms/aws v1.10.0/go.mod h1:U0CZmA2psabDa8DdiV7yXab0AHODzfKqvD2isH7Hrvw= +github.com/sigstore/sigstore/pkg/signature/kms/azure v1.10.0 h1:fq4+8Y4YadxeF8mzhoMRPZ1mVvDYXmI3BfS0vlkPT7M= +github.com/sigstore/sigstore/pkg/signature/kms/azure v1.10.0/go.mod h1:u05nqPWY05lmcdHhv2lPaWTH3FGUhJzO7iW2hbboK3Q= +github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.10.0 h1:iUEf5MZYOuXGnXxdF/WrarJrk0DTVHqeIOjYdtpVXtc= +github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.10.0/go.mod h1:i6vg5JfEQix46R1rhQlrKmUtJoeH91drltyYOJEk1T4= +github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.10.0 h1:dUvPv/MP23ZPIXZUW45kvCIgC0ZRfYxEof57AB6bAtU= +github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.10.0/go.mod h1:fR/gDdPvJWGWL70/NgBBIL1O0/3Wma6JHs3tSSYg3s4= +github.com/sigstore/timestamp-authority/v2 v2.0.3 h1:sRyYNtdED/ttLCMdaYnwpf0zre1A9chvjTnCmWWxN8Y= +github.com/sigstore/timestamp-authority/v2 v2.0.3/go.mod h1:mDaHxkt3HmZYoIlwYj4QWo0RUr7VjYU52aVO5f5Qb3I= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af h1:Sp5TG9f7K39yfB+If0vjp97vuT74F72r8hfRpP8jLU0= +github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= @@ -1411,31 +1381,32 @@ github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:s 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/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb/go.mod h1:uKWaldnbMnjsSAXRurWqqrdyZen1R7kxl8TkmWk2OyM= github.com/spdx/tools-golang v0.5.5 h1:61c0KLfAcNqAjlg6UNMdkwpMernhw3zVRwDZ2x9XOmk= github.com/spdx/tools-golang v0.5.5/go.mod h1:MVIsXx8ZZzaRWNQpUDhC4Dud34edUYJYecciXgrw5vE= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +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.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= -github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.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.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= -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.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= -github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= +github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= +github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= +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/stackrox/docker-registry-client v0.2.0 h1:91TLimNkFgdwO9QF8rUC57DoLGiTAgDKm2KhLI2xkLU= github.com/stackrox/docker-registry-client v0.2.0/go.mod h1:4TU+pA11iczIvhtL0own2OJcJXc1o26tBHDivaXhlZU= github.com/stackrox/dotnet-scraper v0.0.0-20201023051640-72ef543323dd h1:vEjp7Q66zd4W72//Uk3uyVN50Mh/nFLbN9pb7CVK7mE= @@ -1468,8 +1439,8 @@ github.com/stackrox/yaml/v3 v3.0.0 h1:GF9Xtco/eGpj6Ytivh7RcUJQR2jKxzEBfw2Qlrzci7 github.com/stackrox/yaml/v3 v3.0.0/go.mod h1:360StwOazy3cplMWHzBAA9y6InmKu/v7WB0/eMiPXB8= github.com/stackrox/zap v1.18.2-0.20240314134248-5f932edd0404 h1:j2qhsZjUBpN4yaqEGkNrATdw3fE3vgMrVOhd44cUJDY= github.com/stackrox/zap v1.18.2-0.20240314134248-5f932edd0404/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= -github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= +github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= +github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -1490,21 +1461,20 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +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.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= 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.0.2 h1:PyNnjV9BJNzN1ZE6BcWK+5JbF+if370jjzO84SS+Ebo= -github.com/theupdateframework/go-tuf/v2 v2.0.2/go.mod h1:baB22nBHeHBCeuGZcIlctNq4P61PcOdyARlplg5xmLA= +github.com/theupdateframework/go-tuf/v2 v2.3.0 h1:gt3X8xT8qu/HT4w+n1jgv+p7koi5ad8XEkLXXZqG9AA= +github.com/theupdateframework/go-tuf/v2 v2.3.0/go.mod h1:xW8yNvgXRncmovMLvBxKwrKpsOwJZu/8x+aB0KtFcdw= 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= @@ -1516,8 +1486,10 @@ github.com/tink-crypto/tink-go-awskms/v2 v2.1.0 h1:N9UxlsOzu5mttdjhxkDLbzwtEecuX 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.4.0 h1:8VPZeZI4EeZ8P/vB6SIkhlStrJfivTJn+cQ4dtyHNh0= -github.com/tink-crypto/tink-go/v2 v2.4.0/go.mod h1:l//evrF2Y3MjdbpNDNGnKgCpo5zSmvUvnQ4MU+yE2sw= +github.com/tink-crypto/tink-go-hcvault/v2 v2.3.0 h1:6nAX1aRGnkg2SEUMwO5toB2tQkP0Jd6cbmZ/K5Le1V0= +github.com/tink-crypto/tink-go-hcvault/v2 v2.3.0/go.mod h1:HOC5NWW1wBI2Vke1FGcRBvDATkEYE7AUDiYbXqi2sBw= +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/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0= github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399/go.mod h1:LdwHTNJT99C5fTAzDz0ud328OgXz+gierycbcIx2fRs= github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= @@ -1525,6 +1497,8 @@ 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/tkuchiki/go-timezone v0.2.3 h1:D3TVdIPrFsu9lxGxqNX2wsZwn1MZtTqTW0mdevMozHc= github.com/tkuchiki/go-timezone v0.2.3/go.mod h1:oFweWxYl35C/s7HMVZXiA19Jr9Y0qJHMaG/J2TES4LY= +github.com/transparency-dev/formats v0.0.0-20251017110053-404c0d5b696c h1:5a2XDQ2LiAUV+/RjckMyq9sXudfrPSuCY4FuPC1NyAw= +github.com/transparency-dev/formats v0.0.0-20251017110053-404c0d5b696c/go.mod h1:g85IafeFJZLxlzZCDRu4JLpfS7HKzR+Hw9qRh3bVzDI= 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/travelaudience/go-promhttp v1.0.1 h1:Z7+n8yg4cx72TDS1xeRMZLxmVrVuWgiYVhG/hHD2lV0= @@ -1534,10 +1508,10 @@ github.com/trivago/tgo v1.0.7/go.mod h1:w4dpD+3tzNIIiIfkWWa85w5/B77tlvdZckQ+6PkF github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= -github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo= -github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA= +github.com/ulikunitz/xz v0.5.14 h1:uv/0Bq533iFdnMHZdRBTOlaNMdb1+ZxXIlHDZHIHcvg= +github.com/ulikunitz/xz v0.5.14/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +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/vbauerster/mpb/v4 v4.12.2 h1:TsBs1nWRYF0m8cUH13pxNhOUqY6yKcOr2PeSYxp2L3I= github.com/vbauerster/mpb/v4 v4.12.2/go.mod h1:LVRGvMch8T4HQO3eg2pFPsACH9kO/O6fT/7vhGje3QE= github.com/vladimirvivien/gexe v0.2.0 h1:nbdAQ6vbZ+ZNsolCgSVb9Fno60kzSuvtzVh6Ytqi/xY= @@ -1545,9 +1519,9 @@ github.com/vladimirvivien/gexe v0.2.0/go.mod h1:LHQL00w/7gDUKIak24n801ABp8C+ni6e github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/weppos/publicsuffix-go v0.13.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= -github.com/weppos/publicsuffix-go v0.30.2-0.20230730094716-a20f9abcc222/go.mod h1:s41lQh6dIsDWIC1OWh7ChWJXLH0zkJ9KHZVqA7vHyuQ= -github.com/weppos/publicsuffix-go v0.30.3-0.20240510084413-5f1d03393b3d h1:q80YKUcDWRNvvQcziH63e3ammTWARwrhohBCunHaYAg= -github.com/weppos/publicsuffix-go v0.30.3-0.20240510084413-5f1d03393b3d/go.mod h1:vLdXKydr/OJssAXmjY0XBgLXUfivBMrNRIBljgtqCnw= +github.com/weppos/publicsuffix-go v0.40.3-0.20250127173806-e489a31678ca/go.mod h1:43Dfyxu2dpmLg56at26Q4k9gwf3yWSUiwk8kGnwzULk= +github.com/weppos/publicsuffix-go v0.50.1-0.20250829105427-5340293a34a1 h1:e+uu4AaRkDK7dfU29WbMpf+jDS8TYmLw97dtNbSA4DE= +github.com/weppos/publicsuffix-go v0.50.1-0.20250829105427-5340293a34a1/go.mod h1:VXhClBYMlDrUsome4pOTpe68Ui0p6iQRAbyHQD1yKoU= 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/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -1563,8 +1537,6 @@ github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofm github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= -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= @@ -1582,17 +1554,9 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940 h1:p7OofyZ509h8DmPLh8Hn+EIIZm/xYhdZHJ9GnXHdr6U= -github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.7 h1:4DTF1WOM2ZZS/xMOkTFBOcb6XiHu/PKn3rVo6dbewQE= -github.com/yvasiyarov/gorelic v0.0.7/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20160601141957-9c099fbc30e9 h1:AsFN8kXcCVkUFHyuzp1FtYbzp1nCO/H6+1uPSGEyPzM= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20160601141957-9c099fbc30e9/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= -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= +github.com/zalando/go-keyring v0.2.6 h1:r7Yc3+H+Ux0+M72zacZoItR3UDxeWfKTcabvkI8ua9s= +github.com/zalando/go-keyring v0.2.6/go.mod h1:2TCrxYrbUNYfNS/Kgy/LSrkSQzZ5UPVH85RwfczwvcI= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= -github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= @@ -1600,20 +1564,20 @@ github.com/zmap/zcertificate v0.0.0-20180516150559-0e3d58b1bac4/go.mod h1:5iU54t github.com/zmap/zcertificate v0.0.1/go.mod h1:q0dlN54Jm4NVSSuzisusQY0hqDWvu92C+TWveAxiVWk= github.com/zmap/zcrypto v0.0.0-20201128221613-3719af1573cf/go.mod h1:aPM7r+JOkfL+9qSB4KbYjtoEzJqUK50EXkkJabeNJDQ= github.com/zmap/zcrypto v0.0.0-20201211161100-e54a5822fb7e/go.mod h1:aPM7r+JOkfL+9qSB4KbYjtoEzJqUK50EXkkJabeNJDQ= -github.com/zmap/zcrypto v0.0.0-20231219022726-a1f61fb1661c h1:U1b4THKcgOpJ+kILupuznNwPiURtwVW3e9alJvji9+s= -github.com/zmap/zcrypto v0.0.0-20231219022726-a1f61fb1661c/go.mod h1:GSDpFDD4TASObxvfZfvpZZ3OWHIUHMlhVWlkOe4ewVk= +github.com/zmap/zcrypto v0.0.0-20250129210703-03c45d0bae98 h1:Qp98bmMm9JHPPOaLi2Nb6oWoZ+1OyOMWI7PPeJrirI0= +github.com/zmap/zcrypto v0.0.0-20250129210703-03c45d0bae98/go.mod h1:YTUyN/U1oJ7RzCEY5hUweYxbVUu7X+11wB7OXZT15oE= github.com/zmap/zlint/v3 v3.0.0/go.mod h1:paGwFySdHIBEMJ61YjoqT4h7Ge+fdYG4sUQhnTb1lJ8= -github.com/zmap/zlint/v3 v3.6.0 h1:vTEaDRtYN0d/1Ax60T+ypvbLQUHwHxbvYRnUMVr35ug= -github.com/zmap/zlint/v3 v3.6.0/go.mod h1:NVgiIWssgzp0bNl8P4Gz94NHV2ep/4Jyj9V69uTmZyg= -gitlab.com/gitlab-org/api/client-go v0.127.0 h1:8xnxcNKGF2gDazEoMs+hOZfOspSSw8D0vAoWhQk9U+U= -gitlab.com/gitlab-org/api/client-go v0.127.0/go.mod h1:bYC6fPORKSmtuPRyD9Z2rtbAjE7UeNatu2VWHRf4/LE= +github.com/zmap/zlint/v3 v3.6.6 h1:tH7RJM9bDmh7IonlLEkFIkIn8XDYDYjehhUPgpLVqYA= +github.com/zmap/zlint/v3 v3.6.6/go.mod h1:6yXG+CBOQBRpMCOnpIVPUUL296m5HYksZC9bj5LZkwE= +gitlab.com/gitlab-org/api/client-go v0.160.0 h1:aMQzbcE8zFe0lR/J+a3zneEgH+/EBFs8rD8Chrr4Snw= +gitlab.com/gitlab-org/api/client-go v0.160.0/go.mod h1:ooCNtKB7OyP7GBa279+HrUS3eeJF6Yi6XABZZy7RTSk= go.etcd.io/bbolt v1.4.0 h1:TU77id3TnN/zKr7CO/uk+fBCwF2jGcMuw2B/FMAzYIk= go.etcd.io/bbolt v1.4.0/go.mod h1:AsD+OCi/qPN1giOX1aiLAha3o1U8rAz65bvN4j0sRuk= go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= -go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= -go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= +go.mongodb.org/mongo-driver v1.17.6 h1:87JUG1wZfWsr6rIz3ZmpH90rL5tea7O3IHuSwHUpsss= +go.mongodb.org/mongo-driver v1.17.6/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1621,39 +1585,61 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0 h1:bGvFt68+KTiAKFlacHW6AhA56GF2rS0bdD3aJYEnmzA= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= +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/bridges/prometheus v0.57.0 h1:UW0+QyeyBVhn+COBec3nGhfnFe5lwB0ic1JBVjzhk0w= +go.opentelemetry.io/contrib/bridges/prometheus v0.57.0/go.mod h1:ppciCHRLsyCio54qbzQv0E4Jyth/fLWDTJYfvWpcSVk= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0/go.mod h1:SU+iU7nu5ud4oCb3LQOhIZ3nRLj6FNVrKgtflbaf2ts= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= +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.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 h1:9kV11HXBHZAvuPUZxmMWrH8hZn/6UnHX4K0mu36vNsU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0/go.mod h1:JyA0FHXe22E1NeNiHmVp7kFHglnexDQ7uRWDiiJ1hKQ= -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.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0/go.mod h1:5KXybFvPGds3QinJWQT7pmXf+TN5YIa7CNYObWRkj50= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 h1:j7ZSD+5yn+lo3sGV69nW04rRR0jhYnBwjuX3r0HvnK0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0/go.mod h1:WXbYJTUaZXAbYd8lbgGuvih0yuCfOFC5RJoYnoLcGz8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 h1:t/Qur3vKSkUCcDVaSumWF2PKHt85pc7fRvFuoVT8qFU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0/go.mod h1:Rl61tySSdcOJWoEgYZVtmnKdA0GeKrSqkHC1t+91CH8= +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.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= +go.opentelemetry.io/otel/exporters/prometheus v0.60.0 h1:cGtQxGvZbnrWdC2GyjZi0PDKVSLWP/Jocix3QWfXtbo= +go.opentelemetry.io/otel/exporters/prometheus v0.60.0/go.mod h1:hkd1EekxNo69PTV4OWFGZcKQiIqg0RfuWExcPKFvepk= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0 h1:CHXNXwfKWfzS65yrlB2PVds1IBZcdsX8Vepy9of0iRU= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0/go.mod h1:zKU4zUgKiaRxrdovSS2amdM5gOc59slmo/zJwGX+YBg= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0 h1:cC2yDI3IQd0Udsux7Qmq8ToKAx1XCilTQECZ0KDZyTw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0/go.mod h1:2PD5Ex6z8CFzDbTdOlwyNIUywRr1DN0ospafJM1wJ+s= +go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk= +go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs= +go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v1.4.0 h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg= -go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY= -go.step.sm/crypto v0.60.0 h1:UgSw8DFG5xUOGB3GUID17UA32G4j1iNQ4qoMhBmsVFw= -go.step.sm/crypto v0.60.0/go.mod h1:Ep83Lv818L4gV0vhFTdPWRKnL6/5fRMpi8SaoP5ArSw= +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.74.0 h1:/APBEv45yYR4qQFg47HA8w1nesIGcxh44pGyQNw6JRA= +go.step.sm/crypto v0.74.0/go.mod h1:UoXqCAJjjRgzPte0Llaqen7O9P7XjPmgjgTHQGkKCDk= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1665,14 +1651,18 @@ go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwE go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= 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/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko= -go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o= +go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= +go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= 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/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +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-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -1698,16 +1688,16 @@ golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0 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.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1718,8 +1708,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1748,8 +1738,11 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= 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.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= 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= @@ -1801,15 +1794,16 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su 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.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1823,9 +1817,12 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/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.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1844,7 +1841,6 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1915,29 +1911,30 @@ 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.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.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.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/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.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1948,20 +1945,19 @@ golang.org/x/text v0.3.5/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.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 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.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 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= @@ -2029,8 +2025,14 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +golang.org/x/tools/go/expect v0.1.0-deprecated h1:jY2C5HGYR5lqex3gEniOQL0r7Dq5+VGVgY1nudX5lXY= +golang.org/x/tools/go/expect v0.1.0-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2042,6 +2044,8 @@ golang.stackrox.io/grpc-http1 v0.4.0 h1:Ft0kGqoOrczF/wn9/1PHAP829kJAEgetV8koApnG golang.stackrox.io/grpc-http1 v0.4.0/go.mod h1:C1LXqTDWSucXgeO6BiiyJHNzJkiP99hbUK+wsu0/DyE= 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.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -2074,8 +2078,8 @@ google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdr google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= -google.golang.org/api v0.236.0 h1:CAiEiDVtO4D/Qja2IA9VzlFrgPnK3XVMmRoJZlSWbc0= -google.golang.org/api v0.236.0/go.mod h1:X1WF9CU2oTc+Jml1tiIxGmWFK/UZezdqEu09gcxZAj4= +google.golang.org/api v0.256.0 h1:u6Khm8+F9sxbCTYNoBHg6/Hwv0N/i+V94MvkOSor6oI= +google.golang.org/api v0.256.0/go.mod h1:KIgPhksXADEKJlnEoRa9qAII4rXcy40vfI8HRqcU964= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2146,12 +2150,12 @@ google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2 h1:vPV0tzlsK6EzEDHNNH5sa7Hs9bd7iXR7B1tSiPepkV0= -google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:pKLAc5OolXC3ViWGI62vvC0n10CpwAtRcTNCFwTKBEw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9 h1:LvZVVaPE0JSqL+ZWb6ErZfnEOKIqqFWUJE2D0fObSmc= +google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9/go.mod h1:QFOrLhdAe2PsTp3vQY4quuLKTi9j3XG3r6JPPaw7MSc= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251103181224-f26f9409b101 h1:tRPGkdGHuewF4UisLzzHHr1spKw92qLM98nIzxbC0wY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251103181224-f26f9409b101/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -2180,11 +2184,11 @@ google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20 h1:MLBCGN1O7GzIx+cBiwfYPwtmZ41U3Mn/cotLJciaArI= -google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20/go.mod h1:Nr5H8+MlGWr5+xX/STzdoEqJrO+YteqFbMyCsrb6mH0= +google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6 h1:ExN12ndbJ608cboPYflpTny6mXSzPrDLh0iTaVrRrds= +google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6/go.mod h1:6ytKWczdvnpnO+m+JiG9NjEDzR1FJfsnmJdG7B8QVZ8= 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= @@ -2198,11 +2202,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +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/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2237,8 +2238,8 @@ gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs= gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -helm.sh/helm/v3 v3.17.3 h1:3n5rW3D0ArjFl0p4/oWO8IbY/HKaNNwJtOQFdH2AZHg= -helm.sh/helm/v3 v3.17.3/go.mod h1:+uJKMH/UiMzZQOALR3XUf3BLIoczI2RKKD6bMhPh4G8= +helm.sh/helm/v3 v3.18.4 h1:pNhnHM3nAmDrxz6/UC+hfjDY4yeDATQCka2/87hkZXQ= +helm.sh/helm/v3 v3.18.4/go.mod h1:WVnwKARAw01iEdjpEkP7Ii1tT1pTPYfM1HsakFKM3LI= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -2247,80 +2248,85 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.32.5 h1:uqjjsYo1kTJr5NIcoIaP9F+TgXgADH7nKQx91FDAhtk= -k8s.io/api v0.32.5/go.mod h1:bXXFU3fGCZ/eFMZvfHZC69PeGbXEL4zzjuPVzOxHF64= -k8s.io/apiextensions-apiserver v0.32.5 h1:o0aKvmzIIs8Uk54pidk32pxET+Pg2ULnh9WI1PuKTwE= -k8s.io/apiextensions-apiserver v0.32.5/go.mod h1:5fpedJa3HJJFBukAZ6ur91DEDye5gYuXISPbOiNLYpU= -k8s.io/apimachinery v0.32.5 h1:6We3aJ6crC0ap8EhsEXcgX3LpI6SEjubpiOMXLROwPM= -k8s.io/apimachinery v0.32.5/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/apiserver v0.32.5 h1:phmm2EOUVFI+cLiq8Grtuh166fTt/qgvkGPkpgzp5uY= -k8s.io/apiserver v0.32.5/go.mod h1:5bfueS1tgARVWVXRJBMI5mHoCmev0jOvbxebai/kiqc= -k8s.io/cli-runtime v0.32.5 h1:cyf6pJLpOFzxT4PbOKIXFyNbQV2IFP53jGADXtrd6tw= -k8s.io/cli-runtime v0.32.5/go.mod h1:AcqQUyDDFwc4ymBlPpUXVOkyFVjKi9dnDQn3unv1C7E= -k8s.io/client-go v0.32.5 h1:huFmQMzgWu0z4kbWsuZci+Gt4Fo72I4CcrvhToZ/Qp0= -k8s.io/client-go v0.32.5/go.mod h1:Qchw6f9WIVrur7DKojAHpRgGLcANT0RLIvF39Jz58xA= -k8s.io/component-base v0.32.5 h1:2HiX+m3s9Iz5CMqdCVDH2V942UqzQvjuhcXb4W+KCsg= -k8s.io/component-base v0.32.5/go.mod h1:jDsPNFFElv9m27TcYxlpEX7TZ3vdgx2g4PaqMUHpV/Y= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.33.2 h1:6gnkIbngnaUflR3XwE1mCefN3YS8yTD631JXQhsU6M8= +k8s.io/apiextensions-apiserver v0.33.2/go.mod h1:IvVanieYsEHJImTKXGP6XCOjTwv2LUMos0YWc9O+QP8= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.33.2 h1:KGTRbxn2wJagJowo29kKBp4TchpO1DRO3g+dB/KOJN4= +k8s.io/apiserver v0.33.2/go.mod h1:9qday04wEAMLPWWo9AwqCZSiIn3OYSZacDyu/AcoM/M= +k8s.io/cli-runtime v0.33.2 h1:koNYQKSDdq5AExa/RDudXMhhtFasEg48KLS2KSAU74Y= +k8s.io/cli-runtime v0.33.2/go.mod h1:gnhsAWpovqf1Zj5YRRBBU7PFsRc6NkEkwYNQE+mXL88= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.33.2 h1:sCCsn9s/dG3ZrQTX/Us0/Sx2R0G5kwa0wbZFYoVp/+0= +k8s.io/component-base v0.33.2/go.mod h1:/41uw9wKzuelhN+u+/C59ixxf4tYQKW7p32ddkYNe2k= +k8s.io/component-helpers v0.33.2 h1:AjCtYzst11NV8ensxV/2LEEXRwctqS7Bs44bje9Qcnw= +k8s.io/component-helpers v0.33.2/go.mod h1:PsPpiCk74n8pGWp1d6kjK/iSKBTyQfIacv02BNkMenU= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= -k8s.io/kubectl v0.32.5 h1:LUHZhYkIu9Cji6x1V7s4uyCGxJlS461VSYj2GyuQJtM= -k8s.io/kubectl v0.32.5/go.mod h1:YA7mZP44lVEn9qXRinM9THMNvVWJ6edwyHZSVMTVQbo= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= +k8s.io/kubectl v0.33.2 h1:7XKZ6DYCklu5MZQzJe+CkCjoGZwD1wWl7t/FxzhMz7Y= +k8s.io/kubectl v0.33.2/go.mod h1:8rC67FB8tVTYraovAGNi/idWIK90z2CHFNMmGJZJ3KI= k8s.io/kubelet v0.29.15 h1:aEoVJCW6eR+2rY2sdO/I9w5p0nTu/jSOeUBfRHFWjTY= k8s.io/kubelet v0.29.15/go.mod h1:l4IrTn+YrG/1i993gNiVs0uhk4nAUx1gGshR+vO3BOA= -k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0= -k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -modernc.org/cc/v4 v4.25.2 h1:T2oH7sZdGvTaie0BRNFbIYsabzCxUQg8nLqCdQ2i0ic= -modernc.org/cc/v4 v4.25.2/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= -modernc.org/ccgo/v4 v4.25.1 h1:TFSzPrAGmDsdnhT9X2UrcPMI3N/mJ9/X9ykKXwLhDsU= -modernc.org/ccgo/v4 v4.25.1/go.mod h1:njjuAYiPflywOOrm3B7kCB444ONP5pAVr8PIEoE0uDw= -modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE= -modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ= +k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0= +k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +modernc.org/cc/v4 v4.26.1 h1:+X5NtzVBn0KgsBCBe+xkDC7twLb/jNVj9FPgiwSQO3s= +modernc.org/cc/v4 v4.26.1/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU= +modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE= +modernc.org/fileutil v1.3.1 h1:8vq5fe7jdtEvoCf3Zf9Nm0Q05sH6kGx0Op2CPx1wTC8= +modernc.org/fileutil v1.3.1/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= -modernc.org/libc v1.62.1 h1:s0+fv5E3FymN8eJVmnk0llBe6rOxCu/DEU+XygRbS8s= -modernc.org/libc v1.62.1/go.mod h1:iXhATfJQLjG3NWy56a6WVU73lWOcdYVxsvwCgoPljuo= +modernc.org/libc v1.65.7 h1:Ia9Z4yzZtWNtUIuiPuQ7Qf7kxYrxP1/jeHZzG8bFu00= +modernc.org/libc v1.65.7/go.mod h1:011EQibzzio/VX3ygj1qGFt5kMjP0lHb0qCW5/D/pQU= modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= -modernc.org/memory v1.9.1 h1:V/Z1solwAVmMW1yttq3nDdZPJqV1rM05Ccq6KMSZ34g= -modernc.org/memory v1.9.1/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw= +modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI= +modernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw= modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= -modernc.org/sqlite v1.37.0 h1:s1TMe7T3Q3ovQiK2Ouz4Jwh7dw4ZDqbebSDTlSJdfjI= -modernc.org/sqlite v1.37.0/go.mod h1:5YiWv+YviqGMuGw4V+PNplcyaJ5v+vQd7TQOgkACoJM= +modernc.org/sqlite v1.37.1 h1:EgHJK/FPoqC+q2YBXg7fUmES37pCHFc97sI7zSayBEs= +modernc.org/sqlite v1.37.1/go.mod h1:XwdRtsE1MpiBcL54+MbKcaDvcuej+IYSMfLN6gSKV8g= modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= -oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= +oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc= +oras.land/oras-go/v2 v2.6.0/go.mod h1:magiQDfG6H1O9APp+rOsvCPcW1GD2MM7vgnKY0Y+u1o= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0 h1:CPT0ExVicCzcpeN4baWEV2ko2Z/AsiZgEdwgcfwLgMo= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= sigs.k8s.io/controller-runtime v0.20.4 h1:X3c+Odnxz+iPTRobG4tp092+CvBU9UK0t/bRf+n0DGU= sigs.k8s.io/controller-runtime v0.20.4/go.mod h1:xg2XB0K5ShQzAgsoujxuKN4LNXR2LfwwHsPj7Iaw+XY= sigs.k8s.io/controller-tools v0.14.0 h1:rnNoCC5wSXlrNoBKKzL70LNJKIQKEzT6lloG6/LF73A= sigs.k8s.io/controller-tools v0.14.0/go.mod h1:TV7uOtNNnnR72SpzhStvPkoS/U5ir0nMudrkrC4M9Sc= sigs.k8s.io/e2e-framework v0.3.0 h1:eqQALBtPCth8+ulTs6lcPK7ytV5rZSSHJzQHZph4O7U= sigs.k8s.io/e2e-framework v0.3.0/go.mod h1:C+ef37/D90Dc7Xq1jQnNbJYscrUGpxrWog9bx2KIa+c= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/kustomize/api v0.18.0 h1:hTzp67k+3NEVInwz5BHyzc9rGxIauoXferXyjv5lWPo= -sigs.k8s.io/kustomize/api v0.18.0/go.mod h1:f8isXnX+8b+SGLHQ6yO4JG1rdkZlvhaCf/uZbLVMb0U= -sigs.k8s.io/kustomize/kyaml v0.18.1 h1:WvBo56Wzw3fjS+7vBjN6TeivvpbW9GmRaWZ9CIVmt4E= -sigs.k8s.io/kustomize/kyaml v0.18.1/go.mod h1:C3L2BFVU1jgcddNBE1TxuVLgS46TjObMwW5FT9FcjYo= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= +sigs.k8s.io/kustomize/api v0.19.0 h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ= +sigs.k8s.io/kustomize/api v0.19.0/go.mod h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o= +sigs.k8s.io/kustomize/kyaml v0.19.0 h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA= +sigs.k8s.io/kustomize/kyaml v0.19.0/go.mod h1:FeKD5jEOH+FbZPpqUghBP8mrLjJ3+zD3/rf9NNu1cwY= sigs.k8s.io/network-policy-api v0.1.5 h1:xyS7VAaM9EfyB428oFk7WjWaCK6B129i+ILUF4C8l6E= sigs.k8s.io/network-policy-api v0.1.5/go.mod h1:D7Nkr43VLNd7iYryemnj8qf0N/WjBzTZDxYA+g4u1/Y= -sigs.k8s.io/release-utils v0.11.1 h1:hzvXGpHgHJfLOJB6TRuu14bzWc3XEglHmXHJqwClSZE= -sigs.k8s.io/release-utils v0.11.1/go.mod h1:ybR2V/uQAOGxYfzYtBenSYeXWkBGNP2qnEiX77ACtpc= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +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-utils v0.12.2 h1:H06v3FuLElAkf7Ikkd9ll8hnhdtQ+OgktJAni3iIAl8= +sigs.k8s.io/release-utils v0.12.2/go.mod h1:Ab9Lb/FpGUw4lUXj1QYbUcF2TRzll+GS7Md54W1G7sA= +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.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +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= diff --git a/image/postgres/konflux.Dockerfile b/image/postgres/konflux.Dockerfile index a3bf2516d48e8..5b8e86ea601eb 100644 --- a/image/postgres/konflux.Dockerfile +++ b/image/postgres/konflux.Dockerfile @@ -1,5 +1,5 @@ ARG PG_VERSION=15 -FROM registry.redhat.io/rhel8/postgresql-${PG_VERSION}:latest@sha256:0576206b44a5cb073b6364f7af104a4a17994f9bb8c7a948da9588d6b4bbf1e8 AS final +FROM registry.redhat.io/rhel8/postgresql-${PG_VERSION}:latest@sha256:f5ff8f1968b4c842da981e234efee065c66bc5208d93055c3135b536f421d432 AS final USER root @@ -14,7 +14,7 @@ LABEL \ io.k8s.display-name="central-db" \ io.openshift.tags="rhacs,central-db,stackrox" \ maintainer="Red Hat, Inc." \ - name="rhacs-central-db-rhel8" \ + name="advanced-cluster-security/rhacs-central-db-rhel8" \ # Custom Snapshot creation in `operator-bundle-pipeline` depends on source-location label to be set correctly. source-location="https://github.com/stackrox/stackrox" \ summary="Central DB for Red Hat Advanced Cluster Security for Kubernetes" \ diff --git a/image/rhel/konflux.Dockerfile b/image/rhel/konflux.Dockerfile index af3d396d279f6..57bcd355ba9fe 100644 --- a/image/rhel/konflux.Dockerfile +++ b/image/rhel/konflux.Dockerfile @@ -1,7 +1,7 @@ ARG PG_VERSION=15 -FROM brew.registry.redhat.io/rh-osbs/openshift-golang-builder:rhel_8_1.23@sha256:0a070e4a8f2698b6aba3630a49eb995ff1b0a182d0c5fa264888acf9d535f384 AS go-builder +FROM brew.registry.redhat.io/rh-osbs/openshift-golang-builder:rhel_8_golang_1.25@sha256:527782f4a0270f786192281f68d0374f4a21b3ab759643eee4bfcafb6f539468 AS go-builder RUN dnf -y install --allowerasing jq @@ -14,15 +14,20 @@ RUN if [[ "$BUILD_TAG" == "" ]]; then >&2 echo "error: required BUILD_TAG arg is ENV BUILD_TAG="$BUILD_TAG" ENV GOFLAGS="" -ENV CGO_ENABLED=1 # TODO(ROX-20240): enable non-release development builds. +ENV GOTAGS="release" +ENV CI=1 + +# TODO(ROX-13200): make sure roxctl cli is built without running go mod tidy. +# CLI builds are without strictfipsruntime (and CGO_ENABLED is set to 0) because these binaries are for user download and use outside the cluster. +RUN make cli-build + +ENV CGO_ENABLED=1 # TODO(ROX-27054): Remove the redundant strictfipsruntime option if one is found to be so. ENV GOTAGS="release,strictfipsruntime" ENV GOEXPERIMENT=strictfipsruntime -ENV CI=1 -RUN # TODO(ROX-13200): make sure roxctl cli is built without running go mod tidy. \ - make main-build-nodeps cli-build +RUN make main-build-nodeps RUN mkdir -p image/rhel/docs/api/v1 && \ ./scripts/mergeswag.sh 1 generated/api/v1 central/docs/api_custom_routes >image/rhel/docs/api/v1/swagger.json && \ @@ -32,7 +37,7 @@ RUN mkdir -p image/rhel/docs/api/v1 && \ RUN make copy-go-binaries-to-image-dir -FROM registry.access.redhat.com/ubi9/nodejs-20:latest@sha256:732b796c6d1e638cc9c8b0fefea4dbc4937cb0389688509a20faf7193c215212 AS ui-builder +FROM registry.access.redhat.com/ubi9/nodejs-20:latest@sha256:23aa2e84a94e5e11d2c716de12344bc6183b29f0fc0a440fde7b0f2ee3dc703c AS ui-builder WORKDIR /go/src/github.com/stackrox/rox/app @@ -54,7 +59,7 @@ ENV UI_PKG_INSTALL_EXTRA_ARGS="--ignore-scripts" RUN make -C ui build -FROM registry.access.redhat.com/ubi8/ubi-minimal:latest@sha256:b2a1bec3dfbc7a14a1d84d98934dfe8fdde6eb822a211286601cf109cbccb075 +FROM registry.access.redhat.com/ubi8/ubi-minimal:latest@sha256:9f5006710578c36da022efbc740b27821056d504d582e1aeb204a602d2e8e4ce ARG PG_VERSION @@ -93,7 +98,7 @@ LABEL \ io.k8s.display-name="main" \ io.openshift.tags="rhacs,main,stackrox" \ maintainer="Red Hat, Inc." \ - name="rhacs-main-rhel8" \ + name="advanced-cluster-security/rhacs-main-rhel8" \ # Custom Snapshot creation in `operator-bundle-pipeline` depends on source-location label to be set correctly. source-location="https://github.com/stackrox/stackrox" \ summary="Main Image for Red Hat Advanced Cluster Security for Kubernetes" \ diff --git a/image/roxctl/konflux.Dockerfile b/image/roxctl/konflux.Dockerfile index 7a6fd5cb822f0..dd4dea4c24ee6 100644 --- a/image/roxctl/konflux.Dockerfile +++ b/image/roxctl/konflux.Dockerfile @@ -4,7 +4,8 @@ # - https://issues.redhat.com/browse/RHTAPBUGS-864 - deprecated-base-image-check behaves incorrectly. # - https://issues.redhat.com/browse/RHTAPBUGS-865 - openshift-golang-builder is not considered to be a valid base image. # -FROM brew.registry.redhat.io/rh-osbs/openshift-golang-builder:rhel_8_1.23@sha256:0a070e4a8f2698b6aba3630a49eb995ff1b0a182d0c5fa264888acf9d535f384 AS builder +FROM brew.registry.redhat.io/rh-osbs/openshift-golang-builder:rhel_8_golang_1.25@sha256:527782f4a0270f786192281f68d0374f4a21b3ab759643eee4bfcafb6f539468 AS builder + WORKDIR /go/src/github.com/stackrox/rox/app @@ -26,7 +27,7 @@ RUN RACE=0 CGO_ENABLED=1 GOOS=linux GOARCH=$(go env GOARCH) scripts/go-build.sh cp bin/linux_$(go env GOARCH)/roxctl image/bin/roxctl -FROM registry.access.redhat.com/ubi8/ubi-minimal:latest@sha256:b2a1bec3dfbc7a14a1d84d98934dfe8fdde6eb822a211286601cf109cbccb075 +FROM registry.access.redhat.com/ubi8/ubi-minimal:latest@sha256:9f5006710578c36da022efbc740b27821056d504d582e1aeb204a602d2e8e4ce COPY --from=builder /go/src/github.com/stackrox/rox/app/image/bin/roxctl /usr/bin/roxctl @@ -46,7 +47,7 @@ LABEL \ io.k8s.display-name="roxctl" \ io.openshift.tags="rhacs,roxctl,stackrox" \ maintainer="Red Hat, Inc." \ - name="rhacs-roxctl-rhel8" \ + name="advanced-cluster-security/rhacs-roxctl-rhel8" \ # Custom Snapshot creation in `operator-bundle-pipeline` depends on source-location label to be set correctly. source-location="https://github.com/stackrox/stackrox" \ summary="The CLI for Red Hat Advanced Cluster Security for Kubernetes" \ diff --git a/image/templates/helm/shared/config-templates/scanner-v4-db/postgresql.conf.default b/image/templates/helm/shared/config-templates/scanner-v4-db/postgresql.conf.default index a1160c580e12a..63aa2050d4bb3 100644 --- a/image/templates/helm/shared/config-templates/scanner-v4-db/postgresql.conf.default +++ b/image/templates/helm/shared/config-templates/scanner-v4-db/postgresql.conf.default @@ -57,11 +57,11 @@ autovacuum_max_workers = 2 # - When to Log - -log_min_duration_statement = 500 +log_min_duration_statement = 1min # - What to Log - -log_autovacuum_min_duration = 500 +log_autovacuum_min_duration = 500ms log_checkpoints = 'on' log_connections = 'on' log_disconnections = 'on' diff --git a/image/templates/helm/shared/templates/_scanner-v4_defaulting.tpl b/image/templates/helm/shared/templates/_scanner-v4_defaulting.tpl index c96a861f9443a..e1a956cfc7203 100644 --- a/image/templates/helm/shared/templates/_scanner-v4_defaulting.tpl +++ b/image/templates/helm/shared/templates/_scanner-v4_defaulting.tpl @@ -1,24 +1,27 @@ {{/* - srox.scannerV4Defaulting + srox.scannerV4Defaulting Encapsulates the Scanner V4 defaulting logic. */}} {{- define "srox.scannerV4Defaulting" -}} -{{- $helmRelease := index . 0 -}} -{{- $scannerV4 := index . 1 -}} +{{- $ := index . 0 -}} +{{- $helmRelease := index . 1 -}} +{{- $scannerV4 := index . 2 -}} +{{- $stackroxHelm := index . 3 -}} {{- if kindIs "invalid" $scannerV4.disable -}} - - {{/* Default to not-installed (i.e. upgrades). */}} - {{- $_ := set $scannerV4 "disable" true -}} - - {{/* Currently the automatic enabling of Scanner V4 only kicks in for new installations, not for upgrades. */}} - {{- if $helmRelease.IsInstall -}} - {{- $_ := set $scannerV4 "disable" false -}} + {{/* Scanner V4 neither explicitly enabled or disabled, apply defaulting logic. */}} + {{/* By default Scanner V4 will be installed. */}} + {{- $_ := set $scannerV4 "disable" false -}} + {{/* Currently there is one exception: when upgrading from a pre-4.8 version, which did not + install Scanner V4 by default. */}} + {{- $installVersionUnknown := kindIs "invalid" $stackroxHelm.installXYVersion -}} + {{- $upgradingFromPre4_8 := or $installVersionUnknown (semverCompare "< 4.8" $stackroxHelm.installXYVersion) -}} + {{- if and $helmRelease.IsUpgrade $upgradingFromPre4_8 -}} + {{- include "srox.note" (list $ "Scanner V4 disabled by default: this deployment was initially installed before version 4.8.") -}} + {{- $_ := set $scannerV4 "disable" true -}} {{- end -}} - {{- end -}} - {{- end -}} diff --git a/image/templates/helm/stackrox-central/.helmtplignore.htpl b/image/templates/helm/stackrox-central/.helmtplignore.htpl index 1070cfd3e3cc2..ba663bdcd6c89 100644 --- a/image/templates/helm/stackrox-central/.helmtplignore.htpl +++ b/image/templates/helm/stackrox-central/.helmtplignore.htpl @@ -34,4 +34,7 @@ templates/* !templates/01-central-*-db-tls-secret.yaml templates/* [< end >] +[< if .KubectlOutput >] +templates/00-stackrox-helm-configmap.yaml +[< end >] templates/keep.yaml diff --git a/image/templates/helm/stackrox-central/internal/config-shape.yaml b/image/templates/helm/stackrox-central/internal/config-shape.yaml index bd16a3d693e7a..148a996165e01 100644 --- a/image/templates/helm/stackrox-central/internal/config-shape.yaml +++ b/image/templates/helm/stackrox-central/internal/config-shape.yaml @@ -8,6 +8,7 @@ imagePullSecrets: image: registry: null # string env: + grpcEnforceALPN: null # bool installMethod: null # string openshift: null # bool istio: null # bool diff --git a/image/templates/helm/stackrox-central/internal/config.stackrox.io_securitypolicies.yaml b/image/templates/helm/stackrox-central/internal/config.stackrox.io_securitypolicies.yaml index 99c74ca97ddd2..17cdbbc892c40 100644 --- a/image/templates/helm/stackrox-central/internal/config.stackrox.io_securitypolicies.yaml +++ b/image/templates/helm/stackrox-central/internal/config.stackrox.io_securitypolicies.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: securitypolicies.config.stackrox.io spec: group: config.stackrox.io diff --git a/image/templates/helm/stackrox-central/internal/defaults.yaml.htpl b/image/templates/helm/stackrox-central/internal/defaults.yaml.htpl index 38adf58069bc1..71c1aeb25f4d2 100644 --- a/image/templates/helm/stackrox-central/internal/defaults.yaml.htpl +++ b/image/templates/helm/stackrox-central/internal/defaults.yaml.htpl @@ -9,6 +9,7 @@ defaults: registry: [< required "" .MainRegistry >] env: + grpcEnforceALPN: false offlineMode: false central: diff --git a/image/templates/helm/stackrox-central/templates/00-stackrox-helm-configmap.yaml b/image/templates/helm/stackrox-central/templates/00-stackrox-helm-configmap.yaml new file mode 100644 index 0000000000000..51b93fc9ddcf7 --- /dev/null +++ b/image/templates/helm/stackrox-central/templates/00-stackrox-helm-configmap.yaml @@ -0,0 +1,14 @@ +{{- include "srox.init" . -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: stackrox-central-helm + namespace: {{ .Release.Namespace }} + labels: + {{- include "srox.labels" (list . "configmap" "stackrox-central-helm") | nindent 4 }} + annotations: + {{- $annotations := dict "helm.sh/hook" "pre-install" -}} + {{- include "srox.annotations" (list . "configmap" "stackrox-central-helm" $annotations) | nindent 4 }} +data: + installAppVersion: {{ .Chart.AppVersion | quote }} + installXYVersion: {{ .Chart.AppVersion | regexFind "^\\d+\\.\\d+" | quote }} diff --git a/image/templates/helm/stackrox-central/templates/01-central-13-deployment.yaml.htpl b/image/templates/helm/stackrox-central/templates/01-central-13-deployment.yaml.htpl index ecb65bec318a0..e8bc0d21039c2 100644 --- a/image/templates/helm/stackrox-central/templates/01-central-13-deployment.yaml.htpl +++ b/image/templates/helm/stackrox-central/templates/01-central-13-deployment.yaml.htpl @@ -86,6 +86,8 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name + - name: GRPC_ENFORCE_ALPN_ENABLED + value: {{ quote ._rox.env.grpcEnforceALPN }} {{- if ne (._rox.central.telemetry.enabled | toString) "false" }} {{- /* If telemetry.enabled is true or null, configure the endpoint and the key, if provided. Also, configure additional listening endpoints.*/}} diff --git a/image/templates/helm/stackrox-central/templates/_init.tpl.htpl b/image/templates/helm/stackrox-central/templates/_init.tpl.htpl index 397ea2cd09585..57ab45df91056 100644 --- a/image/templates/helm/stackrox-central/templates/_init.tpl.htpl +++ b/image/templates/helm/stackrox-central/templates/_init.tpl.htpl @@ -151,6 +151,9 @@ {{ include "srox.setInstallMethod" (list $) }} +{{/* Attempt to retrieve stackrox-central-helm ConfigMap. Must be done before the defaulting logic is applied. */}} +{{ include "srox.retrieveStackroxCentralHelmConfigMap" (list $) }} + {{/* Apply defaults */}} {{ $defaultsCfg := dict }} {{ $platformCfgFile := dict }} @@ -162,7 +165,7 @@ {{ $_ = set $rox "_defaults" $defaultsCfg }} {{ $_ = include "srox.mergeInto" (list $rox $defaultsCfg.defaults) }} -{{ $_ = include "srox.scannerV4Defaulting" (list .Release $rox.scannerV4) }} +{{ $_ = include "srox.scannerV4Defaulting" (list $ .Release $rox.scannerV4 $.stackroxHelm) }} {{/* Expand applicable config values */}} {{ $expandables := $.Files.Get "internal/expandables.yaml" | fromYaml }} diff --git a/image/templates/helm/stackrox-central/templates/_stackrox_helm.tpl b/image/templates/helm/stackrox-central/templates/_stackrox_helm.tpl new file mode 100644 index 0000000000000..909f4b399d7a4 --- /dev/null +++ b/image/templates/helm/stackrox-central/templates/_stackrox_helm.tpl @@ -0,0 +1,10 @@ +{{- define "srox.retrieveStackroxCentralHelmConfigMap" -}} +{{- $ := index . 0 -}} +{{- $stackroxHelm := dict -}} +{{- $lookupResult := dict -}} +{{- $_ := include "srox.safeLookup" (list $ $lookupResult "v1" "ConfigMap" $.Release.Namespace "stackrox-central-helm") -}} +{{- if $lookupResult.result -}} + {{- $stackroxHelm = $lookupResult.result.data -}} +{{- end -}} +{{- $_ := set $ "stackroxHelm" $stackroxHelm -}} +{{- end -}} diff --git a/image/templates/helm/stackrox-secured-cluster/.helmtplignore.htpl b/image/templates/helm/stackrox-secured-cluster/.helmtplignore.htpl index 7e557534cd77c..31b00526c4d30 100644 --- a/image/templates/helm/stackrox-secured-cluster/.helmtplignore.htpl +++ b/image/templates/helm/stackrox-secured-cluster/.helmtplignore.htpl @@ -1,6 +1,7 @@ [<- if .KubectlOutput >] templates/cluster-config.yaml templates/00-injected-ca-bundle.yaml +templates/stackrox-helm-configmap.yaml internal/cluster-config.yaml.tpl sensor-chart-upgrade.md scripts/ diff --git a/image/templates/helm/stackrox-secured-cluster/internal/config-shape.yaml b/image/templates/helm/stackrox-secured-cluster/internal/config-shape.yaml index 94cac66b8d49f..2459e804dfaf8 100644 --- a/image/templates/helm/stackrox-secured-cluster/internal/config-shape.yaml +++ b/image/templates/helm/stackrox-secured-cluster/internal/config-shape.yaml @@ -63,6 +63,7 @@ image: tag: null # string fullRef: null # string env: + grpcEnforceALPN: null # bool openshift: null # bool | int istio: null # bool storageClasses: diff --git a/image/templates/helm/stackrox-secured-cluster/internal/defaults/10-env.yaml.htpl b/image/templates/helm/stackrox-secured-cluster/internal/defaults/10-env.yaml.htpl index 8e18b2ec1a4a2..11d97607d403e 100644 --- a/image/templates/helm/stackrox-secured-cluster/internal/defaults/10-env.yaml.htpl +++ b/image/templates/helm/stackrox-secured-cluster/internal/defaults/10-env.yaml.htpl @@ -1,13 +1,14 @@ # This file applies default environment configuration, based on available API server resources. -{{- if kindIs "invalid" ._rox.env.istio }} env: + grpcEnforceALPN: false + {{- if kindIs "invalid" ._rox.env.istio }} {{- if has "networking.istio.io/v1alpha3" ._rox._apiServer.apiResources }} istio: true {{- include "srox.note" (list . "Based on API server properties, we have inferred that you are deploying into an Istio-enabled cluster. Set the `env.istio` property explicitly to false/true to override the auto-sensed value.") }} {{- else }} istio: false {{- end }} -{{- end }} + {{- end }} system: [<- if not .AutoSensePodSecurityPolicies >] enablePodSecurityPolicies: [< .EnablePodSecurityPolicies >] diff --git a/image/templates/helm/stackrox-secured-cluster/internal/defaults/70-scanner-v4.yaml.htpl b/image/templates/helm/stackrox-secured-cluster/internal/defaults/70-scanner-v4.yaml.htpl index bec5f3836d9b4..17556f56e826e 100644 --- a/image/templates/helm/stackrox-secured-cluster/internal/defaults/70-scanner-v4.yaml.htpl +++ b/image/templates/helm/stackrox-secured-cluster/internal/defaults/70-scanner-v4.yaml.htpl @@ -1,4 +1,7 @@ -[<- if not .KubectlOutput >] +[<- if .KubectlOutput >] +scannerV4: + disable: true +[<- else >] scannerV4: indexer: disable: false diff --git a/image/templates/helm/stackrox-secured-cluster/templates/_init.tpl.htpl b/image/templates/helm/stackrox-secured-cluster/templates/_init.tpl.htpl index 662fcc18944ee..ba61d31077475 100644 --- a/image/templates/helm/stackrox-secured-cluster/templates/_init.tpl.htpl +++ b/image/templates/helm/stackrox-secured-cluster/templates/_init.tpl.htpl @@ -135,9 +135,12 @@ {{ include "srox.getStorageClasses" (list $) }} {{ include "srox.getPVCs" (list $) }} +{{/* Attempt to retrieve stackrox-secured-cluster-helm ConfigMap. Must be done before the defaulting logic is applied. */}} +{{ include "srox.retrieveStackroxSecuredClusterHelmConfigMap" (list $) }} + [<- if not .KubectlOutput >] -{{ $_ := include "srox.scannerV4Defaulting" (list .Release $._rox.scannerV4) }} -{{ include "srox.scannerDefaulting" (list .Release $._rox.scanner) }} +{{ $_ := include "srox.scannerV4Defaulting" (list $ .Release $._rox.scannerV4 $.stackroxHelm) }} +{{ include "srox.scannerDefaulting" (list . .Release $._rox.scanner $.stackroxHelm) }} {{ if ne $._rox.scanner.mode "slim" }} {{ include "srox.fail" (print "Only scanner slim mode is allowed in Secured Cluster. To solve this, set to slim mode: scanner.mode=slim.") }} {{ end }} @@ -348,7 +351,6 @@ The following block checks for the validity of the provided init bundle. (`helm {{ if $centralDeployment.result }} {{ include "srox.note" (list $ "Detected central running in the same namespace. Not deploying scanner from this chart and configuring sensor to use existing scanner instance, if any.") }} {{ $_ := set $._rox.scanner "disable" true }} - {{ $_ := set $._rox.scannerV4 "disable" true }} {{ end }} {{ $_ := set $._rox.sensor.localImageScanning "enabled" "true" }} diff --git a/image/templates/helm/stackrox-secured-cluster/templates/_scanner-defaulting.tpl b/image/templates/helm/stackrox-secured-cluster/templates/_scanner-defaulting.tpl index 733410fcc27ca..fabc13d1887eb 100644 --- a/image/templates/helm/stackrox-secured-cluster/templates/_scanner-defaulting.tpl +++ b/image/templates/helm/stackrox-secured-cluster/templates/_scanner-defaulting.tpl @@ -1,5 +1,5 @@ {{/* - srox.scannerDefaulting + srox.scannerDefaulting Encapsulates the Scanner defaulting logic. @@ -8,19 +8,22 @@ {{- define "srox.scannerDefaulting" -}} -{{- $helmRelease := index . 0 -}} -{{- $scanner := index . 1 -}} +{{- $ := index . 0 -}} +{{- $helmRelease := index . 1 -}} +{{- $scanner := index . 2 -}} +{{- $stackroxHelm := index . 3 -}} {{- if kindIs "invalid" $scanner.disable -}} - - {{/* Default to not-installed (i.e. upgrades). */}} - {{- $_ := set $scanner "disable" true -}} - - {{/* Currently the automatic enabling of Scanner only kicks in for new installations, not for upgrades. */}} - {{- if $helmRelease.IsInstall -}} - {{- $_ := set $scanner "disable" false -}} + {{/* Scanner neither explicitly enabled or disabled, apply defaulting logic. */}} + {{/* By default Scanner will be installed. */}} + {{- $_ := set $scanner "disable" false -}} + {{/* Currently there is one exception: when upgrading from a pre-4.8 version, which did not + install Scanner by default. */}} + {{- $installVersionUnknown := kindIs "invalid" $stackroxHelm.installXYVersion -}} + {{- $upgradingFromPre4_8 := or $installVersionUnknown (semverCompare "< 4.8" $stackroxHelm.installXYVersion) -}} + {{- if and $helmRelease.IsUpgrade $upgradingFromPre4_8 -}} + {{- include "srox.note" (list $ "StackRox Scanner disabled by default: this deployment was initially installed before version 4.8.") -}} + {{- $_ := set $scanner "disable" true -}} {{- end -}} - {{- end -}} - {{- end -}} diff --git a/image/templates/helm/stackrox-secured-cluster/templates/_stackrox_helm.tpl b/image/templates/helm/stackrox-secured-cluster/templates/_stackrox_helm.tpl new file mode 100644 index 0000000000000..b288727ce6f82 --- /dev/null +++ b/image/templates/helm/stackrox-secured-cluster/templates/_stackrox_helm.tpl @@ -0,0 +1,10 @@ +{{- define "srox.retrieveStackroxSecuredClusterHelmConfigMap" -}} +{{- $ := index . 0 -}} +{{- $stackroxHelm := dict -}} +{{- $lookupResult := dict -}} +{{- $_ := include "srox.safeLookup" (list $ $lookupResult "v1" "ConfigMap" $.Release.Namespace "stackrox-secured-cluster-helm") -}} +{{- if $lookupResult.result -}} + {{- $stackroxHelm = $lookupResult.result.data -}} +{{- end -}} +{{- $_ := set $ "stackroxHelm" $stackroxHelm -}} +{{- end -}} diff --git a/image/templates/helm/stackrox-secured-cluster/templates/sensor.yaml.htpl b/image/templates/helm/stackrox-secured-cluster/templates/sensor.yaml.htpl index 4876cefbadf92..d7cd8cbceb8c3 100644 --- a/image/templates/helm/stackrox-secured-cluster/templates/sensor.yaml.htpl +++ b/image/templates/helm/stackrox-secured-cluster/templates/sensor.yaml.htpl @@ -97,6 +97,8 @@ spec: value: {{ ._rox.centralEndpoint }} - name: ROX_HELM_CLUSTER_CONFIG_FP value: {{ quote ._rox._configFP }} + - name: GRPC_ENFORCE_ALPN_ENABLED + value: {{ quote ._rox.env.grpcEnforceALPN }} {{- if ._rox._scannerV4Enabled }} - name: ROX_SCANNER_V4 value: "true" @@ -202,6 +204,8 @@ spec: value: {{ ._rox.centralEndpoint }} - name: ROX_ADVERTISED_ENDPOINT value: {{ ._rox.sensor.endpoint }} + - name: GRPC_ENFORCE_ALPN_ENABLED + value: {{ quote ._rox.env.grpcEnforceALPN }} {{- if ._rox.env.openshift }} - name: ROX_OPENSHIFT_API value: "true" diff --git a/image/templates/helm/stackrox-secured-cluster/templates/stackrox-helm-configmap.yaml b/image/templates/helm/stackrox-secured-cluster/templates/stackrox-helm-configmap.yaml new file mode 100644 index 0000000000000..fecf1cb28f773 --- /dev/null +++ b/image/templates/helm/stackrox-secured-cluster/templates/stackrox-helm-configmap.yaml @@ -0,0 +1,14 @@ +{{- include "srox.init" . -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: stackrox-secured-cluster-helm + namespace: {{ ._rox._namespace | quote }} + labels: + {{- include "srox.labels" (list . "configmap" "stackrox-secured-cluster-helm") | nindent 4 }} + annotations: + {{- $annotations := dict "helm.sh/hook" "pre-install" -}} + {{- include "srox.annotations" (list . "configmap" "stackrox-secured-cluster-helm" $annotations) | nindent 4 }} +data: + installAppVersion: {{ .Chart.AppVersion | quote }} + installXYVersion: {{ .Chart.AppVersion | regexFind "^\\d+\\.\\d+" | quote }} diff --git a/migrator/migrations/m_209_to_m_210_add_updated_at_to_network_flows_v2/migration_impl.go b/migrator/migrations/m_209_to_m_210_add_updated_at_to_network_flows_v2/migration_impl.go index 31ad8288082e5..a2e1ac336f710 100644 --- a/migrator/migrations/m_209_to_m_210_add_updated_at_to_network_flows_v2/migration_impl.go +++ b/migrator/migrations/m_209_to_m_210_add_updated_at_to_network_flows_v2/migration_impl.go @@ -12,7 +12,8 @@ import ( ) var ( - log = loghelper.LogWrapper{} + log = loghelper.LogWrapper{} + batchSize = 100000 ) func migrate(database *types.Databases) error { @@ -27,6 +28,10 @@ func migrate(database *types.Databases) error { return nil } +type commandResult interface { + RowsAffected() int64 +} + func addColumnToTable(ctx context.Context, db postgres.DB, table, column string) error { ctx, cancel := context.WithTimeout(ctx, types.DefaultMigrationTimeout) defer cancel() @@ -37,11 +42,15 @@ func addColumnToTable(ctx context.Context, db postgres.DB, table, column string) return errors.Wrapf(err, "unable to alter table %s", table) } - updateColumnStmt := fmt.Sprintf("UPDATE %s SET %s = now()::timestamp WHERE %s IS NULL;", table, column, column) + var result commandResult + for result == nil || batchSize == int(result.RowsAffected()) { + selectNullStmt := fmt.Sprintf("SELECT flow_id FROM %s WHERE %s IS NULL LIMIT %d", table, column, batchSize) + updateColumnStmt := fmt.Sprintf("UPDATE %s SET %s = now()::timestamp WHERE flow_id IN (%s);", table, column, selectNullStmt) - _, err = db.Exec(ctx, updateColumnStmt) - if err != nil { - return errors.Wrapf(err, "unable to update column %s", column) + result, err = db.Exec(ctx, updateColumnStmt) + if err != nil { + return errors.Wrapf(err, "unable to update column %s", column) + } } addIndexStmt := fmt.Sprintf("CREATE INDEX IF NOT EXISTS network_flows_updatedat_v2 ON %s USING brin (%s);", table, column) diff --git a/migrator/migrations/m_209_to_m_210_add_updated_at_to_network_flows_v2/migration_test.go b/migrator/migrations/m_209_to_m_210_add_updated_at_to_network_flows_v2/migration_test.go index 48b861b67c81e..8ce0db89424c5 100644 --- a/migrator/migrations/m_209_to_m_210_add_updated_at_to_network_flows_v2/migration_test.go +++ b/migrator/migrations/m_209_to_m_210_add_updated_at_to_network_flows_v2/migration_test.go @@ -57,6 +57,8 @@ func (s *migrationTestSuite) SetupSuite() { func (s *migrationTestSuite) TestMigration() { ctx, cancel := context.WithTimeout(s.ctx, 5*time.Minute) defer cancel() + // Change the batchSize to make sure the batching logic is executed + batchSize = 1 s.addFlows(ctx, s.oldStore1, cluster1, cluster1Count) s.addFlows(ctx, s.oldStore2, cluster2, cluster2Count) diff --git a/operator/bundle/manifests/platform.stackrox.io_centrals.yaml b/operator/bundle/manifests/platform.stackrox.io_centrals.yaml index 99d6cadd180ff..a0abf4616442a 100644 --- a/operator/bundle/manifests/platform.stackrox.io_centrals.yaml +++ b/operator/bundle/manifests/platform.stackrox.io_centrals.yaml @@ -202,7 +202,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -536,7 +536,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -677,8 +677,9 @@ spec: in a Container. properties: name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. + description: |- + Name of the environment variable. + May consist of any printable ASCII characters except '='. type: string value: description: |- @@ -736,6 +737,43 @@ spec: - fieldPath type: object x-kubernetes-map-type: atomic + fileKeyRef: + description: |- + FileKeyRef selects a key of the env file. + Requires the EnvFiles feature gate to be enabled. + properties: + key: + description: |- + The key within the env file. An invalid key will prevent the pod from starting. + The keys defined within a source may consist of any printable ASCII characters except '='. + During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters. + type: string + optional: + default: false + description: |- + Specify whether the file or its key must be defined. If the file or key + does not exist, then the env var is not published. + If optional is set to true and the specified key does not exist, + the environment variable will not be set in the Pod's containers. + + If optional is set to false and the specified key does not exist, + an error will be returned during Pod creation. + type: boolean + path: + description: |- + The path within the volume from which to select the file. + Must be relative and may not contain the '..' path or start with '..'. + type: string + volumeName: + description: The name of the volume mount containing + the env file. + type: string + required: + - key + - path + - volumeName + type: object + x-kubernetes-map-type: atomic resourceFieldRef: description: |- Selects a resource of the container: only resources limits and requests @@ -980,7 +1018,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1145,7 +1183,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1347,7 +1385,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1479,7 +1517,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1643,7 +1681,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. diff --git a/operator/bundle/manifests/platform.stackrox.io_securedclusters.yaml b/operator/bundle/manifests/platform.stackrox.io_securedclusters.yaml index 87b78b3c4d2e5..ff2f93c57a0ce 100644 --- a/operator/bundle/manifests/platform.stackrox.io_securedclusters.yaml +++ b/operator/bundle/manifests/platform.stackrox.io_securedclusters.yaml @@ -126,7 +126,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -283,8 +283,9 @@ spec: in a Container. properties: name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. + description: |- + Name of the environment variable. + May consist of any printable ASCII characters except '='. type: string value: description: |- @@ -342,6 +343,43 @@ spec: - fieldPath type: object x-kubernetes-map-type: atomic + fileKeyRef: + description: |- + FileKeyRef selects a key of the env file. + Requires the EnvFiles feature gate to be enabled. + properties: + key: + description: |- + The key within the env file. An invalid key will prevent the pod from starting. + The keys defined within a source may consist of any printable ASCII characters except '='. + During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters. + type: string + optional: + default: false + description: |- + Specify whether the file or its key must be defined. If the file or key + does not exist, then the env var is not published. + If optional is set to true and the specified key does not exist, + the environment variable will not be set in the Pod's containers. + + If optional is set to false and the specified key does not exist, + an error will be returned during Pod creation. + type: boolean + path: + description: |- + The path within the volume from which to select the file. + Must be relative and may not contain the '..' path or start with '..'. + type: string + volumeName: + description: The name of the volume mount containing + the env file. + type: string + required: + - key + - path + - volumeName + type: object + x-kubernetes-map-type: atomic resourceFieldRef: description: |- Selects a resource of the container: only resources limits and requests @@ -572,7 +610,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -638,7 +676,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -725,7 +763,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -838,7 +876,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1003,7 +1041,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1190,7 +1228,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1322,7 +1360,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1514,7 +1552,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. diff --git a/operator/bundle_helpers/requirements-gha.txt b/operator/bundle_helpers/requirements-gha.txt index 43a6f588f90b7..a513b595dfd02 100644 --- a/operator/bundle_helpers/requirements-gha.txt +++ b/operator/bundle_helpers/requirements-gha.txt @@ -1,5 +1,5 @@ # TODO(ROX-26860): remove this file and use just requirements.txt once the GHA operator build runs with Python 3.9. # PyYAML > 6.0 requires Python > 3.6. PyYAML==6.0 -# pytest==7.0.1 is the latest available for the quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 job container's Python. +# pytest==7.0.1 is the latest available for the quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 job container's Python. pytest==7.0.1 diff --git a/operator/config/crd/bases/platform.stackrox.io_centrals.yaml b/operator/config/crd/bases/platform.stackrox.io_centrals.yaml index db402856edd3d..4f45c4f9b78b5 100644 --- a/operator/config/crd/bases/platform.stackrox.io_centrals.yaml +++ b/operator/config/crd/bases/platform.stackrox.io_centrals.yaml @@ -202,7 +202,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -536,7 +536,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -677,8 +677,9 @@ spec: in a Container. properties: name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. + description: |- + Name of the environment variable. + May consist of any printable ASCII characters except '='. type: string value: description: |- @@ -736,6 +737,43 @@ spec: - fieldPath type: object x-kubernetes-map-type: atomic + fileKeyRef: + description: |- + FileKeyRef selects a key of the env file. + Requires the EnvFiles feature gate to be enabled. + properties: + key: + description: |- + The key within the env file. An invalid key will prevent the pod from starting. + The keys defined within a source may consist of any printable ASCII characters except '='. + During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters. + type: string + optional: + default: false + description: |- + Specify whether the file or its key must be defined. If the file or key + does not exist, then the env var is not published. + If optional is set to true and the specified key does not exist, + the environment variable will not be set in the Pod's containers. + + If optional is set to false and the specified key does not exist, + an error will be returned during Pod creation. + type: boolean + path: + description: |- + The path within the volume from which to select the file. + Must be relative and may not contain the '..' path or start with '..'. + type: string + volumeName: + description: The name of the volume mount containing + the env file. + type: string + required: + - key + - path + - volumeName + type: object + x-kubernetes-map-type: atomic resourceFieldRef: description: |- Selects a resource of the container: only resources limits and requests @@ -980,7 +1018,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1145,7 +1183,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1347,7 +1385,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1479,7 +1517,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1643,7 +1681,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. diff --git a/operator/config/crd/bases/platform.stackrox.io_securedclusters.yaml b/operator/config/crd/bases/platform.stackrox.io_securedclusters.yaml index 08a1f863455b6..06d15d389a73d 100644 --- a/operator/config/crd/bases/platform.stackrox.io_securedclusters.yaml +++ b/operator/config/crd/bases/platform.stackrox.io_securedclusters.yaml @@ -126,7 +126,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -283,8 +283,9 @@ spec: in a Container. properties: name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. + description: |- + Name of the environment variable. + May consist of any printable ASCII characters except '='. type: string value: description: |- @@ -342,6 +343,43 @@ spec: - fieldPath type: object x-kubernetes-map-type: atomic + fileKeyRef: + description: |- + FileKeyRef selects a key of the env file. + Requires the EnvFiles feature gate to be enabled. + properties: + key: + description: |- + The key within the env file. An invalid key will prevent the pod from starting. + The keys defined within a source may consist of any printable ASCII characters except '='. + During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters. + type: string + optional: + default: false + description: |- + Specify whether the file or its key must be defined. If the file or key + does not exist, then the env var is not published. + If optional is set to true and the specified key does not exist, + the environment variable will not be set in the Pod's containers. + + If optional is set to false and the specified key does not exist, + an error will be returned during Pod creation. + type: boolean + path: + description: |- + The path within the volume from which to select the file. + Must be relative and may not contain the '..' path or start with '..'. + type: string + volumeName: + description: The name of the volume mount containing + the env file. + type: string + required: + - key + - path + - volumeName + type: object + x-kubernetes-map-type: atomic resourceFieldRef: description: |- Selects a resource of the container: only resources limits and requests @@ -572,7 +610,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -638,7 +676,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -725,7 +763,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -838,7 +876,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1003,7 +1041,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1190,7 +1228,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1322,7 +1360,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. @@ -1514,7 +1552,7 @@ spec: Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - This is an alpha field and requires enabling the + This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers. diff --git a/operator/internal/common/extensions/secret_reconciliator.go b/operator/internal/common/extensions/secret_reconciliator.go index 3fd1d7f9f61c3..21a7e21cbff65 100644 --- a/operator/internal/common/extensions/secret_reconciliator.go +++ b/operator/internal/common/extensions/secret_reconciliator.go @@ -115,9 +115,18 @@ func (r *SecretReconciliator) EnsureSecret(ctx context.Context, name string, val func (r *SecretReconciliator) updateExisting(ctx context.Context, secret *coreV1.Secret, validate validateSecretDataFunc, generate generateSecretDataFunc, desiredLabels map[string]string) error { isManaged := metav1.IsControlledBy(secret, r.obj) + needsUpdate := false + + // Check if the secret should be adopted. This handles backup/restore scenarios + // where ownerReferences were stripped but the managed-by label remains. + if !isManaged && utils.ShouldAdoptResource(secret) { + secret.SetOwnerReferences([]metav1.OwnerReference{*metav1.NewControllerRef(r.obj, r.obj.GroupVersionKind())}) + isManaged = true + needsUpdate = true + } + validateErr := validate(secret.Data, isManaged) - needsUpdate := false // If the secret is unmanaged, we cannot fix it, so we should fail. if validateErr != nil && !isManaged { return errors.Wrapf(validateErr, diff --git a/operator/internal/common/extensions/secret_reconciliator_test.go b/operator/internal/common/extensions/secret_reconciliator_test.go index c5f0a6351a498..195962d87afd8 100644 --- a/operator/internal/common/extensions/secret_reconciliator_test.go +++ b/operator/internal/common/extensions/secret_reconciliator_test.go @@ -276,3 +276,40 @@ func (s *secretReconcilerTestSuite) Test_ShouldExist_OnExistingUnmanaged_Failing assert.Equal(s.T(), initSecret, secret) } + +func (s *secretReconcilerTestSuite) Test_ShouldExist_OnAdoptableSecret_ShouldAdoptAndFix() { + adoptableSecret := &v1.Secret{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "v1", + Kind: "Secret", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "adoptable-secret", + Namespace: testutils.TestNamespace, + Labels: labels.DefaultLabels(), + }, + Data: map[string][]byte{ + "secret-name": []byte("adoptable-secret"), + }, + } + s.Require().NoError(s.client.Create(s.ctx, adoptableSecret)) + + validateFn := func(_ types.SecretDataMap, managed bool) error { + s.True(managed, "secret should be considered managed after adoption") + return pkgErrors.New("needs regeneration") + } + + generateFn := func(_ types.SecretDataMap) (types.SecretDataMap, error) { + return types.SecretDataMap{"new-data": []byte("fixed")}, nil + } + + err := s.reconciliator.EnsureSecret(s.ctx, "adoptable-secret", validateFn, generateFn, nil) + s.Require().NoError(err) + + secret := &v1.Secret{} + key := ctrlClient.ObjectKey{Namespace: testutils.TestNamespace, Name: "adoptable-secret"} + s.Require().NoError(s.client.Get(context.Background(), key, secret)) + + s.True(metav1.IsControlledBy(secret, s.centralObj)) + s.Equal("fixed", string(secret.Data["new-data"])) +} diff --git a/operator/internal/common/labels/labels.go b/operator/internal/common/labels/labels.go index 17ed3eeeb90a2..229a1e8b95fb9 100644 --- a/operator/internal/common/labels/labels.go +++ b/operator/internal/common/labels/labels.go @@ -11,8 +11,17 @@ import ( "sigs.k8s.io/yaml" ) +const ( + // ManagedByLabelKey is the StackRox-specific managed-by label key. + // This is separate from the Kubernetes standard app.kubernetes.io/managed-by + // and is used for operator caching and resource management. + ManagedByLabelKey = "app.stackrox.io/managed-by" + // ManagedByOperator indicates a resource is managed by the Operator. + ManagedByOperator = "operator" +) + var defaultLabels = map[string]string{ - "app.stackrox.io/managed-by": "operator", + ManagedByLabelKey: ManagedByOperator, } func TLSSecretLabels() map[string]string { diff --git a/operator/internal/utils/api.go b/operator/internal/utils/api.go index be89fe4a97a4c..8974e268315a3 100644 --- a/operator/internal/utils/api.go +++ b/operator/internal/utils/api.go @@ -4,6 +4,7 @@ import ( "context" "github.com/pkg/errors" + commonLabels "github.com/stackrox/rox/operator/internal/common/labels" apiErrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ctrlClient "sigs.k8s.io/controller-runtime/pkg/client" @@ -35,3 +36,20 @@ func GetWithFallbackToUncached(ctx context.Context, client ctrlClient.Client, un return nil } + +// ShouldAdoptResource checks if a resource should be adopted by the operator. +// A resource should be adopted if: +// 1. It has no ownerReferences (might have been stripped during backup/restore) +// 2. It has the "app.stackrox.io/managed-by: operator" label (indicating it was originally created by the operator) +func ShouldAdoptResource(obj metav1.Object) bool { + labels := obj.GetLabels() + if labels == nil { + return false + } + + if labels[commonLabels.ManagedByLabelKey] != commonLabels.ManagedByOperator { + return false + } + + return len(obj.GetOwnerReferences()) == 0 +} diff --git a/operator/internal/utils/api_test.go b/operator/internal/utils/api_test.go new file mode 100644 index 0000000000000..721a7379b5763 --- /dev/null +++ b/operator/internal/utils/api_test.go @@ -0,0 +1,79 @@ +package utils + +import ( + "testing" + + "github.com/stackrox/rox/operator/internal/common/labels" + "github.com/stretchr/testify/assert" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" +) + +func TestShouldAdoptResource(t *testing.T) { + tests := map[string]struct { + obj metav1.Object + expected bool + }{ + "should adopt - has operator managed-by label, no ownerReferences": { + obj: &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-secret", + Namespace: "test-ns", + Labels: map[string]string{ + labels.ManagedByLabelKey: labels.ManagedByOperator, + }, + }, + }, + expected: true, + }, + "should not adopt - no labels": { + obj: &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-secret", + Namespace: "test-ns", + }, + }, + expected: false, + }, + "should not adopt - managed by sensor": { + obj: &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-secret", + Namespace: "test-ns", + Labels: map[string]string{ + labels.ManagedByLabelKey: "sensor", + }, + }, + }, + expected: false, + }, + "should not adopt - has ownerReference": { + obj: &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-secret", + Namespace: "test-ns", + Labels: map[string]string{ + labels.ManagedByLabelKey: labels.ManagedByOperator, + }, + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "v1", + Kind: "SomeOwner", + Name: "owner", + UID: types.UID("some-uid"), + }, + }, + }, + }, + expected: false, + }, + } + + for name, tt := range tests { + t.Run(name, func(t *testing.T) { + result := ShouldAdoptResource(tt.obj) + assert.Equal(t, tt.expected, result) + }) + } +} diff --git a/operator/konflux.Dockerfile b/operator/konflux.Dockerfile index af0a8958193da..3a24939d30133 100644 --- a/operator/konflux.Dockerfile +++ b/operator/konflux.Dockerfile @@ -1,4 +1,4 @@ -FROM brew.registry.redhat.io/rh-osbs/openshift-golang-builder:rhel_8_1.23@sha256:0a070e4a8f2698b6aba3630a49eb995ff1b0a182d0c5fa264888acf9d535f384 AS builder +FROM brew.registry.redhat.io/rh-osbs/openshift-golang-builder:rhel_8_golang_1.25@sha256:527782f4a0270f786192281f68d0374f4a21b3ab759643eee4bfcafb6f539468 AS builder WORKDIR /go/src/github.com/stackrox/rox/app @@ -17,7 +17,7 @@ ENV CI=1 GOFLAGS="" CGO_ENABLED=1 RUN GOOS=linux GOARCH=$(go env GOARCH) scripts/go-build-file.sh operator/cmd/main.go image/bin/operator -FROM registry.access.redhat.com/ubi8/ubi-minimal:latest@sha256:b2a1bec3dfbc7a14a1d84d98934dfe8fdde6eb822a211286601cf109cbccb075 +FROM registry.access.redhat.com/ubi8/ubi-minimal:latest@sha256:9f5006710578c36da022efbc740b27821056d504d582e1aeb204a602d2e8e4ce ARG BUILD_TAG @@ -29,7 +29,7 @@ LABEL \ io.k8s.display-name="operator" \ io.openshift.tags="rhacs,operator,stackrox" \ maintainer="Red Hat, Inc." \ - name="rhacs-rhel8-operator" \ + name="advanced-cluster-security/rhacs-rhel8-operator" \ # Custom Snapshot creation in `operator-bundle-pipeline` depends on source-location label to be set correctly. source-location="https://github.com/stackrox/stackrox" \ summary="Operator for Red Hat Advanced Cluster Security for Kubernetes" \ diff --git a/operator/konflux.bundle.Dockerfile b/operator/konflux.bundle.Dockerfile index 82e57bfa93fa9..7ca7698813cce 100644 --- a/operator/konflux.bundle.Dockerfile +++ b/operator/konflux.bundle.Dockerfile @@ -1,4 +1,4 @@ -FROM registry.access.redhat.com/ubi9/python-39:latest@sha256:f29fbe7a5990f195a89dd1d0ae8cfdb5fb57bbadfe950d5e6f541f5c2aaf8cb5 AS builder +FROM registry.access.redhat.com/ubi9/python-39:latest@sha256:b28387e6c2c66bf2092748bd618036ac48b287ba042f8f353d47118480d0eaf6 AS builder # Because 'default' user cannot create build/ directory and errrors like: # mkdir: cannot create directory ‘build/’: Permission denied @@ -85,7 +85,7 @@ LABEL io.k8s.description="Operator Bundle Image for Red Hat Advanced Cluster Sec LABEL io.k8s.display-name="operator-bundle" LABEL io.openshift.tags="rhacs,operator-bundle,stackrox" LABEL maintainer="Red Hat, Inc." -LABEL name="rhacs-operator-bundle" +LABEL name="advanced-cluster-security/rhacs-operator-bundle" # Custom Snapshot creation in `operator-bundle-pipeline` depends on source-location label to be set correctly. LABEL source-location="https://github.com/stackrox/stackrox" LABEL summary="Operator Bundle Image for Red Hat Advanced Cluster Security for Kubernetes" diff --git a/operator/tests/central/central-misc/080-assert-non-openshift.yaml b/operator/tests/central/central-misc/080-assert-non-openshift.yaml index 1a3e089d60be3..b73c2b31e86c4 100644 --- a/operator/tests/central/central-misc/080-assert-non-openshift.yaml +++ b/operator/tests/central/central-misc/080-assert-non-openshift.yaml @@ -35,6 +35,8 @@ spec: fieldRef: apiVersion: v1 fieldPath: metadata.name + - name: GRPC_ENFORCE_ALPN_ENABLED + value: "false" - name: ROX_TELEMETRY_ENDPOINT value: https://telemetry.endpoint - name: ROX_TELEMETRY_STORAGE_KEY_V1 diff --git a/operator/tests/central/central-misc/080-assert-openshift.yaml b/operator/tests/central/central-misc/080-assert-openshift.yaml index e5aa94062ebc9..e4141c99a7614 100644 --- a/operator/tests/central/central-misc/080-assert-openshift.yaml +++ b/operator/tests/central/central-misc/080-assert-openshift.yaml @@ -35,6 +35,8 @@ spec: fieldRef: apiVersion: v1 fieldPath: metadata.name + - name: GRPC_ENFORCE_ALPN_ENABLED + value: "false" - name: ROX_TELEMETRY_ENDPOINT value: https://telemetry.endpoint - name: ROX_TELEMETRY_STORAGE_KEY_V1 diff --git a/operator/tests/central/central-misc/081-assert-non-openshift.yaml b/operator/tests/central/central-misc/081-assert-non-openshift.yaml index 7848db42ed8f0..cee71a2f96fbf 100644 --- a/operator/tests/central/central-misc/081-assert-non-openshift.yaml +++ b/operator/tests/central/central-misc/081-assert-non-openshift.yaml @@ -35,6 +35,8 @@ spec: fieldRef: apiVersion: v1 fieldPath: metadata.name + - name: GRPC_ENFORCE_ALPN_ENABLED + value: "false" - name: ROX_TELEMETRY_STORAGE_KEY_V1 value: DISABLED - name: ROX_OFFLINE_MODE diff --git a/operator/tests/central/central-misc/081-assert-openshift.yaml b/operator/tests/central/central-misc/081-assert-openshift.yaml index 023ce7c3b6541..ab862a18a401e 100644 --- a/operator/tests/central/central-misc/081-assert-openshift.yaml +++ b/operator/tests/central/central-misc/081-assert-openshift.yaml @@ -35,6 +35,8 @@ spec: fieldRef: apiVersion: v1 fieldPath: metadata.name + - name: GRPC_ENFORCE_ALPN_ENABLED + value: "false" - name: ROX_TELEMETRY_STORAGE_KEY_V1 value: DISABLED - name: ROX_OFFLINE_MODE diff --git a/operator/tests/upgrade/upgrade/005-assert.yaml b/operator/tests/upgrade/upgrade/005-assert.yaml index 0fc8e1f12bd4f..c330adb3f409a 120000 --- a/operator/tests/upgrade/upgrade/005-assert.yaml +++ b/operator/tests/upgrade/upgrade/005-assert.yaml @@ -1 +1 @@ -../../common/central-cr-without-scanner-v4-assert.yaml \ No newline at end of file +../../common/central-cr-assert.yaml \ No newline at end of file diff --git a/operator/tests/upgrade/upgrade/005-errors.yaml b/operator/tests/upgrade/upgrade/005-errors.yaml deleted file mode 120000 index 3664d9c228976..0000000000000 --- a/operator/tests/upgrade/upgrade/005-errors.yaml +++ /dev/null @@ -1 +0,0 @@ -../../common/no-scanner-v4-deployment.yaml \ No newline at end of file diff --git a/operator/tests/upgrade/upgrade/010-assert.yaml b/operator/tests/upgrade/upgrade/010-assert.yaml index 0ec6766d74ec2..018294a148dc8 120000 --- a/operator/tests/upgrade/upgrade/010-assert.yaml +++ b/operator/tests/upgrade/upgrade/010-assert.yaml @@ -1 +1 @@ -../../common/secured-cluster-cr-assert-no-scanner-v4.yaml \ No newline at end of file +../../common/secured-cluster-cr-assert.yaml \ No newline at end of file diff --git a/operator/tests/upgrade/upgrade/010-errors.yaml b/operator/tests/upgrade/upgrade/010-errors.yaml deleted file mode 120000 index 3664d9c228976..0000000000000 --- a/operator/tests/upgrade/upgrade/010-errors.yaml +++ /dev/null @@ -1 +0,0 @@ -../../common/no-scanner-v4-deployment.yaml \ No newline at end of file diff --git a/operator/tests/upgrade/upgrade/030-assert-central.yaml b/operator/tests/upgrade/upgrade/030-assert-central.yaml index 0fc8e1f12bd4f..c330adb3f409a 120000 --- a/operator/tests/upgrade/upgrade/030-assert-central.yaml +++ b/operator/tests/upgrade/upgrade/030-assert-central.yaml @@ -1 +1 @@ -../../common/central-cr-without-scanner-v4-assert.yaml \ No newline at end of file +../../common/central-cr-assert.yaml \ No newline at end of file diff --git a/operator/tests/upgrade/upgrade/030-errors.yaml b/operator/tests/upgrade/upgrade/030-errors.yaml deleted file mode 120000 index 3664d9c228976..0000000000000 --- a/operator/tests/upgrade/upgrade/030-errors.yaml +++ /dev/null @@ -1 +0,0 @@ -../../common/no-scanner-v4-deployment.yaml \ No newline at end of file diff --git a/operator/tests/upgrade/upgrade/031-assert-secured-cluster.yaml b/operator/tests/upgrade/upgrade/031-assert-secured-cluster.yaml index 0ec6766d74ec2..018294a148dc8 120000 --- a/operator/tests/upgrade/upgrade/031-assert-secured-cluster.yaml +++ b/operator/tests/upgrade/upgrade/031-assert-secured-cluster.yaml @@ -1 +1 @@ -../../common/secured-cluster-cr-assert-no-scanner-v4.yaml \ No newline at end of file +../../common/secured-cluster-cr-assert.yaml \ No newline at end of file diff --git a/operator/tests/upgrade/upgrade/031-errors.yaml b/operator/tests/upgrade/upgrade/031-errors.yaml deleted file mode 120000 index 3664d9c228976..0000000000000 --- a/operator/tests/upgrade/upgrade/031-errors.yaml +++ /dev/null @@ -1 +0,0 @@ -../../common/no-scanner-v4-deployment.yaml \ No newline at end of file diff --git a/operator/tests/upgrade/upgrade/035-assert.yaml b/operator/tests/upgrade/upgrade/035-assert.yaml deleted file mode 120000 index c330adb3f409a..0000000000000 --- a/operator/tests/upgrade/upgrade/035-assert.yaml +++ /dev/null @@ -1 +0,0 @@ -../../common/central-cr-assert.yaml \ No newline at end of file diff --git a/operator/tests/upgrade/upgrade/035-central-cr-with-scanner-v4.yaml b/operator/tests/upgrade/upgrade/035-central-cr-with-scanner-v4.yaml deleted file mode 120000 index c6612118e7266..0000000000000 --- a/operator/tests/upgrade/upgrade/035-central-cr-with-scanner-v4.yaml +++ /dev/null @@ -1 +0,0 @@ -../../common/central-cr-with-scanner-v4-enabled-explicitly.yaml \ No newline at end of file diff --git a/operator/tools/controller-gen/go.mod b/operator/tools/controller-gen/go.mod index 4bbdd9b2154cb..83349835c7bac 100644 --- a/operator/tools/controller-gen/go.mod +++ b/operator/tools/controller-gen/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/rox/operator/tools/controller-gen -go 1.23.0 - -toolchain go1.23.6 +go 1.25 require sigs.k8s.io/controller-tools v0.16.5 diff --git a/operator/tools/envtest/go.mod b/operator/tools/envtest/go.mod index 62eef16348830..6586fc3461a54 100644 --- a/operator/tools/envtest/go.mod +++ b/operator/tools/envtest/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/rox/operator/tools/envtest -go 1.23 - -toolchain go1.23.2 +go 1.25 require sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20240215124517-56159419231e diff --git a/operator/tools/kustomize/go.mod b/operator/tools/kustomize/go.mod index cf6a91c91b961..409bc8fe8a88f 100644 --- a/operator/tools/kustomize/go.mod +++ b/operator/tools/kustomize/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/rox/operator/tools/kustomize -go 1.23 - -toolchain go1.23.2 +go 1.25 require sigs.k8s.io/kustomize/kustomize/v5 v5.6.0 diff --git a/operator/tools/kuttl/go.mod b/operator/tools/kuttl/go.mod index 070e42d81beeb..2fe604d3dbaf7 100644 --- a/operator/tools/kuttl/go.mod +++ b/operator/tools/kuttl/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/rox/operator/tools/kuttl -go 1.23.0 - -toolchain go1.23.6 +go 1.25 require github.com/kudobuilder/kuttl v0.22.0 diff --git a/operator/tools/operator-sdk/go.mod b/operator/tools/operator-sdk/go.mod index 339eb3d872f2c..9b74f54672059 100644 --- a/operator/tools/operator-sdk/go.mod +++ b/operator/tools/operator-sdk/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/rox/operator/tools/operator-sdk -go 1.23.0 - -toolchain go1.23.6 +go 1.25 require ( github.com/operator-framework/operator-lifecycle-manager v0.30.0 diff --git a/operator/tools/yq/go.mod b/operator/tools/yq/go.mod index d4a3afeeda568..d3a37de954b07 100644 --- a/operator/tools/yq/go.mod +++ b/operator/tools/yq/go.mod @@ -1,6 +1,6 @@ module github.com/stackrox/rox/operator/tools/yq -go 1.24 +go 1.25 require github.com/mikefarah/yq/v4 v4.45.4 diff --git a/pkg/booleanpolicy/query/operator_string.go b/pkg/booleanpolicy/query/operator_string.go index 2ab7e93626c38..b5534bd7c1b68 100644 --- a/pkg/booleanpolicy/query/operator_string.go +++ b/pkg/booleanpolicy/query/operator_string.go @@ -18,8 +18,9 @@ const _Operator_name = "UnsetAndOr" var _Operator_index = [...]uint8{0, 5, 8, 10} func (i Operator) String() string { - if i < 0 || i >= Operator(len(_Operator_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_Operator_index)-1 { return "Operator(" + strconv.FormatInt(int64(i), 10) + ")" } - return _Operator_name[_Operator_index[i]:_Operator_index[i+1]] + return _Operator_name[_Operator_index[idx]:_Operator_index[idx+1]] } diff --git a/pkg/cve/cve.go b/pkg/cve/cve.go index 7af6609c77bdd..32086230d5ba3 100644 --- a/pkg/cve/cve.go +++ b/pkg/cve/cve.go @@ -3,7 +3,6 @@ package cve import ( "strconv" - "github.com/mitchellh/hashstructure/v2" "github.com/stackrox/rox/generated/storage" pgSearch "github.com/stackrox/rox/pkg/search/postgres" ) @@ -25,13 +24,10 @@ func ID(cve, os string) string { } // IDV2 creates a CVE ID from the given cve name, component id and index of CVE within the component. -func IDV2(cve *storage.EmbeddedVulnerability, componentID string) (string, error) { - hash, err := hashstructure.Hash(cve, hashstructure.FormatV2, &hashstructure.HashOptions{ZeroNil: true}) - if err != nil { - return "", err - } - - return pgSearch.IDFromPks([]string{cve.GetCve(), strconv.FormatUint(hash, 10), componentID}), nil +func IDV2(cve *storage.EmbeddedVulnerability, componentID string, index int) string { + // The index it occurs in the component list is sufficient for uniqueness. We do not need to be able to + // rebuild this ID at query time from an embedded object. + return pgSearch.IDFromPks([]string{cve.GetCve(), strconv.Itoa(index), componentID}) } // IDToParts return the CVE ID parts—cve and operating system. diff --git a/pkg/env/external_ips.go b/pkg/env/external_ips.go index 86e7e8d38905b..c4bdfa5c27fb8 100644 --- a/pkg/env/external_ips.go +++ b/pkg/env/external_ips.go @@ -3,5 +3,5 @@ package env var ( // ExternalIPsPruning enables the pruning of 'discovered' external entities. // The pruning is always enabled when ROX_EXTERNAL_IPS is enabled. - ExternalIPsPruning = RegisterBooleanSetting("ROX_EXTERNAL_IPS_PRUNING", false) + ExternalIPsPruning = RegisterBooleanSetting("ROX_EXTERNAL_IPS_PRUNING", true) ) diff --git a/pkg/env/hash_flush_interval.go b/pkg/env/hash_flush_interval.go index 2dadfb19478db..4f0da603cb44c 100644 --- a/pkg/env/hash_flush_interval.go +++ b/pkg/env/hash_flush_interval.go @@ -4,5 +4,5 @@ import "time" var ( // HashFlushInterval sets the frequency of flushing the received hashes to the database - HashFlushInterval = registerDurationSetting("ROX_HASH_FLUSH_INTERVAL", 1*time.Minute) + HashFlushInterval = registerDurationSetting("ROX_HASH_FLUSH_INTERVAL", 1*time.Minute, WithDurationZeroAllowed()) ) diff --git a/pkg/env/process_indicators.go b/pkg/env/process_indicators.go new file mode 100644 index 0000000000000..ca5ebb191e77d --- /dev/null +++ b/pkg/env/process_indicators.go @@ -0,0 +1,6 @@ +package env + +var ( + // ProcessAddBatchSize defines the number of process indicators to write in a single batch + ProcessAddBatchSize = RegisterIntegerSetting("ROX_CENTRAL_ADD_PROCESS_BATCH_SIZE", 5000) +) diff --git a/pkg/env/reprocessing_interval.go b/pkg/env/reprocessing_interval.go index 4ccbbeefcf749..7b92be6313f20 100644 --- a/pkg/env/reprocessing_interval.go +++ b/pkg/env/reprocessing_interval.go @@ -15,4 +15,8 @@ var ( VulnDeferralFixableReObserveInterval = registerDurationSetting("ROX_VULN_FIXABLE_DEFERRAL_REOBSERVE_INTERVAL", 4*time.Hour) // OrchestratorVulnScanInterval specifies the frequency at which Central should scan for new orchestrator-level vulnerabilities. OrchestratorVulnScanInterval = registerDurationSetting("ROX_ORCHESTRATOR_VULN_SCAN_INTERVAL", 2*time.Hour) + // ReprocessInjectMessageTimeout specifies the duration to wait when sending a message to sensor during reprocessing. If this duration + // is exceeded subsequent messages targeting this particular sensor will be skipped until the next reprocessing cycle. + // Setting the duration to zero will disable the timeout. + ReprocessInjectMessageTimeout = registerDurationSetting("ROX_REPROCESSING_INJECT_MESSAGE_TIMEOUT", 1*time.Minute, WithDurationZeroAllowed()) ) diff --git a/pkg/features/list.go b/pkg/features/list.go index 259e422933efc..a18ffe66f92cc 100644 --- a/pkg/features/list.go +++ b/pkg/features/list.go @@ -96,10 +96,14 @@ var ( SensorPullSecretsByName = registerFeature("Sensor will capture pull secrets by name and registry host instead of just registry host", "ROX_SENSOR_PULL_SECRETS_BY_NAME", enabled) // ExternalIPs enables storing detailed discovered external IPs - ExternalIPs = registerFeature("Central will work with discovered external IPs", "ROX_EXTERNAL_IPS") + ExternalIPs = registerFeature("Central will work with discovered external IPs", "ROX_EXTERNAL_IPS", enabled) // NetworkGraphExternalIPs enables displaying external IPs in the network graph - NetworkGraphExternalIPs = registerFeature("Display external ips in the UI", "ROX_NETWORK_GRAPH_EXTERNAL_IPS") + NetworkGraphExternalIPs = registerFeature("Display external ips in the UI", "ROX_NETWORK_GRAPH_EXTERNAL_IPS", enabled) + + // NetworkGraphAggregateExternalIPs enable aggressive aggregation of external flows in the network graph. + // Will aggregate to one edge per unique port/protocol/direction instead of one edge per unique IP/port/protocol/direction. + NetworkGraphAggregateExternalIPs = registerFeature("Aggregate all external IP graph edges, showing only unique port/protocol pairs", "ROX_NETWORK_GRAPH_AGGREGATE_EXT_IPS") // Display RHSA/RHBA/RHEA advisory separately from associated CVE. CVEAdvisorySeparation = registerFeature("Display RHSA/RHBA/RHEA advisory separately from associated CVE", "ROX_CVE_ADVISORY_SEPARATION", enabled) diff --git a/pkg/helm/charts/tests/centralservices/testdata/helmtest/scanner-v4.test.yaml b/pkg/helm/charts/tests/centralservices/testdata/helmtest/scanner-v4.test.yaml index 563c582c88535..3a253e54750fb 100644 --- a/pkg/helm/charts/tests/centralservices/testdata/helmtest/scanner-v4.test.yaml +++ b/pkg/helm/charts/tests/centralservices/testdata/helmtest/scanner-v4.test.yaml @@ -266,13 +266,66 @@ tests: release: { "isInstall": true, "isUpgrade": false } set: scanner.disable: true + - name: "on upgrade from >= 4.8" + release: { "isInstall": false, "isUpgrade": true } + server: + objects: + # Dummy secrets to avoid the chart trying to generate them and fail due to missing CA key. + - apiVersion: v1 + kind: Secret + metadata: + name: scanner-v4-db-tls + namespace: stackrox + stringData: + ca.pem: "" + cert.pem: "" + key.pem: "" + - apiVersion: v1 + kind: Secret + metadata: + name: scanner-v4-matcher-tls + namespace: stackrox + stringData: + ca.pem: "" + cert.pem: "" + key.pem: "" + - apiVersion: v1 + kind: Secret + metadata: + name: scanner-v4-indexer-tls + namespace: stackrox + stringData: + ca.pem: "" + cert.pem: "" + key.pem: "" + tests: + - name: "from 4.8" + server: + objects: + - apiVersion: v1 + kind: ConfigMap + metadata: + name: stackrox-central-helm + namespace: stackrox + data: + installXYVersion: "4.8" + - name: "from 4.9" + server: + objects: + - apiVersion: v1 + kind: ConfigMap + metadata: + name: stackrox-central-helm + namespace: stackrox + data: + installXYVersion: "4.9" - name: "not installed" expect: | .deployments["scanner-v4-indexer"] | assertThat(. == null) .deployments["scanner-v4-matcher"] | assertThat(. == null) .deployments["scanner-v4-db"] | assertThat(. == null) tests: - - name: "on upgrade" + - name: "on upgrade from pre-4.8" release: { "isInstall": false, "isUpgrade": true } - name: "Scanner V4 can be disabled without impacting Scanner V2" diff --git a/pkg/helm/charts/tests/securedclusterservices/testdata/helmtest/scanner-v4.test.yaml b/pkg/helm/charts/tests/securedclusterservices/testdata/helmtest/scanner-v4.test.yaml index 26be44f0f75ab..7259dc4d33258 100644 --- a/pkg/helm/charts/tests/securedclusterservices/testdata/helmtest/scanner-v4.test.yaml +++ b/pkg/helm/charts/tests/securedclusterservices/testdata/helmtest/scanner-v4.test.yaml @@ -44,7 +44,7 @@ tests: .deployments["scanner-v4-indexer"] | assertThat(. != null) .deployments["scanner-v4-db"] | assertThat(. != null) -- name: "scanner V4 should not be installed by default for upgrades" +- name: "scanner V4 should not be installed by default for upgrades from < 4.8" release: { "isInstall": false, "isUpgrade": true} set: imagePullSecrets.allowNone: true @@ -60,7 +60,7 @@ tests: .deployments["scanner"] | assertThat(. != null) .deployments["scanner-db"] | assertThat(. != null) -- name: "scanner V2 should be not installed by default for upgrades" +- name: "scanner V2 should be not installed by default for upgrades from < 4.8" release: { "isInstall": false, "isUpgrade": true} set: imagePullSecrets.allowNone: true @@ -68,6 +68,35 @@ tests: .deployments["scanner"] | assertThat(. == null) .deployments["scanner-db"] | assertThat(. == null) +- name: "scanner V2 should be installed by default for upgrades from >= 4.8" + release: { "isInstall": false, "isUpgrade": true} + set: + imagePullSecrets.allowNone: true + expect: | + .deployments["scanner"] | assertThat(. != null) + .deployments["scanner-db"] | assertThat(. != null) + tests: + - name: "from 4.8" + server: + objects: + - apiVersion: v1 + kind: ConfigMap + metadata: + name: stackrox-secured-cluster-helm + namespace: stackrox + data: + installXYVersion: "4.8" + - name: "from 4.9" + server: + objects: + - apiVersion: v1 + kind: ConfigMap + metadata: + name: stackrox-secured-cluster-helm + namespace: stackrox + data: + installXYVersion: "4.9" + - name: "scanner V4 enabled should only deploy indexer and db" set: scannerV4.disable: false @@ -192,6 +221,20 @@ tests: .serviceaccounts["scanner-v4"] | saOnlyRefersTo([ "secured-cluster-services-main", "stackrox", "stackrox-scanner-v4", "existing-secret1", "existing-secret2"]) +- name: "Scanner V4 is enabled for Sensor in same-namespace setting" + set: + imagePullSecrets.allowNone: true + server: + objects: + - apiVersion: apps/v1 + kind: Deployment + metadata: + name: central + namespace: stackrox + expect: | + envVars(.deployments.sensor; "sensor")["ROX_SCANNER_V4"] | assertThat(. == "true") + envVars(.deployments.sensor; "sensor")["ROX_SCANNER_V4_INDEXER_ENDPOINT"] | assertThat(. != "") + - name: "local scanning is" set: imagePullSecrets.allowNone: true diff --git a/pkg/images/enricher/enricher_impl.go b/pkg/images/enricher/enricher_impl.go index a8f766c21542e..eaf368ce731fc 100644 --- a/pkg/images/enricher/enricher_impl.go +++ b/pkg/images/enricher/enricher_impl.go @@ -94,6 +94,8 @@ func (e *enricherImpl) EnrichWithVulnerabilities(image *storage.Image, component ScanResult: ScanNotDone, }, errors.Wrapf(err, "retrieving image vulnerabilities from %s [%s]", scanner.Name(), scanner.Type()) } + e.cvesSuppressor.EnrichImageWithSuppressedCVEs(image) + e.cvesSuppressorV2.EnrichImageWithSuppressedCVEs(image) return EnrichmentResult{ ImageUpdated: res != ScanNotDone, diff --git a/pkg/images/enricher/scanresult_string.go b/pkg/images/enricher/scanresult_string.go index 476fc43e7e541..312f7a90e6dbb 100644 --- a/pkg/images/enricher/scanresult_string.go +++ b/pkg/images/enricher/scanresult_string.go @@ -18,8 +18,9 @@ const _ScanResult_name = "ScanNotDoneScanTriggeredScanSucceeded" var _ScanResult_index = [...]uint8{0, 11, 24, 37} func (i ScanResult) String() string { - if i < 0 || i >= ScanResult(len(_ScanResult_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_ScanResult_index)-1 { return "ScanResult(" + strconv.FormatInt(int64(i), 10) + ")" } - return _ScanResult_name[_ScanResult_index[i]:_ScanResult_index[i+1]] + return _ScanResult_name[_ScanResult_index[idx]:_ScanResult_index[idx+1]] } diff --git a/pkg/maputil/syncmap.go b/pkg/maputil/syncmap.go index 7d95f17123b18..04a8c46b3a84f 100644 --- a/pkg/maputil/syncmap.go +++ b/pkg/maputil/syncmap.go @@ -6,6 +6,7 @@ import "github.com/stackrox/rox/pkg/sync" type SyncMap[K comparable, V any] interface { Store(K, V) Load(K) (V, bool) + Contains(k K) bool Access(fn func(m *map[K]V)) RAccess(fn func(m map[K]V)) } @@ -28,6 +29,14 @@ func (m *syncMapImpl[K, V]) Load(k K) (V, bool) { return v, ok } +// Contains returns true if the map contains the key, false otherwise. +func (m *syncMapImpl[K, V]) Contains(k K) bool { + m.mux.RLock() + defer m.mux.RUnlock() + _, ok := m.data[k] + return ok +} + // Store inserts the value v to the map at the key k, or updates the value if the // comparison predicate returns true. func (m *syncMapImpl[K, V]) Store(k K, v V) { diff --git a/pkg/maputil/syncmap_test.go b/pkg/maputil/syncmap_test.go index f21173a465793..80e47fbb27e49 100644 --- a/pkg/maputil/syncmap_test.go +++ b/pkg/maputil/syncmap_test.go @@ -7,13 +7,15 @@ import ( "github.com/stretchr/testify/assert" ) -func TestSyncMapStoreLoad(t *testing.T) { +func TestSyncMapStoreLoadContains(t *testing.T) { m := NewSyncMap[string, int]() m.Store("a", 1) m.Store("a", 2) v, ok := m.Load("a") assert.True(t, ok) assert.Equal(t, 2, v) + assert.True(t, m.Contains("a")) + assert.False(t, m.Contains("b")) } func TestSyncMap(t *testing.T) { diff --git a/pkg/metrics/op_string.go b/pkg/metrics/op_string.go index 0aea8d9ef4266..afe0b991300cf 100644 --- a/pkg/metrics/op_string.go +++ b/pkg/metrics/op_string.go @@ -45,8 +45,9 @@ const _Op_name = "AddAddManyCountDedupeExistsGetGetAllGetManyGetExternalFlowsFor var _Op_index = [...]uint16{0, 3, 10, 15, 21, 27, 30, 36, 43, 72, 93, 103, 113, 138, 142, 147, 152, 158, 164, 174, 197, 203, 207, 213, 223, 229, 238, 242, 253, 258, 265} func (i Op) String() string { - if i < 0 || i >= Op(len(_Op_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_Op_index)-1 { return "Op(" + strconv.FormatInt(int64(i), 10) + ")" } - return _Op_name[_Op_index[i]:_Op_index[i+1]] + return _Op_name[_Op_index[idx]:_Op_index[idx+1]] } diff --git a/pkg/metrics/resolver_string.go b/pkg/metrics/resolver_string.go index 3b6413bf83e19..6f61cefbb3cf2 100644 --- a/pkg/metrics/resolver_string.go +++ b/pkg/metrics/resolver_string.go @@ -45,8 +45,9 @@ const _Resolver_name = "ClusterComplianceComlianceControlCVEsDeploymentsGroupsIm var _Resolver_index = [...]uint16{0, 7, 17, 33, 37, 48, 54, 60, 75, 83, 93, 98, 107, 121, 129, 134, 138, 145, 160, 168, 174, 184, 188, 206, 215, 223, 234, 248, 260, 275, 286} func (i Resolver) String() string { - if i < 0 || i >= Resolver(len(_Resolver_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_Resolver_index)-1 { return "Resolver(" + strconv.FormatInt(int64(i), 10) + ")" } - return _Resolver_name[_Resolver_index[i]:_Resolver_index[i+1]] + return _Resolver_name[_Resolver_index[idx]:_Resolver_index[idx+1]] } diff --git a/pkg/metrics/resource_string.go b/pkg/metrics/resource_string.go index 81e2b7845b346..5779e619a6472 100644 --- a/pkg/metrics/resource_string.go +++ b/pkg/metrics/resource_string.go @@ -47,8 +47,9 @@ const _Resource_name = "AlertDeploymentProcessIndicatorProcessListeningOnPortIma var _Resource_index = [...]uint16{0, 5, 15, 31, 53, 58, 64, 73, 86, 90, 103, 119, 135, 151, 165, 178, 182, 193, 212, 215, 244, 269, 305, 327, 349, 371, 402, 426, 453, 477, 502, 533, 542} func (i Resource) String() string { - if i < 0 || i >= Resource(len(_Resource_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_Resource_index)-1 { return "Resource(" + strconv.FormatInt(int64(i), 10) + ")" } - return _Resource_name[_Resource_index[i]:_Resource_index[i+1]] + return _Resource_name[_Resource_index[idx]:_Resource_index[idx+1]] } diff --git a/pkg/networkgraph/tree/radix.go b/pkg/networkgraph/tree/radix.go index dea6fe5c7f4c3..3af1768dbf0a3 100644 --- a/pkg/networkgraph/tree/radix.go +++ b/pkg/networkgraph/tree/radix.go @@ -390,6 +390,10 @@ func (t *nRadixTree) findCIDRNoLock(ipNet *net.IPNet) (*nRadixNode, error) { node = node.left } + if node == nil { + break + } + // All network bits are traversed. If a supernet was found along the way, `ret` holds it, // else there does not exist any supernet containing the search network/address. if ipNet.Mask[i]&bit == 0 { @@ -410,6 +414,175 @@ func (t *nRadixTree) findCIDRNoLock(ipNet *net.IPNet) (*nRadixNode, error) { return ret, nil } +// Checks that all leaf nodes have values. All leaves +// should have nodes since paths represent values. +func validateLeavesHaveValues(node *nRadixNode) bool { + if node == nil { + return true + } + + if node.left == nil && node.right == nil && node.value == nil { + return false + } + + if node.left != nil && !validateLeavesHaveValues(node.left) { + return false + } + + if node.right != nil && !validateLeavesHaveValues(node.right) { + return false + } + + return true +} + +func getCardinalityByValues(node *nRadixNode) int { + if node == nil { + return 0 + } + + cardinality := 0 + + if node.value != nil { + cardinality = 1 + } + + if node.left != nil { + cardinality += getCardinalityByValues(node.left) + } + + if node.right != nil { + cardinality += getCardinalityByValues(node.right) + } + + return cardinality +} + +// Checks that the number of values in the network tree +// matches the number of keys in valueNodes. +func (t *nRadixTree) validateCardinality() bool { + return getCardinalityByValues(t.root) == t.Cardinality() +} + +func cloneIPNet(ipNet *net.IPNet) *net.IPNet { + ip := make(net.IP, len(ipNet.IP)) + copy(ip, ipNet.IP) + + mask := make(net.IPMask, len(ipNet.Mask)) + copy(mask, ipNet.Mask) + + return &net.IPNet{ + IP: ip, + Mask: mask, + } +} + +func equalValueIpNet(value *storage.NetworkEntityInfo, ipNet *net.IPNet) bool { + valueCidr := value.GetExternalSource().GetCidr() + ipNetCidr := ipNet.String() + return valueCidr == ipNetCidr +} + +func validateValuesRecursive(ipNet *net.IPNet, octetIdx int, bit byte, node *nRadixNode) bool { + if node.value != nil { + if !equalValueIpNet(node.value, ipNet) { + return false + } + } + + if octetIdx >= len(ipNet.IP) && node.value == nil { + return false + } + + newBit := bit >> 1 + newOctetIdx := octetIdx + if newBit == 0 { + newOctetIdx = octetIdx + 1 + newBit = byte(0x80) + } + + if node.right != nil { + newIpNet := cloneIPNet(ipNet) + newIpNet.IP[octetIdx] |= bit + newIpNet.Mask[octetIdx] |= bit + valid := validateValuesRecursive(newIpNet, newOctetIdx, newBit, node.right) + if !valid { + return false + } + } + + if node.left != nil { + newIpNet := cloneIPNet(ipNet) + newIpNet.Mask[octetIdx] |= bit + valid := validateValuesRecursive(newIpNet, newOctetIdx, newBit, node.left) + if !valid { + return false + } + } + + return true +} + +// Checks that the values of nodes correspond to the paths taken from +// the root to the nodes. +func (t *nRadixTree) validateValues() bool { + ip := make(net.IP, 4) + mask := make(net.IPMask, 4) + + ipNet := &net.IPNet{ + IP: ip, + Mask: mask, + } + + octetIdx := 0 + bit := byte(0x80) + return validateValuesRecursive(ipNet, octetIdx, bit, t.root) +} + +func (t *nRadixTree) ValidateNetworkTree() bool { + t.lock.Lock() + defer t.lock.Unlock() + + if t.root == nil { + return false + } + + if !validateLeavesHaveValues(t.root) { + log.Errorf("Found a leaf without a value") + return false + } + + if !t.validateCardinality() { + log.Errorf("The number of values in the tree doesn't match the number of keys") + return false + } + + if !t.validateValues() { + log.Errorf("Values do not match tree path") + return false + } + + return true +} + +func removeRecursively(node *nRadixNode) { + // Do not remove the root. + if node.parent == nil { + return + } + + parent := node.parent + + if node.left == nil && node.right == nil && node.value == nil { + if parent.right == node { + parent.right = nil + } else { + parent.left = nil + } + removeRecursively(parent) + } +} + func (t *nRadixTree) Remove(key string) { t.lock.Lock() defer t.lock.Unlock() @@ -426,8 +599,7 @@ func (t *nRadixTree) Remove(key string) { } node.value = nil - if node.left == nil && node.right == nil { - node = nil - } + removeRecursively(node) + delete(t.valueNodes, key) } diff --git a/pkg/networkgraph/tree/radix_test.go b/pkg/networkgraph/tree/radix_test.go index 59f445ec417fc..ac77abd223ae0 100644 --- a/pkg/networkgraph/tree/radix_test.go +++ b/pkg/networkgraph/tree/radix_test.go @@ -1,6 +1,7 @@ package tree import ( + "net" "testing" "github.com/stackrox/rox/generated/storage" @@ -8,6 +9,7 @@ import ( "github.com/stackrox/rox/pkg/networkgraph" "github.com/stackrox/rox/pkg/networkgraph/testutils" "github.com/stackrox/rox/pkg/protoassert" + "github.com/stackrox/rox/pkg/set" "github.com/stretchr/testify/assert" ) @@ -67,6 +69,111 @@ func TestNRadixTreeIPv4(t *testing.T) { protoassert.ElementsMatch(t, []*storage.NetworkEntityInfo{e2, e5, e7}, tree.GetSubnetsForCIDR("0.0.0.0/0")) } +func getIds(entityInfos []*storage.NetworkEntityInfo) set.StringSet { + ids := set.NewStringSet() + + for _, entityInfo := range entityInfos { + ids.Add(entityInfo.GetId()) + } + + return ids +} + +func TestNRadixTreeIPv4Remove(t *testing.T) { + e1 := testutils.GetExtSrcNetworkEntityInfo("1", "1", "35.187.144.0/32", false, true) + e2 := testutils.GetExtSrcNetworkEntityInfo("2", "2", "35.187.144.4/32", false, true) + e3 := testutils.GetExtSrcNetworkEntityInfo("3", "3", "17.187.144.4/32", false, true) + e4 := testutils.GetExtSrcNetworkEntityInfo("4", "4", "17.187.144.0/24", false, true) + + cases := map[string]struct { + externalEntityInfos []*storage.NetworkEntityInfo + toBeDeleted []*storage.NetworkEntityInfo + }{ + "Similar IPs": { + externalEntityInfos: []*storage.NetworkEntityInfo{e1, e2}, + toBeDeleted: []*storage.NetworkEntityInfo{e2}, + }, + "Disimilar IPs": { + externalEntityInfos: []*storage.NetworkEntityInfo{e1, e3}, + toBeDeleted: []*storage.NetworkEntityInfo{e3}, + }, + "Delete multiple": { + externalEntityInfos: []*storage.NetworkEntityInfo{e1, e2, e3}, + toBeDeleted: []*storage.NetworkEntityInfo{e2, e3}, + }, + "Delete all": { + externalEntityInfos: []*storage.NetworkEntityInfo{e1, e2}, + toBeDeleted: []*storage.NetworkEntityInfo{e1, e2}, + }, + "Delete supernet": { + externalEntityInfos: []*storage.NetworkEntityInfo{e3, e4}, + toBeDeleted: []*storage.NetworkEntityInfo{e4}, + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + tree, err := NewNRadixTree(pkgNet.IPv4, c.externalEntityInfos) + assert.NoError(t, err) + assert.NotNil(t, tree) + + for _, entityInfo := range c.toBeDeleted { + log.Infof("Deleting %+v", entityInfo) + assert.NotNil(t, tree.Get(entityInfo.GetId())) + tree.Remove(entityInfo.GetId()) + assert.Nil(t, tree.Get(entityInfo.GetId())) + } + + externalEntityIds := getIds(c.externalEntityInfos) + deletedIds := getIds(c.toBeDeleted) + + remainingIds := externalEntityIds.Difference(deletedIds) + + for id := range remainingIds { + assert.NotNil(t, tree.Get(id)) + } + + assert.True(t, tree.ValidateNetworkTree()) + }) + } +} + +func TestNRadixTreeFindCIDR(t *testing.T) { + e1 := testutils.GetExtSrcNetworkEntityInfo("1", "1", "35.187.144.0/32", false, true) + e2 := testutils.GetExtSrcNetworkEntityInfo("2", "2", "35.187.144.4/32", false, true) + e3 := testutils.GetExtSrcNetworkEntityInfo("3", "3", "17.187.144.4/32", false, true) + e4 := testutils.GetExtSrcNetworkEntityInfo("4", "4", "17.187.144.0/24", false, true) + + internetEntity := networkgraph.InternetProtoWithDesc(pkgNet.IPv4) + cidr := "255.0.0.0/32" + _, ipNet, err := net.ParseCIDR(cidr) + assert.NoError(t, err) + + tree := newDefaultNRadixTree(pkgNet.IPv4) + err = tree.build([]*storage.NetworkEntityInfo{e1, e2, e3, e4}) + assert.NoError(t, err) + + supernet, err := tree.findCIDRNoLock(ipNet) + assert.NoError(t, err) + protoassert.Equal(t, supernet.value, internetEntity) +} + +func TestNRadixTreeFindCIDR_Depth31(t *testing.T) { + e := testutils.GetExtSrcNetworkEntityInfo("1", "1", "255.0.0.0/31", false, true) + + cidr := "255.0.0.0/32" + _, ipNet, err := net.ParseCIDR(cidr) + assert.NoError(t, err) + + tree := newDefaultNRadixTree(pkgNet.IPv4) + err = tree.build([]*storage.NetworkEntityInfo{e}) + assert.NoError(t, err) + + supernet, err := tree.findCIDRNoLock(ipNet) + assert.NoError(t, err) + protoassert.Equal(t, supernet.value, e) +} + func TestNRadixTreeIPv6(t *testing.T) { e1 := testutils.GetExtSrcNetworkEntityInfo("1", "1", "2001:db8:3333:4444:5555:6666:7777:8888/63", true, false) e2 := testutils.GetExtSrcNetworkEntityInfo("2", "2", "2001:db8:3333:4444:5555:6666:7777:8888/64", false, false) diff --git a/pkg/networkgraph/tree/types.go b/pkg/networkgraph/tree/types.go index bdd3da50bba08..d619f25ba099d 100644 --- a/pkg/networkgraph/tree/types.go +++ b/pkg/networkgraph/tree/types.go @@ -10,6 +10,11 @@ type NetworkTree interface { Insert(entity *storage.NetworkEntityInfo) error Remove(key string) + // Checks that there are no leafs without values, that the number of values is equal to + // the cardinality, and that the values in the network tree corresponds to the paths needed + // to take from the root to their location. If there are multiple trees, the checks are done + // for each tree. + ValidateNetworkTree() bool } // ReadOnlyNetworkTree provides functionality to read network entities from a network tree. diff --git a/pkg/networkgraph/tree/wrapper.go b/pkg/networkgraph/tree/wrapper.go index 0a7713f251a55..079667a681989 100644 --- a/pkg/networkgraph/tree/wrapper.go +++ b/pkg/networkgraph/tree/wrapper.go @@ -88,6 +88,19 @@ func (t *networkTreeWrapper) Insert(entity *storage.NetworkEntityInfo) error { return t.trees[ipNet.Family()].Insert(entity) } +func (t *networkTreeWrapper) ValidateNetworkTree() bool { + t.lock.Lock() + defer t.lock.Unlock() + + for _, tree := range t.trees { + if !tree.ValidateNetworkTree() { + return false + } + } + + return true +} + // Remove removes the network entity from a tree for given key, if present. func (t *networkTreeWrapper) Remove(key string) { t.lock.Lock() diff --git a/pkg/postgres/schema/configs.go b/pkg/postgres/schema/configs.go index 36a4b00f0c425..10b0186c3a18f 100644 --- a/pkg/postgres/schema/configs.go +++ b/pkg/postgres/schema/configs.go @@ -16,6 +16,9 @@ var ( CreateTableConfigsStmt = &postgres.CreateStmts{ GormModel: (*Configs)(nil), Children: []*postgres.CreateStmts{}, + PostStmts: []string{ + "ALTER TABLE configs REPLICA IDENTITY FULL", + }, } // ConfigsSchema is the go schema for table `configs`. diff --git a/pkg/postgres/schema/delegated_registry_configs.go b/pkg/postgres/schema/delegated_registry_configs.go index a8469ef0d4d06..6df9c728b1af2 100644 --- a/pkg/postgres/schema/delegated_registry_configs.go +++ b/pkg/postgres/schema/delegated_registry_configs.go @@ -16,6 +16,9 @@ var ( CreateTableDelegatedRegistryConfigsStmt = &postgres.CreateStmts{ GormModel: (*DelegatedRegistryConfigs)(nil), Children: []*postgres.CreateStmts{}, + PostStmts: []string{ + "ALTER TABLE delegated_registry_configs REPLICA IDENTITY FULL", + }, } // DelegatedRegistryConfigsSchema is the go schema for table `delegated_registry_configs`. diff --git a/pkg/postgres/schema/installation_infos.go b/pkg/postgres/schema/installation_infos.go index 72cb4632396d0..fb92e20f258a3 100644 --- a/pkg/postgres/schema/installation_infos.go +++ b/pkg/postgres/schema/installation_infos.go @@ -16,6 +16,9 @@ var ( CreateTableInstallationInfosStmt = &postgres.CreateStmts{ GormModel: (*InstallationInfos)(nil), Children: []*postgres.CreateStmts{}, + PostStmts: []string{ + "ALTER TABLE installation_infos REPLICA IDENTITY FULL", + }, } // InstallationInfosSchema is the go schema for table `installation_infos`. diff --git a/pkg/postgres/schema/notification_schedules.go b/pkg/postgres/schema/notification_schedules.go index 29683eb35bdcf..f919c369c6184 100644 --- a/pkg/postgres/schema/notification_schedules.go +++ b/pkg/postgres/schema/notification_schedules.go @@ -16,6 +16,9 @@ var ( CreateTableNotificationSchedulesStmt = &postgres.CreateStmts{ GormModel: (*NotificationSchedules)(nil), Children: []*postgres.CreateStmts{}, + PostStmts: []string{ + "ALTER TABLE notification_schedules REPLICA IDENTITY FULL", + }, } // NotificationSchedulesSchema is the go schema for table `notification_schedules`. diff --git a/pkg/postgres/schema/notifier_enc_configs.go b/pkg/postgres/schema/notifier_enc_configs.go index 809add74269e8..e85a16fab205b 100644 --- a/pkg/postgres/schema/notifier_enc_configs.go +++ b/pkg/postgres/schema/notifier_enc_configs.go @@ -16,6 +16,9 @@ var ( CreateTableNotifierEncConfigsStmt = &postgres.CreateStmts{ GormModel: (*NotifierEncConfigs)(nil), Children: []*postgres.CreateStmts{}, + PostStmts: []string{ + "ALTER TABLE notifier_enc_configs REPLICA IDENTITY FULL", + }, } // NotifierEncConfigsSchema is the go schema for table `notifier_enc_configs`. diff --git a/pkg/postgres/schema/sensor_upgrade_configs.go b/pkg/postgres/schema/sensor_upgrade_configs.go index 7c706d87f8eea..99b719e673df6 100644 --- a/pkg/postgres/schema/sensor_upgrade_configs.go +++ b/pkg/postgres/schema/sensor_upgrade_configs.go @@ -16,6 +16,9 @@ var ( CreateTableSensorUpgradeConfigsStmt = &postgres.CreateStmts{ GormModel: (*SensorUpgradeConfigs)(nil), Children: []*postgres.CreateStmts{}, + PostStmts: []string{ + "ALTER TABLE sensor_upgrade_configs REPLICA IDENTITY FULL", + }, } // SensorUpgradeConfigsSchema is the go schema for table `sensor_upgrade_configs`. diff --git a/pkg/postgres/schema/system_infos.go b/pkg/postgres/schema/system_infos.go index 2c815bfddd361..34815aee76a3d 100644 --- a/pkg/postgres/schema/system_infos.go +++ b/pkg/postgres/schema/system_infos.go @@ -16,6 +16,9 @@ var ( CreateTableSystemInfosStmt = &postgres.CreateStmts{ GormModel: (*SystemInfos)(nil), Children: []*postgres.CreateStmts{}, + PostStmts: []string{ + "ALTER TABLE system_infos REPLICA IDENTITY FULL", + }, } // SystemInfosSchema is the go schema for table `system_infos`. diff --git a/pkg/postgres/schema/versions.go b/pkg/postgres/schema/versions.go index 54f61ee456eb8..69e16d31e47f9 100644 --- a/pkg/postgres/schema/versions.go +++ b/pkg/postgres/schema/versions.go @@ -17,6 +17,9 @@ var ( CreateTableVersionsStmt = &postgres.CreateStmts{ GormModel: (*Versions)(nil), Children: []*postgres.CreateStmts{}, + PostStmts: []string{ + "ALTER TABLE versions REPLICA IDENTITY FULL", + }, } // VersionsSchema is the go schema for table `versions`. diff --git a/pkg/registrymirror/store_test.go b/pkg/registrymirror/store_test.go index efc34ea58e634..4967f96721a3a 100644 --- a/pkg/registrymirror/store_test.go +++ b/pkg/registrymirror/store_test.go @@ -48,9 +48,11 @@ var ( } ) -func fileContains(t *testing.T, path, text string) bool { +func fileContains(path, text string) bool { b, err := os.ReadFile(path) - require.NoError(t, err) + if err != nil { + return false + } return strings.Contains(string(b), text) } @@ -82,12 +84,12 @@ func TestUpsertDelete(t *testing.T) { err := s.UpsertImageContentSourcePolicy(icspA) assert.NoError(t, err) assert.Len(t, s.icspRules, 1) - assert.True(t, fileContains(t, path, source), "config missing registry") + assert.True(t, fileContains(path, source), "config missing registry") err = s.DeleteImageContentSourcePolicy(icspA.UID) assert.NoError(t, err) assert.Len(t, s.icspRules, 0) - assert.False(t, fileContains(t, path, source), "config has registry but shouldn't") + assert.False(t, fileContains(path, source), "config has registry but shouldn't") }) t.Run("IDMS", func(t *testing.T) { @@ -95,12 +97,12 @@ func TestUpsertDelete(t *testing.T) { err := s.UpsertImageDigestMirrorSet(idmsA) assert.NoError(t, err) assert.Len(t, s.idmsRules, 1) - assert.True(t, fileContains(t, path, source), "config missing registry") + assert.True(t, fileContains(path, source), "config missing registry") err = s.DeleteImageDigestMirrorSet(idmsA.UID) assert.NoError(t, err) assert.Len(t, s.idmsRules, 0) - assert.False(t, fileContains(t, path, source), "config has registry but shouldn't") + assert.False(t, fileContains(path, source), "config has registry but shouldn't") }) t.Run("ITMS", func(t *testing.T) { @@ -108,12 +110,12 @@ func TestUpsertDelete(t *testing.T) { err := s.UpsertImageTagMirrorSet(itmsA) assert.NoError(t, err) assert.Len(t, s.itmsRules, 1) - assert.True(t, fileContains(t, path, source), "config missing registry") + assert.True(t, fileContains(path, source), "config missing registry") err = s.DeleteImageTagMirrorSet(itmsA.UID) assert.NoError(t, err) assert.Len(t, s.itmsRules, 0) - assert.False(t, fileContains(t, path, source), "config has registry but shouldn't") + assert.False(t, fileContains(path, source), "config has registry but shouldn't") }) } @@ -131,7 +133,7 @@ func TestDelayedUpdate(t *testing.T) { waitFor := 1 * time.Second checkEvery := 250 * time.Millisecond - conditionFn := func() bool { return fileContains(t, path, icspA.Spec.RepositoryDigestMirrors[0].Source) } + conditionFn := func() bool { return fileContains(path, icspA.Spec.RepositoryDigestMirrors[0].Source) } assert.Eventually(t, conditionFn, waitFor, checkEvery, "config missing registry") } diff --git a/pkg/renderer/mode_string.go b/pkg/renderer/mode_string.go index 1889125ef7b0a..4627ce4aa272b 100644 --- a/pkg/renderer/mode_string.go +++ b/pkg/renderer/mode_string.go @@ -22,8 +22,9 @@ const _mode_name = "renderAllscannerOnlycentralTLSOnlycentralDBTLSOnlyscannerTLS var _mode_index = [...]uint8{0, 9, 20, 34, 50, 64, 77, 93} func (i mode) String() string { - if i < 0 || i >= mode(len(_mode_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_mode_index)-1 { return "mode(" + strconv.FormatInt(int64(i), 10) + ")" } - return _mode_name[_mode_index[i]:_mode_index[i+1]] + return _mode_name[_mode_index[idx]:_mode_index[idx+1]] } diff --git a/pkg/renderer/render_new.go b/pkg/renderer/render_new.go index 2fc3071efb081..8ede05aa7ca83 100644 --- a/pkg/renderer/render_new.go +++ b/pkg/renderer/render_new.go @@ -100,19 +100,17 @@ func renderNewBasicFiles(c Config, mode mode, imageFlavor defaults.ImageFlavor) metaVals := charts.GetMetaValuesForFlavor(imageFlavor) metaVals.RenderMode = mode.String() // Modify metaVals depending on deployment format: - metaVals.KubectlOutput = c.K8sConfig.DeploymentFormat == v1.DeploymentFormat_KUBECTL metaVals.EnablePodSecurityPolicies = c.EnablePodSecurityPolicies - if metaVals.KubectlOutput { - metaVals.AutoSensePodSecurityPolicies = false - } metaVals.TelemetryEnabled = c.K8sConfig.Telemetry.Enabled metaVals.TelemetryKey = c.K8sConfig.Telemetry.StorageKey metaVals.TelemetryEndpoint = c.K8sConfig.Telemetry.StorageEndpoint + // First we run the chart through meta-templating with KubectlOutput=false, + // this will yield the Helm chart to be included in the `chart` directory in the bundle. + metaVals.KubectlOutput = false chartFiles, err := chTpl.InstantiateRaw(metaVals) if err != nil { - return nil, errors.Wrap(err, "failed to instantiate central services chart template") + return nil, errors.Wrap(err, "failed to instantiate central services chart template as a Helm chart") } - var helmChartFiles []*zip.File helmChartFiles = append(helmChartFiles, valuesFiles...) helmChartFiles = append(helmChartFiles, withPrefix("chart", convertBufferedFiles(chartFiles))...) @@ -121,7 +119,17 @@ func renderNewBasicFiles(c Config, mode mode, imageFlavor defaults.ImageFlavor) return helmChartFiles, nil } - // kubectl + // Now we allow KubectlOutput to be true, depending on the DeploymentFormant, this will be used for + // assembling the remaining parts of the bundle, which is not simply the Helm chart. + metaVals.KubectlOutput = c.K8sConfig.DeploymentFormat == v1.DeploymentFormat_KUBECTL + if metaVals.KubectlOutput { + metaVals.AutoSensePodSecurityPolicies = false + } + chartFiles, err = chTpl.InstantiateRaw(metaVals) + if err != nil { + return nil, errors.Wrap(err, "failed to instantiate central services chart template") + } + if c.K8sConfig.DeploymentFormat != v1.DeploymentFormat_KUBECTL { return nil, errors.Errorf("unsupported deployment format %v", c.K8sConfig.DeploymentFormat) } diff --git a/pkg/scancomponent/component_id.go b/pkg/scancomponent/component_id.go index 33cc3caff91b0..063389ea8c100 100644 --- a/pkg/scancomponent/component_id.go +++ b/pkg/scancomponent/component_id.go @@ -3,7 +3,6 @@ package scancomponent import ( "strconv" - "github.com/mitchellh/hashstructure/v2" "github.com/stackrox/rox/generated/storage" pgSearch "github.com/stackrox/rox/pkg/search/postgres" ) @@ -14,19 +13,8 @@ func ComponentID(name, version, os string) string { } // ComponentIDV2 creates a component ID from the given name and version and architecture and imageID. -func ComponentIDV2(component *storage.EmbeddedImageScanComponent, imageID string) (string, error) { - // A little future proofing here. Just hashing the component to ensure uniqueness. If a field is added, the data - // will be replaced anyway. We just need to ensure uniqueness within the scan since we tack on the imageID. - // We must make a clone of the incoming object to use in our hash. The `SetTopCvss` must be set to nil before hashing - // as that is added by the enricher and may vary. So we want to ignore it. Since it is - // a oneof we cannot simply flag it as ignore in the proto, sadly. - clonedComponent := component.CloneVT() - clonedComponent.SetTopCvss = nil - - hash, err := hashstructure.Hash(clonedComponent, hashstructure.FormatV2, &hashstructure.HashOptions{ZeroNil: true}) - if err != nil { - return "", err - } - - return pgSearch.IDFromPks([]string{component.GetName(), strconv.FormatUint(hash, 10), imageID}), nil +func ComponentIDV2(component *storage.EmbeddedImageScanComponent, imageID string, index int) string { + // The index it occurs in the component list is sufficient for uniqueness. We do not need to be able to + // rebuild this ID at query time from an embedded object. Which is why we were forced to use a hash before. + return pgSearch.IDFromPks([]string{component.GetName(), strconv.Itoa(index), imageID}) } diff --git a/pkg/search/derivationtype_string.go b/pkg/search/derivationtype_string.go index d99da7d9f828a..f854e764cd599 100644 --- a/pkg/search/derivationtype_string.go +++ b/pkg/search/derivationtype_string.go @@ -21,8 +21,9 @@ const _DerivationType_name = "CountDerivationTypeSimpleReverseSortDerivationType var _DerivationType_index = [...]uint8{0, 19, 50, 67, 82, 99, 127} func (i DerivationType) String() string { - if i < 0 || i >= DerivationType(len(_DerivationType_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_DerivationType_index)-1 { return "DerivationType(" + strconv.FormatInt(int64(i), 10) + ")" } - return _DerivationType_name[_DerivationType_index[i]:_DerivationType_index[i+1]] + return _DerivationType_name[_DerivationType_index[idx]:_DerivationType_index[idx+1]] } diff --git a/pkg/search/postgres/querytype_string.go b/pkg/search/postgres/querytype_string.go index d8d0e24eb211e..7ffaac0cabd10 100644 --- a/pkg/search/postgres/querytype_string.go +++ b/pkg/search/postgres/querytype_string.go @@ -21,8 +21,9 @@ const _QueryType_name = "SEARCHGETCOUNTDELETESELECTDELETERETURNINGIDS" var _QueryType_index = [...]uint8{0, 6, 9, 14, 20, 26, 44} func (i QueryType) String() string { - if i < 0 || i >= QueryType(len(_QueryType_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_QueryType_index)-1 { return "QueryType(" + strconv.FormatInt(int64(i), 10) + ")" } - return _QueryType_name[_QueryType_index[i]:_QueryType_index[i+1]] + return _QueryType_name[_QueryType_index[idx]:_QueryType_index[idx+1]] } diff --git a/pkg/search/querymodifier_string.go b/pkg/search/querymodifier_string.go index d7d1aa27f30c6..b6c338a4bb2fd 100644 --- a/pkg/search/querymodifier_string.go +++ b/pkg/search/querymodifier_string.go @@ -19,8 +19,9 @@ const _QueryModifier_name = "AtLeastOneNegationRegexEquality" var _QueryModifier_index = [...]uint8{0, 10, 18, 23, 31} func (i QueryModifier) String() string { - if i < 0 || i >= QueryModifier(len(_QueryModifier_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_QueryModifier_index)-1 { return "QueryModifier(" + strconv.FormatInt(int64(i), 10) + ")" } - return _QueryModifier_name[_QueryModifier_index[i]:_QueryModifier_index[i+1]] + return _QueryModifier_name[_QueryModifier_index[idx]:_QueryModifier_index[idx+1]] } diff --git a/pkg/sensor/event/event.go b/pkg/sensor/event/event.go index 525dd7c92017c..01dd9f17417b9 100644 --- a/pkg/sensor/event/event.go +++ b/pkg/sensor/event/event.go @@ -8,8 +8,13 @@ import ( "github.com/stackrox/rox/pkg/stringutils" ) +const UnknownEventType = "UnknownEventType" + // GetEventTypeWithoutPrefix trims the *central.SensorEvent_ from the event type func GetEventTypeWithoutPrefix(i interface{}) string { + if i == nil { + return UnknownEventType + } return stringutils.GetAfter(reflectutils.Type(i), "_") } diff --git a/pkg/sensor/event/event_test.go b/pkg/sensor/event/event_test.go new file mode 100644 index 0000000000000..55f2d9031261a --- /dev/null +++ b/pkg/sensor/event/event_test.go @@ -0,0 +1,157 @@ +package event + +import ( + "testing" + + "github.com/stackrox/rox/generated/internalapi/central" + "github.com/stackrox/rox/generated/storage" + "github.com/stretchr/testify/assert" +) + +func TestGetEventTypeWithoutPrefix(t *testing.T) { + var nilDeployment *central.SensorEvent_Deployment = nil + var nilMap map[string]string = nil + var nilSlice []string = nil + var nilStruct any = nil + + tests := map[string]struct { + input interface{} + expected string + }{ + "should return UnknownEventType for nil input": { + input: nil, + expected: UnknownEventType, + }, + "should extract type even for typed nil pointer": { + input: nilDeployment, + expected: "Deployment", + }, + "should extract type even for map nil pointer": { + input: nilMap, + expected: "map[string]string", + }, + "should extract type even for slice nil pointer": { + input: nilSlice, + expected: "[]string", + }, + "should return UnknownEventType for any nil pointer": { + input: nilStruct, + expected: UnknownEventType, + }, + "should extract type for Deployment resource": { + input: ¢ral.SensorEvent_Deployment{Deployment: &storage.Deployment{}}, + expected: "Deployment", + }, + "should extract type for Pod resource": { + input: ¢ral.SensorEvent_Pod{Pod: &storage.Pod{}}, + expected: "Pod", + }, + "should extract type for NetworkPolicy resource": { + input: ¢ral.SensorEvent_NetworkPolicy{NetworkPolicy: &storage.NetworkPolicy{}}, + expected: "NetworkPolicy", + }, + "should extract type for ProcessIndicator resource": { + input: ¢ral.SensorEvent_ProcessIndicator{ProcessIndicator: &storage.ProcessIndicator{}}, + expected: "ProcessIndicator", + }, + } + + for name, tt := range tests { + t.Run(name, func(t *testing.T) { + result := GetEventTypeWithoutPrefix(tt.input) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestGetKeyFromMessage(t *testing.T) { + tests := map[string]struct { + msg *central.MsgFromSensor + expected string + }{ + "should generate key with known resource type": { + msg: ¢ral.MsgFromSensor{ + Msg: ¢ral.MsgFromSensor_Event{ + Event: ¢ral.SensorEvent{ + Id: "test-id-123", + Resource: ¢ral.SensorEvent_Deployment{ + Deployment: &storage.Deployment{}, + }, + }, + }, + }, + expected: "Deployment:test-id-123", + }, + "should generate key with UnknownEventType for nil resource": { + msg: ¢ral.MsgFromSensor{ + Msg: ¢ral.MsgFromSensor_Event{ + Event: ¢ral.SensorEvent{ + Id: "test-id-456", + Resource: nil, + }, + }, + }, + expected: "UnknownEventType:test-id-456", + }, + } + + for name, tt := range tests { + t.Run(name, func(t *testing.T) { + result := GetKeyFromMessage(tt.msg) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestParseIDFromKey(t *testing.T) { + tests := map[string]struct { + key string + expected string + }{ + "should extract ID from properly formatted key": { + key: "Deployment:test-id-123", + expected: "test-id-123", + }, + "should extract ID from key with empty type": { + key: ":test-id-456", + expected: "test-id-456", + }, + "should return full string when colon not found": { + key: "invalid-key", + expected: "invalid-key", + }, + } + + for name, tt := range tests { + t.Run(name, func(t *testing.T) { + result := ParseIDFromKey(tt.key) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestFormatKey(t *testing.T) { + tests := map[string]struct { + typ string + id string + expected string + }{ + "should format key with type and ID": { + typ: "Deployment", + id: "test-id-123", + expected: "Deployment:test-id-123", + }, + "should format key with empty type": { + typ: "", + id: "test-id-456", + expected: ":test-id-456", + }, + } + + for name, tt := range tests { + t.Run(name, func(t *testing.T) { + result := FormatKey(tt.typ, tt.id) + assert.Equal(t, tt.expected, result) + }) + } +} diff --git a/pkg/sensorupgrader/stage_string.go b/pkg/sensorupgrader/stage_string.go index 5c26b12d84317..a83ec51afb138 100644 --- a/pkg/sensorupgrader/stage_string.go +++ b/pkg/sensorupgrader/stage_string.go @@ -30,8 +30,9 @@ const _Stage_name = "UnsetStageCleanupForeignStateStageSnapshotForRollForwardSta var _Stage_index = [...]uint16{0, 10, 34, 61, 85, 107, 123, 145, 162, 187, 201, 221, 233, 250, 270, 289} func (i Stage) String() string { - if i < 0 || i >= Stage(len(_Stage_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_Stage_index)-1 { return "Stage(" + strconv.FormatInt(int64(i), 10) + ")" } - return _Stage_name[_Stage_index[i]:_Stage_index[i+1]] + return _Stage_name[_Stage_index[idx]:_Stage_index[idx+1]] } diff --git a/pkg/signatures/cosign_sig_fetcher.go b/pkg/signatures/cosign_sig_fetcher.go index 3d7d6e35590db..bf72a1942b6e8 100644 --- a/pkg/signatures/cosign_sig_fetcher.go +++ b/pkg/signatures/cosign_sig_fetcher.go @@ -18,9 +18,9 @@ import ( "github.com/google/go-containerregistry/pkg/v1/remote/transport" dockerRegistry "github.com/heroku/docker-registry-client/registry" "github.com/pkg/errors" - "github.com/sigstore/cosign/v2/pkg/cosign" - "github.com/sigstore/cosign/v2/pkg/oci" - ociremote "github.com/sigstore/cosign/v2/pkg/oci/remote" + "github.com/sigstore/cosign/v3/pkg/cosign" + "github.com/sigstore/cosign/v3/pkg/oci" + ociremote "github.com/sigstore/cosign/v3/pkg/oci/remote" "github.com/sigstore/sigstore/pkg/cryptoutils" "github.com/stackrox/rox/generated/storage" "github.com/stackrox/rox/pkg/errox" diff --git a/pkg/signatures/cosign_sig_fetcher_test.go b/pkg/signatures/cosign_sig_fetcher_test.go index 5403301917c44..3309dc6390d38 100644 --- a/pkg/signatures/cosign_sig_fetcher_test.go +++ b/pkg/signatures/cosign_sig_fetcher_test.go @@ -19,9 +19,9 @@ import ( "github.com/google/go-containerregistry/pkg/v1/remote/transport" dockerRegistry "github.com/heroku/docker-registry-client/registry" "github.com/pkg/errors" - "github.com/sigstore/cosign/v2/pkg/oci/mutate" - ociremote "github.com/sigstore/cosign/v2/pkg/oci/remote" - "github.com/sigstore/cosign/v2/pkg/oci/static" + "github.com/sigstore/cosign/v3/pkg/oci/mutate" + ociremote "github.com/sigstore/cosign/v3/pkg/oci/remote" + "github.com/sigstore/cosign/v3/pkg/oci/static" "github.com/stackrox/rox/generated/storage" "github.com/stackrox/rox/pkg/images/types" imgUtils "github.com/stackrox/rox/pkg/images/utils" diff --git a/pkg/signatures/cosign_sig_verifier.go b/pkg/signatures/cosign_sig_verifier.go index d99359dc6c3b0..6440384fbc145 100644 --- a/pkg/signatures/cosign_sig_verifier.go +++ b/pkg/signatures/cosign_sig_verifier.go @@ -7,18 +7,17 @@ import ( "encoding/base64" "encoding/json" "encoding/pem" - "fmt" "os" "github.com/google/go-containerregistry/pkg/name" gcrv1 "github.com/google/go-containerregistry/pkg/v1" "github.com/hashicorp/go-multierror" "github.com/pkg/errors" - "github.com/sigstore/cosign/v2/cmd/cosign/cli/fulcio" - "github.com/sigstore/cosign/v2/pkg/cosign" - "github.com/sigstore/cosign/v2/pkg/cosign/bundle" - "github.com/sigstore/cosign/v2/pkg/oci" - "github.com/sigstore/cosign/v2/pkg/oci/static" + "github.com/sigstore/cosign/v3/cmd/cosign/cli/fulcio" + "github.com/sigstore/cosign/v3/pkg/cosign" + "github.com/sigstore/cosign/v3/pkg/cosign/bundle" + "github.com/sigstore/cosign/v3/pkg/oci" + "github.com/sigstore/cosign/v3/pkg/oci/static" rekorClient "github.com/sigstore/rekor/pkg/client" "github.com/sigstore/sigstore/pkg/cryptoutils" "github.com/sigstore/sigstore/pkg/signature" @@ -40,12 +39,13 @@ const ( ) var ( - errCorruptedSignature = errox.InvariantViolation.New("corrupted signature") - errHashCreation = errox.InvariantViolation.New("creating hash") - errInvalidHashAlgo = errox.InvalidArgs.New("invalid hash algorithm used") - errNoImageSHA = errors.New("no image SHA found") - errNoVerificationData = errors.New("verification data not found") - errUnverifiedBundle = errors.New("unverified transparency log bundle") + errCorruptedSignature = errox.InvariantViolation.New("corrupted signature") + errHashCreation = errox.InvariantViolation.New("creating hash") + errInvalidHashAlgo = errox.InvalidArgs.New("invalid hash algorithm used") + errNoImageSHA = errors.New("no image SHA found") + errNoVerificationData = errors.New("verification data not found") + errNoVerifiedReferences = errors.New("no verified references") + errUnverifiedBundle = errors.New("unverified transparency log bundle") ) var once sync.Once @@ -396,7 +396,14 @@ func verifyImageSignature(ctx context.Context, signature oci.Signature, if !bundleVerified && !cosignOpts.IgnoreTlog { return nil, errUnverifiedBundle } - return getVerifiedImageReference(signature, image) + refs, err := getVerifiedImageReference(signature, image) + if err != nil { + return nil, errors.Wrap(err, "getting verified image references") + } + if len(refs) == 0 { + return nil, errNoVerifiedReferences + } + return refs, nil } // getVerificationResultStatusFromErr will map an error to a specific storage.ImageSignatureVerificationResult_Status. @@ -502,30 +509,40 @@ func getVerifiedImageReference(signature oci.Signature, image *storage.Image) ([ // - and has the same digest // This way we also cover the case where we e.g. reference an image with digest format (/@) // as well as images using floating tags (/:). - signatureImageReference := simpleContainer.Critical.Identity.DockerReference - log.Debugf("Retrieving verified image references from the image names [%v] and image reference within the "+ - "signature %q", image.GetNames(), signatureImageReference) + signatureIdentity := simpleContainer.Critical.Identity.DockerReference + log.Debugf("Retrieving verified image references from the image names [%v] and signature identity %q", + image.GetNames(), signatureIdentity) var verifiedImageReferences []string - imageNames := protoutils.SliceUnique(append(image.GetNames(), image.GetName())) + // We must ensure here that `append` is not called directly on the result of + // `image.GetNames()`. Otherwise, we create a data race caused by concurrent + // writes to the underlying data array of the slice. + imageNames := protoutils.SliceUnique( + append([]*storage.ImageName{image.GetName()}, image.GetNames()...), + ) for _, name := range imageNames { - reference, err := dockerReferenceFromImageName(name) + ok, err := equalRegistryRepository(signatureIdentity, name.GetFullName()) if err != nil { // Theoretically, all references should be parsable. // In case we somehow get an invalid entry, we will log the occurrence and skip this entry. - log.Errorf("Failed to retrieve the reference for image name %s: %v", name.GetFullName(), err) + log.Errorf("Failed to compare image name %q and signature identity %q: %v", name.GetFullName(), signatureIdentity, err) continue } - if signatureImageReference == reference { + if ok { verifiedImageReferences = append(verifiedImageReferences, name.GetFullName()) } } return verifiedImageReferences, nil } -func dockerReferenceFromImageName(imageName *storage.ImageName) (string, error) { - ref, err := name.ParseReference(imageName.GetFullName()) +func equalRegistryRepository(signatureIdentity, imageName string) (bool, error) { + sigRef, err := name.ParseReference(signatureIdentity) + if err != nil { + return false, errors.Wrapf(err, "parsing reference for %q", signatureIdentity) + } + imgRef, err := name.ParseReference(imageName) if err != nil { - return "", err + return false, errors.Wrapf(err, "parsing reference for %q", imageName) } - return fmt.Sprintf("%s/%s", ref.Context().Registry.RegistryStr(), ref.Context().RepositoryStr()), nil + return sigRef.Context().RegistryStr() == imgRef.Context().RegistryStr() && + sigRef.Context().RepositoryStr() == imgRef.Context().RepositoryStr(), nil } diff --git a/pkg/signatures/cosign_sig_verifier_test.go b/pkg/signatures/cosign_sig_verifier_test.go index 9bc5cc9b51663..f15ff47975b83 100644 --- a/pkg/signatures/cosign_sig_verifier_test.go +++ b/pkg/signatures/cosign_sig_verifier_test.go @@ -6,7 +6,7 @@ import ( "os" "testing" - "github.com/sigstore/cosign/v2/pkg/cosign/bundle" + "github.com/sigstore/cosign/v3/pkg/cosign/bundle" "github.com/stackrox/rox/generated/storage" "github.com/stackrox/rox/pkg/errox" "github.com/stackrox/rox/pkg/images/types" @@ -60,6 +60,25 @@ const ( "TljNWItNDA0MC05ZGJlLTQ0NDgzNjE3MGJlYSJ9LCJpbWFnZSI6eyJkb2NrZXItbWFuaWZlc3QtZGlnZXN0Ijoic2hhMjU2OjI5OGQxZWVk" + "Mjg5M2Y2MWVkMjU0YzY4YWZmMjQxN2RlYWYzNDI2MzJhYjI2ZGJiZGIzOTkxNzE0ZTUwMWUxYzkifSwidHlwZSI6ImNvc2lnbiBjb250YWl" + "uZXIgaW1hZ2Ugc2lnbmF0dXJlIn0sIm9wdGlvbmFsIjpudWxsfQ==" + + // OCP image signed by Red Hat release key. + pemPublicKey_OCP = "-----BEGIN PUBLIC KEY-----\n" + + "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0ASyuH2TLWvBUqPHZ4Ip\n" + + "75g7EncBkgQHdJnjzxAW5KQTMh/siBoB/BoSrtiPMwnChbTCnQOIQeZuDiFnhuJ7\n" + + "M/D3b7JoX0m123NcCSn67mAdjBa6Bg6kukZgCP4ZUZeESajWX/EjylFcRFOXW57p\n" + + "RDCEN42J/jYlVqt+g9+Grker8Sz86H3l0tbqOdjbz/VxHYhwF0ctUMHsyVRDq2QP\n" + + "tqzNXlmlMhS/PoFr6R4u/7HCn/K+LegcO2fAFOb40KvKSKKVD6lewUZErhop1CgJ\n" + + "XjDtGmmO9dGMF71mf6HEfaKSdy+EE6iSF2A2Vv9QhBawMiq2kOzEiLg4nAdJT8wg\n" + + "ZrMAmPCqGIsXNGZ4/Q+YTwwlce3glqb5L9tfNozEdSR9N85DESfQLQEdY3CalwKM\n" + + "BT1OEhEX1wHRCU4drMOej6BNW0VtscGtHmCrs74jPezhwNT8ypkyS+T0zT4Tsy6f\n" + + "VXkJ8YSHyenSzMB2Op2bvsE3grY+s74WhG9UIA6DBxcTie15NSzKwfzaoNWODcLF\n" + + "p7BY8aaHE2MqFxYFX+IbjpkQRfaeQQsouDFdCkXEFVfPpbD2dk6FleaMTPuyxtIT\n" + + "gjVEtGQK2qGCFGiQHFd4hfV+eCA63Jro1z0zoBM5BbIIQ3+eVFwt3AlZp5UVwr6d\n" + + "secqki/yrmv3Y0dqZ9VOn3UCAwEAAQ==\n" + + "-----END PUBLIC KEY-----" + imgName_OCP = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:c896b5d4b05343dfe94c0f75c9232a2a68044d0fa7a21b5f51ed796d23f1fcc5" + b64Signature_OCP = "tkgrrtlysbiLo+chF2+EmcPXyGNfhVZIptlgyPK6b0Ptu8FGpk1AdhBckiKExLbx3QwkJci8lvPXWhFEXtGQc1lnw1knKvCenHArW5MbGYaBbZ5v1o2+mF4XIgAePi3PT3KoViCcemg8M3MQUxV8u4RnpMLdMu7PtQvYwOmafw9ja7RYUMoR4FfVn6EWLZUWQ5qtuU7hcR7eaCPKP7tIuedI2Ks+MTlT61NZTG16cmDw8TgkGdheR6xuA8Nw2PgMl3Ij6YGLRJBY/QIm3HSyTjr7QC1+S4Va0rln/4ywFyJuHtSLy/AlirpoqMwNiPM2Rdqd7JJ6MI4wTpIv55DUgQLKkwmZiVgWkklPrME7PIRUcKIICouALwJIZhchDtScl05ntJF0TXW4PK/qzEWs12O0GDYQVdGTGxYQR0Y1EXPK3Rwtq3dFF+pmvnFMY0j6jp092QPJIkQe8bf26drPitPpiVSdBn8fRKQu4TAlwTUmElg5n60kN8JznHxqO81MppNyw8PYfmK0s05b9X21yxkxy0/1g4h9kSlAgVdq6+vjs/QGaNl1n/bsF2krXw9/C8shVLBHsLDnQX7zpXxubVvSkXAfllg6tS17WJfB7ga5605TlPaMHrvyJO13jQbSDFMzaixtxaO85KjVdUOHE1e4SvFcQZzxzv2DdOiGhnE=" + b64Payload_OCP = "eyJjcml0aWNhbCI6eyJpZGVudGl0eSI6eyJkb2NrZXItcmVmZXJlbmNlIjoicXVheS5pby9vcGVuc2hpZnQtcmVsZWFzZS1kZXYvb2NwLXY0LjAtYXJ0LWRldkBzaGEyNTY6Yzg5NmI1ZDRiMDUzNDNkZmU5NGMwZjc1YzkyMzJhMmE2ODA0NGQwZmE3YTIxYjVmNTFlZDc5NmQyM2YxZmNjNSJ9LCJpbWFnZSI6eyJkb2NrZXItbWFuaWZlc3QtZGlnZXN0Ijoic2hhMjU2OmM4OTZiNWQ0YjA1MzQzZGZlOTRjMGY3NWM5MjMyYTJhNjgwNDRkMGZhN2EyMWI1ZjUxZWQ3OTZkMjNmMWZjYzUifSwidHlwZSI6ImNvc2lnbiBjb250YWluZXIgaW1hZ2Ugc2lnbmF0dXJlIn0sIm9wdGlvbmFsIjpudWxsfQ==" ) func TestUnmarshalRekorBundle(t *testing.T) { @@ -162,6 +181,56 @@ func TestCosignSignatureVerifier_VerifySignature_Success(t *testing.T) { "image full name should match verified image reference") } +func TestCosignSignatureVerifier_VerifySignature_OCP_Image(t *testing.T) { + pubKeyVerifier, err := newCosignSignatureVerifier(&storage.SignatureIntegration{ + Cosign: &storage.CosignPublicKeyVerification{ + PublicKeys: []*storage.CosignPublicKeyVerification_PublicKey{ + { + Name: "cosignSignatureVerifier", + PublicKeyPemEnc: pemPublicKey_OCP, + }, + }, + }, + }) + + require.NoError(t, err, "creating public key verifier") + + img, err := generateImageWithCosignSignature(imgName_OCP, b64Signature_OCP, b64Payload_OCP, nil, nil, nil) + require.NoError(t, err, "creating image with signature") + + status, verifiedImageReferences, err := pubKeyVerifier.VerifySignature(context.Background(), img) + assert.NoError(t, err, "verification should be successful") + assert.Equal(t, storage.ImageSignatureVerificationResult_VERIFIED, status, "status should be VERIFIED") + require.Len(t, verifiedImageReferences, 1) + assert.Contains(t, verifiedImageReferences, img.GetName().GetFullName(), + "image full name should match verified image reference") +} + +func TestCosignSignatureVerifier_VerifySignature_NoVerifiedImageReferences(t *testing.T) { + pubKeyVerifier, err := newCosignSignatureVerifier(&storage.SignatureIntegration{ + Cosign: &storage.CosignPublicKeyVerification{ + PublicKeys: []*storage.CosignPublicKeyVerification_PublicKey{ + { + Name: "cosignSignatureVerifier", + PublicKeyPemEnc: pemPublicKey_OCP, + }, + }, + }, + }) + + require.NoError(t, err, "creating public key verifier") + + // The actual signature has been created for quay.io. + fakeName := "docker.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:c896b5d4b05343dfe94c0f75c9232a2a68044d0fa7a21b5f51ed796d23f1fcc5" + img, err := generateImageWithCosignSignature(fakeName, b64Signature_OCP, b64Payload_OCP, nil, nil, nil) + require.NoError(t, err, "creating image with signature") + + status, verifiedImageReferences, err := pubKeyVerifier.VerifySignature(context.Background(), img) + assert.ErrorIs(t, err, errNoVerifiedReferences) + assert.Equal(t, storage.ImageSignatureVerificationResult_FAILED_VERIFICATION, status, "status should be FAILED_VERIFICATION") + require.Empty(t, verifiedImageReferences) +} + func TestCosignSignatureVerifier_VerifySignature_Multiple_Names_One_Sig(t *testing.T) { pubKeyVerifier, err := newCosignSignatureVerifier(&storage.SignatureIntegration{ Cosign: &storage.CosignPublicKeyVerification{ @@ -376,16 +445,18 @@ func TestCosignSignatureVerifier_VerifySignature_Failure(t *testing.T) { func TestCosignVerifier_VerifySignature_Certificate(t *testing.T) { // Image signed by certificate and certificate chain. - const b64Signature = "t18zuH/3IWewBf4EcwjusIvHv5b7jkdtFglPRfdW/oCXweVSDOyX0uVIjolHl2aSRJkJyE182e/" + - "7ib0V7KtJPm8jvJjUWbB7mgANcoVEEEzNvjYeipOPFT7+fMf1F62torp3fLvK08eU/7i2uuHC+ZDUFSkhK6ZHG8XwI/" + - "hguWme6fTcJvsO/7F9TlgGni9kJrAnNiFpMxyiP8XQYfqRy2yjuXdmRRmdsVEdiXF4BNfY5tdyaU4LXePYq5KxKRWsQ" + - "fgqtHATDNqOXV4c3rxq9LxXn/Sl6g1XPT5iKqf8TBwxUl7H/gIV+LFZKRCVhunz1N9cA/4I8ASxe9SOmsH8kQ==" - const b64Payload = "eyJjcml0aWNhbCI6eyJpZGVudGl0eSI6eyJkb2NrZXItcmVmZXJlbmNlIjoidHRsLnN" + - "oLzQ4NTZkNDg1LTg1YjEtNDBkYy1iYTNlLTIzMmU5MzA0OWM1MiJ9LCJpbWFnZSI6eyJkb2NrZXItbWFuaWZlc3Q" + - "tZGlnZXN0Ijoic2hhMjU2OmE5N2ExNTMxNTJmY2Q2NDEwYmRmNGZiNjRmNTYyMmVjZjk3YTc1M2YwN2RjYzg5ZGF" + - "iMTQ1MDlkMDU5NzM2Y2YifSwidHlwZSI6ImNvc2lnbiBjb250YWluZXIgaW1hZ2Ugc2lnbmF0dXJlIn0sIm9wdGl" + - "vbmFsIjpudWxsfQ==" - const imgString = "ttl.sh/4856d485-85b1-40dc-ba3e-232e93049c52@sha256:a97a153152fcd6410bdf4fb64f5622ecf97a753f07dcc89dab14509d059736cf" + // + // The signature has been generated via: + // $ openssl genrsa -out rootCA.key 2048 + // $ openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 100000 -out rootCA.crt + // $ openssl genrsa -out cert.key 2048 + // $ openssl req -new -key cert.key -out cert.csr + // $ openssl x509 -req -in cert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out cert.crt -days 100000 -sha256 + // $ cosign import-key-pair --key cert.key + // $ cosign sign --key import-cosign.key --cert cert.crt --cert-chain rootCA.crt ttl.sh/3d2aaf19-8e64-43db-9eb0-1da66b67d6d2 + const b64Signature = "R4mfJFq6QHwJS1517RB8p9PTsSKxD/e6wWAcZt74tuJz7PRtZaGbrnC5IQPh7Su1O6+od4yc6fKSvdXTt3LxBC+l2b8NMaqj0b1duexA7DKFNZ33Twq7vqJBFRwjXLdFVTXkCw640iYFpZXjX+ed6PfsFWOD/AlIoqL5XjHEfYoU+VUAFs9EZqQHxz4/1XzeIhJ0dVguC5v9cmFWF3cMFFWLDmED5v0IVy2iDCiWnz+VEglR3DgsCq5NN9rMcChIMfmgfxReF4+RW4oOmCbKKifbfeeFAbkrLV9KZJg5bdQ+n6SPHa/nFAdkFiSBWVfVnYuvSVHCYx7QH7/l0BgW+g==" + const b64Payload = "eyJjcml0aWNhbCI6eyJpZGVudGl0eSI6eyJkb2NrZXItcmVmZXJlbmNlIjoidHRsLnNoLzNkMmFhZjE5LThlNjQtNDNkYi05ZWIwLTFkYTY2YjY3ZDZkMiJ9LCJpbWFnZSI6eyJkb2NrZXItbWFuaWZlc3QtZGlnZXN0Ijoic2hhMjU2OmU3NzAxNjVmZWY5ZTM2Yjk5MDg4MmE0MDgzZDhjY2Y1ZTI5ZTQ2OWE4NjA5YmI2YjJlM2I0N2Q5NTEwZTJjOGQifSwidHlwZSI6ImNvc2lnbiBjb250YWluZXIgaW1hZ2Ugc2lnbmF0dXJlIn0sIm9wdGlvbmFsIjpudWxsfQ==" + const imgString = "ttl.sh/3d2aaf19-8e64-43db-9eb0-1da66b67d6d2@sha256:e770165fef9e36b990882a4083d8ccf5e29e469a8609bb6b2e3b47d9510e2c8d" certPEM, err := os.ReadFile("testdata/cert.pem") require.NoError(t, err) chainPEM, err := os.ReadFile("testdata/chain.pem") @@ -597,6 +668,32 @@ func TestCosignVerifier_VerifySignature_Certificate(t *testing.T) { } } +// TestCosignSignatureVerifier_VerifySignature_ConcurrentAccess tests that VerifySignature can safely handle +// concurrent access to the same image object without data races, see https://github.com/stackrox/stackrox/pull/16671 +func TestCosignSignatureVerifier_VerifySignature_ConcurrentAccess(t *testing.T) { + verifier, err := newCosignSignatureVerifier(&storage.SignatureIntegration{ + Cosign: &storage.CosignPublicKeyVerification{ + PublicKeys: []*storage.CosignPublicKeyVerification_PublicKey{ + {Name: "key1", PublicKeyPemEnc: pemPublicKey_1}, + {Name: "key2", PublicKeyPemEnc: pemPublicKey_1}, + }, + }, + }) + require.NoError(t, err) + + img, err := generateImageWithCosignSignature(imgName_1a, b64Signature_1a, b64SignaturePayload_1a, nil, nil, nil) + require.NoError(t, err) + + // Force situation where the capacity of img.Names is larger than its length, which implies that append operations + // will not create a new underlying array. This ensures that (without the fix in + // https://github.com/stackrox/stackrox/pull/16671) a race condition happens when + // multiple goroutines call append on the same image.Names object simultaneously. + img.Names = append(make([]*storage.ImageName, 0, 1000), img.GetNames()...) + + _, _, err = verifier.VerifySignature(context.Background(), img) + require.NoError(t, err) +} + func TestRetrieveVerificationDataFromImage_Success(t *testing.T) { //#nosec G101 -- This is a false positive const ( @@ -657,26 +754,54 @@ func TestRetrieveVerificationDataFromImage_Failure(t *testing.T) { } } -func TestDockerReferenceFromImageName(t *testing.T) { +func TestEqualRegistryRepository(t *testing.T) { cases := map[string]struct { - name *storage.ImageName - res string + signatureIdentity string + imageName string + expected bool }{ - "shouldn't rewrite registry name for quay.io": { - name: &storage.ImageName{FullName: "quay.io/some-repo/image:latest"}, - res: "quay.io/some-repo/image", + "match for quay.io with image tag": { + signatureIdentity: "quay.io/some-repo/image", + imageName: "quay.io/some-repo/image:latest", + expected: true, + }, + "match for quay.io with image digest": { + signatureIdentity: "quay.io/some-repo/image", + imageName: "quay.io/some-repo/image@sha256:a97a153152fcd6410bdf4fb64f5622ecf97a753f07dcc89dab14509d059736cf", + expected: true, + }, + "match for quay.io with signature digest and image digest": { + signatureIdentity: "quay.io/some-repo/image@sha256:a97a153152fcd6410bdf4fb64f5622ecf97a753f07dcc89dab14509d059736cf", + imageName: "quay.io/some-repo/image@sha256:a97a153152fcd6410bdf4fb64f5622ecf97a753f07dcc89dab14509d059736cf", + expected: true, + }, + "match for docker.io with image tag": { + signatureIdentity: "index.docker.io/some-repo/image", + imageName: "docker.io/some-repo/image:latest", + expected: true, + }, + "match for docker.io with image digest": { + signatureIdentity: "index.docker.io/some-repo/image", + imageName: "docker.io/some-repo/image@sha256:a97a153152fcd6410bdf4fb64f5622ecf97a753f07dcc89dab14509d059736cf", + expected: true, + }, + "match for docker.io with signature digest and image digest": { + signatureIdentity: "index.docker.io/some-repo/image@sha256:a97a153152fcd6410bdf4fb64f5622ecf97a753f07dcc89dab14509d059736cf", + imageName: "docker.io/some-repo/image@sha256:a97a153152fcd6410bdf4fb64f5622ecf97a753f07dcc89dab14509d059736cf", + expected: true, }, - "should rewrite registry name for docker.io": { - name: &storage.ImageName{FullName: "docker.io/some-repo/image:latest"}, - res: "index.docker.io/some-repo/image", + "no match": { + signatureIdentity: "index.docker.io/some-repo/image", + imageName: "quay.io/some-repo/image:latest", + expected: false, }, } for name, c := range cases { t.Run(name, func(t *testing.T) { - res, err := dockerReferenceFromImageName(c.name) + ok, err := equalRegistryRepository(c.signatureIdentity, c.imageName) assert.NoError(t, err) - assert.Equal(t, c.res, res) + assert.Equal(t, c.expected, ok) }) } } diff --git a/pkg/signatures/testdata/cert.pem b/pkg/signatures/testdata/cert.pem index ac383850924d3..f376be07007f6 100644 --- a/pkg/signatures/testdata/cert.pem +++ b/pkg/signatures/testdata/cert.pem @@ -1,24 +1,17 @@ -----BEGIN CERTIFICATE----- -MIIEGDCCAgCgAwIBAgIUJk1lM6fPU8kjiZa5IvXhzK3V/+MwDQYJKoZIhvcNAQEL -BQAwJDEQMA4GA1UECgwHdGVzdGluZzEQMA4GA1UEAwwHdGVzdGluZzAeFw0yNDA0 -MjEyMjQwNDBaFw0yNTA5MDMyMjQwNDBaMCQxEDAOBgNVBAoMB3Rlc3RpbmcxEDAO -BgNVBAMMB3Rlc3RpbmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJ -Ach0Q/wXrkivOJ6O9c43EGltWgbd7EBATOQ1SP3J4IUGpCHfSWp7Mnnp1Kfo7fiS -LrSvBAQgf1+IIOlRR9qb4Dz1zkv5JIi2Bsx3CY5Z7LR49o1h3GwKdNzg/57wOrm6 -8xkWv9Eh/2rV4XU4h2uLR0F3iZvJ+roT4JtMAJRIU/9cUr8zHwfBfiJEbFK+KxZW -QJMKRg7NYup4vbsDrJplLKUFXdwd5kq7RM059W7VdbWSbsPXONmKGOimLXKew7Vh -6ZAxxj2dZC88oocvGJmtn4Bg46/LTqU+81ot7fUDeRluoXUIGjUmUDsYWTj9i81k -k9/0pVKNrRsVd69yxHWPAgMBAAGjQjBAMB0GA1UdDgQWBBT8QfcgemDIYq5sD6tn -0bFYYq+vlTAfBgNVHSMEGDAWgBSC6V+J82/YA/XnisCVYhB03nh2LDANBgkqhkiG -9w0BAQsFAAOCAgEAWOr1xyZ+YKaZUAPSCmfA9BwIFACrNnkmm5HiY1lU7Yhs0Xgr -q9ed115I5ixOk5QR6YlHy3xnC4aNHyPUlxXefIWTELm1s3Ii0Dm7SrAXfM5iyHrG -YKBpyV320P4udnfBhEVL3kL3xxk23jQJzfAHJCMNLtms1V4XqXun7tMv5tMukCgk -RC9Y/grAK/1m13KKQNyMoRPqp+qBZmuMSwSliNNpZgb6BhljiyUJ4UZnZr6irRTe -Wu4nnqZtX1qqxrgKuF68f5jBKwOxRIZ0BJaCSaGlLGL4en8CNYd6TAE/OC4P4Zpz -18EDZAejZ4rS5tDEGtpDpHD2XeCeQACt/joJMTCwmePJEH73VF+ZFywbMNIAMsPR -mFESys6J7jqoSC9lQPjNoC2KbRnk+PwQ0U7NTJLJETGsWYhFHDwTi7g0Ogmwr09A -f4vOwI6+qmsckq2K3lob7VmdLhfzVy+u+q6Cg5eBHHyePoO5qtI/Zk9x4paUgMmE -74MTUknrnOm0GMGHMAyJKqsWZcfGWpLZf2TVFKu1MLcj3wx2Q7TFsqomcZW4Jlez -tZFwJgN+v0YobsrJlWjcS8vK6hWcMSyHoX+wVvMckaab0ycjTuYpybSuQG5G+002 -I8+UmQtwa0MOOcoUeXXJXjGagodO6A22hzjwQyf5e87eeLA1FfwtGYNLjoA= +MIICxjCCAa4CCQDilN0x/a1ucjANBgkqhkiG9w0BAQsFADAkMRAwDgYDVQQKDAd0 +ZXN0aW5nMRAwDgYDVQQDDAd0ZXN0aW5nMCAXDTI1MDkxNTA4NTUyNloYDzIyOTkw +NzAxMDg1NTI2WjAkMRAwDgYDVQQKDAd0ZXN0aW5nMRAwDgYDVQQDDAd0ZXN0aW5n +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3fh8S4Fl+NzPcQA6/egk +3wTIRQATNiF2WaQPQZ28Zog8RL6/b3uPiOI10B5P9btaFa5rhy6Q8W7lQ1IpNCED +XKZIIJZT8vsFHUHKLYosqK8GfUBAZ5EE2n0nFKOMtVmd4pAI2difKS7qAw8CJ6A0 +kNagerrUvXYOdUs6y+gCbuQpvO00GicbpG2WAcBE4pfSQ4s9J8Qb/DhRh9Xf5B/M +bswVbfUlOnCLRGuWiuWP270HjzIL1uckSWlSZrKtEAjzUa66O3f0VBSVFqrDZAD6 +Zx6ZWCxx80GMqj4l5QxvKNUlj8w++JstqlMWCDnHyAvmwftjIyrsuoUXeqr47L9S +GQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQA9YOz4r1yXsSz8UhodIutgTUF1KfSa +z5AOjk6F/zLqfZ3Yyt0bJNqU6fTU0uXJJ7xWyEmOum4KkT9I5Gnnb7mca3ZNb/gD +GM6B9XLPV0kWWv9KNFubgTd9JsmyDcKo9iAloLtTdL+IjTJC3J5bVoeTK0brZ0lO +/hYkN6nf5E4M9oo54A8TlmyoIsfPNdCnVsoCKS8t4CYJdPLHn3WNK0XbeS2h5BNv +hNazesu0tFL2FBQouESL67YGABxYOCrbxVVBLkRzxm4/ls+WhjyAP0bwZD7n1NAC +Q7ucVymZUpwddlWMNeA1xW11cf2XckG+FAeygHaiG2Cz6GKyvplxsRaZ -----END CERTIFICATE----- diff --git a/pkg/signatures/testdata/chain.pem b/pkg/signatures/testdata/chain.pem index e103926989049..866227a11acae 100644 --- a/pkg/signatures/testdata/chain.pem +++ b/pkg/signatures/testdata/chain.pem @@ -1,30 +1,17 @@ -----BEGIN CERTIFICATE----- -MIIFKTCCAxGgAwIBAgIUKw8Mzk3KbVr8avxpUA6g8KY1m2MwDQYJKoZIhvcNAQEL -BQAwJDEQMA4GA1UECgwHdGVzdGluZzEQMA4GA1UEAwwHdGVzdGluZzAeFw0yNDA0 -MjEyMjM5NDRaFw0yNzAyMDkyMjM5NDRaMCQxEDAOBgNVBAoMB3Rlc3RpbmcxEDAO -BgNVBAMMB3Rlc3RpbmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCB -wg+zvNVik+XlGBIEUZiWAIe8hsxujlqxVrDPojjv0UiwVg6ho737JOyc11ruu4nd -TOjpf0PfLCJBm9Acsex9utyfUoLNviE63/Ivw+UgzLzvKZVB9hcLrVLQbUkpY6mJ -YTzvrJoxaacKx07agzRIOOM0sbRhte9xyKVvSIi7aj9FSnsvix7/3+eZoYp0grdt -umakcGcxklQh+tsXUBmA2w6QG/hkSwPh9ciOLiabiwndc5PW0w2QaFy3fzZ0iCoD -X4C+1srpVXLguJkQ7UaeTDOywKQ4e+sjM88iZrWHOFp2Vo2sTobz8bpzBYk3Ce/g -OoU7jBQIJF0BTTarQCgZWKxGppMbg4EmC6H5ml8QXbpDFOi3MQsJQnCM8xnImPL1 -0Upgoko+dKq/fb0YJYbk2AeE+D7IsxVB8vgKLRk4YsSweO1VV3h8t/VTKHMLFSGr -RosUIOL0f18/tUqP00PeVjcL+Sp5tqacwRq891rjfZPgl3GywlTZhJ5lHCk531SV -uPelqBI5v+WqZwIyTLGkRx56n+gkBUmKjGfgEm6Y+pzXOffGIwMOlUFx4ur7k/iS -3TF6H1xc3EaUYSmtEbVvBo89AKyUYj2FEWx/Tq1SIZoJeZYowo+2t6i57JOf3pq6 -y15zYpqXCHfe2/lw5Wk11RmlFcXXLALUWK4yaG8q7wIDAQABo1MwUTAdBgNVHQ4E -FgQUgulfifNv2AP154rAlWIQdN54diwwHwYDVR0jBBgwFoAUgulfifNv2AP154rA -lWIQdN54diwwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAR+Yz -+wLAOzYkHJRqii90o1u4N8MUGsNhy53oFx8OZpUq1jflEO4U9jH1vceJodCkh//U -7CH9Pa4XZdkIif0IvFducW0Jw/cHmj/XMqOGcmQlhYxUsgyC1XSJjX4QsG1T17Ps -mdoustIktkRJR3OMXGIboQcj9cK7Wqvk8RTTRf4y4ekn1YZsJ7GGrSXoQb9Ln0KF -uk7ZxVuxZsQKxbMJOKBazSDmeAeCXGSBgdci8msw1qIRAQhiDLYiohrSRP8RIExY -9X+Fun9RKtJVFo7v0OMOoi7c2jewNTcCXYq9bL5KjR+s+EYigExhJRfCZAypUCHZ -Kh6nuOGoZboNgHcNvXjwBeJxqUqS0gx8fzgMz78z+az5Hf/B5SFtgf+Sl+NVgvaB -3pcOp3W6OjT1o7tiI6PjmwrcjgsIxkgQAzfebkXlDzxbwZV97YayxdyV3bDRl6r8 -O9SWwxUFdCAHjJG2mEqmLI03W7YDV4Sx3XzfsJWw4BYm8RPTFfzeB8nK0aeLH8rJ -6tEq9pb2qBK9FwPZVpf+RSPXKcIwzdC+D0XXj3DbxB0RMnf6VWlsRrCCLL3W0qaf -yeoSmxEp+ol9zZcbDm7675FsmACMTikiKYYcIUJv0Ld4X+rHKH1ncd5o1rUQObFc -DxSQWhyf58r/eUY3CY2/SaoVBYtwbBICDw6PD7U= +MIICxjCCAa4CCQCPJREmuBZZ3TANBgkqhkiG9w0BAQsFADAkMRAwDgYDVQQKDAd0 +ZXN0aW5nMRAwDgYDVQQDDAd0ZXN0aW5nMCAXDTI1MDkxNTA4NTQzNFoYDzIyOTkw +NzAxMDg1NDM0WjAkMRAwDgYDVQQKDAd0ZXN0aW5nMRAwDgYDVQQDDAd0ZXN0aW5n +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtjMOWQ5b02bYfa2JcjxR +T9jV0qS695Wnkxqg7hDSjMyLC7tkddd7+1fvw+GT6liEQz9LqgSyMsnugVjNhccU +2cw0+ky52lwVRviPdoRM5tMJ7h9ygEAl18hRuh+KzcfkQ/jEgsYC7KlvVn8tSLF7 +jdmgqNlo6ODngCqpxLauhzeIo5lQMRL94IFgpayBgFGawbHZyfTFn6o4IfPZsm2Y +DpjRcruoErA93eopesQIrg6+QI7abnpGiVgS/BpyozrGpW90p/hBo+R6IHJwVa9t +sHp896zXal4Go3rnLob+kpUVTeLGoO3nkgQldM/FBMvJrLylp+1rDIuzUKmPYwBZ +pwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCgp868kaM7FP721KHwGXdPv76u+0NW +HU8nXrIp/2Xx/spbE9zdCd4eKBHalnm/LEVFoLLYtz6dVPkXHIzDHNijXZjkLMoe +KGnCp2rhmOv1oTk4Z3zbIYwj8YivhHeimoxzzZGw+sJxwS+XW02OO14yy4808BKm +oKhNdHWBEeBuPBoIA0/agBxEP3ermOT04iq7Kos7kXneWwGEAih8GgcNmlMcGfUo +P7tqAKdfY3GwhmwSVfZdsxShO9USvsLc+CYhJ+XqsiVXj9tEax7lwq5UWJeMHiib +EY82IUrNe275UQ+CWcvYJ2LPrTNqu0VQ2UXmtBpCTYtJbCnR6Tqd9puS -----END CERTIFICATE----- diff --git a/pkg/version/kind_string.go b/pkg/version/kind_string.go index 0dd6a95694db1..d5a5555a336b4 100644 --- a/pkg/version/kind_string.go +++ b/pkg/version/kind_string.go @@ -20,8 +20,9 @@ const _Kind_name = "InvalidKindDevelopmentKindRCKindReleaseKindNightlyKind" var _Kind_index = [...]uint8{0, 11, 26, 32, 43, 54} func (i Kind) String() string { - if i < 0 || i >= Kind(len(_Kind_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_Kind_index)-1 { return "Kind(" + strconv.FormatInt(int64(i), 10) + ")" } - return _Kind_name[_Kind_index[i]:_Kind_index[i+1]] + return _Kind_name[_Kind_index[idx]:_Kind_index[idx+1]] } diff --git a/proto/storage/vulnerability.proto b/proto/storage/vulnerability.proto index 9b79cb57ca395..75aa948b6bcfa 100644 --- a/proto/storage/vulnerability.proto +++ b/proto/storage/vulnerability.proto @@ -42,9 +42,9 @@ message EmbeddedVulnerability { // For internal purposes only. VulnerabilityType vulnerability_type = 11; repeated VulnerabilityType vulnerability_types = 18; // @gotags: hash:"ignore" - bool suppressed = 12; // @gotags: search:"CVE Snoozed" hash:"ignore" - google.protobuf.Timestamp suppress_activation = 13; // @gotags: hash:"ignore" - google.protobuf.Timestamp suppress_expiry = 14; // @gotags: hash:"ignore" + bool suppressed = 12; // @gotags: search:"CVE Snoozed" + google.protobuf.Timestamp suppress_activation = 13; + google.protobuf.Timestamp suppress_expiry = 14; // Time when the CVE was first seen, for this specific distro, in the system. google.protobuf.Timestamp first_system_occurrence = 15; // @gotags: policy:"First System Occurrence Timestamp" hash:"ignore" // Time when the CVE was first seen in this image. @@ -53,7 +53,7 @@ message EmbeddedVulnerability { reserved 17; VulnerabilitySeverity severity = 19; // @gotags: policy:"Severity" - VulnerabilityState state = 20; // @gotags: search:"Vulnerability State" hash:"ignore" + VulnerabilityState state = 20; // @gotags: search:"Vulnerability State" // cvss_metrics stores list of cvss scores from different sources like nvd, Redhat etc repeated CVSSScore cvss_metrics = 21; float nvd_cvss = 22; // @gotags: search:"NVD CVSS,store" diff --git a/qa-tests-backend/codenarc-rules.groovy b/qa-tests-backend/codenarc-rules.groovy index 1dbb60ad04e6f..c94fa1efae184 100644 --- a/qa-tests-backend/codenarc-rules.groovy +++ b/qa-tests-backend/codenarc-rules.groovy @@ -404,7 +404,8 @@ ruleset { UnusedArray // UnusedMethodParameter UnusedObject - UnusedPrivateField + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + //UnusedPrivateField UnusedPrivateMethod UnusedPrivateMethodParameter UnusedVariable diff --git a/qa-tests-backend/src/test/groovy/AdmissionControllerNoImageScanTest.groovy b/qa-tests-backend/src/test/groovy/AdmissionControllerNoImageScanTest.groovy index 44721296413a7..6d562584c284e 100644 --- a/qa-tests-backend/src/test/groovy/AdmissionControllerNoImageScanTest.groovy +++ b/qa-tests-backend/src/test/groovy/AdmissionControllerNoImageScanTest.groovy @@ -10,9 +10,11 @@ import services.PolicyService import services.SignatureIntegrationService import util.Timer +import spock.lang.Ignore import spock.lang.Shared import spock.lang.Tag +@Ignore("ROX-29720 - gcr.io sunset, tests need migrated to Artifacts Registry results.") @Tag("PZ") class AdmissionControllerNoImageScanTest extends BaseSpecification { @Shared diff --git a/qa-tests-backend/src/test/groovy/BuiltinPoliciesTest.groovy b/qa-tests-backend/src/test/groovy/BuiltinPoliciesTest.groovy index d9915789dec89..16ddf08b336c0 100644 --- a/qa-tests-backend/src/test/groovy/BuiltinPoliciesTest.groovy +++ b/qa-tests-backend/src/test/groovy/BuiltinPoliciesTest.groovy @@ -130,8 +130,10 @@ class BuiltinPoliciesTest extends BaseSpecification { policyName | deploymentName // "30-Day Scan Age" <- Not covered - "ADD Command used instead of COPY" | TRIGGER_MOST - "Alpine Linux Package Manager (apk) in Image" | TRIGGER_ALPINE + //TODO(ROX-29720) gcr.io sunset, tests need migrated to Artifacts Registry results. + //"ADD Command used instead of COPY" | TRIGGER_MOST + //TODO(ROX-29720) gcr.io sunset, tests need migrated to Artifacts Registry results. + //"Alpine Linux Package Manager (apk) in Image" | TRIGGER_ALPINE "Alpine Linux Package Manager Execution" | TRIGGER_ALPINE // "CAP_SYS_ADMIN capability added" <- Not covered "chkconfig Execution" | TRIGGER_MOST @@ -142,10 +144,12 @@ class BuiltinPoliciesTest extends BaseSpecification { //TODO(ROX-26897)Fix regex for Curl in Image policy. Until then this test is disabled //"Curl in Image" | TRIGGER_MOST "Emergency Deployment Annotation" | TRIGGER_MOST - "Fixable CVSS >= 6 and Privileged" | TRIGGER_MOST + //TODO(ROX-29720) gcr.io sunset, tests need migrated to Artifacts Registry results. + //"Fixable CVSS >= 6 and Privileged" | TRIGGER_MOST "Images with no scans" | TRIGGER_UNSCANNED // "Improper Usage of Orchestrator Secrets Volume" | TRIGGER_MOST // ROX-5098 does not trigger - "Insecure specified in CMD" | TRIGGER_MOST + //TODO(ROX-29720) gcr.io sunset, tests need migrated to Artifacts Registry results. + //"Insecure specified in CMD" | TRIGGER_MOST "iptables Execution" | TRIGGER_MOST "Iptables or nftables Executed in Privileged Container" | TRIGGER_MOST "Linux Group Add Execution" | TRIGGER_MOST @@ -167,7 +171,8 @@ class BuiltinPoliciesTest extends BaseSpecification { "Remote File Copy Binary Execution" | TRIGGER_MOST "Required Annotation: Email" | TRIGGER_MOST "Required Annotation: Owner/Team" | TRIGGER_MOST - "Required Image Label" | TRIGGER_MOST + //TODO(ROX-29720) gcr.io sunset, tests need migrated to Artifacts Registry results. + //"Required Image Label" | TRIGGER_MOST "Required Label: Owner/Team" | TRIGGER_MOST "Secret Mounted as Environment Variable" | TRIGGER_MOST //"Secure Shell (ssh) Port Exposed in Image" | TRIGGER_MOST @@ -178,6 +183,7 @@ class BuiltinPoliciesTest extends BaseSpecification { "systemctl Execution" | TRIGGER_MOST "systemd Execution" | TRIGGER_MOST "Ubuntu Package Manager Execution" | TRIGGER_MOST - "Wget in Image" | TRIGGER_MOST + //TODO(ROX-29720) gcr.io sunset, tests need migrated to Artifacts Registry results. + //"Wget in Image" | TRIGGER_MOST } } diff --git a/qa-tests-backend/src/test/groovy/ImageScanningTest.groovy b/qa-tests-backend/src/test/groovy/ImageScanningTest.groovy index 92510984ff3f4..86fac0e3f17ed 100644 --- a/qa-tests-backend/src/test/groovy/ImageScanningTest.groovy +++ b/qa-tests-backend/src/test/groovy/ImageScanningTest.groovy @@ -34,6 +34,7 @@ import spock.lang.Shared import spock.lang.Tag import spock.lang.Unroll import spock.lang.IgnoreIf +import spock.lang.Ignore @Tag("PZ") class ImageScanningTest extends BaseSpecification { @@ -205,6 +206,7 @@ class ImageScanningTest extends BaseSpecification { } @Unroll + @Ignore("ROX-29720 - disable gcr.io until tests are fixed for failures after migration to artifacts registry") @Tag("BAT") @Tag("Integration") // GCR doesn't have MA images to verify the GCR-image-integrations on P/Z @@ -358,37 +360,38 @@ class ImageScanningTest extends BaseSpecification { // [oauthToken: Env.mustGet("QUAY_RHACS_ENG_BEARER_TOKEN")]) },] | // 41 | 181 | 28 - "gcr-keep-autogenerated" | "gcr" | - [{ GCRImageIntegration.createDefaultIntegration() },] | - 41 | 170 | 28 - - "gcr" | "gcr" | - [{ GCRImageIntegration.createDefaultIntegration() },] | - 41 | 170 | 28 - - "gcr-fully-qualified-endpoint" | "gcr" | - [{ GCRImageIntegration.createCustomIntegration(endpoint: "https://us.gcr.io/") },] | - 41 | 170 | 28 - - "gcr-duplicate" | "gcr" | - [{ GCRImageIntegration.createDefaultIntegration() }, - { GCRImageIntegration.createCustomIntegration(name: "gcr-duplicate") },] | - 41 | 170 | 28 - - "gcr-dupe-invalid" | "gcr" | - [{ GCRImageIntegration.createDefaultIntegration() }, - { - GCRImageIntegration.createCustomIntegration( - name: "gcr-no-access", - serviceAccount: Env.mustGetGCRNoAccessServiceAccount(), - skipTestIntegration: true, - ) },] | - 41 | 170 | 28 - - "gcr-and-other" | "gcr" | - [{ GCRImageIntegration.createDefaultIntegration() }, - { QuayImageIntegration.createDefaultIntegration() },] | - 41 | 170 | 28 + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + // "gcr-keep-autogenerated" | "gcr" | + // [{ GCRImageIntegration.createDefaultIntegration() },] | + // 41 | 170 | 28 + + // "gcr" | "gcr" | + // [{ GCRImageIntegration.createDefaultIntegration() },] | + // 41 | 170 | 28 + + // "gcr-fully-qualified-endpoint" | "gcr" | + // [{ GCRImageIntegration.createCustomIntegration(endpoint: "https://us.gcr.io/") },] | + // 41 | 170 | 28 + + // "gcr-duplicate" | "gcr" | + // [{ GCRImageIntegration.createDefaultIntegration() }, + // { GCRImageIntegration.createCustomIntegration(name: "gcr-duplicate") },] | + // 41 | 170 | 28 + + // "gcr-dupe-invalid" | "gcr" | + // [{ GCRImageIntegration.createDefaultIntegration() }, + // { + // GCRImageIntegration.createCustomIntegration( + // name: "gcr-no-access", + // serviceAccount: Env.mustGetGCRNoAccessServiceAccount(), + // skipTestIntegration: true, + // ) },] | + // 41 | 170 | 28 + + // "gcr-and-other" | "gcr" | + // [{ GCRImageIntegration.createDefaultIntegration() }, + // { QuayImageIntegration.createDefaultIntegration() },] | + // 41 | 170 | 28 cves = ["CVE-2016-2781", "CVE-2017-9614"] } @@ -450,17 +453,17 @@ class ImageScanningTest extends BaseSpecification { where: "Data inputs are: " - scanner | component | version | idx | cve | image | registry - new StackroxScannerIntegration() | "openssl-libs" | "1:1.0.2k-12.el7" | 0 | "RHSA-2019:0483" | RHEL7_IMAGE | "" - new StackroxScannerIntegration() | "openssl-libs" | "1:1.0.2k-12.el7" | 0 | "CVE-2018-0735" | RHEL7_IMAGE | "" - new StackroxScannerIntegration() | "systemd" | "229-4ubuntu21.29" | 0 | "CVE-2021-33910" | OCI_IMAGE | "" - new StackroxScannerIntegration() | "glibc" | "2.35-0ubuntu3.1" | 4 | "CVE-2016-20013" | LIST_IMAGE_OCI_MANIFEST | "" - new ClairScannerIntegration() | "apt" | "1.4.8" | 0 | "CVE-2011-3374" | NGINX_IMAGE | "" - new ClairScannerIntegration() | "bash" | "4.4-5" | 0 | "CVE-2019-18276" | NGINX_IMAGE | "" - new ClairV4ScannerIntegration() | "openssl-libs" | "1:1.1.1-8.el8" | 0 | "RHSA-2021:1024" | UBI8_0_IMAGE | "" - new ClairV4ScannerIntegration() | "platform-python-pip" | "9.0.3-13.el8" | 0 | "RHSA-2020:4432" | UBI8_0_IMAGE | "" - new StackroxScannerIntegration() | "java-17-openjdk-headless" | "1:17.0.11.0.9-2.el8.x86_64" | 135 | "" | LINEAGE_IMAGE_A | "" - new StackroxScannerIntegration() | "java-17-openjdk-headless" | "1:17.0.13.0.11-3.el8.x86_64" | 137 | "" | LINEAGE_IMAGE_B | "" + scanner | component | version | idx | cve | image | registry + new StackroxScannerIntegration() | "openssl-libs" | "1:1.0.2k-12.el7" | 0 | "RHSA-2019:0483" | RHEL7_IMAGE | "" + new StackroxScannerIntegration() | "openssl-libs" | "1:1.0.2k-12.el7" | 0 | "CVE-2018-0735" | RHEL7_IMAGE | "" + new StackroxScannerIntegration() | "systemd" | "229-4ubuntu21.29" | 0 | "CVE-2021-33910" | OCI_IMAGE | "" + new StackroxScannerIntegration() | "glibc" | "2.35-0ubuntu3.1" | 4 | "CVE-2023-4911" | LIST_IMAGE_OCI_MANIFEST | "" + new ClairScannerIntegration() | "apt" | "1.4.8" | 0 | "CVE-2011-3374" | NGINX_IMAGE | "" + new ClairScannerIntegration() | "bash" | "4.4-5" | 0 | "CVE-2019-18276" | NGINX_IMAGE | "" + new ClairV4ScannerIntegration() | "openssl-libs" | "1:1.1.1-8.el8" | 0 | "RHSA-2021:1024" | UBI8_0_IMAGE | "" + new ClairV4ScannerIntegration() | "platform-python-pip" | "9.0.3-13.el8" | 0 | "RHSA-2020:4432" | UBI8_0_IMAGE | "" + new StackroxScannerIntegration() | "java-17-openjdk-headless" | "1:17.0.11.0.9-2.el8.x86_64" | 135 | "" | LINEAGE_IMAGE_A | "" + new StackroxScannerIntegration() | "java-17-openjdk-headless" | "1:17.0.13.0.11-3.el8.x86_64" | 137 | "" | LINEAGE_IMAGE_B | "" } @Unroll @@ -647,7 +650,8 @@ class ImageScanningTest extends BaseSpecification { "acr-config-only" | "acr" | true | /^acr$/ | { -> AzureRegistryIntegration.createDefaultIntegration() } "quay-auto" | "quay" | false | source(".*.quay.io") | null - "gcr-auto" | "gcr" | false | source(".*.gcr.io") | null + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + //"gcr-auto" | "gcr" | false | source(".*.gcr.io") | null } private static String source(String server) { diff --git a/qa-tests-backend/src/test/groovy/NetworkFlowTest.groovy b/qa-tests-backend/src/test/groovy/NetworkFlowTest.groovy index be2100a57977a..ad30358ac7d6e 100644 --- a/qa-tests-backend/src/test/groovy/NetworkFlowTest.groovy +++ b/qa-tests-backend/src/test/groovy/NetworkFlowTest.groovy @@ -474,6 +474,7 @@ class NetworkFlowTest extends BaseSpecification { @Tag("NetworkFlowVisualization") //ROX-21491 skipping test case for p/z @IgnoreIf({ Env.REMOTE_CLUSTER_ARCH == "ppc64le" || Env.REMOTE_CLUSTER_ARCH == "s390x" }) + @Ignore("Skip test until ROX-29905 is complete. Relies on ROX_NETWORK_GRAPH_AGGREGATE_EXT_IPS feature flag") def "Verify connections to external sources"() { given: "Deployment A, where A communicates to an external target" @@ -918,6 +919,7 @@ class NetworkFlowTest extends BaseSpecification { @IgnoreIf({ !Env.IN_CI }) @Unroll @Tag("BAT") + @IgnoreIf({ Env.ORCHESTRATOR_FLAVOR == "openshift" }) // ROX-30001 - failing on OCP 4.20 EC's def "Verify network policy generator apply/undo with delete modes: #deleteMode #note"() { given: "apply network policies to the system" diff --git a/qa-tests-backend/src/test/groovy/NodeInventoryTest.groovy b/qa-tests-backend/src/test/groovy/NodeInventoryTest.groovy index 10dbf16dc5264..d09a67040de1b 100644 --- a/qa-tests-backend/src/test/groovy/NodeInventoryTest.groovy +++ b/qa-tests-backend/src/test/groovy/NodeInventoryTest.groovy @@ -16,6 +16,7 @@ import spock.lang.Tag // skip if executed in a test environment with just secured-cluster deployed in the test cluster // i.e. central is deployed elsewhere @IgnoreIf({ Env.ONLY_SECURED_CLUSTER == "true" }) +@IgnoreIf({ true }) // ROX-29634: address legacy scanner-v2 test failing with rhcos layers change @Tag("PZ") class NodeInventoryTest extends BaseSpecification { @Shared diff --git a/qa-tests-backend/src/test/groovy/PolicyFieldsTest.groovy b/qa-tests-backend/src/test/groovy/PolicyFieldsTest.groovy index 2488e924381af..c18c5d589ac5b 100644 --- a/qa-tests-backend/src/test/groovy/PolicyFieldsTest.groovy +++ b/qa-tests-backend/src/test/groovy/PolicyFieldsTest.groovy @@ -899,8 +899,9 @@ class PolicyFieldsTest extends BaseSpecification { "Add Capabilities" | NO_ADD_CAPS_NET_ADMIN_AND_SYSLOG | WITH_ADD_CAPS_NET_ADMIN_AND_SYSLOG | "match set" "Automount Service Account Token" | NO_AUTOMOUNT_SERVICE_ACCOUNT_TOKEN | WITH_AUTOMOUNT_SERVICE_ACCOUNT_TOKEN | "match" "Automount Service Account Token" | NO_AUTOMOUNT_SERVICE_ACCOUNT_TOKEN | DEFAULT_AUTOMOUNT_SERVICE_ACCOUNT_TOKEN | "match" - "CVE" | EXCLUDE_CVE_2019_5436 | WITH_CVE_2019_5436 | "match" - "CVSS" | EXCLUDE_CVSS_GT_8 | WITH_CVSS_GT_8 | "match" + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + //"CVE" | EXCLUDE_CVE_2019_5436 | WITH_CVE_2019_5436 | "match" + //"CVSS" | EXCLUDE_CVSS_GT_8 | WITH_CVSS_GT_8 | "match" "Container CPU Limit" | CPU_LIMIT_GT_0PT7 | WITH_CPU_LIMIT_ONE | "GT" "Container CPU Limit" | CPU_LIMIT_GE_1 | WITH_CPU_LIMIT_ONE | "GE" "Container CPU Request" | CPU_REQUEST_LT_HALF | WITH_CPU_REQUEST_QUARTER | "LT" @@ -910,8 +911,9 @@ class PolicyFieldsTest extends BaseSpecification { "Disallowed Annotation" | DISALLOWED_ANNOTATION_KEY_ONLY | WITH_KEY_ONLY_ANNOTATION | "key only" "Disallowed Annotation" | DISALLOWED_ANNOTATION_KEY_ONLY | WITH_KEY_AND_VALUE_ANNOTATION | "key only matches key and value" "Disallowed Annotation" | DISALLOWED_ANNOTATION_KEY_AND_VALUE | WITH_KEY_AND_VALUE_ANNOTATION | "key and value" - "Disallowed Image Label" | DISALLOWED_IMAGE_LABEL_KEY_ONLY | WITH_IMAGE_LABELS | "key only" - "Disallowed Image Label" | DISALLOWED_IMAGE_LABEL_KEY_AND_VALUE | WITH_IMAGE_LABELS | "key and value" + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + //"Disallowed Image Label" | DISALLOWED_IMAGE_LABEL_KEY_ONLY | WITH_IMAGE_LABELS | "key only" + //"Disallowed Image Label" | DISALLOWED_IMAGE_LABEL_KEY_AND_VALUE | WITH_IMAGE_LABELS | "key and value" "Drop Capabilities" | HAS_DROP_CAPS_WAKE_ALARM | WITH_DROP_CAPS_IPC_LOCK | "mismatch" "Drop Capabilities" | HAS_DROP_CAPS_LEASE | WITH_DROP_CAPS_IPC_LOCK | "mismatch II" "Drop Capabilities" | HAS_DROP_CAPS_LEASE | WITH_DROP_CAPS_IPC_LOCK_AND_WAKE_ALARM | "mismatch III" @@ -925,12 +927,14 @@ class PolicyFieldsTest extends BaseSpecification { "Environment Variable" | HAS_ENV_FROM_SECRET_KEY | WITH_ENV_FROM_SECRET_KEY | "match secret key" "Environment Variable" | HAS_ENV_FROM_FIELD | WITH_ENV_FROM_FIELD | "match field" "Environment Variable" | HAS_ENV_FROM_RESOURCE_FIELD | WITH_ENV_FROM_RESOURCE_FIELD | "match resource field" - "Image Age" | IS_GREATER_THAN_1_DAY | OLDER_THAN_1_DAY | "match" + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + //"Image Age" | IS_GREATER_THAN_1_DAY | OLDER_THAN_1_DAY | "match" "Image Component" | HAS_COMPONENT_CPIO | WITH_COMPONENT_CPIO | "match name" "Image Component" | HAS_COMPONENT_CPIO_WITH_VERSION | WITH_COMPONENT_CPIO | "match name & version" - "Image OS" | IS_BASED_ON_DEBIAN_7 | BASED_ON_DEBIAN_7 | "match" - "Image OS" | IS_BASED_ON_CENTOS_8 | BASED_ON_CENTOS_8 | "match" - "Image OS" | IS_BASED_ON_ALPINE | BASED_ON_ALPINE | "match" + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + //"Image OS" | IS_BASED_ON_DEBIAN_7 | BASED_ON_DEBIAN_7 | "match" + //"Image OS" | IS_BASED_ON_CENTOS_8 | BASED_ON_CENTOS_8 | "match" + //"Image OS" | IS_BASED_ON_ALPINE | BASED_ON_ALPINE | "match" "Image Registry" | NO_IMAGE_REGISTRY_USCGR | USES_USGCR | "match" "Image Remote" | NO_IMAGE_REMOTE | WITH_IMAGE_REMOTE_TO_MATCH | "match" "Image Tag" | NO_IMAGE_TAG | WITH_IMAGE_TAG_TO_MATCH | "match" @@ -953,14 +957,16 @@ class PolicyFieldsTest extends BaseSpecification { "Readiness Probe Defined" | NO_READINESS_PROBE_DEFINED | WITHOUT_READINESS_PROBE | "match" "Required Annotation" | REQUIRED_ANNOTATION_KEY_AND_VALUE | WITH_KEY_ONLY_ANNOTATION | "no key only when value required" "Required Annotation" | REQUIRED_ANNOTATION_KEY_AND_VALUE | WITH_MISMATCHED_ANNOTATIONS | "both required" - "Required Image Label" | REQUIRED_IMAGE_LABEL_KEY_ONLY | WITHOUT_IMAGE_LABELS | "no labels I" - "Required Image Label" | REQUIRED_IMAGE_LABEL_KEY_AND_VALUE | WITHOUT_IMAGE_LABELS | "no labels II" - "Required Image Label" | REQUIRED_IMAGE_LABEL_NO_MATCH_I | WITH_IMAGE_LABELS | "no match" - "Required Image Label" | REQUIRED_IMAGE_LABEL_NO_MATCH_II | WITH_IMAGE_LABELS | "no match II" + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + //"Required Image Label" | REQUIRED_IMAGE_LABEL_KEY_ONLY | WITHOUT_IMAGE_LABELS | "no labels I" + //"Required Image Label" | REQUIRED_IMAGE_LABEL_KEY_AND_VALUE | WITHOUT_IMAGE_LABELS | "no labels II" + //"Required Image Label" | REQUIRED_IMAGE_LABEL_NO_MATCH_I | WITH_IMAGE_LABELS | "no match" + //"Required Image Label" | REQUIRED_IMAGE_LABEL_NO_MATCH_II | WITH_IMAGE_LABELS | "no match II" "Required Label" | REQUIRED_LABEL_KEY_AND_VALUE | WITH_KEY_ONLY_LABEL | "no key only when value required" "Required Label" | REQUIRED_LABEL_KEY_AND_VALUE | WITH_MISMATCHED_LABELS | "both required" - "Severity" | EXCLUDE_SEVERITY_GT_IMPORTANT | WITH_SEVERITY_GT_IMPORTANT | "match" - "Unscanned Image" | IMAGES_ARE_UNSCANNED | UNSCANNED | "match" + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + //"Severity" | EXCLUDE_SEVERITY_GT_IMPORTANT | WITH_SEVERITY_GT_IMPORTANT | "match" + //"Unscanned Image" | IMAGES_ARE_UNSCANNED | UNSCANNED | "match" "Volume Destination" | NO_FOO_VOLUME_DESTINATIONS | WITH_A_RW_FOO_VOLUME | "match" "Volume Name" | NO_FOO_VOLUME_NAME | WITH_A_RW_FOO_VOLUME | "match" "Volume Source" | NO_TMP_VOLUME_SOURCE | WITH_A_RO_HOST_BAR_VOLUME | "match" @@ -1052,7 +1058,8 @@ class PolicyFieldsTest extends BaseSpecification { "Required Label" | REQUIRED_LABEL_KEY_ONLY | WITH_KEY_ONLY_LABEL | "key only" "Required Label" | REQUIRED_LABEL_KEY_ONLY | WITH_KEY_AND_VALUE_LABEL | "key only matches key and value" "Required Label" | REQUIRED_LABEL_KEY_AND_VALUE | WITH_KEY_AND_VALUE_LABEL | "key and value" - "Unscanned Image" | IMAGES_ARE_UNSCANNED | IS_SCANNED | "no match" + // ROX-29720 - disable gcr.io until tests are fixed for metadata failures after migration to artifacts registry + //"Unscanned Image" | IMAGES_ARE_UNSCANNED | IS_SCANNED | "no match" "Volume Destination" | NO_FOO_VOLUME_DESTINATIONS | WITH_A_RO_HOST_BAR_VOLUME | "no match" "Volume Destination" | NO_FOO_VOLUME_DESTINATIONS | WITHOUT_FOO_OR_BAR_VOLUMES | "no match II" "Volume Name" | NO_FOO_VOLUME_NAME | WITH_A_RO_HOST_BAR_VOLUME | "no match" diff --git a/qa-tests-backend/src/test/groovy/VulnScanWithGraphQLTest.groovy b/qa-tests-backend/src/test/groovy/VulnScanWithGraphQLTest.groovy index 8f9fc597002f0..4c0e1663fa6c9 100644 --- a/qa-tests-backend/src/test/groovy/VulnScanWithGraphQLTest.groovy +++ b/qa-tests-backend/src/test/groovy/VulnScanWithGraphQLTest.groovy @@ -40,7 +40,7 @@ class VulnScanWithGraphQLTest extends BaseSpecification { tag } scan { - components { + imageComponents { name layerIndex version @@ -49,7 +49,7 @@ class VulnScanWithGraphQLTest extends BaseSpecification { type url } - vulns { + imageVulnerabilities { cve cvss link @@ -136,8 +136,8 @@ class VulnScanWithGraphQLTest extends BaseSpecification { then: assert resultRet.getValue() != null def image = resultRet.getValue().image - assert image?.scan?.components?.vulns != null - int cve = getCVEs(image.scan.components.vulns) + assert image?.scan?.imageComponents?.imageVulnerabilities != null + int cve = getCVEs(image.scan.imageComponents.imageVulnerabilities) assert cve >= vuln_cve where: "Data inputs are :" diff --git a/roxctl/declarativeconfig/create/access_scope_test.go b/roxctl/declarativeconfig/create/access_scope_test.go index e14e430193c50..bf61b90fbf167 100644 --- a/roxctl/declarativeconfig/create/access_scope_test.go +++ b/roxctl/declarativeconfig/create/access_scope_test.go @@ -74,7 +74,7 @@ func TestCreateAccessScope_Failures(t *testing.T) { "--cluster-label-selector=key=some-key;operator=EXISTS;values=some-value", }, errOut: `Error: validating access scope: 1 error occurred: - * values: Invalid value: []string{"some-value"}: values set must be empty for exists and does not exist + * values: Invalid value: ["some-value"]: values set must be empty for exists and does not exist `, diff --git a/rpms.lock.yaml b/rpms.lock.yaml index 99532c5f63d7c..ef552790fa2c9 100644 --- a/rpms.lock.yaml +++ b/rpms.lock.yaml @@ -4,13 +4,13 @@ lockfileVendor: redhat arches: - arch: aarch64 packages: - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/Packages/j/jq-1.6-9.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/Packages/j/jq-1.6-11.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-appstream-rpms - size: 193804 - checksum: sha256:0c474feed0023434aa44e751bf98da006fdbc01df6e58cadc4eada90aeba6efc + size: 194428 + checksum: sha256:18872c00a1f4d6661bd4eec1240e21ae85b1bfa81fc12a3da3c0d4f663344648 name: jq - evr: 1.6-9.el8_10 - sourcerpm: jq-1.6-9.el8_10.src.rpm + evr: 1.6-11.el8_10 + sourcerpm: jq-1.6-11.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/Packages/l/libxkbcommon-0.9.1-1.el8.aarch64.rpm repoid: rhel-8-for-aarch64-appstream-rpms size: 114260 @@ -25,20 +25,20 @@ arches: name: oniguruma evr: 6.8.2-3.el8 sourcerpm: oniguruma-6.8.2-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/Packages/p/postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/Packages/p/postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.aarch64.rpm repoid: rhel-8-for-aarch64-appstream-rpms - size: 1775319 - checksum: sha256:9abbad78bd0f5a310a140fbdef43366bbac14a3034578dc4f0ed387256f43b5e + size: 1798263 + checksum: sha256:252c77d8411563980a3faa4fd4afca997bbd6f3456c1891036edaf429f676e34 name: postgresql - evr: 15.12-1.module+el8.10.0+22871+d29fc53a - sourcerpm: postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/Packages/p/postgresql-private-libs-15.12-1.module+el8.10.0+22871+d29fc53a.aarch64.rpm + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 + sourcerpm: postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/Packages/p/postgresql-private-libs-15.15-1.module+el8.10.0+23782+2d6b2a31.aarch64.rpm repoid: rhel-8-for-aarch64-appstream-rpms - size: 130211 - checksum: sha256:ab43e4f85e5954bdd27a978a7219ed38e4022c89b0109d2d66fb1b797d344a84 + size: 129939 + checksum: sha256:48e3f2c86fe94721c78b0c824a3dc6c75bd848291a502493cccb3ea953a09810 name: postgresql-private-libs - evr: 15.12-1.module+el8.10.0+22871+d29fc53a - sourcerpm: postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 + sourcerpm: postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/Packages/x/xkeyboard-config-2.28-1.el8.noarch.rpm repoid: rhel-8-for-aarch64-appstream-rpms size: 801000 @@ -53,13 +53,13 @@ arches: name: acl evr: 2.2.53-3.el8 sourcerpm: acl-2.2.53-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/a/audit-libs-3.1.2-1.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/a/audit-libs-3.1.2-1.el8_10.1.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 123188 - checksum: sha256:a4b5a51c9c6472ec1709c04d17595d10dafa91abeaa4e0154b7b322bf21c2e22 + size: 123368 + checksum: sha256:949d2a7f39da2bd5abc3de727e4ab80237053b36345982f31ec40875b9606462 name: audit-libs - evr: 3.1.2-1.el8 - sourcerpm: audit-3.1.2-1.el8.src.rpm + evr: 3.1.2-1.el8_10.1 + sourcerpm: audit-3.1.2-1.el8_10.1.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/b/basesystem-11-5.el8.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 10756 @@ -67,13 +67,13 @@ arches: name: basesystem evr: 11-5.el8 sourcerpm: basesystem-11-5.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/b/bash-4.4.20-5.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/b/bash-4.4.20-6.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1598652 - checksum: sha256:d93bdf0a8fb2a1e26fbf9ab5ecbb9d8f366114fd8d0a616c03aa99a2c3b0ae2e + size: 1598728 + checksum: sha256:c9221b2f18716a94ac453c41d705c112d8b4cc91ee0f4a57b05ce3856195d61a name: bash - evr: 4.4.20-5.el8 - sourcerpm: bash-4.4.20-5.el8.src.rpm + evr: 4.4.20-6.el8_10 + sourcerpm: bash-4.4.20-6.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/b/brotli-1.0.6-3.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 321484 @@ -88,13 +88,13 @@ arches: name: bzip2-libs evr: 1.0.6-28.el8_10 sourcerpm: bzip2-1.0.6-28.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1006212 - checksum: sha256:5b97c63d4978f82a8d73cb83c81c438d69309bc929d35c6bebf5868f128da13f + size: 1048264 + checksum: sha256:01d249b3d9889ab05adea246a1e84571e817013e06b24bbfc4bb42a1d7d8aa50 name: ca-certificates - evr: 2024.2.69_v8.0.303-80.0.el8_10 - sourcerpm: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.src.rpm + evr: 2025.2.80_v9.0.304-80.2.el8_10 + sourcerpm: ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/chkconfig-1.19.2-1.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 201832 @@ -102,20 +102,20 @@ arches: name: chkconfig evr: 1.19.2-1.el8 sourcerpm: chkconfig-1.19.2-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/coreutils-8.30-15.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/coreutils-8.30-16.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1246096 - checksum: sha256:b49621011495971f9702c42908d7fd2fa783ae7e73f9d971d5ccaef7098626bb + size: 1245188 + checksum: sha256:8c243cc95942ad93537f0d0f70679b05b67673e8f26012907e6495a82a208fce name: coreutils - evr: 8.30-15.el8 - sourcerpm: coreutils-8.30-15.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/coreutils-common-8.30-15.el8.aarch64.rpm + evr: 8.30-16.el8_10 + sourcerpm: coreutils-8.30-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/coreutils-common-8.30-16.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 2092812 - checksum: sha256:a8f0249bd4727364971fab711713f5e41cf017cc1bdcda0adb7a8065b6f2c504 + size: 2091860 + checksum: sha256:2bcab8061ab9388cb4f81584f6b279dd0212eb67807f4bcd401121c609ea27dc name: coreutils-common - evr: 8.30-15.el8 - sourcerpm: coreutils-8.30-15.el8.src.rpm + evr: 8.30-16.el8_10 + sourcerpm: coreutils-8.30-16.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/cpio-2.12-11.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 266436 @@ -158,13 +158,13 @@ arches: name: cryptsetup-libs evr: 2.3.7-7.el8 sourcerpm: cryptsetup-2.3.7-7.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/curl-7.61.1-34.el8_10.3.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/curl-7.61.1-34.el8_10.9.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 358408 - checksum: sha256:a549593cacde9f7520701db7a1222584eb05239d635d69ab441536891cb65e9e + size: 358108 + checksum: sha256:eb6b2b9bbe7f5eeec0d259c59995303c7e266dbf6e6e4f20ceca13427dfaf2a6 name: curl - evr: 7.61.1-34.el8_10.3 - sourcerpm: curl-7.61.1-34.el8_10.3.src.rpm + evr: 7.61.1-34.el8_10.9 + sourcerpm: curl-7.61.1-34.el8_10.9.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/c/cyrus-sasl-lib-2.1.27-6.el8_5.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 125352 @@ -172,55 +172,55 @@ arches: name: cyrus-sasl-lib evr: 2.1.27-6.el8_5 sourcerpm: cyrus-sasl-2.1.27-6.el8_5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-1.12.8-26.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-1.12.8-27.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 43260 - checksum: sha256:f3ce36100eace7a469b14732bd52d0fa003e32aac347bea95dd96842ff1fddf0 + size: 43408 + checksum: sha256:7f58132d1c908d692d9b1772cefa8db753a8d46a477753f4c2b9004d19db1ac5 name: dbus - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-common-1.12.8-26.el8.noarch.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-common-1.12.8-27.el8_10.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 48092 - checksum: sha256:3093c5c1356bc92805a6821f9242a7fc947bbaa1ff427d310dc397f4ea38ef3e + size: 48248 + checksum: sha256:e741b39006a6443632979bbebb15255798c45dbc65c61a09e31698df98fdd272 name: dbus-common - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-daemon-1.12.8-26.el8.aarch64.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-daemon-1.12.8-27.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 240032 - checksum: sha256:945c74f24bf8a67c04f5932e04f1b691dfef92e10b2c822b6104097452d59846 + size: 240452 + checksum: sha256:cb2695c826d0b6c2970c8c5dccfddb8c30f1e9f78bfbd656020fcfdbe8d0ac2b name: dbus-daemon - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-libs-1.12.8-26.el8.aarch64.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-libs-1.12.8-27.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 181100 - checksum: sha256:4d1680a40c42b2e328f645baecce2ed6d6b98ebc562263600e7c471d51067b74 + size: 181272 + checksum: sha256:5e1c8690082dcbf185d6d4bbb5bd27ba0b165d9ea3081b58aa48885fed7a62aa name: dbus-libs - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-tools-1.12.8-26.el8.aarch64.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dbus-tools-1.12.8-27.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 87284 - checksum: sha256:42866bbf9cb1851a9f7dcbebfb45064671d1b203c3346d8364a6f3090b4eb019 + size: 87456 + checksum: sha256:781208dbcbf802c1d392ef31592db6b5d2838f9d3ca384d2ba886bb165c549be name: dbus-tools - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/device-mapper-1.02.181-15.el8_10.aarch64.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/device-mapper-1.02.181-15.el8_10.2.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 384172 - checksum: sha256:5cf4026a9c04ede9c3be2e2681cfc4d2fcf97ce700d87eeb48f32b941ea168c8 + size: 384528 + checksum: sha256:033c79a4a469245425c6293ab95ffa7963eaabe0871a1266ab7bedfe8670e0de name: device-mapper - evr: 8:1.02.181-15.el8_10 - sourcerpm: lvm2-2.03.14-15.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/device-mapper-libs-1.02.181-15.el8_10.aarch64.rpm + evr: 8:1.02.181-15.el8_10.2 + sourcerpm: lvm2-2.03.14-15.el8_10.2.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/device-mapper-libs-1.02.181-15.el8_10.2.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 408772 - checksum: sha256:30f764587e20e337a090ef29963e4120f5029c94f09c4858ff3e05ba05b2da55 + size: 409080 + checksum: sha256:015d8a22550b22dffcd0da73bcd32517a3cd8d5e35c11723eea1ca6d31a5e50e name: device-mapper-libs - evr: 8:1.02.181-15.el8_10 - sourcerpm: lvm2-2.03.14-15.el8_10.src.rpm + evr: 8:1.02.181-15.el8_10.2 + sourcerpm: lvm2-2.03.14-15.el8_10.2.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/diffutils-3.6-6.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 360676 @@ -228,13 +228,13 @@ arches: name: diffutils evr: 3.6-6.el8 sourcerpm: diffutils-3.6-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dracut-049-233.git20240115.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/d/dracut-049-239.git20251127.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 386316 - checksum: sha256:0c374d456c2a41d565ca34016419d736290024163cd516297f80e161075a2189 + size: 385684 + checksum: sha256:5134465376f9c8e8a9418c449a13d69bef53eaeb5670681e03b36ae9e1316dcb name: dracut - evr: 049-233.git20240115.el8 - sourcerpm: dracut-049-233.git20240115.el8.src.rpm + evr: 049-239.git20251127.el8_10 + sourcerpm: dracut-049-239.git20251127.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/e/elfutils-debuginfod-client-0.190-2.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 76564 @@ -263,27 +263,27 @@ arches: name: elfutils-libs evr: 0.190-2.el8 sourcerpm: elfutils-0.190-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/e/expat-2.2.5-17.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/e/expat-2.5.0-1.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 107844 - checksum: sha256:7a560a41ad9b82fbbe3a5dd65c31ce5b996a76732d856561567d9ba795d04868 + size: 124144 + checksum: sha256:b5791923f62b8666b34052bd76a3ff745d3733110fdd4a7a3502a9a777afac2f name: expat - evr: 2.2.5-17.el8_10 - sourcerpm: expat-2.2.5-17.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/f/file-5.33-26.el8.aarch64.rpm + evr: 2.5.0-1.el8_10 + sourcerpm: expat-2.5.0-1.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/f/file-5.33-27.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 79544 - checksum: sha256:189652eff29020c9af762dff7a0217ebcc0008607d83efc81335c49259512fa4 + size: 79708 + checksum: sha256:b120b319b1d29ddef6047bda622ae4ee12b2021d9482b903788c2239078c3395 name: file - evr: 5.33-26.el8 - sourcerpm: file-5.33-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/f/file-libs-5.33-26.el8.aarch64.rpm + evr: 5.33-27.el8_10 + sourcerpm: file-5.33-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/f/file-libs-5.33-27.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 554600 - checksum: sha256:3ad6f1c221728c3e44a30d76c90a2e9f56c8d72676e4413f615a21129951f863 + size: 554732 + checksum: sha256:651f54ac9fbd3c49c7638fbc8993754319245e98bb0a99b49a6ecddfc0338e5f name: file-libs - evr: 5.33-26.el8 - sourcerpm: file-5.33-26.el8.src.rpm + evr: 5.33-27.el8_10 + sourcerpm: file-5.33-27.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/f/filesystem-3.8-6.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 1135824 @@ -291,13 +291,13 @@ arches: name: filesystem evr: 3.8-6.el8 sourcerpm: filesystem-3.8-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/f/findutils-4.6.0-23.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/f/findutils-4.6.0-24.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 537232 - checksum: sha256:eb493cd562274cf498265a7d1afef06f22424ad5dff90c66f990e2edfbb40f8a + size: 535972 + checksum: sha256:138d1c305bc551259311e1a909caf3b433c8564a6a228690ff04817cd4091c2a name: findutils - evr: 1:4.6.0-23.el8_10 - sourcerpm: findutils-4.6.0-23.el8_10.src.rpm + evr: 1:4.6.0-24.el8_10 + sourcerpm: findutils-4.6.0-24.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/gawk-4.2.1-4.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 1162284 @@ -333,41 +333,41 @@ arches: name: gettext-libs evr: 0.19.8.1-17.el8 sourcerpm: gettext-0.19.8.1-17.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glib2-2.56.4-165.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glib2-2.56.4-167.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 2553508 - checksum: sha256:7c844539e8f10df1906f82d9c1f8de70d54ff4869e0670bd1f5d562ae3621b92 + size: 2555008 + checksum: sha256:7b666d9dda0acf4abba674ee76037c390aeeb91230367603302acae208f701a5 name: glib2 - evr: 2.56.4-165.el8_10 - sourcerpm: glib2-2.56.4-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glibc-2.28-251.el8_10.16.aarch64.rpm + evr: 2.56.4-167.el8_10 + sourcerpm: glib2-2.56.4-167.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glibc-2.28-251.el8_10.27.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1883420 - checksum: sha256:b383729919938b24d0dab0f092a8e147db499cc7cbac019757689a0c870032e1 + size: 1884224 + checksum: sha256:2bd1aa65fd75e285289a4caa26f38021bcc9b56d41280fecbfe2bed363429ea2 name: glibc - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glibc-all-langpacks-2.28-251.el8_10.16.aarch64.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glibc-all-langpacks-2.28-251.el8_10.27.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 26704220 - checksum: sha256:7ca3f52e2fd7415fac42f22c211e982483e074a1129df68f2b65562b9484e87d + size: 26704852 + checksum: sha256:6253d5b7966eb1199457033ece014d940fd530e9066703796bbb7ee3d9081f31 name: glibc-all-langpacks - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glibc-common-2.28-251.el8_10.16.aarch64.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glibc-common-2.28-251.el8_10.27.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1040100 - checksum: sha256:333a9c73dfb2bf8e6073755fa6ed5ac17b426e360c43b07a3f1f1d1c3505d9e9 + size: 1040484 + checksum: sha256:70f9ea83c964d4026908579933df9e24c1051ce63f4dac9662d109e3d7094664 name: glibc-common - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glibc-gconv-extra-2.28-251.el8_10.16.aarch64.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/glibc-gconv-extra-2.28-251.el8_10.27.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1847632 - checksum: sha256:26352cebc34e897be77033840894759fb955f65085675e9e59948711b292543f + size: 1849408 + checksum: sha256:77140513142bd8b300f4a131e0fd5744a79cb59f756f2c07fa61f3124bb89586 name: glibc-gconv-extra - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/gmp-6.1.2-11.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 269880 @@ -375,13 +375,13 @@ arches: name: gmp evr: 1:6.1.2-11.el8 sourcerpm: gmp-6.1.2-11.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/gnutls-3.6.16-8.el8_10.3.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/gnutls-3.6.16-8.el8_10.4.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 963296 - checksum: sha256:6e88307b29583b0983dbfb0aa90fa0c127b98768963b93cfe5a6ad6ac6b8883b + size: 962116 + checksum: sha256:39f8830e09cd29553725c04e11db68860b06e46fe374a045ed67bc378fc637be name: gnutls - evr: 3.6.16-8.el8_10.3 - sourcerpm: gnutls-3.6.16-8.el8_10.3.src.rpm + evr: 3.6.16-8.el8_10.4 + sourcerpm: gnutls-3.6.16-8.el8_10.4.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/grep-3.1-6.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 274592 @@ -389,27 +389,27 @@ arches: name: grep evr: 3.1-6.el8 sourcerpm: grep-3.1-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/grub2-common-2.02-165.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/grub2-common-2.02-169.el8_10.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 918848 - checksum: sha256:dba0a0d389fda562a8e32b1935e400e7f6616e72ad7d5d9b22a3488068737156 + size: 918448 + checksum: sha256:4439fe4a6403508b74d5d8913543a74195411f69acbc81213ca32e5645939004 name: grub2-common - evr: 1:2.02-165.el8_10 - sourcerpm: grub2-2.02-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/grub2-tools-2.02-165.el8_10.aarch64.rpm + evr: 1:2.02-169.el8_10 + sourcerpm: grub2-2.02-169.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/grub2-tools-2.02-169.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1898440 - checksum: sha256:a735eca59f9deca4222e235d21900a42f6f224cef136218b05e1b908d957df0c + size: 1897992 + checksum: sha256:f188b34d5aaf1867da1d5c4af4eb66c32d8a80b731e58958c749528c1447faf7 name: grub2-tools - evr: 1:2.02-165.el8_10 - sourcerpm: grub2-2.02-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/grub2-tools-minimal-2.02-165.el8_10.aarch64.rpm + evr: 1:2.02-169.el8_10 + sourcerpm: grub2-2.02-169.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/grub2-tools-minimal-2.02-169.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 211060 - checksum: sha256:5f365ec666eee5ce428c78c98956935a09a346b7f337b801f242a3ffc3c759a7 + size: 210524 + checksum: sha256:ad5f0700bf2194a3c04cd0ea69e39c5bf33c776949f023e7c6e88aa9764227f5 name: grub2-tools-minimal - evr: 1:2.02-165.el8_10 - sourcerpm: grub2-2.02-165.el8_10.src.rpm + evr: 1:2.02-169.el8_10 + sourcerpm: grub2-2.02-169.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/g/grubby-8.40-49.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 51500 @@ -494,13 +494,13 @@ arches: name: kpartx evr: 0.8.4-42.el8_10 sourcerpm: device-mapper-multipath-0.8.4-42.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/k/krb5-libs-1.18.2-31.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/k/krb5-libs-1.18.2-32.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 840564 - checksum: sha256:29e92a29ebd14d1e0161e54d4d4a38951051d8a3f198d11e08d4540e04fb4a9b + size: 840528 + checksum: sha256:ed5f44271e1dce74dd9bf8371bd8048cd6d04d4ef2461dd263785e68d0737483 name: krb5-libs - evr: 1.18.2-31.el8_10 - sourcerpm: krb5-1.18.2-31.el8_10.src.rpm + evr: 1.18.2-32.el8_10 + sourcerpm: krb5-1.18.2-32.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libacl-2.2.53-3.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 34684 @@ -508,13 +508,13 @@ arches: name: libacl evr: 2.2.53-3.el8 sourcerpm: acl-2.2.53-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libarchive-3.3.3-5.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libarchive-3.3.3-6.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 348488 - checksum: sha256:e0c8d54c08aa4c37a00f29111fe284ad20ba6bff07207c349fd9e6bd1cf1638b + size: 347032 + checksum: sha256:27ad5c21d4de008be6dcfd0e4264495ed568663057ce5a317ca1017b330d67e7 name: libarchive - evr: 3.3.3-5.el8 - sourcerpm: libarchive-3.3.3-5.el8.src.rpm + evr: 3.3.3-6.el8_10 + sourcerpm: libarchive-3.3.3-6.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libattr-2.4.48-3.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 27360 @@ -522,13 +522,13 @@ arches: name: libattr evr: 2.4.48-3.el8 sourcerpm: attr-2.4.48-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libblkid-2.32.1-46.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libblkid-2.32.1-47.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 219896 - checksum: sha256:436d9798b9c36395eb1477dd3ab8b5340af83d8a63f71115c647913372f58737 + size: 218828 + checksum: sha256:f095a01eb9eb5d47a41beebfb0f9069365ca0a67ab2e137bc8501c748344b3ea name: libblkid - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libcap-2.48-6.el8_9.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 75344 @@ -543,13 +543,13 @@ arches: name: libcap-ng evr: 0.7.11-1.el8 sourcerpm: libcap-ng-0.7.11-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libcom_err-1.45.6-5.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libcom_err-1.45.6-7.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 50288 - checksum: sha256:091c66cfa39a987157fb8c94d70b45746c261147628697d69e81d1a8e4de93fe + size: 49420 + checksum: sha256:de3f523bb5b05df4853f3134c1529c33a24178a4f7b952e1f25c5d6ceb9dad18 name: libcom_err - evr: 1.45.6-5.el8 - sourcerpm: e2fsprogs-1.45.6-5.el8.src.rpm + evr: 1.45.6-7.el8_10 + sourcerpm: e2fsprogs-1.45.6-7.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libcroco-0.6.12-4.el8_2.1.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 110936 @@ -557,13 +557,13 @@ arches: name: libcroco evr: 0.6.12-4.el8_2.1 sourcerpm: libcroco-0.6.12-4.el8_2.1.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libcurl-7.61.1-34.el8_10.3.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libcurl-7.61.1-34.el8_10.9.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 292736 - checksum: sha256:ef0e425cc03bb69410885ca4e1204ab73965c108f507fd173050dc4fc31f6eed + size: 292648 + checksum: sha256:855a2115646f802403e292094874fce962680a4432426d63b0179152815c1b9e name: libcurl - evr: 7.61.1-34.el8_10.3 - sourcerpm: curl-7.61.1-34.el8_10.3.src.rpm + evr: 7.61.1-34.el8_10.9 + sourcerpm: curl-7.61.1-34.el8_10.9.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libdb-5.3.28-42.el8_4.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 703388 @@ -578,13 +578,13 @@ arches: name: libdb-utils evr: 5.3.28-42.el8_4 sourcerpm: libdb-5.3.28-42.el8_4.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libfdisk-2.32.1-46.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libfdisk-2.32.1-47.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 250116 - checksum: sha256:e6ecba3121a293a8ac1cc6f391d79dd869de17766678c6d8ea29658ece48450b + size: 249284 + checksum: sha256:77480a0068650a9b639f0d8ce7875be243e8577c85d1453b17a7360bc30999cf name: libfdisk - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libffi-3.1-24.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 37560 @@ -592,13 +592,13 @@ arches: name: libffi evr: 3.1-24.el8 sourcerpm: libffi-3.1-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libgcc-8.5.0-26.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libgcc-8.5.0-28.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 77056 - checksum: sha256:4ef276ccf5f6cc20378cae568dd13f348c43223654a118b34acca23406a2f64e + size: 77296 + checksum: sha256:8482ad0342613035a098f6fa872d8bcdbf7a99966e17ac44a2ded9395929e5cc name: libgcc - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libgcrypt-1.8.5-7.el8_6.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 400616 @@ -606,13 +606,13 @@ arches: name: libgcrypt evr: 1.8.5-7.el8_6 sourcerpm: libgcrypt-1.8.5-7.el8_6.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libgomp-8.5.0-26.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libgomp-8.5.0-28.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 205708 - checksum: sha256:4f7ae8ef6f6eb9fbdac8567724c25bc8d5f2bf8e663a15a61af4796a495b04fb + size: 205940 + checksum: sha256:512bbfdb1fbd85a541ce5e189979268245eded10ed6e9ec67fd4d19e28d79541 name: libgomp - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libgpg-error-1.31-1.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 245300 @@ -641,13 +641,13 @@ arches: name: libkcapi-hmaccalc evr: 1.4.0-2.el8 sourcerpm: libkcapi-1.4.0-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libmount-2.32.1-46.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libmount-2.32.1-47.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 235308 - checksum: sha256:96e0de09a90f39bb5efd3e43d7d83b5323b5da0c6ecc56680541a99e6d727d51 + size: 234412 + checksum: sha256:9515a7b004a80109e8d7097403cb85f93d2ea886be7663fd7df7371e3cf3cb4b name: libmount - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libnghttp2-1.33.0-6.el8_10.1.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 77144 @@ -690,13 +690,13 @@ arches: name: libselinux evr: 2.9-10.el8_10 sourcerpm: libselinux-2.9-10.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libsemanage-2.9-11.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libsemanage-2.9-12.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 168328 - checksum: sha256:7cd9414c454841ef794c8d2651d0f16246d468e52dc034b7a2c84572461732f7 + size: 168536 + checksum: sha256:e21457c375d2de563a674816108744baa2f0fc48adc0f399e09cc9a7d89797f6 name: libsemanage - evr: 2.9-11.el8_10 - sourcerpm: libsemanage-2.9-11.el8_10.src.rpm + evr: 2.9-12.el8_10 + sourcerpm: libsemanage-2.9-12.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libsepol-2.9-3.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 328572 @@ -711,34 +711,34 @@ arches: name: libsigsegv evr: 2.11-5.el8 sourcerpm: libsigsegv-2.11-5.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libsmartcols-2.32.1-46.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libsmartcols-2.32.1-47.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 179572 - checksum: sha256:8bd107c857b7cd292e02374203498a3f7d8ac3778adec1dbad2e2fe51308926d + size: 178592 + checksum: sha256:c0038da4290bbbad241f36f5f7f9b16b0bb11baf108973eef0b9a9dc41301e65 name: libsmartcols - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libssh-0.9.6-14.el8.aarch64.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libssh-0.9.6-16.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 215484 - checksum: sha256:042b6674ad8110318cd335df145a61c8868d8d4ea5b8ca03532fef6d5790068b + size: 214584 + checksum: sha256:065f7ea1a082be300172266d6152a788739355406506227a4fed1943298c376e name: libssh - evr: 0.9.6-14.el8 - sourcerpm: libssh-0.9.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libssh-config-0.9.6-14.el8.noarch.rpm + evr: 0.9.6-16.el8_10 + sourcerpm: libssh-0.9.6-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libssh-config-0.9.6-16.el8_10.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 21548 - checksum: sha256:e8281fb82a512c0bbfdd4bbd0f7f9657fce2ad547189fb93d0a0bf814173a2a4 + size: 20644 + checksum: sha256:2471adc5113ee9a2ff70bbbd3c9ef2a8d63e2da99bcfb00566b0869b2f037d27 name: libssh-config - evr: 0.9.6-14.el8 - sourcerpm: libssh-0.9.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libstdc++-8.5.0-26.el8_10.aarch64.rpm + evr: 0.9.6-16.el8_10 + sourcerpm: libssh-0.9.6-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libstdc++-8.5.0-28.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 454204 - checksum: sha256:da6effb3075e0e28092edeeec1a918b037fb625619b8019ae968eb2db99b734a + size: 454548 + checksum: sha256:ed9b07dc30a3a832aad5418052600fa33ce8ba42b62c7be1a17f5f7897eb1e8f name: libstdc++ - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libtasn1-4.13-5.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 77192 @@ -767,13 +767,13 @@ arches: name: libutempter evr: 1.1.6-14.el8 sourcerpm: libutempter-1.1.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libuuid-2.32.1-46.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libuuid-2.32.1-47.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 101008 - checksum: sha256:c6d49dd76df0b6e71a6de73bee9fd12727a839c0477586838d1d3ad922267436 + size: 100032 + checksum: sha256:24ecbd85e9f6a07435abd85815526ad7d3f2292451424b41685d377a3088fd29 name: libuuid - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libverto-0.3.2-2.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 24168 @@ -788,13 +788,13 @@ arches: name: libxcrypt evr: 4.1.1-6.el8 sourcerpm: libxcrypt-4.1.1-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libxml2-2.9.7-19.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libxml2-2.9.7-21.el8_10.3.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 669364 - checksum: sha256:6947156cf8170d419f81b415a17cdebf04f3d96efaf56b9deb06da24e66f8425 + size: 669172 + checksum: sha256:3c4f480fd58452040db14c585b86e37a774efff65113aad282539e952d0bcec8 name: libxml2 - evr: 2.9.7-19.el8_10 - sourcerpm: libxml2-2.9.7-19.el8_10.src.rpm + evr: 2.9.7-21.el8_10.3 + sourcerpm: libxml2-2.9.7-21.el8_10.3.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/libzstd-1.4.4-1.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 246104 @@ -809,13 +809,13 @@ arches: name: lua-libs evr: 5.3.4-12.el8 sourcerpm: lua-5.3.4-12.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/lz4-libs-1.8.3-3.el8_4.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/l/lz4-libs-1.8.3-5.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 64540 - checksum: sha256:ab64a4ccc6b3f930aebb6413ece0031ceacdfba8ac7ee06c196b29df2f761ca1 + size: 65076 + checksum: sha256:8c22c01f796b26256533643f55454b229dc0a8be1c7853d4e24046a0c705879d name: lz4-libs - evr: 1.8.3-3.el8_4 - sourcerpm: lz4-1.8.3-3.el8_4.src.rpm + evr: 1.8.3-5.el8_10 + sourcerpm: lz4-1.8.3-5.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/m/memstrack-0.2.5-2.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 52496 @@ -865,20 +865,20 @@ arches: name: openldap evr: 2.4.46-21.el8_10 sourcerpm: openldap-2.4.46-21.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/o/openssl-1.1.1k-14.el8_6.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/o/openssl-1.1.1k-14.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 708628 - checksum: sha256:1367e3cc6f59b4afa0a326455e2c381f7b5b9ca00e5de86663895cdaec70e52b + size: 707496 + checksum: sha256:03d16f9f6696aeba40c37dbf84eda09b66a6256d5eea3196294ea3ba00902bea name: openssl - evr: 1:1.1.1k-14.el8_6 - sourcerpm: openssl-1.1.1k-14.el8_6.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/o/openssl-libs-1.1.1k-14.el8_6.aarch64.rpm + evr: 1:1.1.1k-14.el8_10 + sourcerpm: openssl-1.1.1k-14.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/o/openssl-libs-1.1.1k-14.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1414628 - checksum: sha256:3c7765ebc6604e682302377a8e20a8fb99f1e4f833699ddad11c5ed98530d4ec + size: 1413872 + checksum: sha256:4e1ca86c5e80840de38684dabeffa73f2ed45eff748e09abfaaefa7ee4030f5e name: openssl-libs - evr: 1:1.1.1k-14.el8_6 - sourcerpm: openssl-1.1.1k-14.el8_6.src.rpm + evr: 1:1.1.1k-14.el8_10 + sourcerpm: openssl-1.1.1k-14.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/o/openssl-pkcs11-0.4.10-3.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 66436 @@ -907,13 +907,13 @@ arches: name: p11-kit-trust evr: 0.23.22-2.el8 sourcerpm: p11-kit-0.23.22-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/pam-1.3.1-36.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/pam-1.3.1-39.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 759728 - checksum: sha256:0691edbea4dd8a58d9feaac40387609b509962e24dc10d958b5c17f5f8b0ee34 + size: 760956 + checksum: sha256:aaa134b795b6e6a121d41c20589af4a2bd19a109a1fad429652c55c72676a45b name: pam - evr: 1.3.1-36.el8_10 - sourcerpm: pam-1.3.1-36.el8_10.src.rpm + evr: 1.3.1-39.el8_10 + sourcerpm: pam-1.3.1-39.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/pcre-8.42-6.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 191584 @@ -935,13 +935,13 @@ arches: name: pigz evr: 2.4-4.el8 sourcerpm: pigz-2.4-4.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/platform-python-3.6.8-69.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/platform-python-3.6.8-71.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 90640 - checksum: sha256:bb3476be246df2ba951128268832f6aba5695d4510ce3fb4d7524b8ef4f71f49 + size: 89844 + checksum: sha256:22b8476ce131da79ae5afdec7c685f9f7c3cfeac3303d2eccde6ef9e97279584 name: platform-python - evr: 3.6.8-69.el8_10 - sourcerpm: python3-3.6.8-69.el8_10.src.rpm + evr: 3.6.8-71.el8_10 + sourcerpm: python3-3.6.8-71.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/platform-python-pip-9.0.3-24.el8.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 1633024 @@ -949,13 +949,13 @@ arches: name: platform-python-pip evr: 9.0.3-24.el8 sourcerpm: python-pip-9.0.3-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/platform-python-setuptools-39.2.0-8.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/platform-python-setuptools-39.2.0-9.el8_10.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 647476 - checksum: sha256:8f330a8602613473b6e4c0bc57cb3012932a9a9399ea7a3fa65175453a6580ab + size: 647688 + checksum: sha256:c809d773ee4709e911391552c2a162d04381848603a69102eb785a235b1c66be name: platform-python-setuptools - evr: 39.2.0-8.el8_10 - sourcerpm: python-setuptools-39.2.0-8.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + sourcerpm: python-setuptools-39.2.0-9.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/popt-1.18-1.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 61660 @@ -977,13 +977,13 @@ arches: name: publicsuffix-list-dafsa evr: 20180723-1.el8 sourcerpm: publicsuffix-list-20180723-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/python3-libs-3.6.8-69.el8_10.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/python3-libs-3.6.8-71.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 8114604 - checksum: sha256:6c6b684b3a0468547778b328786bb64832810ab8781ccb2d07c0089637224b4a + size: 8113884 + checksum: sha256:d17af894fad9fe0582b21f9abb6371c0eda62753101b9fe373928092b509d38c name: python3-libs - evr: 3.6.8-69.el8_10 - sourcerpm: python3-3.6.8-69.el8_10.src.rpm + evr: 3.6.8-71.el8_10 + sourcerpm: python3-3.6.8-71.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/python3-pip-wheel-9.0.3-24.el8.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 886996 @@ -991,13 +991,13 @@ arches: name: python3-pip-wheel evr: 9.0.3-24.el8 sourcerpm: python-pip-9.0.3-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/python3-setuptools-wheel-39.2.0-8.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/p/python3-setuptools-wheel-39.2.0-9.el8_10.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 296040 - checksum: sha256:833dcb68b1eea48bfb8853886236753647743258fd74cc538ffa72408aab9213 + size: 296208 + checksum: sha256:eed50a1612ab8303c50f62d7c3409020b2ff829037cc651725562afa95e56e05 name: python3-setuptools-wheel - evr: 39.2.0-8.el8_10 - sourcerpm: python-setuptools-39.2.0-8.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + sourcerpm: python-setuptools-39.2.0-9.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/r/readline-7.0-10.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 197664 @@ -1047,13 +1047,13 @@ arches: name: setup evr: 2.12.2-9.el8 sourcerpm: setup-2.12.2-9.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/shadow-utils-4.6-22.el8.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/shadow-utils-4.6-23.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1272288 - checksum: sha256:3ccea243f8c0f86e2a0b2c93933bfd475a62134f0a556ee2e1212dcf8d7e5240 + size: 1272108 + checksum: sha256:4eb70bee470ee47520aae0acdc1f5547e2127e9f2eccde4b05ba8e9ee4782bae name: shadow-utils - evr: 2:4.6-22.el8 - sourcerpm: shadow-utils-4.6-22.el8.src.rpm + evr: 2:4.6-23.el8_10 + sourcerpm: shadow-utils-4.6-23.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/shared-mime-info-1.9-4.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 335752 @@ -1061,41 +1061,41 @@ arches: name: shared-mime-info evr: 1.9-4.el8 sourcerpm: shared-mime-info-1.9-4.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/sqlite-libs-3.26.0-19.el8_9.aarch64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/sqlite-libs-3.26.0-20.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 563884 - checksum: sha256:80c4c69931f10a93440188e3f3c6cf5f603c20b16263cea6488cb6cab48ead96 + size: 562812 + checksum: sha256:cffbaa64bea78e6aab8f5fe7e77d06ba7f9632e1f0a668efaac9f877bcff038c name: sqlite-libs - evr: 3.26.0-19.el8_9 - sourcerpm: sqlite-3.26.0-19.el8_9.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/systemd-239-82.el8_10.5.aarch64.rpm + evr: 3.26.0-20.el8_10 + sourcerpm: sqlite-3.26.0-20.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/systemd-239-82.el8_10.8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 3511384 - checksum: sha256:92439fcaf30212e095e4fdbce91732a249cd6fc60604cb8699dafce4b0622808 + size: 3513088 + checksum: sha256:c94f8fcedeb97ef9908137ec0d8b9a7618ab82618b3ecf7f345e25aa7ed5a267 name: systemd - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/systemd-libs-239-82.el8_10.5.aarch64.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/systemd-libs-239-82.el8_10.8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1096532 - checksum: sha256:8a472b51e524b3d75ecd7ca6f447a3e827928ade26ba086e4b7fb73fecdc9626 + size: 1097868 + checksum: sha256:422451943b582df3f0ed2b30347c5fef85455beffe5a58cb67c2f1783d8a11a2 name: systemd-libs - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/systemd-pam-239-82.el8_10.5.aarch64.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/systemd-pam-239-82.el8_10.8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 486552 - checksum: sha256:66dfa343cf41088a092184335322ecc896e7f4d843fdcdfa4864bddc8b865e6c + size: 487656 + checksum: sha256:af8b62ab3a3b79c2cbd7130c8a5a97801dfe1f4a3c266ef1b421db443bf90eb4 name: systemd-pam - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/systemd-udev-239-82.el8_10.5.aarch64.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/s/systemd-udev-239-82.el8_10.8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 1625132 - checksum: sha256:3add487d5e8d6d4e3ddd9559ab912880acaf5727ffcc5811c4f4798e3256de8b + size: 1626444 + checksum: sha256:a77e034e5905688284937ae0ba9c998a6e1dd926240dd428653c09840f94ef9e name: systemd-udev - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/t/trousers-0.3.15-2.el8.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 151356 @@ -1110,27 +1110,27 @@ arches: name: trousers-lib evr: 0.3.15-2.el8 sourcerpm: trousers-0.3.15-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/t/tzdata-2025b-1.el8.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/t/tzdata-2025c-1.el8.noarch.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 488428 - checksum: sha256:338539f7f0cd2770694153af81e2e65121b050a1bb555ad66a6fb6f562732602 + size: 560812 + checksum: sha256:e4b6cf905fb2111d9a45c3b6b95f6e0c5199bf9b3d576f2a06b4dcb49a63d55e name: tzdata - evr: 2025b-1.el8 - sourcerpm: tzdata-2025b-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/u/util-linux-2.32.1-46.el8.aarch64.rpm + evr: 2025c-1.el8 + sourcerpm: tzdata-2025c-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/u/util-linux-2.32.1-47.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 2588284 - checksum: sha256:0e77f52a016be9db4e88137ab48234d987a4cc0137606c56376705e7fb380689 + size: 2587504 + checksum: sha256:5632571c56cabce61cd6c7f88411e0f77743a9cc163f677a73a6b603b8f15044 name: util-linux - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/w/which-2.21-20.el8.aarch64.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/w/which-2.21-21.el8_10.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms - size: 50104 - checksum: sha256:58a027559692b0e51502670e4ead4abaa3b64b57d4715bea973f6b4d5ab6d901 + size: 50372 + checksum: sha256:aede4eaa8be209b2d0a28ce1cae05a918c1ccc11157c0f055119b8d55b0147d2 name: which - evr: 2.21-20.el8 - sourcerpm: which-2.21-20.el8.src.rpm + evr: 2.21-21.el8_10 + sourcerpm: which-2.21-21.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/os/Packages/x/xz-5.2.4-4.el8_6.aarch64.rpm repoid: rhel-8-for-aarch64-baseos-rpms size: 156276 @@ -1153,12 +1153,12 @@ arches: evr: 1.2.11-25.el8 sourcerpm: zlib-1.2.11-25.el8.src.rpm source: - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/source/SRPMS/Packages/j/jq-1.6-9.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/source/SRPMS/Packages/j/jq-1.6-11.el8_10.src.rpm repoid: rhel-8-for-aarch64-appstream-source-rpms - size: 1502487 - checksum: sha256:2dc420bdaef06107f892878c520cff069c55e4553bc3d8f0d2136ff0ed2c5d99 + size: 1506922 + checksum: sha256:0fce66914c13dd2a34fbd2d5a043cada5ed98ecc28895f07655b1b059758ab80 name: jq - evr: 1.6-9.el8_10 + evr: 1.6-11.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/source/SRPMS/Packages/l/libxkbcommon-0.9.1-1.el8.src.rpm repoid: rhel-8-for-aarch64-appstream-source-rpms size: 390739 @@ -1171,12 +1171,12 @@ arches: checksum: sha256:31cd372131f6eb404ce90285210fd74021914b4eb52e933b2aeebfa955099faa name: oniguruma evr: 6.8.2-3.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/source/SRPMS/Packages/p/postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/source/SRPMS/Packages/p/postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm repoid: rhel-8-for-aarch64-appstream-source-rpms - size: 53429582 - checksum: sha256:2659a0235ebefeb2151dc5629b45fd8ac688053ac6e44dad2c89f1b7a5cf3411 + size: 45654458 + checksum: sha256:30795de4ed7a01becc64ee50796e7c76b9195ff1eed0a341b279aeb3e4b15527 name: postgresql - evr: 15.12-1.module+el8.10.0+22871+d29fc53a + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/source/SRPMS/Packages/x/xkeyboard-config-2.28-1.el8.src.rpm repoid: rhel-8-for-aarch64-appstream-source-rpms size: 1699339 @@ -1195,24 +1195,24 @@ arches: checksum: sha256:07bef8d477176042b940e5732eba1600871aacc1a0dbe679952d62265b5e6dbc name: attr evr: 2.4.48-3.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/a/audit-3.1.2-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/a/audit-3.1.2-1.el8_10.1.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 1248664 - checksum: sha256:c1facd2ecc520c758bbe2b049207629ad08914798f63c92beef4790086ad2f29 + size: 1250424 + checksum: sha256:b5a47d142bc89e986f3c662c6552ec59c08bdfbec8d38fc8d2720df74cdda53c name: audit - evr: 3.1.2-1.el8 + evr: 3.1.2-1.el8_10.1 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/b/basesystem-11-5.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 11934 checksum: sha256:95fb2c11bd59c51fcb0c0239e3e2c307d7d8d40c24b2960792bbc8af8c14f95c name: basesystem evr: 11-5.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/b/bash-4.4.20-5.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/b/bash-4.4.20-6.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 9478334 - checksum: sha256:670d393f3d288bc61519be0d2c5378addc1cd4a752b738ce2424b69618f3965c + size: 9479153 + checksum: sha256:f0e4182affffe350e5dbd55e410baed663d514cd6832108b83899ac8d1524830 name: bash - evr: 4.4.20-5.el8 + evr: 4.4.20-6.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/b/brotli-1.0.6-3.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 23835509 @@ -1225,24 +1225,24 @@ arches: checksum: sha256:9c1d697f675f5889c57e7f983afa4b3e3f6e2334887ded9d7c10c5a205d1b06a name: bzip2 evr: 1.0.6-28.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/c/ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/c/ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 715540 - checksum: sha256:a066b501d49019ad53d7a8bd7badd1b073f317e406561f0cfad59b7bdfaba0a6 + size: 742547 + checksum: sha256:879547af21a33e8e0a2356bc7cbd8c4fdc17d4830fbcadbf9aac1cfbbcf140f5 name: ca-certificates - evr: 2024.2.69_v8.0.303-80.0.el8_10 + evr: 2025.2.80_v9.0.304-80.2.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/c/chkconfig-1.19.2-1.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 221618 checksum: sha256:7cf522c35fa5a5906c8c793ece9e599e80aba6c37d3f57afbf436c9abb8629c6 name: chkconfig evr: 1.19.2-1.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/c/coreutils-8.30-15.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/c/coreutils-8.30-16.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 5550193 - checksum: sha256:8e6d8f3d8929cfd896c09a6d7ebfdd0d78fd028169042f7df9e35803189e4eee + size: 5552304 + checksum: sha256:a765698d09c82865c7b71c2125273ed393aee734cdb2a999458bbbed9ccfe098 name: coreutils - evr: 8.30-15.el8 + evr: 8.30-16.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/c/cpio-2.12-11.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 1312438 @@ -1267,24 +1267,24 @@ arches: checksum: sha256:21bb087ab9a3d64c89295a1bd45b5e5b6189832a972d4b3ddccb2ff5437ac2ed name: cryptsetup evr: 2.3.7-7.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/c/curl-7.61.1-34.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/c/curl-7.61.1-34.el8_10.9.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 2629169 - checksum: sha256:da74fbd455075a1e124a5251e17946c0a2c8b8bd023e349d0c52b3cee8e3d37c + size: 2637559 + checksum: sha256:b69dcfee680f356433e48929a3b447b72d6e99bf8ad61b5a6c9ac2eededf87cd name: curl - evr: 7.61.1-34.el8_10.3 + evr: 7.61.1-34.el8_10.9 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/c/cyrus-sasl-2.1.27-6.el8_5.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 4032772 checksum: sha256:72d534b444990dbb647ead881f77e841ef9416109054cf74b7a5d12f912eef9a name: cyrus-sasl evr: 2.1.27-6.el8_5 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/d/dbus-1.12.8-26.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/d/dbus-1.12.8-27.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 2149642 - checksum: sha256:4934fea4bcebaf82dacd6d8258b35233f25e66cfd45d68f6b6e48d2ff3632395 + size: 2153514 + checksum: sha256:1a5cc2d3f263fa49f2e626d34ce7ac0ef2b6a3c8c3cf4a3c652e0614c0479911 name: dbus - evr: 1:1.12.8-26.el8 + evr: 1:1.12.8-27.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/d/device-mapper-multipath-0.8.4-42.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 770004 @@ -1297,60 +1297,60 @@ arches: checksum: sha256:1308e782ad4f9b17a5cbbac9734be496948db857de7458b3388645bf1786892d name: diffutils evr: 3.6-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/d/dracut-049-233.git20240115.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/d/dracut-049-239.git20251127.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 582719 - checksum: sha256:21cebc2005d7aa0b6cd45f1a5455ac85f75399b8d3f2a38de3f47585f2200acd + size: 585830 + checksum: sha256:559705b03309fdae2474df8798242da457ed1dd7d4014c37462188975bb3bf2e name: dracut - evr: 049-233.git20240115.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/e/e2fsprogs-1.45.6-5.el8.src.rpm + evr: 049-239.git20251127.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/e/e2fsprogs-1.45.6-7.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 5675423 - checksum: sha256:1c0771ea038777ecf84ba31cba0c3d221d39e351c1a6e7967857977c1949c792 + size: 5680546 + checksum: sha256:7adebb4cf95886f8dc9cdfa518378ba4609a2f9800782b8330ca5ddf4409d3bf name: e2fsprogs - evr: 1.45.6-5.el8 + evr: 1.45.6-7.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/e/elfutils-0.190-2.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 9288737 checksum: sha256:54fe49a6fd4f87d6fd594b62c465105fc3efab05a1ffcc216f053c277ab619bf name: elfutils evr: 0.190-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/e/expat-2.2.5-17.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/e/expat-2.5.0-1.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 8345318 - checksum: sha256:41de03fcbf3a8f7fa42e7017058ae0186e98a0e448ce01772de7af0a856a749d + size: 8388946 + checksum: sha256:566456bc755b628dc5a4ce77b6a643769165202f0ddd852ba73dd9512b994d2b name: expat - evr: 2.2.5-17.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/f/file-5.33-26.el8.src.rpm + evr: 2.5.0-1.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/f/file-5.33-27.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 899551 - checksum: sha256:1bdcfa5032e3ef5ff5f9f72233b6c9c67c0c7ff994a04df131d3b64b213b99cb + size: 900161 + checksum: sha256:f6996986985a11cebdb085b30dc7281eb320ee6234fa12ae43e39cd2d1de1afc name: file - evr: 5.33-26.el8 + evr: 5.33-27.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/f/filesystem-3.8-6.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 37286 checksum: sha256:113b7c5e28cc1d44e21c564c17d8c592a3f8a20b4c268cdaad6a407dee4d1540 name: filesystem evr: 3.8-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/f/findutils-4.6.0-23.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/f/findutils-4.6.0-24.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 3831527 - checksum: sha256:28510e1bb0c939d1b945f889611cf572e03ee18faaa5bff6f0ad203fd696fb29 + size: 3832656 + checksum: sha256:4ee9287c4f007ef160f3e2f61ddd3d6ff75dfa82ab99ba27f5c6ca673d97d529 name: findutils - evr: 1:4.6.0-23.el8_10 + evr: 1:4.6.0-24.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/gawk-4.2.1-4.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 3036497 checksum: sha256:fac4ea2cb712ff3f0dd723d6eec358e051040592492b5cf6bd66354b8a09f143 name: gawk evr: 4.2.1-4.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/gcc-8.5.0-26.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/gcc-8.5.0-28.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 65714976 - checksum: sha256:12ebb9cdefb5f8c68bbce3eb469440d26f0d64de958751f4916328ed02522ed2 + size: 65716029 + checksum: sha256:1e81087ab2f1f3435e106d747529d2a178e33a285722662fa89c56a37f471489 name: gcc - evr: 8.5.0-26.el8_10 + evr: 8.5.0-28.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/gdbm-1.18-2.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 966590 @@ -1363,42 +1363,42 @@ arches: checksum: sha256:114be9b072a7726f2ac557fda6b8a86254ae3b7ed984ed14cfa7733bea9005d4 name: gettext evr: 0.19.8.1-17.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/glib2-2.56.4-165.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/glib2-2.56.4-167.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 7127086 - checksum: sha256:0d418524f04a24e2357b26d4107424780acca901a1575a7a5cbf178b2aa1458c + size: 7164394 + checksum: sha256:80ee50b39aa478e1503dbd18626df91a023d30e3f9b6fb588fa82e6ce2b5972e name: glib2 - evr: 2.56.4-165.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/glibc-2.28-251.el8_10.16.src.rpm + evr: 2.56.4-167.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/glibc-2.28-251.el8_10.27.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 18487094 - checksum: sha256:f988b183ac97142187843e95dab32f9d7bc8bce3723c80a535a3dfdabba08a44 + size: 18525139 + checksum: sha256:c3f8d7e92cffbd4e81c33871b5c55034b3f11c7417e6d84805a67e52cc6ebec1 name: glibc - evr: 2.28-251.el8_10.16 + evr: 2.28-251.el8_10.27 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/gmp-6.1.2-11.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 2430007 checksum: sha256:0be11faec5810961b3b5b2f0e8a54c4628b62bb2bec4e282f47682c4be0cef64 name: gmp evr: 1:6.1.2-11.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/gnutls-3.6.16-8.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/gnutls-3.6.16-8.el8_10.4.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 5774773 - checksum: sha256:e3dc1e166a626f8ff303c9d9a260d4a1ac68cd2a62d28bfec51d6b1aa3670053 + size: 5783117 + checksum: sha256:62b0fb59ca7babdf1f2558c69ff1ceb67358d455bbf107d32db851f0af8ef185 name: gnutls - evr: 3.6.16-8.el8_10.3 + evr: 3.6.16-8.el8_10.4 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/grep-3.1-6.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 1412532 checksum: sha256:c5d8342de1536365d5ccb340a4a381b40529eb98a6866981df956e4adc2727ac name: grep evr: 3.1-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/grub2-2.02-165.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/grub2-2.02-169.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 8327584 - checksum: sha256:01c652d9a48600b8a77f44c9d93878db5f5fffd3b4f0f9988fae892020feeb56 + size: 8327955 + checksum: sha256:1f583a9551862935908b05cfe9c75f5d0fd7b3eb46896a938341fbdc700d51c2 name: grub2 - evr: 1:2.02-165.el8_10 + evr: 1:2.02-169.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/g/grubby-8.40-49.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 233771 @@ -1441,18 +1441,18 @@ arches: checksum: sha256:3df9490dc2b5146a1e0953d254540d64b7e0c304c52ebd64baf2eeb78eae70bd name: kmod evr: 25-20.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/k/krb5-1.18.2-31.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/k/krb5-1.18.2-32.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 10383931 - checksum: sha256:1c1468efcb7c58f7e40727e45deb6f7d30b8ddb3acaa192a15807af8f1fdfc22 + size: 10400512 + checksum: sha256:b9f52264ad5dc5068e423d0c7f64717e76ba1b4eb68942e7e6124ca3149a72ac name: krb5 - evr: 1.18.2-31.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libarchive-3.3.3-5.el8.src.rpm + evr: 1.18.2-32.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libarchive-3.3.3-6.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 6570219 - checksum: sha256:97e61fdb02920262ab2c2506465dca8492b33050561d3d981ed1065083166c3e + size: 6570714 + checksum: sha256:411f2b5c7c8b0465e3d4c6dd1e91c6db56ed564f54ac3e100114cb9a86b0fcab name: libarchive - evr: 3.3.3-5.el8 + evr: 3.3.3-6.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libcap-2.48-6.el8_9.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 208927 @@ -1537,12 +1537,12 @@ arches: checksum: sha256:2f61feb51798629d4f7b78130e68eb2516463da41d6e7b64d82d28d17355b3f1 name: libselinux evr: 2.9-10.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libsemanage-2.9-11.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libsemanage-2.9-12.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 267435 - checksum: sha256:0e9bc0dd2ddcf5e8e8f734b32c7a3c93165060ef5b2f5910713984cea71e349f + size: 268557 + checksum: sha256:bdfaa6f41b668f889f15abc2165208ff2bc543e34da6235a19943613521e6df8 name: libsemanage - evr: 2.9-11.el8_10 + evr: 2.9-12.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libsepol-2.9-3.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 562616 @@ -1555,12 +1555,12 @@ arches: checksum: sha256:a139e44850d9210e2a662e676dd57a6a40323b1744a14be7a87221f8e36cffe5 name: libsigsegv evr: 2.11-5.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libssh-0.9.6-14.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libssh-0.9.6-16.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 1151415 - checksum: sha256:a04fb32a5bdaf33053918c3c931891fe7415a8ace08069b74d055931413056eb + size: 1151564 + checksum: sha256:71e885a125f15dbbce25f515cc80bd2df63a93c904e0b71c5645d27c18c9f98c name: libssh - evr: 0.9.6-14.el8 + evr: 0.9.6-16.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libtasn1-4.13-5.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 1968290 @@ -1597,30 +1597,30 @@ arches: checksum: sha256:d9803b5dd6cdbb4fd977258092cb50c48c8e28f3e3b4a0d6056c093983e17b29 name: libxcrypt evr: 4.1.1-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libxml2-2.9.7-19.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/libxml2-2.9.7-21.el8_10.3.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 5483351 - checksum: sha256:7e50cdc6eb992d219955bbff31a2647a4ed00b088ad3fa16954947c3afd2c62a + size: 5492235 + checksum: sha256:a236b9807436c13e06c88926d7d3b25c2746f5b7fb12fadc41462a00d448a1f7 name: libxml2 - evr: 2.9.7-19.el8_10 + evr: 2.9.7-21.el8_10.3 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/lua-5.3.4-12.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 437265 checksum: sha256:764fa61f3a6678bf93d94351468e49863176420688ab4e8c1aa6a5eb84ecf23d name: lua evr: 5.3.4-12.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/lvm2-2.03.14-15.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/lvm2-2.03.14-15.el8_10.2.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 3182486 - checksum: sha256:eb51bc7200bf3af803093b3b61c543aae9560c36999aeca1304cd718b8bbe453 + size: 3185875 + checksum: sha256:c464de2287071dd2c498af02ce271d6153a354bfbce16b271c7131f98a55f8c8 name: lvm2 - evr: 8:2.03.14-15.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/lz4-1.8.3-3.el8_4.src.rpm + evr: 8:2.03.14-15.el8_10.2 + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/l/lz4-1.8.3-5.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 343953 - checksum: sha256:5952931f1ccd36d3db5bf1bb007966056e5fde6569a8d2da8e91b38bd9f41d3b + size: 347074 + checksum: sha256:a5d3ef1654348c492e0a0655d7b71c692ac2753b867281df8f9d036cda46bc24 name: lz4 - evr: 1.8.3-3.el8_4 + evr: 1.8.3-5.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/m/memstrack-0.2.5-2.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 63665 @@ -1657,12 +1657,12 @@ arches: checksum: sha256:42a8826001f6a49c1385746f1c5ef3967c3f15fe6fa510fe001d5a232732661a name: openldap evr: 2.4.46-21.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/o/openssl-1.1.1k-14.el8_6.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/o/openssl-1.1.1k-14.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 7741480 - checksum: sha256:c97b10d6a034e025a19ec8443ef7c80755e3a407fe29a77dda95af958b199eed + size: 7743036 + checksum: sha256:01ef6da2173fdd58138e983a69f7213698673c3eddb23539d4876eaca0efc07d name: openssl - evr: 1:1.1.1k-14.el8_6 + evr: 1:1.1.1k-14.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/o/openssl-pkcs11-0.4.10-3.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 520347 @@ -1681,12 +1681,12 @@ arches: checksum: sha256:9dece924ffd6e5698e7cb865f01976d7786b8c3cc65e743cf9ce3a856baff95e name: p11-kit evr: 0.23.22-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/p/pam-1.3.1-36.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/p/pam-1.3.1-39.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 1166826 - checksum: sha256:5a73a9d6ffbc3fa84853486a233e95765189dd0bf7b18059f2b8e763bfc8591f + size: 1185014 + checksum: sha256:dbbbd55c9700e19c59e4e425a6b6f08eb4cb77f68967e773b318a8dfbdfdfb93 name: pam - evr: 1.3.1-36.el8_10 + evr: 1.3.1-39.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/p/pcre-8.42-6.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 1617186 @@ -1729,18 +1729,18 @@ arches: checksum: sha256:0c18dcaadf6e9596e2b939ae9cc75db12df7919a01a204f314df315e384b0d4a name: python-pip evr: 9.0.3-24.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/p/python-setuptools-39.2.0-8.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/p/python-setuptools-39.2.0-9.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 868530 - checksum: sha256:cd563238ca4ec7c288874e42d1506337e4917620ed83b1e4a2aec2fb6a5ea770 + size: 869180 + checksum: sha256:31ae9c84f36f7d4e51b0e945e5d12210594defd3ea16cf5645c21d42fd6332fa name: python-setuptools - evr: 39.2.0-8.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/p/python3-3.6.8-69.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/p/python3-3.6.8-71.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 19223254 - checksum: sha256:4578b972df16aa25dae9170d339d86792c59612f29e0726ead0107ed7347ba3a + size: 19241145 + checksum: sha256:e7012ea23f3816772d64357f7db534f83c55279bcbefdecaefe2573d4734c6a3 name: python3 - evr: 3.6.8-69.el8_10 + evr: 3.6.8-71.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/r/readline-7.0-10.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 2937518 @@ -1771,30 +1771,30 @@ arches: checksum: sha256:72f87a1c0c92c9486bdb3748db880281fcc1f947bbedb99edbcebf189e4a5c40 name: setup evr: 2.12.2-9.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/s/shadow-utils-4.6-22.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/s/shadow-utils-4.6-23.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 1845120 - checksum: sha256:140a4273738ea9cfd1fc5627ebd66ad1696a5e3c959092b41bf5dc6d7657d8a6 + size: 1845199 + checksum: sha256:1f73218c7981d0fe5008adfb4b8460626ba2dfe43c4075f50045c48f8d9e30cd name: shadow-utils - evr: 2:4.6-22.el8 + evr: 2:4.6-23.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/s/shared-mime-info-1.9-4.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 644720 checksum: sha256:b070925e9e0d4824b3c0ed86bad64f77daf954ec359260789fe8f8150ef402c6 name: shared-mime-info evr: 1.9-4.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/s/sqlite-3.26.0-19.el8_9.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/s/sqlite-3.26.0-20.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 23592377 - checksum: sha256:d4bd6ea502814941a714ab1f40e87d8f48fc4a362b344ca928f3c2f514fdf024 + size: 23592583 + checksum: sha256:26dc49ea369dc145166e0a3959cc132f45e3345b99a75420c8932af24f44668c name: sqlite - evr: 3.26.0-19.el8_9 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/s/systemd-239-82.el8_10.5.src.rpm + evr: 3.26.0-20.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/s/systemd-239-82.el8_10.8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 9161850 - checksum: sha256:a20ae7bd2f13fd756b2389ec6ba6f84e6a9be28df01b5a7d04dab93b492a0eab + size: 9188443 + checksum: sha256:a3ade60f73bb3137b94ac38205c321511b70e2bf61b79e2a25e31015fb415844 name: systemd - evr: 239-82.el8_10.5 + evr: 239-82.el8_10.8 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/t/texinfo-6.5-7.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 4544531 @@ -1807,24 +1807,24 @@ arches: checksum: sha256:ad79eab11673ac2f172276a993d98f2bf98c77728863f656d7cc0ab595d5b593 name: trousers evr: 0.3.15-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/t/tzdata-2025b-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/t/tzdata-2025c-1.el8.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 946701 - checksum: sha256:2f0ba51d371713287a690d9d1635b534113258aa2571862603d52870c1c8b60d + size: 960798 + checksum: sha256:c9798a08b98344921713d3183bda98727df494d83f96924604b6b755ddc30f61 name: tzdata - evr: 2025b-1.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/u/util-linux-2.32.1-46.el8.src.rpm + evr: 2025c-1.el8 + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/u/util-linux-2.32.1-47.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 4816801 - checksum: sha256:3fb688481dd062d917d8119cd64582a9e6ffa6736a6dbbf956d038a9115c6004 + size: 4817466 + checksum: sha256:e10e379f1386bdd6315e20cf735616747690c137ada562f47da85ca90ea966ee name: util-linux - evr: 2.32.1-46.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/w/which-2.21-20.el8.src.rpm + evr: 2.32.1-47.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/w/which-2.21-21.el8_10.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms - size: 171457 - checksum: sha256:70aca3ef4713172514dbe5334bd56b29a988e736211e946219f5d965b31eebce + size: 171834 + checksum: sha256:e2c4d30905324f6c2aeecbafab802fd9bdb6c46d2aece65ff3b17c1ec21ecbdf name: which - evr: 2.21-20.el8 + evr: 2.21-21.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/baseos/source/SRPMS/Packages/x/xz-5.2.4-4.el8_6.src.rpm repoid: rhel-8-for-aarch64-baseos-source-rpms size: 1077113 @@ -1844,19 +1844,19 @@ arches: name: zstd evr: 1.4.4-1.el8 module_metadata: - - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/repodata/ba7955ce4e805d927bccaeee08e939fc07cfa4ca5d5f89ae990722fd91fbf32a-modules.yaml.gz + - url: https://cdn.redhat.com/content/dist/rhel8/8/aarch64/appstream/os/repodata/aaab13c5fd68803d7452f01b3929a9a2186f6f842330789338fad4b81c06200b-modules.yaml.gz repoid: rhel-8-for-aarch64-appstream-rpms - size: 707212 - checksum: sha256:ba7955ce4e805d927bccaeee08e939fc07cfa4ca5d5f89ae990722fd91fbf32a + size: 756439 + checksum: sha256:aaab13c5fd68803d7452f01b3929a9a2186f6f842330789338fad4b81c06200b - arch: ppc64le packages: - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/Packages/j/jq-1.6-9.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/Packages/j/jq-1.6-11.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-appstream-rpms - size: 221404 - checksum: sha256:606776449fbb2b9f371c588450db2c197d2548e10f46b3aab06d9887aea317d1 + size: 222152 + checksum: sha256:a025d78c664d12fc1aa0618a5f96d0ec2426876490cce200766d027614df78ff name: jq - evr: 1.6-9.el8_10 - sourcerpm: jq-1.6-9.el8_10.src.rpm + evr: 1.6-11.el8_10 + sourcerpm: jq-1.6-11.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/Packages/l/libxkbcommon-0.9.1-1.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-appstream-rpms size: 125688 @@ -1871,20 +1871,20 @@ arches: name: oniguruma evr: 6.8.2-3.el8 sourcerpm: oniguruma-6.8.2-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/Packages/p/postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/Packages/p/postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.ppc64le.rpm repoid: rhel-8-for-ppc64le-appstream-rpms - size: 1853987 - checksum: sha256:d42738f284213e3d5e01b06d3be4607c1989e7c6ebd95c1b45717127c6cb2182 + size: 1877303 + checksum: sha256:e60f7686d3bea0245ef49253c5705f2b66a2f23ba68b2c2768955bd3c303748c name: postgresql - evr: 15.12-1.module+el8.10.0+22871+d29fc53a - sourcerpm: postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/Packages/p/postgresql-private-libs-15.12-1.module+el8.10.0+22871+d29fc53a.ppc64le.rpm + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 + sourcerpm: postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/Packages/p/postgresql-private-libs-15.15-1.module+el8.10.0+23782+2d6b2a31.ppc64le.rpm repoid: rhel-8-for-ppc64le-appstream-rpms - size: 151639 - checksum: sha256:43a30a265bb63d82805e9d60456594278262913a03273a4e91311a5bc75058aa + size: 151435 + checksum: sha256:80c3061d69e75e725dd9de7084f948b82e37ec98e62a8522c7a79dcea803b74a name: postgresql-private-libs - evr: 15.12-1.module+el8.10.0+22871+d29fc53a - sourcerpm: postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 + sourcerpm: postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/Packages/x/xkeyboard-config-2.28-1.el8.noarch.rpm repoid: rhel-8-for-ppc64le-appstream-rpms size: 801000 @@ -1899,13 +1899,13 @@ arches: name: acl evr: 2.2.53-3.el8 sourcerpm: acl-2.2.53-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/a/audit-libs-3.1.2-1.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/a/audit-libs-3.1.2-1.el8_10.1.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 140676 - checksum: sha256:288b920b6fcc5ed36a1931cf39599b773377213dc732152975aba214d438eb03 + size: 140920 + checksum: sha256:5969029aaf34823407442e244d65c184120c02db801340300cb1aa3240d8ce8d name: audit-libs - evr: 3.1.2-1.el8 - sourcerpm: audit-3.1.2-1.el8.src.rpm + evr: 3.1.2-1.el8_10.1 + sourcerpm: audit-3.1.2-1.el8_10.1.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/b/basesystem-11-5.el8.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 10756 @@ -1913,13 +1913,13 @@ arches: name: basesystem evr: 11-5.el8 sourcerpm: basesystem-11-5.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/b/bash-4.4.20-5.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/b/bash-4.4.20-6.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1666568 - checksum: sha256:cba6a84031062205eeebdcde6e64e28ccb523e4e4bbbdd6395d76aec30c018e5 + size: 1666580 + checksum: sha256:31b8bf9caf03529cc9e474d7c2c990ebdc66605de410d30d16d078b0dd0f3cfa name: bash - evr: 4.4.20-5.el8 - sourcerpm: bash-4.4.20-5.el8.src.rpm + evr: 4.4.20-6.el8_10 + sourcerpm: bash-4.4.20-6.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/b/brotli-1.0.6-3.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 336612 @@ -1934,13 +1934,13 @@ arches: name: bzip2-libs evr: 1.0.6-28.el8_10 sourcerpm: bzip2-1.0.6-28.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1006212 - checksum: sha256:5b97c63d4978f82a8d73cb83c81c438d69309bc929d35c6bebf5868f128da13f + size: 1048264 + checksum: sha256:01d249b3d9889ab05adea246a1e84571e817013e06b24bbfc4bb42a1d7d8aa50 name: ca-certificates - evr: 2024.2.69_v8.0.303-80.0.el8_10 - sourcerpm: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.src.rpm + evr: 2025.2.80_v9.0.304-80.2.el8_10 + sourcerpm: ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/chkconfig-1.19.2-1.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 209036 @@ -1948,20 +1948,20 @@ arches: name: chkconfig evr: 1.19.2-1.el8 sourcerpm: chkconfig-1.19.2-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/coreutils-8.30-15.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/coreutils-8.30-16.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1369068 - checksum: sha256:e68dc6775d28c27ca343fdd74ebfeab892adb29dcf696d1d77f3b60c71749e35 + size: 1367560 + checksum: sha256:a345f9a852aeaea2132d295ab9a7841db8646bce372cb9da8f1e4cac8267e2ad name: coreutils - evr: 8.30-15.el8 - sourcerpm: coreutils-8.30-15.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/coreutils-common-8.30-15.el8.ppc64le.rpm + evr: 8.30-16.el8_10 + sourcerpm: coreutils-8.30-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/coreutils-common-8.30-16.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 2092696 - checksum: sha256:b5bf122e33328f6dba0dc0796259a39518886bac9714d00d044ab5cf1471a700 + size: 2091852 + checksum: sha256:fa122cf627a83bc686c185c520fa1dd2497a76090e53c9d7c52626cbbbb8929c name: coreutils-common - evr: 8.30-15.el8 - sourcerpm: coreutils-8.30-15.el8.src.rpm + evr: 8.30-16.el8_10 + sourcerpm: coreutils-8.30-16.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/cpio-2.12-11.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 276460 @@ -2004,13 +2004,13 @@ arches: name: cryptsetup-libs evr: 2.3.7-7.el8 sourcerpm: cryptsetup-2.3.7-7.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/curl-7.61.1-34.el8_10.3.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/curl-7.61.1-34.el8_10.9.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 366608 - checksum: sha256:167590bbdb52fdda1a6a7c1ade6c07b07ad7e737a744fa01cf94ec32dff9d8a6 + size: 366296 + checksum: sha256:099c46e57263838ec3a35d6ecb017ca3ded6054dfa2f189b22e410e8899ea5b7 name: curl - evr: 7.61.1-34.el8_10.3 - sourcerpm: curl-7.61.1-34.el8_10.3.src.rpm + evr: 7.61.1-34.el8_10.9 + sourcerpm: curl-7.61.1-34.el8_10.9.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/c/cyrus-sasl-lib-2.1.27-6.el8_5.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 137896 @@ -2018,55 +2018,55 @@ arches: name: cyrus-sasl-lib evr: 2.1.27-6.el8_5 sourcerpm: cyrus-sasl-2.1.27-6.el8_5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-1.12.8-26.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-1.12.8-27.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 43276 - checksum: sha256:22e74da0207e2b1b759918e8ec06264df9ba9d96ab8d3008ca0926f2b2e0f404 + size: 43412 + checksum: sha256:6903b72c8c41ec1a2a454a886ea87b35b3845209b842be72da9cd64d843d813f name: dbus - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-common-1.12.8-26.el8.noarch.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-common-1.12.8-27.el8_10.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 48092 - checksum: sha256:3093c5c1356bc92805a6821f9242a7fc947bbaa1ff427d310dc397f4ea38ef3e + size: 48248 + checksum: sha256:e741b39006a6443632979bbebb15255798c45dbc65c61a09e31698df98fdd272 name: dbus-common - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-daemon-1.12.8-26.el8.ppc64le.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-daemon-1.12.8-27.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 263996 - checksum: sha256:d648650de20c839bccea073dac01c46ebc848d3212ce480f34c452e52eb16f4a + size: 264252 + checksum: sha256:b8313b548233b0ac0e21685b74db49c29135c36290d3fdf4b8388ebe12848475 name: dbus-daemon - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-libs-1.12.8-26.el8.ppc64le.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-libs-1.12.8-27.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 204256 - checksum: sha256:674cacc5df6776653bc48ee9a624dfffea38f751b3e98c04b409f62d65ebd3ab + size: 204320 + checksum: sha256:6acd25f671e81fbae8139dfbd2e0a15e70b9103ee7be0dab0637c38761863c04 name: dbus-libs - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-tools-1.12.8-26.el8.ppc64le.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dbus-tools-1.12.8-27.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 90344 - checksum: sha256:3eb8fa078b6682cc09faee3d9b2ad367ab72149eee20164ce49008577e8f6068 + size: 90508 + checksum: sha256:e9b887687ed415a2dce383fe51a6b8d28651f5c92983687e67b1201a18de5417 name: dbus-tools - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/device-mapper-1.02.181-15.el8_10.ppc64le.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/device-mapper-1.02.181-15.el8_10.2.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 389568 - checksum: sha256:20c71371eac9da48d0b250a9f54d608b094fa37af5b07ca29476ff209def274c + size: 389876 + checksum: sha256:05e03ef1ff1bebf2b6e812aaec94e99e159c5a9e24dc787d455e4639f6d2d20c name: device-mapper - evr: 8:1.02.181-15.el8_10 - sourcerpm: lvm2-2.03.14-15.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/device-mapper-libs-1.02.181-15.el8_10.ppc64le.rpm + evr: 8:1.02.181-15.el8_10.2 + sourcerpm: lvm2-2.03.14-15.el8_10.2.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/device-mapper-libs-1.02.181-15.el8_10.2.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 429668 - checksum: sha256:6633b582b2649cbc31344710445f763304c4db927b3f9686cf250213081fa8e6 + size: 429972 + checksum: sha256:6c17208c14104afa2003a83a8104eb5ffc5784652f80aa27ab737873c2b824ea name: device-mapper-libs - evr: 8:1.02.181-15.el8_10 - sourcerpm: lvm2-2.03.14-15.el8_10.src.rpm + evr: 8:1.02.181-15.el8_10.2 + sourcerpm: lvm2-2.03.14-15.el8_10.2.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/diffutils-3.6-6.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 375484 @@ -2074,13 +2074,13 @@ arches: name: diffutils evr: 3.6-6.el8 sourcerpm: diffutils-3.6-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dracut-049-233.git20240115.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/d/dracut-049-239.git20251127.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 392856 - checksum: sha256:212d39eabe66e8720f21ab1dedd0f67f69c804591c35890f87e106764f99925c + size: 392252 + checksum: sha256:dbdc5c407045d45227507d079dcad14a43939aef0d2ca1900b508af0eb938025 name: dracut - evr: 049-233.git20240115.el8 - sourcerpm: dracut-049-233.git20240115.el8.src.rpm + evr: 049-239.git20251127.el8_10 + sourcerpm: dracut-049-239.git20251127.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/e/elfutils-debuginfod-client-0.190-2.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 78824 @@ -2109,27 +2109,27 @@ arches: name: elfutils-libs evr: 0.190-2.el8 sourcerpm: elfutils-0.190-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/e/expat-2.2.5-17.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/e/expat-2.5.0-1.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 119236 - checksum: sha256:c7fad5d488549d79f4566b701be1f65c322096b55fd021abb4fe662eb08bf9d6 + size: 136140 + checksum: sha256:2568a6eca06a1d26161eb976577b719cbdb979690f1b6f3dbeecb2ad75402029 name: expat - evr: 2.2.5-17.el8_10 - sourcerpm: expat-2.2.5-17.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/f/file-5.33-26.el8.ppc64le.rpm + evr: 2.5.0-1.el8_10 + sourcerpm: expat-2.5.0-1.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/f/file-5.33-27.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 80044 - checksum: sha256:70f8b9303f3c64aef8dba92b81a801fdfcba2e1e19a4ade593289a2fe22196b8 + size: 80200 + checksum: sha256:a80a4a35c7784d76e4359699e751533741876699b4f572fbb1f0edae1bfc1869 name: file - evr: 5.33-26.el8 - sourcerpm: file-5.33-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/f/file-libs-5.33-26.el8.ppc64le.rpm + evr: 5.33-27.el8_10 + sourcerpm: file-5.33-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/f/file-libs-5.33-27.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 565384 - checksum: sha256:791ac2fa9d810c0fb55041274982e1f1bdd6b9a4fb833a792cea0217a074e2ba + size: 565504 + checksum: sha256:14f6e619dcd73fe706f89e202a5a3938bd8c06cba94770a4493a440199b5342e name: file-libs - evr: 5.33-26.el8 - sourcerpm: file-5.33-26.el8.src.rpm + evr: 5.33-27.el8_10 + sourcerpm: file-5.33-27.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/f/filesystem-3.8-6.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 1135836 @@ -2137,13 +2137,13 @@ arches: name: filesystem evr: 3.8-6.el8 sourcerpm: filesystem-3.8-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/f/findutils-4.6.0-23.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/f/findutils-4.6.0-24.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 555032 - checksum: sha256:e082308da55a744cba3ceba76539c9ce8174d01ce9c6f2f3ec4bba625d8d612f + size: 553836 + checksum: sha256:ca7edcc090ecfc534e720d9b3e7cacaf1d5cd08dc0397040eef1c2821ed5e3c4 name: findutils - evr: 1:4.6.0-23.el8_10 - sourcerpm: findutils-4.6.0-23.el8_10.src.rpm + evr: 1:4.6.0-24.el8_10 + sourcerpm: findutils-4.6.0-24.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/gawk-4.2.1-4.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 1205792 @@ -2179,41 +2179,41 @@ arches: name: gettext-libs evr: 0.19.8.1-17.el8 sourcerpm: gettext-0.19.8.1-17.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glib2-2.56.4-165.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glib2-2.56.4-167.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 2703600 - checksum: sha256:ad5d50e0ea0d5fa3c0986e5c8580bc3d5e15c1153f4f802c93b16839ca982090 + size: 2705184 + checksum: sha256:be9bc79cace8aa17ac4e654cc8029b0a96e353e245eb9992e25db83bb9133568 name: glib2 - evr: 2.56.4-165.el8_10 - sourcerpm: glib2-2.56.4-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glibc-2.28-251.el8_10.16.ppc64le.rpm + evr: 2.56.4-167.el8_10 + sourcerpm: glib2-2.56.4-167.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glibc-2.28-251.el8_10.27.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 3515976 - checksum: sha256:653266bdf56a2b9431674d322e98db8727e5bb5a1f9ff8220c37b73122a8c4fd + size: 3516168 + checksum: sha256:d97d81a14385cea294b40e17a9f8df18438154d4e7318aa59e3304e708c87f4d name: glibc - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glibc-all-langpacks-2.28-251.el8_10.16.ppc64le.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glibc-all-langpacks-2.28-251.el8_10.27.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 26767432 - checksum: sha256:419da318ce89632d4c996248833cf964ae4bf09cdc1a760292c10732f449b938 + size: 26768148 + checksum: sha256:fad7e00a47528172e9b6c2346a2d6979dff35fe1c4e9592aed25da51408b156c name: glibc-all-langpacks - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glibc-common-2.28-251.el8_10.16.ppc64le.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glibc-common-2.28-251.el8_10.27.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1055244 - checksum: sha256:005b83a0dba278074b5dea0d8829aed74e9db152347f003e9a856dca6ed52c2c + size: 1055520 + checksum: sha256:fc0c8f8937b1c25828495ff3b1f72b4b3b4017bc3e43583d1c425c9597ca4f88 name: glibc-common - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glibc-gconv-extra-2.28-251.el8_10.16.ppc64le.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/glibc-gconv-extra-2.28-251.el8_10.27.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1867264 - checksum: sha256:8732a68c233bbf099bcd875ca9cba7884107d9c1b3221fe11ee2b5b1cc1c4b7d + size: 1867904 + checksum: sha256:29a05af3b712836004f8c58c11f29e7855419d261dea10ea894a33e002fc9f9f name: glibc-gconv-extra - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/gmp-6.1.2-11.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 296280 @@ -2221,13 +2221,13 @@ arches: name: gmp evr: 1:6.1.2-11.el8 sourcerpm: gmp-6.1.2-11.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/gnutls-3.6.16-8.el8_10.3.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/gnutls-3.6.16-8.el8_10.4.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1016908 - checksum: sha256:8a21a848d756e4694816f28b33954596c045ca47b74e84ca7d886a4ac50dd8be + size: 1015860 + checksum: sha256:ec7866e54ec4687c5dbbeff49196d39c52ee072416cb4fdbac8e2e7caf388370 name: gnutls - evr: 3.6.16-8.el8_10.3 - sourcerpm: gnutls-3.6.16-8.el8_10.3.src.rpm + evr: 3.6.16-8.el8_10.4 + sourcerpm: gnutls-3.6.16-8.el8_10.4.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/grep-3.1-6.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 289552 @@ -2235,27 +2235,27 @@ arches: name: grep evr: 3.1-6.el8 sourcerpm: grep-3.1-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/grub2-common-2.02-165.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/grub2-common-2.02-169.el8_10.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 918848 - checksum: sha256:dba0a0d389fda562a8e32b1935e400e7f6616e72ad7d5d9b22a3488068737156 + size: 918448 + checksum: sha256:4439fe4a6403508b74d5d8913543a74195411f69acbc81213ca32e5645939004 name: grub2-common - evr: 1:2.02-165.el8_10 - sourcerpm: grub2-2.02-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/grub2-tools-2.02-165.el8_10.ppc64le.rpm + evr: 1:2.02-169.el8_10 + sourcerpm: grub2-2.02-169.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/grub2-tools-2.02-169.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1980116 - checksum: sha256:a802075c50edb9d01aae8b4cdf0bda9b0890c8e9e38d2d6e1c7c1bf5293063e8 + size: 1979556 + checksum: sha256:4a27cd5fd83b7d7c6d82bb73740651ad53c726e32931aa95048819e613a19cf6 name: grub2-tools - evr: 1:2.02-165.el8_10 - sourcerpm: grub2-2.02-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/grub2-tools-minimal-2.02-165.el8_10.ppc64le.rpm + evr: 1:2.02-169.el8_10 + sourcerpm: grub2-2.02-169.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/grub2-tools-minimal-2.02-169.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 219492 - checksum: sha256:ea83159feb409569e6c7427d56addd6cf35a3dd436d012d0c42077874bed23d9 + size: 218912 + checksum: sha256:bcc7b436c2711954b2ea5df032402b658a6cf1628d1d8b9f9d37496aa8a5453e name: grub2-tools-minimal - evr: 1:2.02-165.el8_10 - sourcerpm: grub2-2.02-165.el8_10.src.rpm + evr: 1:2.02-169.el8_10 + sourcerpm: grub2-2.02-169.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/g/grubby-8.40-49.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 52660 @@ -2340,13 +2340,13 @@ arches: name: kpartx evr: 0.8.4-42.el8_10 sourcerpm: device-mapper-multipath-0.8.4-42.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/k/krb5-libs-1.18.2-31.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/k/krb5-libs-1.18.2-32.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 932296 - checksum: sha256:355c59017a9483eaea3d2be16713d49238b86c5db326483e5f4b4a56b1358646 + size: 932996 + checksum: sha256:964a834cbaf2a342304e29bdd10a67b00b39fc7412058e26cb33db65700d36e6 name: krb5-libs - evr: 1.18.2-31.el8_10 - sourcerpm: krb5-1.18.2-31.el8_10.src.rpm + evr: 1.18.2-32.el8_10 + sourcerpm: krb5-1.18.2-32.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libacl-2.2.53-3.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 37568 @@ -2354,13 +2354,13 @@ arches: name: libacl evr: 2.2.53-3.el8 sourcerpm: acl-2.2.53-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libarchive-3.3.3-5.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libarchive-3.3.3-6.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 421668 - checksum: sha256:3bc642d1513b4251522d4e3dafe553d3ff23f45fab45f19470c1e849663f28a5 + size: 420752 + checksum: sha256:3aa9daf34945b0133c7fd8d87965826b25e033025e4d48ffeb74dbb58df29287 name: libarchive - evr: 3.3.3-5.el8 - sourcerpm: libarchive-3.3.3-5.el8.src.rpm + evr: 3.3.3-6.el8_10 + sourcerpm: libarchive-3.3.3-6.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libattr-2.4.48-3.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 28248 @@ -2368,13 +2368,13 @@ arches: name: libattr evr: 2.4.48-3.el8 sourcerpm: attr-2.4.48-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libblkid-2.32.1-46.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libblkid-2.32.1-47.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 248148 - checksum: sha256:6fc94c84cdf7978b59448f501ae70f65dd26982fdd4ac19f40910f5881be22dd + size: 247084 + checksum: sha256:0588a0f4ec7a55aaee28a3c34f2c02fc90d01af3a2a9b2a3e10bffc371b239c1 name: libblkid - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libcap-2.48-6.el8_9.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 81276 @@ -2389,13 +2389,13 @@ arches: name: libcap-ng evr: 0.7.11-1.el8 sourcerpm: libcap-ng-0.7.11-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libcom_err-1.45.6-5.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libcom_err-1.45.6-7.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 50876 - checksum: sha256:007a56f54e367172f956ab5e093b57ca7e0e2cfc4b905b76bfcb8d2772bd1693 + size: 50004 + checksum: sha256:e3f142b9c790e7dce0349119241060146a8d4c3b2f8bdc35af2e969aafb74ee3 name: libcom_err - evr: 1.45.6-5.el8 - sourcerpm: e2fsprogs-1.45.6-5.el8.src.rpm + evr: 1.45.6-7.el8_10 + sourcerpm: e2fsprogs-1.45.6-7.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libcroco-0.6.12-4.el8_2.1.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 126044 @@ -2403,13 +2403,13 @@ arches: name: libcroco evr: 0.6.12-4.el8_2.1 sourcerpm: libcroco-0.6.12-4.el8_2.1.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libcurl-7.61.1-34.el8_10.3.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libcurl-7.61.1-34.el8_10.9.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 328780 - checksum: sha256:1300b5b03339a6ffc756f1710e182fe5562504529337ce073618fb66e227c44d + size: 328672 + checksum: sha256:18cff1828997288bf377355316b7e81d91e21dd01bb37d4888aefa1a3ac83a68 name: libcurl - evr: 7.61.1-34.el8_10.3 - sourcerpm: curl-7.61.1-34.el8_10.3.src.rpm + evr: 7.61.1-34.el8_10.9 + sourcerpm: curl-7.61.1-34.el8_10.9.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libdb-5.3.28-42.el8_4.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 807032 @@ -2424,13 +2424,13 @@ arches: name: libdb-utils evr: 5.3.28-42.el8_4 sourcerpm: libdb-5.3.28-42.el8_4.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libfdisk-2.32.1-46.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libfdisk-2.32.1-47.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 276876 - checksum: sha256:8d5ff444821ea99876d618a334312472eef861e5270e61f9b9554e209a273d23 + size: 275884 + checksum: sha256:3fee492a9a891261d9a38749ceece9ee6511549033ec7ab6c9a5d7c9b28803fb name: libfdisk - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libffi-3.1-24.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 40004 @@ -2438,13 +2438,13 @@ arches: name: libffi evr: 3.1-24.el8 sourcerpm: libffi-3.1-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libgcc-8.5.0-26.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libgcc-8.5.0-28.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 72644 - checksum: sha256:c49de20c717fbef492042dce6ae11f19d6c879eff1fb793ddeae025ff68ff4c9 + size: 72884 + checksum: sha256:6e424671e1ed9790d62a65edfcf0bde415318d007194f1b9a43a0f8bfb7f9fe1 name: libgcc - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libgcrypt-1.8.5-7.el8_6.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 533820 @@ -2452,13 +2452,13 @@ arches: name: libgcrypt evr: 1.8.5-7.el8_6 sourcerpm: libgcrypt-1.8.5-7.el8_6.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libgomp-8.5.0-26.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libgomp-8.5.0-28.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 219128 - checksum: sha256:c3f84939c560f46f2ac0a49784e6d52f62378e977f710cc508bdedc971efb285 + size: 219356 + checksum: sha256:f39bd24457f4bfe7fbee225a0c0dd6cc79b292160114abce74e56cb59881151a name: libgomp - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libgpg-error-1.31-1.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 255632 @@ -2487,13 +2487,13 @@ arches: name: libkcapi-hmaccalc evr: 1.4.0-2.el8 sourcerpm: libkcapi-1.4.0-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libmount-2.32.1-46.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libmount-2.32.1-47.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 266360 - checksum: sha256:6ce023efeb37f29a17f92b5def9fc835e48e9e3c436210463586feaeb17fe9ea + size: 265396 + checksum: sha256:d8652ce55eff19ee1b6be7521bac17fa0b0a3f4db1feeaf9be8fd85b9a3336af name: libmount - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libnghttp2-1.33.0-6.el8_10.1.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 87792 @@ -2543,13 +2543,13 @@ arches: name: libselinux evr: 2.9-10.el8_10 sourcerpm: libselinux-2.9-10.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libsemanage-2.9-11.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libsemanage-2.9-12.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 183840 - checksum: sha256:7d846562212b735859d256188bf880760f37a628c00cdc89174470426688686f + size: 183976 + checksum: sha256:b2aa7387dad70bd25ea50a627240e242f9bc49960773213e1b9f7927e93f5dab name: libsemanage - evr: 2.9-11.el8_10 - sourcerpm: libsemanage-2.9-11.el8_10.src.rpm + evr: 2.9-12.el8_10 + sourcerpm: libsemanage-2.9-12.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libsepol-2.9-3.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 377308 @@ -2564,34 +2564,34 @@ arches: name: libsigsegv evr: 2.11-5.el8 sourcerpm: libsigsegv-2.11-5.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libsmartcols-2.32.1-46.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libsmartcols-2.32.1-47.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 196536 - checksum: sha256:e5ed04fe83a621f8ae92f1e9152b1c592dc9e95fbdcd4b1d8e4d221a0a350090 + size: 195556 + checksum: sha256:0dc6f9098a57ee71436a48337927da6b47e2d5312e52b725ce99d9a05d311d6e name: libsmartcols - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libssh-0.9.6-14.el8.ppc64le.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libssh-0.9.6-16.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 246788 - checksum: sha256:e87fabf19e917162b4e06713239f02dec859b5041e8332a1394e40db93329ea5 + size: 245868 + checksum: sha256:a56e1939241a2ada72fcfddce3bedfa2ee55d68a20d38c19792d2cc78ddedbf5 name: libssh - evr: 0.9.6-14.el8 - sourcerpm: libssh-0.9.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libssh-config-0.9.6-14.el8.noarch.rpm + evr: 0.9.6-16.el8_10 + sourcerpm: libssh-0.9.6-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libssh-config-0.9.6-16.el8_10.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 21548 - checksum: sha256:e8281fb82a512c0bbfdd4bbd0f7f9657fce2ad547189fb93d0a0bf814173a2a4 + size: 20644 + checksum: sha256:2471adc5113ee9a2ff70bbbd3c9ef2a8d63e2da99bcfb00566b0869b2f037d27 name: libssh-config - evr: 0.9.6-14.el8 - sourcerpm: libssh-0.9.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libstdc++-8.5.0-26.el8_10.ppc64le.rpm + evr: 0.9.6-16.el8_10 + sourcerpm: libssh-0.9.6-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libstdc++-8.5.0-28.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 528496 - checksum: sha256:471966d27c7c7501aa3f93f6df993a758bc3984b3a2d18d8eea366aa15b351e4 + size: 528908 + checksum: sha256:b473d8fe0fbdfb10f124f1d9a0fe15307d455ca1a37eb2b5a870c75abc37013b name: libstdc++ - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libtasn1-4.13-5.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 84436 @@ -2620,13 +2620,13 @@ arches: name: libutempter evr: 1.1.6-14.el8 sourcerpm: libutempter-1.1.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libuuid-2.32.1-46.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libuuid-2.32.1-47.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 103444 - checksum: sha256:e74caf1e55cd53a08ce78f772e9d1b1c3b7f8b8f407221a06087ece0998a223a + size: 102548 + checksum: sha256:0b3bbe3ae4996e754868de28635ff8a696987ab2e316e75b4389608edf4348fa name: libuuid - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libverto-0.3.2-2.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 26016 @@ -2641,13 +2641,13 @@ arches: name: libxcrypt evr: 4.1.1-6.el8 sourcerpm: libxcrypt-4.1.1-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libxml2-2.9.7-19.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libxml2-2.9.7-21.el8_10.3.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 772456 - checksum: sha256:5d978e667f55c6b78e0577bf05d7d7f3a17d1d075a6ececd7173131d06bb63e6 + size: 772256 + checksum: sha256:ecb0c95840014413ef5fbfdad1a3f3045bddf1689ae3fc48756e5db1385f3d57 name: libxml2 - evr: 2.9.7-19.el8_10 - sourcerpm: libxml2-2.9.7-19.el8_10.src.rpm + evr: 2.9.7-21.el8_10.3 + sourcerpm: libxml2-2.9.7-21.el8_10.3.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/libzstd-1.4.4-1.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 282940 @@ -2662,13 +2662,13 @@ arches: name: lua-libs evr: 5.3.4-12.el8 sourcerpm: lua-5.3.4-12.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/lz4-libs-1.8.3-3.el8_4.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/l/lz4-libs-1.8.3-5.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 75484 - checksum: sha256:eacfb3a0ad76aadb67c4103a188c35a69d69f91dcfd6272de238cbaa087bf264 + size: 75928 + checksum: sha256:bc2aaf0cda1fec9eed7c3e42f01680feb6db685dfe5268ff896703509adb0475 name: lz4-libs - evr: 1.8.3-3.el8_4 - sourcerpm: lz4-1.8.3-3.el8_4.src.rpm + evr: 1.8.3-5.el8_10 + sourcerpm: lz4-1.8.3-5.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/m/memstrack-0.2.5-2.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 57364 @@ -2718,20 +2718,20 @@ arches: name: openldap evr: 2.4.46-21.el8_10 sourcerpm: openldap-2.4.46-21.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/o/openssl-1.1.1k-14.el8_6.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/o/openssl-1.1.1k-14.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 731808 - checksum: sha256:13616f555100e3a9b4617fe4d3aa13c4a1f46237708572b379749863ee1fb7ae + size: 730868 + checksum: sha256:582368e2b737656ab875b57f292dc04426eb5f93136696c3d55523cc49fcc399 name: openssl - evr: 1:1.1.1k-14.el8_6 - sourcerpm: openssl-1.1.1k-14.el8_6.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/o/openssl-libs-1.1.1k-14.el8_6.ppc64le.rpm + evr: 1:1.1.1k-14.el8_10 + sourcerpm: openssl-1.1.1k-14.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/o/openssl-libs-1.1.1k-14.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1580468 - checksum: sha256:92db3c863ae63eb9e59c9adacba4d7e80a0ebfd466c2074102fc051272642892 + size: 1579712 + checksum: sha256:0883b5f4e8acf649cfb5491f7dde772e9329e6e1709e56c563bea833b3a192b0 name: openssl-libs - evr: 1:1.1.1k-14.el8_6 - sourcerpm: openssl-1.1.1k-14.el8_6.src.rpm + evr: 1:1.1.1k-14.el8_10 + sourcerpm: openssl-1.1.1k-14.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/o/openssl-pkcs11-0.4.10-3.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 73064 @@ -2760,13 +2760,13 @@ arches: name: p11-kit-trust evr: 0.23.22-2.el8 sourcerpm: p11-kit-0.23.22-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/pam-1.3.1-36.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/pam-1.3.1-39.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 812356 - checksum: sha256:791f57c8be96fb1e8a1777efe5f2c0283e59bf661947b4281e01505fdfa4a510 + size: 814188 + checksum: sha256:124fb0871d7ec940aab122357dd21ff64954fc8e9ab9840046c2cf9a80900496 name: pam - evr: 1.3.1-36.el8_10 - sourcerpm: pam-1.3.1-36.el8_10.src.rpm + evr: 1.3.1-39.el8_10 + sourcerpm: pam-1.3.1-39.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/pcre-8.42-6.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 211436 @@ -2788,13 +2788,13 @@ arches: name: pigz evr: 2.4-4.el8 sourcerpm: pigz-2.4-4.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/platform-python-3.6.8-69.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/platform-python-3.6.8-71.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 91148 - checksum: sha256:8f3268150c6462891740e74e36aa0d512376278b3661b80b66e392d727f137b7 + size: 90356 + checksum: sha256:59053949e72772d34408de641ce14f6d717d0c5eb011bc89240c01d1e5764964 name: platform-python - evr: 3.6.8-69.el8_10 - sourcerpm: python3-3.6.8-69.el8_10.src.rpm + evr: 3.6.8-71.el8_10 + sourcerpm: python3-3.6.8-71.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/platform-python-pip-9.0.3-24.el8.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 1633024 @@ -2802,13 +2802,13 @@ arches: name: platform-python-pip evr: 9.0.3-24.el8 sourcerpm: python-pip-9.0.3-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/platform-python-setuptools-39.2.0-8.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/platform-python-setuptools-39.2.0-9.el8_10.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 647476 - checksum: sha256:8f330a8602613473b6e4c0bc57cb3012932a9a9399ea7a3fa65175453a6580ab + size: 647688 + checksum: sha256:c809d773ee4709e911391552c2a162d04381848603a69102eb785a235b1c66be name: platform-python-setuptools - evr: 39.2.0-8.el8_10 - sourcerpm: python-setuptools-39.2.0-8.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + sourcerpm: python-setuptools-39.2.0-9.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/popt-1.18-1.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 66608 @@ -2830,13 +2830,13 @@ arches: name: publicsuffix-list-dafsa evr: 20180723-1.el8 sourcerpm: publicsuffix-list-20180723-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/python3-libs-3.6.8-69.el8_10.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/python3-libs-3.6.8-71.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 8547056 - checksum: sha256:9a152eef0bed0e9e017eca728deb0abd85e2368119f875b691bc919b9d140588 + size: 8510436 + checksum: sha256:f3de14c44b546400f9131a12fdd716e19d4df13a6a3cfeab9621793aca6c94e6 name: python3-libs - evr: 3.6.8-69.el8_10 - sourcerpm: python3-3.6.8-69.el8_10.src.rpm + evr: 3.6.8-71.el8_10 + sourcerpm: python3-3.6.8-71.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/python3-pip-wheel-9.0.3-24.el8.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 886996 @@ -2844,13 +2844,13 @@ arches: name: python3-pip-wheel evr: 9.0.3-24.el8 sourcerpm: python-pip-9.0.3-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/python3-setuptools-wheel-39.2.0-8.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/p/python3-setuptools-wheel-39.2.0-9.el8_10.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 296040 - checksum: sha256:833dcb68b1eea48bfb8853886236753647743258fd74cc538ffa72408aab9213 + size: 296208 + checksum: sha256:eed50a1612ab8303c50f62d7c3409020b2ff829037cc651725562afa95e56e05 name: python3-setuptools-wheel - evr: 39.2.0-8.el8_10 - sourcerpm: python-setuptools-39.2.0-8.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + sourcerpm: python-setuptools-39.2.0-9.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/r/readline-7.0-10.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 215544 @@ -2900,13 +2900,13 @@ arches: name: setup evr: 2.12.2-9.el8 sourcerpm: setup-2.12.2-9.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/shadow-utils-4.6-22.el8.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/shadow-utils-4.6-23.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1310120 - checksum: sha256:20e487410c60bf49e6f80649f374387738e8a5d11ebf6b3e418298e0887237f0 + size: 1310152 + checksum: sha256:9b8fe8267ae9adb123c25d28a546e10e5377e657b6cc727b7e3117c4abee7845 name: shadow-utils - evr: 2:4.6-22.el8 - sourcerpm: shadow-utils-4.6-22.el8.src.rpm + evr: 2:4.6-23.el8_10 + sourcerpm: shadow-utils-4.6-23.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/shared-mime-info-1.9-4.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 341608 @@ -2914,41 +2914,41 @@ arches: name: shared-mime-info evr: 1.9-4.el8 sourcerpm: shared-mime-info-1.9-4.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/sqlite-libs-3.26.0-19.el8_9.ppc64le.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/sqlite-libs-3.26.0-20.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 640528 - checksum: sha256:7b405b525dafb123f1d704ea9d8835db94d617befa89df011b1c391b6cec6140 + size: 639612 + checksum: sha256:1fa1008c8bc3e4b5fe8776d5a4e3ca9a8812b35054c22a3dd4e3afd9ae219ccd name: sqlite-libs - evr: 3.26.0-19.el8_9 - sourcerpm: sqlite-3.26.0-19.el8_9.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/systemd-239-82.el8_10.5.ppc64le.rpm + evr: 3.26.0-20.el8_10 + sourcerpm: sqlite-3.26.0-20.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/systemd-239-82.el8_10.8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 3884024 - checksum: sha256:76958d20032f290e803f274e3636ec052c2b75ec1c283dfe5e311cca5e282e73 + size: 3886804 + checksum: sha256:861ab3ad615884b38cd186ade1cc74249e0b5a3e7465318504ab08c8355c4842 name: systemd - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/systemd-libs-239-82.el8_10.5.ppc64le.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/systemd-libs-239-82.el8_10.8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1200964 - checksum: sha256:4290159f325f478e602ac5758f787b12b84d265713fffae6310a2ffd5eff0212 + size: 1201844 + checksum: sha256:255bcea5675d0b6415cf95f7e44993cb5d2c9dbe300c0199fb5e7875f277af1c name: systemd-libs - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/systemd-pam-239-82.el8_10.5.ppc64le.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/systemd-pam-239-82.el8_10.8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 551196 - checksum: sha256:0b8f8c99434ca12a31ea86412609f926ffe0519cc5668ad64526d0f6aeba2ad9 + size: 552628 + checksum: sha256:f8800e69da7366f813d16c43c22d5ad77a36cc2b6befbbcdbcf71819adc97283 name: systemd-pam - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/systemd-udev-239-82.el8_10.5.ppc64le.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/s/systemd-udev-239-82.el8_10.8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 1625756 - checksum: sha256:3a43942c51205285c3bc759e98999ebf8647b55bdc740041164547856dcc4d51 + size: 1627128 + checksum: sha256:45511abfd2506c0145cefbac5cc195cf526f6c71c484f15491937db7f0f1ce43 name: systemd-udev - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/t/trousers-0.3.15-2.el8.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 159044 @@ -2963,27 +2963,27 @@ arches: name: trousers-lib evr: 0.3.15-2.el8 sourcerpm: trousers-0.3.15-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/t/tzdata-2025b-1.el8.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/t/tzdata-2025c-1.el8.noarch.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 488428 - checksum: sha256:338539f7f0cd2770694153af81e2e65121b050a1bb555ad66a6fb6f562732602 + size: 560812 + checksum: sha256:e4b6cf905fb2111d9a45c3b6b95f6e0c5199bf9b3d576f2a06b4dcb49a63d55e name: tzdata - evr: 2025b-1.el8 - sourcerpm: tzdata-2025b-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/u/util-linux-2.32.1-46.el8.ppc64le.rpm + evr: 2025c-1.el8 + sourcerpm: tzdata-2025c-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/u/util-linux-2.32.1-47.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 2701400 - checksum: sha256:67ac1c1d100dd3022074c357030dab31c776b74ac10d1a14cda6c3b45f10f8e2 + size: 2700484 + checksum: sha256:b48627739d83c990f30f2fb460a9aff87182e9a3160704e2a818c00a65dc7f03 name: util-linux - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/w/which-2.21-20.el8.ppc64le.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/w/which-2.21-21.el8_10.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms - size: 51916 - checksum: sha256:2919c28229e59486ec8417797e0cd7b0c046779ec1952c1b76d0987d9a977dbb + size: 52168 + checksum: sha256:7b53e4d03802fbcc3f48d80d17f71d3b4321562ea6ad0c7cd71807346d117170 name: which - evr: 2.21-20.el8 - sourcerpm: which-2.21-20.el8.src.rpm + evr: 2.21-21.el8_10 + sourcerpm: which-2.21-21.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/os/Packages/x/xz-5.2.4-4.el8_6.ppc64le.rpm repoid: rhel-8-for-ppc64le-baseos-rpms size: 162264 @@ -3006,12 +3006,12 @@ arches: evr: 1.2.11-25.el8 sourcerpm: zlib-1.2.11-25.el8.src.rpm source: - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/source/SRPMS/Packages/j/jq-1.6-9.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/source/SRPMS/Packages/j/jq-1.6-11.el8_10.src.rpm repoid: rhel-8-for-ppc64le-appstream-source-rpms - size: 1502487 - checksum: sha256:2dc420bdaef06107f892878c520cff069c55e4553bc3d8f0d2136ff0ed2c5d99 + size: 1506922 + checksum: sha256:0fce66914c13dd2a34fbd2d5a043cada5ed98ecc28895f07655b1b059758ab80 name: jq - evr: 1.6-9.el8_10 + evr: 1.6-11.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/source/SRPMS/Packages/l/libxkbcommon-0.9.1-1.el8.src.rpm repoid: rhel-8-for-ppc64le-appstream-source-rpms size: 390739 @@ -3024,12 +3024,12 @@ arches: checksum: sha256:31cd372131f6eb404ce90285210fd74021914b4eb52e933b2aeebfa955099faa name: oniguruma evr: 6.8.2-3.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/source/SRPMS/Packages/p/postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/source/SRPMS/Packages/p/postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm repoid: rhel-8-for-ppc64le-appstream-source-rpms - size: 53429582 - checksum: sha256:2659a0235ebefeb2151dc5629b45fd8ac688053ac6e44dad2c89f1b7a5cf3411 + size: 45654458 + checksum: sha256:30795de4ed7a01becc64ee50796e7c76b9195ff1eed0a341b279aeb3e4b15527 name: postgresql - evr: 15.12-1.module+el8.10.0+22871+d29fc53a + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/source/SRPMS/Packages/x/xkeyboard-config-2.28-1.el8.src.rpm repoid: rhel-8-for-ppc64le-appstream-source-rpms size: 1699339 @@ -3048,24 +3048,24 @@ arches: checksum: sha256:07bef8d477176042b940e5732eba1600871aacc1a0dbe679952d62265b5e6dbc name: attr evr: 2.4.48-3.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/a/audit-3.1.2-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/a/audit-3.1.2-1.el8_10.1.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 1248664 - checksum: sha256:c1facd2ecc520c758bbe2b049207629ad08914798f63c92beef4790086ad2f29 + size: 1250424 + checksum: sha256:b5a47d142bc89e986f3c662c6552ec59c08bdfbec8d38fc8d2720df74cdda53c name: audit - evr: 3.1.2-1.el8 + evr: 3.1.2-1.el8_10.1 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/b/basesystem-11-5.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 11934 checksum: sha256:95fb2c11bd59c51fcb0c0239e3e2c307d7d8d40c24b2960792bbc8af8c14f95c name: basesystem evr: 11-5.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/b/bash-4.4.20-5.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/b/bash-4.4.20-6.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 9478334 - checksum: sha256:670d393f3d288bc61519be0d2c5378addc1cd4a752b738ce2424b69618f3965c + size: 9479153 + checksum: sha256:f0e4182affffe350e5dbd55e410baed663d514cd6832108b83899ac8d1524830 name: bash - evr: 4.4.20-5.el8 + evr: 4.4.20-6.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/b/brotli-1.0.6-3.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 23835509 @@ -3078,24 +3078,24 @@ arches: checksum: sha256:9c1d697f675f5889c57e7f983afa4b3e3f6e2334887ded9d7c10c5a205d1b06a name: bzip2 evr: 1.0.6-28.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/c/ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/c/ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 715540 - checksum: sha256:a066b501d49019ad53d7a8bd7badd1b073f317e406561f0cfad59b7bdfaba0a6 + size: 742547 + checksum: sha256:879547af21a33e8e0a2356bc7cbd8c4fdc17d4830fbcadbf9aac1cfbbcf140f5 name: ca-certificates - evr: 2024.2.69_v8.0.303-80.0.el8_10 + evr: 2025.2.80_v9.0.304-80.2.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/c/chkconfig-1.19.2-1.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 221618 checksum: sha256:7cf522c35fa5a5906c8c793ece9e599e80aba6c37d3f57afbf436c9abb8629c6 name: chkconfig evr: 1.19.2-1.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/c/coreutils-8.30-15.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/c/coreutils-8.30-16.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 5550193 - checksum: sha256:8e6d8f3d8929cfd896c09a6d7ebfdd0d78fd028169042f7df9e35803189e4eee + size: 5552304 + checksum: sha256:a765698d09c82865c7b71c2125273ed393aee734cdb2a999458bbbed9ccfe098 name: coreutils - evr: 8.30-15.el8 + evr: 8.30-16.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/c/cpio-2.12-11.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 1312438 @@ -3120,24 +3120,24 @@ arches: checksum: sha256:21bb087ab9a3d64c89295a1bd45b5e5b6189832a972d4b3ddccb2ff5437ac2ed name: cryptsetup evr: 2.3.7-7.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/c/curl-7.61.1-34.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/c/curl-7.61.1-34.el8_10.9.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 2629169 - checksum: sha256:da74fbd455075a1e124a5251e17946c0a2c8b8bd023e349d0c52b3cee8e3d37c + size: 2637559 + checksum: sha256:b69dcfee680f356433e48929a3b447b72d6e99bf8ad61b5a6c9ac2eededf87cd name: curl - evr: 7.61.1-34.el8_10.3 + evr: 7.61.1-34.el8_10.9 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/c/cyrus-sasl-2.1.27-6.el8_5.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 4032772 checksum: sha256:72d534b444990dbb647ead881f77e841ef9416109054cf74b7a5d12f912eef9a name: cyrus-sasl evr: 2.1.27-6.el8_5 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/d/dbus-1.12.8-26.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/d/dbus-1.12.8-27.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 2149642 - checksum: sha256:4934fea4bcebaf82dacd6d8258b35233f25e66cfd45d68f6b6e48d2ff3632395 + size: 2153514 + checksum: sha256:1a5cc2d3f263fa49f2e626d34ce7ac0ef2b6a3c8c3cf4a3c652e0614c0479911 name: dbus - evr: 1:1.12.8-26.el8 + evr: 1:1.12.8-27.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/d/device-mapper-multipath-0.8.4-42.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 770004 @@ -3150,60 +3150,60 @@ arches: checksum: sha256:1308e782ad4f9b17a5cbbac9734be496948db857de7458b3388645bf1786892d name: diffutils evr: 3.6-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/d/dracut-049-233.git20240115.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/d/dracut-049-239.git20251127.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 582719 - checksum: sha256:21cebc2005d7aa0b6cd45f1a5455ac85f75399b8d3f2a38de3f47585f2200acd + size: 585830 + checksum: sha256:559705b03309fdae2474df8798242da457ed1dd7d4014c37462188975bb3bf2e name: dracut - evr: 049-233.git20240115.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/e/e2fsprogs-1.45.6-5.el8.src.rpm + evr: 049-239.git20251127.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/e/e2fsprogs-1.45.6-7.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 5675423 - checksum: sha256:1c0771ea038777ecf84ba31cba0c3d221d39e351c1a6e7967857977c1949c792 + size: 5680546 + checksum: sha256:7adebb4cf95886f8dc9cdfa518378ba4609a2f9800782b8330ca5ddf4409d3bf name: e2fsprogs - evr: 1.45.6-5.el8 + evr: 1.45.6-7.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/e/elfutils-0.190-2.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 9288737 checksum: sha256:54fe49a6fd4f87d6fd594b62c465105fc3efab05a1ffcc216f053c277ab619bf name: elfutils evr: 0.190-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/e/expat-2.2.5-17.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/e/expat-2.5.0-1.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 8345318 - checksum: sha256:41de03fcbf3a8f7fa42e7017058ae0186e98a0e448ce01772de7af0a856a749d + size: 8388946 + checksum: sha256:566456bc755b628dc5a4ce77b6a643769165202f0ddd852ba73dd9512b994d2b name: expat - evr: 2.2.5-17.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/f/file-5.33-26.el8.src.rpm + evr: 2.5.0-1.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/f/file-5.33-27.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 899551 - checksum: sha256:1bdcfa5032e3ef5ff5f9f72233b6c9c67c0c7ff994a04df131d3b64b213b99cb + size: 900161 + checksum: sha256:f6996986985a11cebdb085b30dc7281eb320ee6234fa12ae43e39cd2d1de1afc name: file - evr: 5.33-26.el8 + evr: 5.33-27.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/f/filesystem-3.8-6.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 37286 checksum: sha256:113b7c5e28cc1d44e21c564c17d8c592a3f8a20b4c268cdaad6a407dee4d1540 name: filesystem evr: 3.8-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/f/findutils-4.6.0-23.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/f/findutils-4.6.0-24.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 3831527 - checksum: sha256:28510e1bb0c939d1b945f889611cf572e03ee18faaa5bff6f0ad203fd696fb29 + size: 3832656 + checksum: sha256:4ee9287c4f007ef160f3e2f61ddd3d6ff75dfa82ab99ba27f5c6ca673d97d529 name: findutils - evr: 1:4.6.0-23.el8_10 + evr: 1:4.6.0-24.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/gawk-4.2.1-4.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 3036497 checksum: sha256:fac4ea2cb712ff3f0dd723d6eec358e051040592492b5cf6bd66354b8a09f143 name: gawk evr: 4.2.1-4.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/gcc-8.5.0-26.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/gcc-8.5.0-28.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 65714976 - checksum: sha256:12ebb9cdefb5f8c68bbce3eb469440d26f0d64de958751f4916328ed02522ed2 + size: 65716029 + checksum: sha256:1e81087ab2f1f3435e106d747529d2a178e33a285722662fa89c56a37f471489 name: gcc - evr: 8.5.0-26.el8_10 + evr: 8.5.0-28.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/gdbm-1.18-2.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 966590 @@ -3216,42 +3216,42 @@ arches: checksum: sha256:114be9b072a7726f2ac557fda6b8a86254ae3b7ed984ed14cfa7733bea9005d4 name: gettext evr: 0.19.8.1-17.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/glib2-2.56.4-165.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/glib2-2.56.4-167.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 7127086 - checksum: sha256:0d418524f04a24e2357b26d4107424780acca901a1575a7a5cbf178b2aa1458c + size: 7164394 + checksum: sha256:80ee50b39aa478e1503dbd18626df91a023d30e3f9b6fb588fa82e6ce2b5972e name: glib2 - evr: 2.56.4-165.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/glibc-2.28-251.el8_10.16.src.rpm + evr: 2.56.4-167.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/glibc-2.28-251.el8_10.27.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 18487094 - checksum: sha256:f988b183ac97142187843e95dab32f9d7bc8bce3723c80a535a3dfdabba08a44 + size: 18525139 + checksum: sha256:c3f8d7e92cffbd4e81c33871b5c55034b3f11c7417e6d84805a67e52cc6ebec1 name: glibc - evr: 2.28-251.el8_10.16 + evr: 2.28-251.el8_10.27 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/gmp-6.1.2-11.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 2430007 checksum: sha256:0be11faec5810961b3b5b2f0e8a54c4628b62bb2bec4e282f47682c4be0cef64 name: gmp evr: 1:6.1.2-11.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/gnutls-3.6.16-8.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/gnutls-3.6.16-8.el8_10.4.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 5774773 - checksum: sha256:e3dc1e166a626f8ff303c9d9a260d4a1ac68cd2a62d28bfec51d6b1aa3670053 + size: 5783117 + checksum: sha256:62b0fb59ca7babdf1f2558c69ff1ceb67358d455bbf107d32db851f0af8ef185 name: gnutls - evr: 3.6.16-8.el8_10.3 + evr: 3.6.16-8.el8_10.4 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/grep-3.1-6.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 1412532 checksum: sha256:c5d8342de1536365d5ccb340a4a381b40529eb98a6866981df956e4adc2727ac name: grep evr: 3.1-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/grub2-2.02-165.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/grub2-2.02-169.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 8327584 - checksum: sha256:01c652d9a48600b8a77f44c9d93878db5f5fffd3b4f0f9988fae892020feeb56 + size: 8327955 + checksum: sha256:1f583a9551862935908b05cfe9c75f5d0fd7b3eb46896a938341fbdc700d51c2 name: grub2 - evr: 1:2.02-165.el8_10 + evr: 1:2.02-169.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/g/grubby-8.40-49.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 233771 @@ -3294,18 +3294,18 @@ arches: checksum: sha256:3df9490dc2b5146a1e0953d254540d64b7e0c304c52ebd64baf2eeb78eae70bd name: kmod evr: 25-20.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/k/krb5-1.18.2-31.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/k/krb5-1.18.2-32.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 10383931 - checksum: sha256:1c1468efcb7c58f7e40727e45deb6f7d30b8ddb3acaa192a15807af8f1fdfc22 + size: 10400512 + checksum: sha256:b9f52264ad5dc5068e423d0c7f64717e76ba1b4eb68942e7e6124ca3149a72ac name: krb5 - evr: 1.18.2-31.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libarchive-3.3.3-5.el8.src.rpm + evr: 1.18.2-32.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libarchive-3.3.3-6.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 6570219 - checksum: sha256:97e61fdb02920262ab2c2506465dca8492b33050561d3d981ed1065083166c3e + size: 6570714 + checksum: sha256:411f2b5c7c8b0465e3d4c6dd1e91c6db56ed564f54ac3e100114cb9a86b0fcab name: libarchive - evr: 3.3.3-5.el8 + evr: 3.3.3-6.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libcap-2.48-6.el8_9.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 208927 @@ -3396,12 +3396,12 @@ arches: checksum: sha256:2f61feb51798629d4f7b78130e68eb2516463da41d6e7b64d82d28d17355b3f1 name: libselinux evr: 2.9-10.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libsemanage-2.9-11.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libsemanage-2.9-12.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 267435 - checksum: sha256:0e9bc0dd2ddcf5e8e8f734b32c7a3c93165060ef5b2f5910713984cea71e349f + size: 268557 + checksum: sha256:bdfaa6f41b668f889f15abc2165208ff2bc543e34da6235a19943613521e6df8 name: libsemanage - evr: 2.9-11.el8_10 + evr: 2.9-12.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libsepol-2.9-3.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 562616 @@ -3414,12 +3414,12 @@ arches: checksum: sha256:a139e44850d9210e2a662e676dd57a6a40323b1744a14be7a87221f8e36cffe5 name: libsigsegv evr: 2.11-5.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libssh-0.9.6-14.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libssh-0.9.6-16.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 1151415 - checksum: sha256:a04fb32a5bdaf33053918c3c931891fe7415a8ace08069b74d055931413056eb + size: 1151564 + checksum: sha256:71e885a125f15dbbce25f515cc80bd2df63a93c904e0b71c5645d27c18c9f98c name: libssh - evr: 0.9.6-14.el8 + evr: 0.9.6-16.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libtasn1-4.13-5.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 1968290 @@ -3456,30 +3456,30 @@ arches: checksum: sha256:d9803b5dd6cdbb4fd977258092cb50c48c8e28f3e3b4a0d6056c093983e17b29 name: libxcrypt evr: 4.1.1-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libxml2-2.9.7-19.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/libxml2-2.9.7-21.el8_10.3.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 5483351 - checksum: sha256:7e50cdc6eb992d219955bbff31a2647a4ed00b088ad3fa16954947c3afd2c62a + size: 5492235 + checksum: sha256:a236b9807436c13e06c88926d7d3b25c2746f5b7fb12fadc41462a00d448a1f7 name: libxml2 - evr: 2.9.7-19.el8_10 + evr: 2.9.7-21.el8_10.3 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/lua-5.3.4-12.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 437265 checksum: sha256:764fa61f3a6678bf93d94351468e49863176420688ab4e8c1aa6a5eb84ecf23d name: lua evr: 5.3.4-12.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/lvm2-2.03.14-15.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/lvm2-2.03.14-15.el8_10.2.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 3182486 - checksum: sha256:eb51bc7200bf3af803093b3b61c543aae9560c36999aeca1304cd718b8bbe453 + size: 3185875 + checksum: sha256:c464de2287071dd2c498af02ce271d6153a354bfbce16b271c7131f98a55f8c8 name: lvm2 - evr: 8:2.03.14-15.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/lz4-1.8.3-3.el8_4.src.rpm + evr: 8:2.03.14-15.el8_10.2 + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/l/lz4-1.8.3-5.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 343953 - checksum: sha256:5952931f1ccd36d3db5bf1bb007966056e5fde6569a8d2da8e91b38bd9f41d3b + size: 347074 + checksum: sha256:a5d3ef1654348c492e0a0655d7b71c692ac2753b867281df8f9d036cda46bc24 name: lz4 - evr: 1.8.3-3.el8_4 + evr: 1.8.3-5.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/m/memstrack-0.2.5-2.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 63665 @@ -3516,12 +3516,12 @@ arches: checksum: sha256:42a8826001f6a49c1385746f1c5ef3967c3f15fe6fa510fe001d5a232732661a name: openldap evr: 2.4.46-21.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/o/openssl-1.1.1k-14.el8_6.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/o/openssl-1.1.1k-14.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 7741480 - checksum: sha256:c97b10d6a034e025a19ec8443ef7c80755e3a407fe29a77dda95af958b199eed + size: 7743036 + checksum: sha256:01ef6da2173fdd58138e983a69f7213698673c3eddb23539d4876eaca0efc07d name: openssl - evr: 1:1.1.1k-14.el8_6 + evr: 1:1.1.1k-14.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/o/openssl-pkcs11-0.4.10-3.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 520347 @@ -3540,12 +3540,12 @@ arches: checksum: sha256:9dece924ffd6e5698e7cb865f01976d7786b8c3cc65e743cf9ce3a856baff95e name: p11-kit evr: 0.23.22-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/p/pam-1.3.1-36.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/p/pam-1.3.1-39.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 1166826 - checksum: sha256:5a73a9d6ffbc3fa84853486a233e95765189dd0bf7b18059f2b8e763bfc8591f + size: 1185014 + checksum: sha256:dbbbd55c9700e19c59e4e425a6b6f08eb4cb77f68967e773b318a8dfbdfdfb93 name: pam - evr: 1.3.1-36.el8_10 + evr: 1.3.1-39.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/p/pcre-8.42-6.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 1617186 @@ -3588,18 +3588,18 @@ arches: checksum: sha256:0c18dcaadf6e9596e2b939ae9cc75db12df7919a01a204f314df315e384b0d4a name: python-pip evr: 9.0.3-24.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/p/python-setuptools-39.2.0-8.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/p/python-setuptools-39.2.0-9.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 868530 - checksum: sha256:cd563238ca4ec7c288874e42d1506337e4917620ed83b1e4a2aec2fb6a5ea770 + size: 869180 + checksum: sha256:31ae9c84f36f7d4e51b0e945e5d12210594defd3ea16cf5645c21d42fd6332fa name: python-setuptools - evr: 39.2.0-8.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/p/python3-3.6.8-69.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/p/python3-3.6.8-71.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 19223254 - checksum: sha256:4578b972df16aa25dae9170d339d86792c59612f29e0726ead0107ed7347ba3a + size: 19241145 + checksum: sha256:e7012ea23f3816772d64357f7db534f83c55279bcbefdecaefe2573d4734c6a3 name: python3 - evr: 3.6.8-69.el8_10 + evr: 3.6.8-71.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/r/readline-7.0-10.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 2937518 @@ -3630,30 +3630,30 @@ arches: checksum: sha256:72f87a1c0c92c9486bdb3748db880281fcc1f947bbedb99edbcebf189e4a5c40 name: setup evr: 2.12.2-9.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/s/shadow-utils-4.6-22.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/s/shadow-utils-4.6-23.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 1845120 - checksum: sha256:140a4273738ea9cfd1fc5627ebd66ad1696a5e3c959092b41bf5dc6d7657d8a6 + size: 1845199 + checksum: sha256:1f73218c7981d0fe5008adfb4b8460626ba2dfe43c4075f50045c48f8d9e30cd name: shadow-utils - evr: 2:4.6-22.el8 + evr: 2:4.6-23.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/s/shared-mime-info-1.9-4.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 644720 checksum: sha256:b070925e9e0d4824b3c0ed86bad64f77daf954ec359260789fe8f8150ef402c6 name: shared-mime-info evr: 1.9-4.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/s/sqlite-3.26.0-19.el8_9.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/s/sqlite-3.26.0-20.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 23592377 - checksum: sha256:d4bd6ea502814941a714ab1f40e87d8f48fc4a362b344ca928f3c2f514fdf024 + size: 23592583 + checksum: sha256:26dc49ea369dc145166e0a3959cc132f45e3345b99a75420c8932af24f44668c name: sqlite - evr: 3.26.0-19.el8_9 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/s/systemd-239-82.el8_10.5.src.rpm + evr: 3.26.0-20.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/s/systemd-239-82.el8_10.8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 9161850 - checksum: sha256:a20ae7bd2f13fd756b2389ec6ba6f84e6a9be28df01b5a7d04dab93b492a0eab + size: 9188443 + checksum: sha256:a3ade60f73bb3137b94ac38205c321511b70e2bf61b79e2a25e31015fb415844 name: systemd - evr: 239-82.el8_10.5 + evr: 239-82.el8_10.8 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/t/texinfo-6.5-7.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 4544531 @@ -3666,24 +3666,24 @@ arches: checksum: sha256:ad79eab11673ac2f172276a993d98f2bf98c77728863f656d7cc0ab595d5b593 name: trousers evr: 0.3.15-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/t/tzdata-2025b-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/t/tzdata-2025c-1.el8.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 946701 - checksum: sha256:2f0ba51d371713287a690d9d1635b534113258aa2571862603d52870c1c8b60d + size: 960798 + checksum: sha256:c9798a08b98344921713d3183bda98727df494d83f96924604b6b755ddc30f61 name: tzdata - evr: 2025b-1.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/u/util-linux-2.32.1-46.el8.src.rpm + evr: 2025c-1.el8 + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/u/util-linux-2.32.1-47.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 4816801 - checksum: sha256:3fb688481dd062d917d8119cd64582a9e6ffa6736a6dbbf956d038a9115c6004 + size: 4817466 + checksum: sha256:e10e379f1386bdd6315e20cf735616747690c137ada562f47da85ca90ea966ee name: util-linux - evr: 2.32.1-46.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/w/which-2.21-20.el8.src.rpm + evr: 2.32.1-47.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/w/which-2.21-21.el8_10.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms - size: 171457 - checksum: sha256:70aca3ef4713172514dbe5334bd56b29a988e736211e946219f5d965b31eebce + size: 171834 + checksum: sha256:e2c4d30905324f6c2aeecbafab802fd9bdb6c46d2aece65ff3b17c1ec21ecbdf name: which - evr: 2.21-20.el8 + evr: 2.21-21.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/baseos/source/SRPMS/Packages/x/xz-5.2.4-4.el8_6.src.rpm repoid: rhel-8-for-ppc64le-baseos-source-rpms size: 1077113 @@ -3703,19 +3703,19 @@ arches: name: zstd evr: 1.4.4-1.el8 module_metadata: - - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/repodata/dac69fc0bb96c5f9567f56eae8c2ad93b090dfb171ea41794974d86d0064d9ef-modules.yaml.gz + - url: https://cdn.redhat.com/content/dist/rhel8/8/ppc64le/appstream/os/repodata/2befc33e2f501e227d2db7a0882738ebc48eb73fdc31eafbc7677c0846e034b3-modules.yaml.gz repoid: rhel-8-for-ppc64le-appstream-rpms - size: 700156 - checksum: sha256:dac69fc0bb96c5f9567f56eae8c2ad93b090dfb171ea41794974d86d0064d9ef + size: 754812 + checksum: sha256:2befc33e2f501e227d2db7a0882738ebc48eb73fdc31eafbc7677c0846e034b3 - arch: s390x packages: - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/Packages/j/jq-1.6-9.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/Packages/j/jq-1.6-11.el8_10.s390x.rpm repoid: rhel-8-for-s390x-appstream-rpms - size: 212528 - checksum: sha256:aad8810d11b39e8e4b035165b311a166af65a202ca31ac8732cbb8ab20952ee3 + size: 213148 + checksum: sha256:975481360f19614d4d7d0eb843aa030f11ca47d4858c2d744ffb3a6c0cf718b0 name: jq - evr: 1.6-9.el8_10 - sourcerpm: jq-1.6-9.el8_10.src.rpm + evr: 1.6-11.el8_10 + sourcerpm: jq-1.6-11.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/Packages/l/libxkbcommon-0.9.1-1.el8.s390x.rpm repoid: rhel-8-for-s390x-appstream-rpms size: 113364 @@ -3786,20 +3786,20 @@ arches: name: perl-libnet evr: 3.11-3.el8 sourcerpm: perl-libnet-3.11-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/Packages/p/postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/Packages/p/postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.s390x.rpm repoid: rhel-8-for-s390x-appstream-rpms - size: 1759351 - checksum: sha256:6a2a881ed3531c61163b967ae6a9c8401e6ae5b1817fac9f2520269661ea0df2 + size: 1782631 + checksum: sha256:f0afab8138e3ce7ab6bb930e9a3ac03f03c1616abedbca3390c0fde2a3f39479 name: postgresql - evr: 15.12-1.module+el8.10.0+22871+d29fc53a - sourcerpm: postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/Packages/p/postgresql-private-libs-15.12-1.module+el8.10.0+22871+d29fc53a.s390x.rpm + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 + sourcerpm: postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/Packages/p/postgresql-private-libs-15.15-1.module+el8.10.0+23782+2d6b2a31.s390x.rpm repoid: rhel-8-for-s390x-appstream-rpms - size: 129371 - checksum: sha256:08afc856a32ef4f48fc57eea5b2dcb024be3a41029b01223bf9f0afce25b860a + size: 128795 + checksum: sha256:32f31046e29c5dc0d48ae70fd732028069dbb5d6531a2bd72b538b850f27ffd1 name: postgresql-private-libs - evr: 15.12-1.module+el8.10.0+22871+d29fc53a - sourcerpm: postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 + sourcerpm: postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/Packages/x/xkeyboard-config-2.28-1.el8.noarch.rpm repoid: rhel-8-for-s390x-appstream-rpms size: 801000 @@ -3814,13 +3814,13 @@ arches: name: acl evr: 2.2.53-3.el8 sourcerpm: acl-2.2.53-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/a/audit-libs-3.1.2-1.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/a/audit-libs-3.1.2-1.el8_10.1.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 122840 - checksum: sha256:348be207c3584e744ff0f59cb468bd41973398e0280db2868cce49ec6e414436 + size: 123088 + checksum: sha256:f8a736076a1a04645a6c24d1a90ca3530ec28986a67f653d3b4bb597ffdd29ee name: audit-libs - evr: 3.1.2-1.el8 - sourcerpm: audit-3.1.2-1.el8.src.rpm + evr: 3.1.2-1.el8_10.1 + sourcerpm: audit-3.1.2-1.el8_10.1.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/b/basesystem-11-5.el8.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 10756 @@ -3828,13 +3828,13 @@ arches: name: basesystem evr: 11-5.el8 sourcerpm: basesystem-11-5.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/b/bash-4.4.20-5.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/b/bash-4.4.20-6.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1612528 - checksum: sha256:7607cf5b61b01d6058147e40b197e0e8df763746882e0fe691537950bdab91c5 + size: 1612572 + checksum: sha256:f19a954ce8eeea4b4cc2cc46f448e6d3d31614cb3f464a47d24d224ee4ebd21d name: bash - evr: 4.4.20-5.el8 - sourcerpm: bash-4.4.20-5.el8.src.rpm + evr: 4.4.20-6.el8_10 + sourcerpm: bash-4.4.20-6.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/b/brotli-1.0.6-3.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 323352 @@ -3849,13 +3849,13 @@ arches: name: bzip2-libs evr: 1.0.6-28.el8_10 sourcerpm: bzip2-1.0.6-28.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1006212 - checksum: sha256:5b97c63d4978f82a8d73cb83c81c438d69309bc929d35c6bebf5868f128da13f + size: 1048264 + checksum: sha256:01d249b3d9889ab05adea246a1e84571e817013e06b24bbfc4bb42a1d7d8aa50 name: ca-certificates - evr: 2024.2.69_v8.0.303-80.0.el8_10 - sourcerpm: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.src.rpm + evr: 2025.2.80_v9.0.304-80.2.el8_10 + sourcerpm: ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/chkconfig-1.19.2-1.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 201200 @@ -3863,20 +3863,20 @@ arches: name: chkconfig evr: 1.19.2-1.el8 sourcerpm: chkconfig-1.19.2-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/coreutils-8.30-15.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/coreutils-8.30-16.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1246652 - checksum: sha256:f97f9dae4064ad495d10733ed152bfa520cab09eac99732a1b2b13963d2b244a + size: 1245376 + checksum: sha256:d88dd6e3dc2b74102bc628522646ff610450a46c29fac1cd3c74fd64f2642b29 name: coreutils - evr: 8.30-15.el8 - sourcerpm: coreutils-8.30-15.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/coreutils-common-8.30-15.el8.s390x.rpm + evr: 8.30-16.el8_10 + sourcerpm: coreutils-8.30-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/coreutils-common-8.30-16.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 2092220 - checksum: sha256:08d68a219cf2fd4ac6b0c0f503535cebf494cfd3db04ab85caf54323828bd7f2 + size: 2091268 + checksum: sha256:176bb249783d66b6783a059bd747840f5865f1de951cf9ba38012c9af6e62100 name: coreutils-common - evr: 8.30-15.el8 - sourcerpm: coreutils-8.30-15.el8.src.rpm + evr: 8.30-16.el8_10 + sourcerpm: coreutils-8.30-16.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/cracklib-2.9.6-15.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 95348 @@ -3912,13 +3912,13 @@ arches: name: cryptsetup-libs evr: 2.3.7-7.el8 sourcerpm: cryptsetup-2.3.7-7.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/curl-7.61.1-34.el8_10.3.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/curl-7.61.1-34.el8_10.9.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 359508 - checksum: sha256:caf51eb9d33122711339585a17aa4c2b2c14bd1af4c2ae52e30006a9f82641f0 + size: 359204 + checksum: sha256:deb89d87cdc83b3ed7c9206c5f3b6a148c6e0de82eaa7bff235d7838910e176c name: curl - evr: 7.61.1-34.el8_10.3 - sourcerpm: curl-7.61.1-34.el8_10.3.src.rpm + evr: 7.61.1-34.el8_10.9 + sourcerpm: curl-7.61.1-34.el8_10.9.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/c/cyrus-sasl-lib-2.1.27-6.el8_5.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 123440 @@ -3926,55 +3926,55 @@ arches: name: cyrus-sasl-lib evr: 2.1.27-6.el8_5 sourcerpm: cyrus-sasl-2.1.27-6.el8_5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-1.12.8-26.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-1.12.8-27.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 43280 - checksum: sha256:12653743cb6b1bea58cf3627c26b57a52df01a0fc8a74b4fa8349e7ab79c07b0 + size: 43416 + checksum: sha256:1d3c9a51808e5deb6dac5459e224cf5d93f24e600d8b25954c44b56b8c21bfbf name: dbus - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-common-1.12.8-26.el8.noarch.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-common-1.12.8-27.el8_10.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 48092 - checksum: sha256:3093c5c1356bc92805a6821f9242a7fc947bbaa1ff427d310dc397f4ea38ef3e + size: 48248 + checksum: sha256:e741b39006a6443632979bbebb15255798c45dbc65c61a09e31698df98fdd272 name: dbus-common - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-daemon-1.12.8-26.el8.s390x.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-daemon-1.12.8-27.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 238132 - checksum: sha256:470018905cd5a912426c8b26cb81d8520e300f2493ac1c4a66e124b5baed84bc + size: 238604 + checksum: sha256:06d95f0314744b07085762501412b9818e7a55990d89491c155a0064d68be887 name: dbus-daemon - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-libs-1.12.8-26.el8.s390x.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-libs-1.12.8-27.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 182504 - checksum: sha256:d9239895fd683dbfe1305c627666809715a11e3aa666cddb0f72e34c3560b2ed + size: 182632 + checksum: sha256:4d381fef108df6e463dc0aa6749d898657453d5ed36d19ff37072cf6a7b8d907 name: dbus-libs - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-tools-1.12.8-26.el8.s390x.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/dbus-tools-1.12.8-27.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 86564 - checksum: sha256:4e9353bc22818392ad8a0c061d87cdda758af9da9729ce38651b40842dc78871 + size: 86728 + checksum: sha256:ec998bbef324bebdcad999ee2f271757b4818375e69c1ec991a4ea5133353434 name: dbus-tools - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/device-mapper-1.02.181-15.el8_10.s390x.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/device-mapper-1.02.181-15.el8_10.2.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 382964 - checksum: sha256:d9148c54a6bae4f44dc0cc95e7953d6742a507687ac4278b1516b65f3dc564f7 + size: 383276 + checksum: sha256:922dfc2ec369944152bd17078c901d709dbaec818f02a21ce7fce96d24820a21 name: device-mapper - evr: 8:1.02.181-15.el8_10 - sourcerpm: lvm2-2.03.14-15.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/device-mapper-libs-1.02.181-15.el8_10.s390x.rpm + evr: 8:1.02.181-15.el8_10.2 + sourcerpm: lvm2-2.03.14-15.el8_10.2.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/device-mapper-libs-1.02.181-15.el8_10.2.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 408604 - checksum: sha256:2be8567606d7f5326634f3be538b406ee7d03febfa27747fe894eb31aec3a832 + size: 408880 + checksum: sha256:a25311e54344b073e5bb455a640ff79214616edbbf4f4121fffa6de9f6148782 name: device-mapper-libs - evr: 8:1.02.181-15.el8_10 - sourcerpm: lvm2-2.03.14-15.el8_10.src.rpm + evr: 8:1.02.181-15.el8_10.2 + sourcerpm: lvm2-2.03.14-15.el8_10.2.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/d/diffutils-3.6-6.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 364352 @@ -4017,27 +4017,27 @@ arches: name: ethtool evr: 2:5.13-2.el8 sourcerpm: ethtool-5.13-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/e/expat-2.2.5-17.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/e/expat-2.5.0-1.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 112836 - checksum: sha256:14984a7a7991b4c31d71c853e6390386bed64d70b00616e1c3f8761d271b9663 + size: 129316 + checksum: sha256:557227064a4eeb6065f44be3e84f1320540bf816d4790bc328995e69992b2319 name: expat - evr: 2.2.5-17.el8_10 - sourcerpm: expat-2.2.5-17.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/f/file-5.33-26.el8.s390x.rpm + evr: 2.5.0-1.el8_10 + sourcerpm: expat-2.5.0-1.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/f/file-5.33-27.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 79028 - checksum: sha256:6867ff45a6e9affb79908c5412c3e44a5e604988d1fb52e9a909c49df989332f + size: 79180 + checksum: sha256:fe03bf5467f379f3d1605882edc36e44991eb4612fad46a293e1f7a1bf3e8695 name: file - evr: 5.33-26.el8 - sourcerpm: file-5.33-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/f/file-libs-5.33-26.el8.s390x.rpm + evr: 5.33-27.el8_10 + sourcerpm: file-5.33-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/f/file-libs-5.33-27.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 554644 - checksum: sha256:c87bc137abea1ca77924475fede97a2e00a2f48b9deadee7d632af8466d70c23 + size: 554756 + checksum: sha256:45261ad26b62dedd93c3ea30ee73b741077de532c0d56ab2ad98d60f728dba60 name: file-libs - evr: 5.33-26.el8 - sourcerpm: file-5.33-26.el8.src.rpm + evr: 5.33-27.el8_10 + sourcerpm: file-5.33-27.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/f/filesystem-3.8-6.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 1135720 @@ -4045,13 +4045,13 @@ arches: name: filesystem evr: 3.8-6.el8 sourcerpm: filesystem-3.8-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/f/findutils-4.6.0-23.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/f/findutils-4.6.0-24.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 535572 - checksum: sha256:b23855a924a4df2772243a707899f96220f5072443cfb57f80ed3a8db5e9d4e4 + size: 534300 + checksum: sha256:ad5056cc34d6e9ba28bf8a2f4006002cc96d6d99d3de88b39ac1c683fa01c3d4 name: findutils - evr: 1:4.6.0-23.el8_10 - sourcerpm: findutils-4.6.0-23.el8_10.src.rpm + evr: 1:4.6.0-24.el8_10 + sourcerpm: findutils-4.6.0-24.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/f/fuse3-libs-3.3.0-19.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 93052 @@ -4080,41 +4080,41 @@ arches: name: gdbm-libs evr: 1:1.18-2.el8 sourcerpm: gdbm-1.18-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glib2-2.56.4-165.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glib2-2.56.4-167.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 2532432 - checksum: sha256:1420489ff0dc0f74fcdc71d4b3f47df74bf4ebc8b3a5bf0e2785cbf826641271 + size: 2533872 + checksum: sha256:2a62ce51041c154b6fd8eb53d047282f8a24c564bdea96e03bda3f2b0073d468 name: glib2 - evr: 2.56.4-165.el8_10 - sourcerpm: glib2-2.56.4-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glibc-2.28-251.el8_10.16.s390x.rpm + evr: 2.56.4-167.el8_10 + sourcerpm: glib2-2.56.4-167.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glibc-2.28-251.el8_10.27.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1875436 - checksum: sha256:eb2e1d9b0f6ca8aea4dfe91395cb0327054a029992b33f6bc6dfe164826b9af1 + size: 1876988 + checksum: sha256:c944278e98456a7a28df9b3e3210e717f19111152be728bbe6e0bdd5d1ca8e93 name: glibc - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glibc-all-langpacks-2.28-251.el8_10.16.s390x.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glibc-all-langpacks-2.28-251.el8_10.27.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 25899504 - checksum: sha256:36c9464c1d6c6503405f28bc2234412e17f9cdf3b73fb31434782a221913a5e1 + size: 25900128 + checksum: sha256:da42288138b51afe5d7473ba4f69a87044a91f0cca7a91c34fc94efc1c7a67d6 name: glibc-all-langpacks - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glibc-common-2.28-251.el8_10.16.s390x.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glibc-common-2.28-251.el8_10.27.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1220648 - checksum: sha256:2437a444b3f2f2ae873f6508df18e7771cecb81e2747429270ed7f21a4eafe3f + size: 1220936 + checksum: sha256:610bc4457f38e9b31bb3014ad3d8429a3c59cf20a5fb7807643796831a4c6006 name: glibc-common - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glibc-gconv-extra-2.28-251.el8_10.16.s390x.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/glibc-gconv-extra-2.28-251.el8_10.27.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1587520 - checksum: sha256:72436678c68b51ac4bf1c52385454e75130015f0ac0029120dfe7265fd50080b + size: 1588036 + checksum: sha256:1c8a4dcadc9c7a6a4ffdba6737bb7195b9948dba6fcb7bc68d235632d5a1b68e name: glibc-gconv-extra - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/gmp-6.1.2-11.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 288604 @@ -4122,13 +4122,13 @@ arches: name: gmp evr: 1:6.1.2-11.el8 sourcerpm: gmp-6.1.2-11.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/gnutls-3.6.16-8.el8_10.3.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/gnutls-3.6.16-8.el8_10.4.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 927232 - checksum: sha256:edf01d1c367b63cf02ee778145fc48f189b2782946202c33b2c364682eb6aa0e + size: 926672 + checksum: sha256:7db1f4bc61e6aa6c8ed8575b6586a69f0e78f6c42c2cfefcefda4cf07b747cc3 name: gnutls - evr: 3.6.16-8.el8_10.3 - sourcerpm: gnutls-3.6.16-8.el8_10.3.src.rpm + evr: 3.6.16-8.el8_10.4 + sourcerpm: gnutls-3.6.16-8.el8_10.4.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/g/grep-3.1-6.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 278780 @@ -4185,13 +4185,13 @@ arches: name: kmod-libs evr: 25-20.el8 sourcerpm: kmod-25-20.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/k/krb5-libs-1.18.2-31.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/k/krb5-libs-1.18.2-32.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 829692 - checksum: sha256:a67543db9f817984764a34595caef2169b9372c40875758db1ab07ad9a405b1e + size: 830524 + checksum: sha256:00e90ebdcf62245f5e3ba4474e93c3281fbe8987191852b414a3e79e4a4cf463 name: krb5-libs - evr: 1.18.2-31.el8_10 - sourcerpm: krb5-1.18.2-31.el8_10.src.rpm + evr: 1.18.2-32.el8_10 + sourcerpm: krb5-1.18.2-32.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libacl-2.2.53-3.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 35484 @@ -4199,13 +4199,13 @@ arches: name: libacl evr: 2.2.53-3.el8 sourcerpm: acl-2.2.53-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libarchive-3.3.3-5.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libarchive-3.3.3-6.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 352672 - checksum: sha256:7491fa9e409834b62fe4376ebf0681e02027d41e8541590f6e943107cd69bcbb + size: 351552 + checksum: sha256:49d820bd623c6eb8465d785b110c0989fd280bb598f46c0b511deed2a5746cf9 name: libarchive - evr: 3.3.3-5.el8 - sourcerpm: libarchive-3.3.3-5.el8.src.rpm + evr: 3.3.3-6.el8_10 + sourcerpm: libarchive-3.3.3-6.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libattr-2.4.48-3.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 27136 @@ -4213,13 +4213,13 @@ arches: name: libattr evr: 2.4.48-3.el8 sourcerpm: attr-2.4.48-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libblkid-2.32.1-46.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libblkid-2.32.1-47.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 218432 - checksum: sha256:ca3d91333a4b45644b78cdf9bf0451268531ccd8ac4f2477e832499f36915afc + size: 217464 + checksum: sha256:8a29b8ce7cafb898bcc8a3998eb1faf948538d4e293902eb36cd8caeaa732ca8 name: libblkid - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libcap-2.48-6.el8_9.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 75024 @@ -4234,20 +4234,20 @@ arches: name: libcap-ng evr: 0.7.11-1.el8 sourcerpm: libcap-ng-0.7.11-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libcom_err-1.45.6-5.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libcom_err-1.45.6-7.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 50292 - checksum: sha256:2d6b2829b00326934e8b149958d1042704d7e79fcb9538b489a7b0de93605c16 + size: 49432 + checksum: sha256:01cc0b4a9ade73f13ef87271d12304f18382570afcdbde18ddff51bde5e2b5de name: libcom_err - evr: 1.45.6-5.el8 - sourcerpm: e2fsprogs-1.45.6-5.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libcurl-7.61.1-34.el8_10.3.s390x.rpm + evr: 1.45.6-7.el8_10 + sourcerpm: e2fsprogs-1.45.6-7.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libcurl-7.61.1-34.el8_10.9.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 295448 - checksum: sha256:89c1381e99e6a961bc6c0d9f2596ade4e963385451e41342f78f92e47b9532fa + size: 295252 + checksum: sha256:46d9a691c61bce34ce30e39ae3bb9fb7ca744dbc0c8fc2fe01522ab79aca1867 name: libcurl - evr: 7.61.1-34.el8_10.3 - sourcerpm: curl-7.61.1-34.el8_10.3.src.rpm + evr: 7.61.1-34.el8_10.9 + sourcerpm: curl-7.61.1-34.el8_10.9.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libdb-5.3.28-42.el8_4.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 704836 @@ -4262,13 +4262,13 @@ arches: name: libdb-utils evr: 5.3.28-42.el8_4 sourcerpm: libdb-5.3.28-42.el8_4.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libfdisk-2.32.1-46.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libfdisk-2.32.1-47.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 250224 - checksum: sha256:c5d6ee8b8e11fa183f249251dbca889caa9124372e769c7415cdd6f8be150192 + size: 249252 + checksum: sha256:ace74b38dd4fc20e28ac047ac97b895189cfba9f7f6af1fa19ad3883c4a294e4 name: libfdisk - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libffi-3.1-24.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 36696 @@ -4276,13 +4276,13 @@ arches: name: libffi evr: 3.1-24.el8 sourcerpm: libffi-3.1-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libgcc-8.5.0-26.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libgcc-8.5.0-28.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 67824 - checksum: sha256:f6d52626d807702185fc25a3bb10109f9021442d82385fb857642725bb8fc4d6 + size: 68068 + checksum: sha256:cdde9e600223c1fdbfc3a180be5587efd627cc8704c3be29899677cec4d443c9 name: libgcc - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libgcrypt-1.8.5-7.el8_6.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 399888 @@ -4311,13 +4311,13 @@ arches: name: libmnl evr: 1.0.4-6.el8 sourcerpm: libmnl-1.0.4-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libmount-2.32.1-46.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libmount-2.32.1-47.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 234100 - checksum: sha256:774b0d1a7f919f711bfbde3ba4215724ab7e371675a3c8ba8b144ee14beb44b8 + size: 233224 + checksum: sha256:8ad944179fb0335b551cc6d7de8da6186b9b6f13f89898c6dbb71103f923776d name: libmount - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libnghttp2-1.33.0-6.el8_10.1.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 76440 @@ -4360,13 +4360,13 @@ arches: name: libselinux evr: 2.9-10.el8_10 sourcerpm: libselinux-2.9-10.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libsemanage-2.9-11.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libsemanage-2.9-12.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 168292 - checksum: sha256:2f5a1f493935b3d46cda7d8335e21782d2d357cbd000507c58cd6fd9fd6024d0 + size: 168384 + checksum: sha256:d1641c4dbad9359d04bcc0f6d06ce3d8335073c867d8de376d8120e9549ab67c name: libsemanage - evr: 2.9-11.el8_10 - sourcerpm: libsemanage-2.9-11.el8_10.src.rpm + evr: 2.9-12.el8_10 + sourcerpm: libsemanage-2.9-12.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libsepol-2.9-3.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 323812 @@ -4381,34 +4381,34 @@ arches: name: libsigsegv evr: 2.11-5.el8 sourcerpm: libsigsegv-2.11-5.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libsmartcols-2.32.1-46.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libsmartcols-2.32.1-47.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 179604 - checksum: sha256:056af1b75b452c62146ffc711ae44467c5289f5637132421f759baff56a41937 + size: 178524 + checksum: sha256:f9e67d9af7a2e93b3ff169d4998828956ac51c55b85405282913bcfcb322f501 name: libsmartcols - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libssh-0.9.6-14.el8.s390x.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libssh-0.9.6-16.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 209516 - checksum: sha256:05734cf33939986e279a19daaa55e142214273b5c27c13f6139081b70f1028db + size: 208564 + checksum: sha256:8f51b2c41b1d960278171ec5df483cffc538f4edc8ca0a1bc366d1d7d87e2e12 name: libssh - evr: 0.9.6-14.el8 - sourcerpm: libssh-0.9.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libssh-config-0.9.6-14.el8.noarch.rpm + evr: 0.9.6-16.el8_10 + sourcerpm: libssh-0.9.6-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libssh-config-0.9.6-16.el8_10.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 21548 - checksum: sha256:e8281fb82a512c0bbfdd4bbd0f7f9657fce2ad547189fb93d0a0bf814173a2a4 + size: 20644 + checksum: sha256:2471adc5113ee9a2ff70bbbd3c9ef2a8d63e2da99bcfb00566b0869b2f037d27 name: libssh-config - evr: 0.9.6-14.el8 - sourcerpm: libssh-0.9.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libstdc++-8.5.0-26.el8_10.s390x.rpm + evr: 0.9.6-16.el8_10 + sourcerpm: libssh-0.9.6-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libstdc++-8.5.0-28.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 487456 - checksum: sha256:bb7abd2de6580bc25284e58f44d32fa4f7d6def10b20d69ce022bde7865e96e8 + size: 487712 + checksum: sha256:be6feb84fcb5ecb31d8b7444af28d3135b38ba09cc9925f735b7440cb085f0e3 name: libstdc++ - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libtasn1-4.13-5.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 77544 @@ -4437,13 +4437,13 @@ arches: name: libutempter evr: 1.1.6-14.el8 sourcerpm: libutempter-1.1.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libuuid-2.32.1-46.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libuuid-2.32.1-47.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 101748 - checksum: sha256:3cde4971e145902c007ab1a0cb544a674b51cc9ff9907a925c5bbce2c94e0479 + size: 100760 + checksum: sha256:187bf3a3f84fcb072e650ad7319304cc266965046f522b010345291b2fa6f551 name: libuuid - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libverto-0.3.2-2.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 23952 @@ -4458,13 +4458,13 @@ arches: name: libxcrypt evr: 4.1.1-6.el8 sourcerpm: libxcrypt-4.1.1-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libxml2-2.9.7-19.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libxml2-2.9.7-21.el8_10.3.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 663600 - checksum: sha256:10700e0618b65b381a6e2067d559b9bad07d37ca3aeaa2dba35e8e9983dee074 + size: 662776 + checksum: sha256:7727f6470297014fd6e2488078b8419a6fa9eb34988745280a5cfadcc6826c2c name: libxml2 - evr: 2.9.7-19.el8_10 - sourcerpm: libxml2-2.9.7-19.el8_10.src.rpm + evr: 2.9.7-21.el8_10.3 + sourcerpm: libxml2-2.9.7-21.el8_10.3.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/libzstd-1.4.4-1.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 248556 @@ -4479,13 +4479,13 @@ arches: name: lua-libs evr: 5.3.4-12.el8 sourcerpm: lua-5.3.4-12.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/lz4-libs-1.8.3-3.el8_4.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/l/lz4-libs-1.8.3-5.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 66908 - checksum: sha256:3cc27152e1f40c087ebdc8056f709d4fa2283e4950eff1cc1b2f5e7c34932a60 + size: 67860 + checksum: sha256:ceeb345dffc58157561eb6a4ee21a5677d8dbd237212f05b5c8a318ba47153d2 name: lz4-libs - evr: 1.8.3-3.el8_4 - sourcerpm: lz4-1.8.3-3.el8_4.src.rpm + evr: 1.8.3-5.el8_10 + sourcerpm: lz4-1.8.3-5.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/m/mpfr-3.1.6-1.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 224916 @@ -4528,20 +4528,20 @@ arches: name: openldap evr: 2.4.46-21.el8_10 sourcerpm: openldap-2.4.46-21.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/o/openssl-1.1.1k-14.el8_6.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/o/openssl-1.1.1k-14.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 714804 - checksum: sha256:2f7e70c08d50e1f6314e5d130d77c6285e3133c57903ee692e49579ecf09963b + size: 713908 + checksum: sha256:671a1a421599b359980a8b9385653636673a9bd2d3fccef8cd3619d529d5a7ae name: openssl - evr: 1:1.1.1k-14.el8_6 - sourcerpm: openssl-1.1.1k-14.el8_6.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/o/openssl-libs-1.1.1k-14.el8_6.s390x.rpm + evr: 1:1.1.1k-14.el8_10 + sourcerpm: openssl-1.1.1k-14.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/o/openssl-libs-1.1.1k-14.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1214152 - checksum: sha256:1d4a53c1b5aebd49857e16f7ba74a9263147df4e646883e8dc570ae454f273e1 + size: 1213744 + checksum: sha256:5afefe16ce70e9284ed2dfca9829c1392875c721ce50bd354882d28f051048a5 name: openssl-libs - evr: 1:1.1.1k-14.el8_6 - sourcerpm: openssl-1.1.1k-14.el8_6.src.rpm + evr: 1:1.1.1k-14.el8_10 + sourcerpm: openssl-1.1.1k-14.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/o/openssl-pkcs11-0.4.10-3.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 65896 @@ -4563,13 +4563,13 @@ arches: name: p11-kit-trust evr: 0.23.22-2.el8 sourcerpm: p11-kit-0.23.22-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/pam-1.3.1-36.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/pam-1.3.1-39.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 745460 - checksum: sha256:55a9cb4fe1cdc62ba299196e2e74d01f111964f1dfc4a041826421686cdcf118 + size: 745912 + checksum: sha256:acce7bdddf4ac5c3a25f3042f3f90b490cf0e575c246d0b659a13699fe97e11f name: pam - evr: 1.3.1-36.el8_10 - sourcerpm: pam-1.3.1-36.el8_10.src.rpm + evr: 1.3.1-39.el8_10 + sourcerpm: pam-1.3.1-39.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/pcre-8.42-6.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 133532 @@ -4605,13 +4605,13 @@ arches: name: perl-Encode evr: 4:2.97-3.el8 sourcerpm: perl-Encode-2.97-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-Errno-1.28-422.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-Errno-1.28-423.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 78352 - checksum: sha256:445eb62fa7c7cf3af9f6865dd9bb6758ae35d327557a48f3c5671b130b02a9a5 + size: 78552 + checksum: sha256:f60c79489fb824b5101c5108256d9e6a6378869d4b2f72de951de83d6b61cc2e name: perl-Errno - evr: 1.28-422.el8 - sourcerpm: perl-5.26.3-422.el8.src.rpm + evr: 1.28-423.el8_10 + sourcerpm: perl-5.26.3-423.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-Exporter-5.72-396.el8.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 34844 @@ -4647,13 +4647,13 @@ arches: name: perl-HTTP-Tiny evr: 0.074-3.el8 sourcerpm: perl-HTTP-Tiny-0.074-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-IO-1.38-422.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-IO-1.38-423.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 145432 - checksum: sha256:389a964fb8cdb4bc503679fc08fd21e13bc044dc14188ad0f5039246671fec78 + size: 145612 + checksum: sha256:44ed6f3703f3d9bd247f616f9a32d9a4eb14e3d2cccc0bd4a785a2d18a18be47 name: perl-IO - evr: 1.38-422.el8 - sourcerpm: perl-5.26.3-422.el8.src.rpm + evr: 1.38-423.el8_10 + sourcerpm: perl-5.26.3-423.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-MIME-Base64-3.15-396.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 31084 @@ -4766,27 +4766,27 @@ arches: name: perl-constant evr: 1.33-396.el8 sourcerpm: perl-constant-1.33-396.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-interpreter-5.26.3-422.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-interpreter-5.26.3-423.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 6607440 - checksum: sha256:69dd0edadb5a394fd6b4f73738b7d50ac8dbcea1adbe9400869b0c2b92b11065 + size: 6608148 + checksum: sha256:c14e38b17676af74e832879344569d3a3de70db88ab2093f1729ed1ec0059341 name: perl-interpreter - evr: 4:5.26.3-422.el8 - sourcerpm: perl-5.26.3-422.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-libs-5.26.3-422.el8.s390x.rpm + evr: 4:5.26.3-423.el8_10 + sourcerpm: perl-5.26.3-423.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-libs-5.26.3-423.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1559584 - checksum: sha256:07169949751526936b116b708f966bde68d4c6bc90e858f84655a26f7077fdb3 + size: 1559160 + checksum: sha256:b94bccb30f7dc32b0f357085d9650f07bf9c2105f83155ec777f2110c79c4125 name: perl-libs - evr: 4:5.26.3-422.el8 - sourcerpm: perl-5.26.3-422.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-macros-5.26.3-422.el8.s390x.rpm + evr: 4:5.26.3-423.el8_10 + sourcerpm: perl-5.26.3-423.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-macros-5.26.3-423.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 74272 - checksum: sha256:ec05eb57d2548a55f04fbf8a342d37f9de955d26942760caef9a8dc243b70fa8 + size: 74456 + checksum: sha256:484ae21f5266c2a7dbabf89ea40744142e5924fecf0569db7712f46f2a1b8bae name: perl-macros - evr: 4:5.26.3-422.el8 - sourcerpm: perl-5.26.3-422.el8.src.rpm + evr: 4:5.26.3-423.el8_10 + sourcerpm: perl-5.26.3-423.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/perl-parent-0.237-1.el8.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 20520 @@ -4815,13 +4815,13 @@ arches: name: perl-threads-shared evr: 1.58-2.el8 sourcerpm: perl-threads-shared-1.58-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/platform-python-3.6.8-69.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/platform-python-3.6.8-71.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 90460 - checksum: sha256:f255ce5184ff5b088b7b45d91059f2046ce5a37160da744b1d69d8e943cc81d3 + size: 89660 + checksum: sha256:22867ac3e41db8b68fc13a3400e371c2e2702a76009a5c24c95c1325e5ec6138 name: platform-python - evr: 3.6.8-69.el8_10 - sourcerpm: python3-3.6.8-69.el8_10.src.rpm + evr: 3.6.8-71.el8_10 + sourcerpm: python3-3.6.8-71.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/platform-python-pip-9.0.3-24.el8.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 1633024 @@ -4829,13 +4829,13 @@ arches: name: platform-python-pip evr: 9.0.3-24.el8 sourcerpm: python-pip-9.0.3-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/platform-python-setuptools-39.2.0-8.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/platform-python-setuptools-39.2.0-9.el8_10.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 647476 - checksum: sha256:8f330a8602613473b6e4c0bc57cb3012932a9a9399ea7a3fa65175453a6580ab + size: 647688 + checksum: sha256:c809d773ee4709e911391552c2a162d04381848603a69102eb785a235b1c66be name: platform-python-setuptools - evr: 39.2.0-8.el8_10 - sourcerpm: python-setuptools-39.2.0-8.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + sourcerpm: python-setuptools-39.2.0-9.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/popt-1.18-1.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 63160 @@ -4850,13 +4850,13 @@ arches: name: publicsuffix-list-dafsa evr: 20180723-1.el8 sourcerpm: publicsuffix-list-20180723-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/python3-libs-3.6.8-69.el8_10.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/python3-libs-3.6.8-71.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 8056656 - checksum: sha256:a96774ec3ec82368256af00c95a03a0ebaff33eb360fa708532f41315af7eb43 + size: 8057676 + checksum: sha256:eb9bf761561e1d4fe6350953c4a8d87ed1f56d97ac35343d525074d3d359083c name: python3-libs - evr: 3.6.8-69.el8_10 - sourcerpm: python3-3.6.8-69.el8_10.src.rpm + evr: 3.6.8-71.el8_10 + sourcerpm: python3-3.6.8-71.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/python3-pip-wheel-9.0.3-24.el8.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 886996 @@ -4864,13 +4864,13 @@ arches: name: python3-pip-wheel evr: 9.0.3-24.el8 sourcerpm: python-pip-9.0.3-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/python3-setuptools-wheel-39.2.0-8.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/p/python3-setuptools-wheel-39.2.0-9.el8_10.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 296040 - checksum: sha256:833dcb68b1eea48bfb8853886236753647743258fd74cc538ffa72408aab9213 + size: 296208 + checksum: sha256:eed50a1612ab8303c50f62d7c3409020b2ff829037cc651725562afa95e56e05 name: python3-setuptools-wheel - evr: 39.2.0-8.el8_10 - sourcerpm: python-setuptools-39.2.0-8.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + sourcerpm: python-setuptools-39.2.0-9.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/r/readline-7.0-10.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 202508 @@ -4906,27 +4906,27 @@ arches: name: rpm-libs evr: 4.14.3-32.el8_10 sourcerpm: rpm-4.14.3-32.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/s390utils-base-2.29.0-3.el8_10.1.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/s390utils-base-2.29.0-3.el8_10.3.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 3145168 - checksum: sha256:d9e96d24766f7786fd261dde753f19a052e002f8191486a5d7e2cb8251bf678b + size: 3143836 + checksum: sha256:038d666cbdaffb99d0f607e97ca34a55bd7b56528341854f7f209280efb36114 name: s390utils-base - evr: 2:2.29.0-3.el8_10.1 - sourcerpm: s390utils-2.29.0-3.el8_10.1.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/s390utils-core-2.29.0-3.el8_10.1.s390x.rpm + evr: 2:2.29.0-3.el8_10.3 + sourcerpm: s390utils-2.29.0-3.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/s390utils-core-2.29.0-3.el8_10.3.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 492464 - checksum: sha256:198b0f5533ad0bed7667eb8f8ff8c0133a1a3c6105fff20145ed02507b599418 + size: 491788 + checksum: sha256:c8d7d1382d16a13e6952c08ed6b62dcc354f16bb12d0adb1657473cebcde7cf7 name: s390utils-core - evr: 2:2.29.0-3.el8_10.1 - sourcerpm: s390utils-2.29.0-3.el8_10.1.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/s390utils-se-data-2.29.0-3.el8_10.1.noarch.rpm + evr: 2:2.29.0-3.el8_10.3 + sourcerpm: s390utils-2.29.0-3.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/s390utils-se-data-2.29.0-3.el8_10.3.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 57180 - checksum: sha256:ad0716f0d2d16e20e413972140ca581ef2ffc34e5a4f803178390c25dc7ee605 + size: 56388 + checksum: sha256:05e7e8241d1cb0955239bb2570c6294c9d6583ea03e2695ad681cc67c905d9cb name: s390utils-se-data - evr: 2:2.29.0-3.el8_10.1 - sourcerpm: s390utils-2.29.0-3.el8_10.1.src.rpm + evr: 2:2.29.0-3.el8_10.3 + sourcerpm: s390utils-2.29.0-3.el8_10.3.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/sed-4.5-5.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 304464 @@ -4955,13 +4955,13 @@ arches: name: sg3_utils-libs evr: 1.44-6.el8 sourcerpm: sg3_utils-1.44-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/shadow-utils-4.6-22.el8.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/shadow-utils-4.6-23.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1270628 - checksum: sha256:760c020a571c1dfa7951b72375d35f4d57aca662151d56be383c8bbd71303171 + size: 1270700 + checksum: sha256:86f5d1c59319dbdc6872d94f0fb89f1fdfd6c8c4a942b540427e1e19e8244a34 name: shadow-utils - evr: 2:4.6-22.el8 - sourcerpm: shadow-utils-4.6-22.el8.src.rpm + evr: 2:4.6-23.el8_10 + sourcerpm: shadow-utils-4.6-23.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/shared-mime-info-1.9-4.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 335100 @@ -4969,41 +4969,41 @@ arches: name: shared-mime-info evr: 1.9-4.el8 sourcerpm: shared-mime-info-1.9-4.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/sqlite-libs-3.26.0-19.el8_9.s390x.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/sqlite-libs-3.26.0-20.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 568844 - checksum: sha256:b9cc7607b55ce704d4e86f0bc831f71288599443e016524a87a276ab771a6acb + size: 567956 + checksum: sha256:ec1440328f5d19a32c7b7ee783acdc24159f2edf0d1cee4d9dcfa707a0bf649d name: sqlite-libs - evr: 3.26.0-19.el8_9 - sourcerpm: sqlite-3.26.0-19.el8_9.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/systemd-239-82.el8_10.5.s390x.rpm + evr: 3.26.0-20.el8_10 + sourcerpm: sqlite-3.26.0-20.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/systemd-239-82.el8_10.8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 3519740 - checksum: sha256:612d4d8b5ebc4491d7cd7231e4139b71f481fde7d355e65666b9852e99a9504e + size: 3520204 + checksum: sha256:dd8d041a9dc0c0657ba446245f36e2aef4dfe36821d7678df431cc91e1389a44 name: systemd - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/systemd-libs-239-82.el8_10.5.s390x.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/systemd-libs-239-82.el8_10.8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 1063872 - checksum: sha256:3f5046b998abf0fb3c4ec0d39f5d02fb68f844936e71533eab8048b153fef3c6 + size: 1065440 + checksum: sha256:233b13eae1aa0000b2deafd6d1e95e6dfa352887833a710794ad9ce62f4aa027 name: systemd-libs - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/systemd-pam-239-82.el8_10.5.s390x.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/s/systemd-pam-239-82.el8_10.8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 485876 - checksum: sha256:c04ec1536e57aefc8f1cb7de4adb632c75f2f8ae5b1b76a53d39eea3a58b4221 + size: 487296 + checksum: sha256:0ef21f20d6154582fc178ecb94e9a326b53357ccd54e3c16eaa8d4dbad8cef34 name: systemd-pam - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/t/tar-1.30-9.el8.s390x.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/t/tar-1.30-11.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 853548 - checksum: sha256:1efadfc1d2113503b8b0e95939c4cb98a7e0095fb383dec2ac4bf652822a8d87 + size: 852716 + checksum: sha256:19658f59ed89e790423c0639d1bd39158e7fb20d86aef49765e81878708053ad name: tar - evr: 2:1.30-9.el8 - sourcerpm: tar-1.30-9.el8.src.rpm + evr: 2:1.30-11.el8_10 + sourcerpm: tar-1.30-11.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/t/trousers-0.3.15-2.el8.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 143856 @@ -5018,20 +5018,20 @@ arches: name: trousers-lib evr: 0.3.15-2.el8 sourcerpm: trousers-0.3.15-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/t/tzdata-2025b-1.el8.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/t/tzdata-2025c-1.el8.noarch.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 488428 - checksum: sha256:338539f7f0cd2770694153af81e2e65121b050a1bb555ad66a6fb6f562732602 + size: 560812 + checksum: sha256:e4b6cf905fb2111d9a45c3b6b95f6e0c5199bf9b3d576f2a06b4dcb49a63d55e name: tzdata - evr: 2025b-1.el8 - sourcerpm: tzdata-2025b-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/u/util-linux-2.32.1-46.el8.s390x.rpm + evr: 2025c-1.el8 + sourcerpm: tzdata-2025c-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/u/util-linux-2.32.1-47.el8_10.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms - size: 2499112 - checksum: sha256:b38a06ea761769397787d24ce03c654a379720ab805f58a3c54be52828f707e0 + size: 2497388 + checksum: sha256:b3adf172d10ca587a37806ba7f0ae4a65caaee9836014498b998a2a214e24d6b name: util-linux - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/os/Packages/x/xz-libs-5.2.4-4.el8_6.s390x.rpm repoid: rhel-8-for-s390x-baseos-rpms size: 95736 @@ -5047,12 +5047,12 @@ arches: evr: 1.2.11-25.el8 sourcerpm: zlib-1.2.11-25.el8.src.rpm source: - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/source/SRPMS/Packages/j/jq-1.6-9.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/source/SRPMS/Packages/j/jq-1.6-11.el8_10.src.rpm repoid: rhel-8-for-s390x-appstream-source-rpms - size: 1502487 - checksum: sha256:2dc420bdaef06107f892878c520cff069c55e4553bc3d8f0d2136ff0ed2c5d99 + size: 1506922 + checksum: sha256:0fce66914c13dd2a34fbd2d5a043cada5ed98ecc28895f07655b1b059758ab80 name: jq - evr: 1.6-9.el8_10 + evr: 1.6-11.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/source/SRPMS/Packages/l/libxkbcommon-0.9.1-1.el8.src.rpm repoid: rhel-8-for-s390x-appstream-source-rpms size: 390739 @@ -5113,12 +5113,12 @@ arches: checksum: sha256:dc91b0b1230e700b03f6bf9b67e7e1888a40fb3cba04407be800ebe03b3f6632 name: perl-libnet evr: 3.11-3.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/source/SRPMS/Packages/p/postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/source/SRPMS/Packages/p/postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm repoid: rhel-8-for-s390x-appstream-source-rpms - size: 53429582 - checksum: sha256:2659a0235ebefeb2151dc5629b45fd8ac688053ac6e44dad2c89f1b7a5cf3411 + size: 45654458 + checksum: sha256:30795de4ed7a01becc64ee50796e7c76b9195ff1eed0a341b279aeb3e4b15527 name: postgresql - evr: 15.12-1.module+el8.10.0+22871+d29fc53a + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/source/SRPMS/Packages/x/xkeyboard-config-2.28-1.el8.src.rpm repoid: rhel-8-for-s390x-appstream-source-rpms size: 1699339 @@ -5137,24 +5137,24 @@ arches: checksum: sha256:07bef8d477176042b940e5732eba1600871aacc1a0dbe679952d62265b5e6dbc name: attr evr: 2.4.48-3.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/a/audit-3.1.2-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/a/audit-3.1.2-1.el8_10.1.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 1248664 - checksum: sha256:c1facd2ecc520c758bbe2b049207629ad08914798f63c92beef4790086ad2f29 + size: 1250424 + checksum: sha256:b5a47d142bc89e986f3c662c6552ec59c08bdfbec8d38fc8d2720df74cdda53c name: audit - evr: 3.1.2-1.el8 + evr: 3.1.2-1.el8_10.1 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/b/basesystem-11-5.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 11934 checksum: sha256:95fb2c11bd59c51fcb0c0239e3e2c307d7d8d40c24b2960792bbc8af8c14f95c name: basesystem evr: 11-5.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/b/bash-4.4.20-5.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/b/bash-4.4.20-6.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 9478334 - checksum: sha256:670d393f3d288bc61519be0d2c5378addc1cd4a752b738ce2424b69618f3965c + size: 9479153 + checksum: sha256:f0e4182affffe350e5dbd55e410baed663d514cd6832108b83899ac8d1524830 name: bash - evr: 4.4.20-5.el8 + evr: 4.4.20-6.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/b/brotli-1.0.6-3.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 23835509 @@ -5167,24 +5167,24 @@ arches: checksum: sha256:9c1d697f675f5889c57e7f983afa4b3e3f6e2334887ded9d7c10c5a205d1b06a name: bzip2 evr: 1.0.6-28.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/c/ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/c/ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 715540 - checksum: sha256:a066b501d49019ad53d7a8bd7badd1b073f317e406561f0cfad59b7bdfaba0a6 + size: 742547 + checksum: sha256:879547af21a33e8e0a2356bc7cbd8c4fdc17d4830fbcadbf9aac1cfbbcf140f5 name: ca-certificates - evr: 2024.2.69_v8.0.303-80.0.el8_10 + evr: 2025.2.80_v9.0.304-80.2.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/c/chkconfig-1.19.2-1.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 221618 checksum: sha256:7cf522c35fa5a5906c8c793ece9e599e80aba6c37d3f57afbf436c9abb8629c6 name: chkconfig evr: 1.19.2-1.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/c/coreutils-8.30-15.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/c/coreutils-8.30-16.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 5550193 - checksum: sha256:8e6d8f3d8929cfd896c09a6d7ebfdd0d78fd028169042f7df9e35803189e4eee + size: 5552304 + checksum: sha256:a765698d09c82865c7b71c2125273ed393aee734cdb2a999458bbbed9ccfe098 name: coreutils - evr: 8.30-15.el8 + evr: 8.30-16.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/c/cracklib-2.9.6-15.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 6423670 @@ -5203,36 +5203,36 @@ arches: checksum: sha256:21bb087ab9a3d64c89295a1bd45b5e5b6189832a972d4b3ddccb2ff5437ac2ed name: cryptsetup evr: 2.3.7-7.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/c/curl-7.61.1-34.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/c/curl-7.61.1-34.el8_10.9.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 2629169 - checksum: sha256:da74fbd455075a1e124a5251e17946c0a2c8b8bd023e349d0c52b3cee8e3d37c + size: 2637559 + checksum: sha256:b69dcfee680f356433e48929a3b447b72d6e99bf8ad61b5a6c9ac2eededf87cd name: curl - evr: 7.61.1-34.el8_10.3 + evr: 7.61.1-34.el8_10.9 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/c/cyrus-sasl-2.1.27-6.el8_5.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 4032772 checksum: sha256:72d534b444990dbb647ead881f77e841ef9416109054cf74b7a5d12f912eef9a name: cyrus-sasl evr: 2.1.27-6.el8_5 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/d/dbus-1.12.8-26.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/d/dbus-1.12.8-27.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 2149642 - checksum: sha256:4934fea4bcebaf82dacd6d8258b35233f25e66cfd45d68f6b6e48d2ff3632395 + size: 2153514 + checksum: sha256:1a5cc2d3f263fa49f2e626d34ce7ac0ef2b6a3c8c3cf4a3c652e0614c0479911 name: dbus - evr: 1:1.12.8-26.el8 + evr: 1:1.12.8-27.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/d/diffutils-3.6-6.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 1427759 checksum: sha256:1308e782ad4f9b17a5cbbac9734be496948db857de7458b3388645bf1786892d name: diffutils evr: 3.6-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/e/e2fsprogs-1.45.6-5.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/e/e2fsprogs-1.45.6-7.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 5675423 - checksum: sha256:1c0771ea038777ecf84ba31cba0c3d221d39e351c1a6e7967857977c1949c792 + size: 5680546 + checksum: sha256:7adebb4cf95886f8dc9cdfa518378ba4609a2f9800782b8330ca5ddf4409d3bf name: e2fsprogs - evr: 1.45.6-5.el8 + evr: 1.45.6-7.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/e/elfutils-0.190-2.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 9288737 @@ -5245,30 +5245,30 @@ arches: checksum: sha256:9d27b5c50f4ed21ada0e3a2a4e3ffab0df5b0856f052b2ae602d3e04f75f853e name: ethtool evr: 2:5.13-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/e/expat-2.2.5-17.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/e/expat-2.5.0-1.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 8345318 - checksum: sha256:41de03fcbf3a8f7fa42e7017058ae0186e98a0e448ce01772de7af0a856a749d + size: 8388946 + checksum: sha256:566456bc755b628dc5a4ce77b6a643769165202f0ddd852ba73dd9512b994d2b name: expat - evr: 2.2.5-17.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/f/file-5.33-26.el8.src.rpm + evr: 2.5.0-1.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/f/file-5.33-27.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 899551 - checksum: sha256:1bdcfa5032e3ef5ff5f9f72233b6c9c67c0c7ff994a04df131d3b64b213b99cb + size: 900161 + checksum: sha256:f6996986985a11cebdb085b30dc7281eb320ee6234fa12ae43e39cd2d1de1afc name: file - evr: 5.33-26.el8 + evr: 5.33-27.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/f/filesystem-3.8-6.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 37286 checksum: sha256:113b7c5e28cc1d44e21c564c17d8c592a3f8a20b4c268cdaad6a407dee4d1540 name: filesystem evr: 3.8-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/f/findutils-4.6.0-23.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/f/findutils-4.6.0-24.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 3831527 - checksum: sha256:28510e1bb0c939d1b945f889611cf572e03ee18faaa5bff6f0ad203fd696fb29 + size: 3832656 + checksum: sha256:4ee9287c4f007ef160f3e2f61ddd3d6ff75dfa82ab99ba27f5c6ca673d97d529 name: findutils - evr: 1:4.6.0-23.el8_10 + evr: 1:4.6.0-24.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/f/fuse-2.9.7-19.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 993464 @@ -5281,42 +5281,42 @@ arches: checksum: sha256:fac4ea2cb712ff3f0dd723d6eec358e051040592492b5cf6bd66354b8a09f143 name: gawk evr: 4.2.1-4.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/gcc-8.5.0-26.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/gcc-8.5.0-28.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 65714976 - checksum: sha256:12ebb9cdefb5f8c68bbce3eb469440d26f0d64de958751f4916328ed02522ed2 + size: 65716029 + checksum: sha256:1e81087ab2f1f3435e106d747529d2a178e33a285722662fa89c56a37f471489 name: gcc - evr: 8.5.0-26.el8_10 + evr: 8.5.0-28.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/gdbm-1.18-2.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 966590 checksum: sha256:e91abeb46538fc264936c0eed825c28eab9eef47288c9eb1d2d4d078bccad5d1 name: gdbm evr: 1:1.18-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/glib2-2.56.4-165.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/glib2-2.56.4-167.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 7127086 - checksum: sha256:0d418524f04a24e2357b26d4107424780acca901a1575a7a5cbf178b2aa1458c + size: 7164394 + checksum: sha256:80ee50b39aa478e1503dbd18626df91a023d30e3f9b6fb588fa82e6ce2b5972e name: glib2 - evr: 2.56.4-165.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/glibc-2.28-251.el8_10.16.src.rpm + evr: 2.56.4-167.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/glibc-2.28-251.el8_10.27.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 18487094 - checksum: sha256:f988b183ac97142187843e95dab32f9d7bc8bce3723c80a535a3dfdabba08a44 + size: 18525139 + checksum: sha256:c3f8d7e92cffbd4e81c33871b5c55034b3f11c7417e6d84805a67e52cc6ebec1 name: glibc - evr: 2.28-251.el8_10.16 + evr: 2.28-251.el8_10.27 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/gmp-6.1.2-11.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 2430007 checksum: sha256:0be11faec5810961b3b5b2f0e8a54c4628b62bb2bec4e282f47682c4be0cef64 name: gmp evr: 1:6.1.2-11.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/gnutls-3.6.16-8.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/gnutls-3.6.16-8.el8_10.4.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 5774773 - checksum: sha256:e3dc1e166a626f8ff303c9d9a260d4a1ac68cd2a62d28bfec51d6b1aa3670053 + size: 5783117 + checksum: sha256:62b0fb59ca7babdf1f2558c69ff1ceb67358d455bbf107d32db851f0af8ef185 name: gnutls - evr: 3.6.16-8.el8_10.3 + evr: 3.6.16-8.el8_10.4 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/g/grep-3.1-6.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 1412532 @@ -5359,18 +5359,18 @@ arches: checksum: sha256:3df9490dc2b5146a1e0953d254540d64b7e0c304c52ebd64baf2eeb78eae70bd name: kmod evr: 25-20.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/k/krb5-1.18.2-31.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/k/krb5-1.18.2-32.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 10383931 - checksum: sha256:1c1468efcb7c58f7e40727e45deb6f7d30b8ddb3acaa192a15807af8f1fdfc22 + size: 10400512 + checksum: sha256:b9f52264ad5dc5068e423d0c7f64717e76ba1b4eb68942e7e6124ca3149a72ac name: krb5 - evr: 1.18.2-31.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libarchive-3.3.3-5.el8.src.rpm + evr: 1.18.2-32.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libarchive-3.3.3-6.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 6570219 - checksum: sha256:97e61fdb02920262ab2c2506465dca8492b33050561d3d981ed1065083166c3e + size: 6570714 + checksum: sha256:411f2b5c7c8b0465e3d4c6dd1e91c6db56ed564f54ac3e100114cb9a86b0fcab name: libarchive - evr: 3.3.3-5.el8 + evr: 3.3.3-6.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libcap-2.48-6.el8_9.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 208927 @@ -5449,12 +5449,12 @@ arches: checksum: sha256:2f61feb51798629d4f7b78130e68eb2516463da41d6e7b64d82d28d17355b3f1 name: libselinux evr: 2.9-10.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libsemanage-2.9-11.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libsemanage-2.9-12.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 267435 - checksum: sha256:0e9bc0dd2ddcf5e8e8f734b32c7a3c93165060ef5b2f5910713984cea71e349f + size: 268557 + checksum: sha256:bdfaa6f41b668f889f15abc2165208ff2bc543e34da6235a19943613521e6df8 name: libsemanage - evr: 2.9-11.el8_10 + evr: 2.9-12.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libsepol-2.9-3.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 562616 @@ -5467,12 +5467,12 @@ arches: checksum: sha256:a139e44850d9210e2a662e676dd57a6a40323b1744a14be7a87221f8e36cffe5 name: libsigsegv evr: 2.11-5.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libssh-0.9.6-14.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libssh-0.9.6-16.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 1151415 - checksum: sha256:a04fb32a5bdaf33053918c3c931891fe7415a8ace08069b74d055931413056eb + size: 1151564 + checksum: sha256:71e885a125f15dbbce25f515cc80bd2df63a93c904e0b71c5645d27c18c9f98c name: libssh - evr: 0.9.6-14.el8 + evr: 0.9.6-16.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libtasn1-4.13-5.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 1968290 @@ -5509,30 +5509,30 @@ arches: checksum: sha256:d9803b5dd6cdbb4fd977258092cb50c48c8e28f3e3b4a0d6056c093983e17b29 name: libxcrypt evr: 4.1.1-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libxml2-2.9.7-19.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/libxml2-2.9.7-21.el8_10.3.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 5483351 - checksum: sha256:7e50cdc6eb992d219955bbff31a2647a4ed00b088ad3fa16954947c3afd2c62a + size: 5492235 + checksum: sha256:a236b9807436c13e06c88926d7d3b25c2746f5b7fb12fadc41462a00d448a1f7 name: libxml2 - evr: 2.9.7-19.el8_10 + evr: 2.9.7-21.el8_10.3 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/lua-5.3.4-12.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 437265 checksum: sha256:764fa61f3a6678bf93d94351468e49863176420688ab4e8c1aa6a5eb84ecf23d name: lua evr: 5.3.4-12.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/lvm2-2.03.14-15.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/lvm2-2.03.14-15.el8_10.2.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 3182486 - checksum: sha256:eb51bc7200bf3af803093b3b61c543aae9560c36999aeca1304cd718b8bbe453 + size: 3185875 + checksum: sha256:c464de2287071dd2c498af02ce271d6153a354bfbce16b271c7131f98a55f8c8 name: lvm2 - evr: 8:2.03.14-15.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/lz4-1.8.3-3.el8_4.src.rpm + evr: 8:2.03.14-15.el8_10.2 + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/l/lz4-1.8.3-5.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 343953 - checksum: sha256:5952931f1ccd36d3db5bf1bb007966056e5fde6569a8d2da8e91b38bd9f41d3b + size: 347074 + checksum: sha256:a5d3ef1654348c492e0a0655d7b71c692ac2753b867281df8f9d036cda46bc24 name: lz4 - evr: 1.8.3-3.el8_4 + evr: 1.8.3-5.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/m/mpfr-3.1.6-1.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 1153938 @@ -5563,12 +5563,12 @@ arches: checksum: sha256:42a8826001f6a49c1385746f1c5ef3967c3f15fe6fa510fe001d5a232732661a name: openldap evr: 2.4.46-21.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/o/openssl-1.1.1k-14.el8_6.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/o/openssl-1.1.1k-14.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 7741480 - checksum: sha256:c97b10d6a034e025a19ec8443ef7c80755e3a407fe29a77dda95af958b199eed + size: 7743036 + checksum: sha256:01ef6da2173fdd58138e983a69f7213698673c3eddb23539d4876eaca0efc07d name: openssl - evr: 1:1.1.1k-14.el8_6 + evr: 1:1.1.1k-14.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/o/openssl-pkcs11-0.4.10-3.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 520347 @@ -5581,12 +5581,12 @@ arches: checksum: sha256:9dece924ffd6e5698e7cb865f01976d7786b8c3cc65e743cf9ce3a856baff95e name: p11-kit evr: 0.23.22-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/pam-1.3.1-36.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/pam-1.3.1-39.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 1166826 - checksum: sha256:5a73a9d6ffbc3fa84853486a233e95765189dd0bf7b18059f2b8e763bfc8591f + size: 1185014 + checksum: sha256:dbbbd55c9700e19c59e4e425a6b6f08eb4cb77f68967e773b318a8dfbdfdfb93 name: pam - evr: 1.3.1-36.el8_10 + evr: 1.3.1-39.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/pcre-8.42-6.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 1617186 @@ -5599,12 +5599,12 @@ arches: checksum: sha256:bd60f4e4bf7bbadef2ff329112b5267da38a271af3c88fe53c57499c402c6670 name: pcre2 evr: 10.32-3.el8_6 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/perl-5.26.3-422.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/perl-5.26.3-423.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 14612935 - checksum: sha256:846caf250e9bc506d779db0a1f94c181cb1278db67a89cfeb8ad9863cf8475a3 + size: 14617799 + checksum: sha256:13ac3027330c74ee2f6180e1790c5c29b0311675997cbeb57adb5825de6774a7 name: perl - evr: 4:5.26.3-422.el8 + evr: 4:5.26.3-423.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/perl-Carp-1.42-396.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 39410 @@ -5791,18 +5791,18 @@ arches: checksum: sha256:0c18dcaadf6e9596e2b939ae9cc75db12df7919a01a204f314df315e384b0d4a name: python-pip evr: 9.0.3-24.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/python-setuptools-39.2.0-8.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/python-setuptools-39.2.0-9.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 868530 - checksum: sha256:cd563238ca4ec7c288874e42d1506337e4917620ed83b1e4a2aec2fb6a5ea770 + size: 869180 + checksum: sha256:31ae9c84f36f7d4e51b0e945e5d12210594defd3ea16cf5645c21d42fd6332fa name: python-setuptools - evr: 39.2.0-8.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/python3-3.6.8-69.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/p/python3-3.6.8-71.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 19223254 - checksum: sha256:4578b972df16aa25dae9170d339d86792c59612f29e0726ead0107ed7347ba3a + size: 19241145 + checksum: sha256:e7012ea23f3816772d64357f7db534f83c55279bcbefdecaefe2573d4734c6a3 name: python3 - evr: 3.6.8-69.el8_10 + evr: 3.6.8-71.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/r/readline-7.0-10.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 2937518 @@ -5821,12 +5821,12 @@ arches: checksum: sha256:b43436849f8b9fa3dfe8e42e87e814906f0cae191f9d159ea24ec9732d379d58 name: rpm evr: 4.14.3-32.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/s390utils-2.29.0-3.el8_10.1.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/s390utils-2.29.0-3.el8_10.3.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 27794480 - checksum: sha256:88de35447426a307ee5aa62abf6ed34c2c5907c3d7bea5aa4147c84352d07779 + size: 27795142 + checksum: sha256:ee27d86404b429c452229c5e70454c4d603efd184f73ee5b4b4ad14cc78e0975 name: s390utils - evr: 2:2.29.0-3.el8_10.1 + evr: 2:2.29.0-3.el8_10.3 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/sed-4.5-5.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 1358944 @@ -5845,36 +5845,36 @@ arches: checksum: sha256:8ac8582cec218ef4a39e3b89ad24903b141bf0e1290036711e9ecda5b9df7bc8 name: sg3_utils evr: 1.44-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/shadow-utils-4.6-22.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/shadow-utils-4.6-23.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 1845120 - checksum: sha256:140a4273738ea9cfd1fc5627ebd66ad1696a5e3c959092b41bf5dc6d7657d8a6 + size: 1845199 + checksum: sha256:1f73218c7981d0fe5008adfb4b8460626ba2dfe43c4075f50045c48f8d9e30cd name: shadow-utils - evr: 2:4.6-22.el8 + evr: 2:4.6-23.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/shared-mime-info-1.9-4.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 644720 checksum: sha256:b070925e9e0d4824b3c0ed86bad64f77daf954ec359260789fe8f8150ef402c6 name: shared-mime-info evr: 1.9-4.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/sqlite-3.26.0-19.el8_9.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/sqlite-3.26.0-20.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 23592377 - checksum: sha256:d4bd6ea502814941a714ab1f40e87d8f48fc4a362b344ca928f3c2f514fdf024 + size: 23592583 + checksum: sha256:26dc49ea369dc145166e0a3959cc132f45e3345b99a75420c8932af24f44668c name: sqlite - evr: 3.26.0-19.el8_9 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/systemd-239-82.el8_10.5.src.rpm + evr: 3.26.0-20.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/s/systemd-239-82.el8_10.8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 9161850 - checksum: sha256:a20ae7bd2f13fd756b2389ec6ba6f84e6a9be28df01b5a7d04dab93b492a0eab + size: 9188443 + checksum: sha256:a3ade60f73bb3137b94ac38205c321511b70e2bf61b79e2a25e31015fb415844 name: systemd - evr: 239-82.el8_10.5 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/t/tar-1.30-9.el8.src.rpm + evr: 239-82.el8_10.8 + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/t/tar-1.30-11.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 2169236 - checksum: sha256:53ae8ab2f98cb36c9d7e3830a7a8d6a9897707bf3d0f0c6805282f88ca6e23f7 + size: 2173356 + checksum: sha256:eda17923b1ada7f9d5f8a4501929a61e393b66cb0a6ade6ab13d85817d29f779 name: tar - evr: 2:1.30-9.el8 + evr: 2:1.30-11.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/t/texinfo-6.5-7.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 4544531 @@ -5887,18 +5887,18 @@ arches: checksum: sha256:ad79eab11673ac2f172276a993d98f2bf98c77728863f656d7cc0ab595d5b593 name: trousers evr: 0.3.15-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/t/tzdata-2025b-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/t/tzdata-2025c-1.el8.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 946701 - checksum: sha256:2f0ba51d371713287a690d9d1635b534113258aa2571862603d52870c1c8b60d + size: 960798 + checksum: sha256:c9798a08b98344921713d3183bda98727df494d83f96924604b6b755ddc30f61 name: tzdata - evr: 2025b-1.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/u/util-linux-2.32.1-46.el8.src.rpm + evr: 2025c-1.el8 + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/u/util-linux-2.32.1-47.el8_10.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms - size: 4816801 - checksum: sha256:3fb688481dd062d917d8119cd64582a9e6ffa6736a6dbbf956d038a9115c6004 + size: 4817466 + checksum: sha256:e10e379f1386bdd6315e20cf735616747690c137ada562f47da85ca90ea966ee name: util-linux - evr: 2.32.1-46.el8 + evr: 2.32.1-47.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/baseos/source/SRPMS/Packages/x/xz-5.2.4-4.el8_6.src.rpm repoid: rhel-8-for-s390x-baseos-source-rpms size: 1077113 @@ -5918,19 +5918,19 @@ arches: name: zstd evr: 1.4.4-1.el8 module_metadata: - - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/repodata/3d18d1d13efd7781d2ae9b7f3be73181cd8c302d02894ab291b3612c4ef9cd46-modules.yaml.gz + - url: https://cdn.redhat.com/content/dist/rhel8/8/s390x/appstream/os/repodata/1e443ec8275438953517e9328b2fc1930b299f2e6c4dfc1ed4463b8714491ebe-modules.yaml.gz repoid: rhel-8-for-s390x-appstream-rpms - size: 702216 - checksum: sha256:3d18d1d13efd7781d2ae9b7f3be73181cd8c302d02894ab291b3612c4ef9cd46 + size: 756364 + checksum: sha256:1e443ec8275438953517e9328b2fc1930b299f2e6c4dfc1ed4463b8714491ebe - arch: x86_64 packages: - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/Packages/j/jq-1.6-9.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/Packages/j/jq-1.6-11.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-appstream-rpms - size: 207896 - checksum: sha256:baaa3660d87c4f3c12776e051b7f13835fee8918389a57673519e3389eb7aa3b + size: 208552 + checksum: sha256:fe609ca5ea627f11fc4cd55cca0279f220f82e49045bfd59c38b560c82167662 name: jq - evr: 1.6-9.el8_10 - sourcerpm: jq-1.6-9.el8_10.src.rpm + evr: 1.6-11.el8_10 + sourcerpm: jq-1.6-11.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/Packages/l/libxkbcommon-0.9.1-1.el8.x86_64.rpm repoid: rhel-8-for-x86_64-appstream-rpms size: 118548 @@ -5945,20 +5945,20 @@ arches: name: oniguruma evr: 6.8.2-3.el8 sourcerpm: oniguruma-6.8.2-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/Packages/p/postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/Packages/p/postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.x86_64.rpm repoid: rhel-8-for-x86_64-appstream-rpms - size: 1801427 - checksum: sha256:f01a09db8fdba9da80b40704511f7363e27003b07263f3ac03a8bb7bd45744ea + size: 1825339 + checksum: sha256:f2a10392b2b79daaa1d16f10792f51abe4d1a2bbb1478827fd96a2d70b943d52 name: postgresql - evr: 15.12-1.module+el8.10.0+22871+d29fc53a - sourcerpm: postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/Packages/p/postgresql-private-libs-15.12-1.module+el8.10.0+22871+d29fc53a.x86_64.rpm + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 + sourcerpm: postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/Packages/p/postgresql-private-libs-15.15-1.module+el8.10.0+23782+2d6b2a31.x86_64.rpm repoid: rhel-8-for-x86_64-appstream-rpms - size: 136639 - checksum: sha256:ee7f8fb3b47f3093636402f15bd7c29dc90fb79aab8fbeec659501239cb17c87 + size: 136383 + checksum: sha256:895d79b877c063d33ef9806403e5a70815e7c5720556dd93b1aa3d041b1703e8 name: postgresql-private-libs - evr: 15.12-1.module+el8.10.0+22871+d29fc53a - sourcerpm: postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 + sourcerpm: postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/Packages/x/xkeyboard-config-2.28-1.el8.noarch.rpm repoid: rhel-8-for-x86_64-appstream-rpms size: 801000 @@ -5973,13 +5973,13 @@ arches: name: acl evr: 2.2.53-3.el8 sourcerpm: acl-2.2.53-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/a/audit-libs-3.1.2-1.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/a/audit-libs-3.1.2-1.el8_10.1.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 127692 - checksum: sha256:6c2119e3be28775cdc82b6e95ee9f3f7e4d420b75aa99ca1ab953bc6af863b57 + size: 127940 + checksum: sha256:a31f55ab0d31b535932da0feb80673e67874f796dd2138a70e2118024650abaf name: audit-libs - evr: 3.1.2-1.el8 - sourcerpm: audit-3.1.2-1.el8.src.rpm + evr: 3.1.2-1.el8_10.1 + sourcerpm: audit-3.1.2-1.el8_10.1.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/b/basesystem-11-5.el8.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 10756 @@ -5987,13 +5987,13 @@ arches: name: basesystem evr: 11-5.el8 sourcerpm: basesystem-11-5.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/b/bash-4.4.20-5.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/b/bash-4.4.20-6.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1622480 - checksum: sha256:3fca78c61e72c8ed21a8fd123ccaf253c86beebc6196b44aa3e029871e22b8c4 + size: 1622752 + checksum: sha256:724c4c7f9c64a770cf243619db7dede2a948a125b106fb46b1403f237ceaebef name: bash - evr: 4.4.20-5.el8 - sourcerpm: bash-4.4.20-5.el8.src.rpm + evr: 4.4.20-6.el8_10 + sourcerpm: bash-4.4.20-6.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/b/brotli-1.0.6-3.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 330860 @@ -6008,13 +6008,13 @@ arches: name: bzip2-libs evr: 1.0.6-28.el8_10 sourcerpm: bzip2-1.0.6-28.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1006212 - checksum: sha256:5b97c63d4978f82a8d73cb83c81c438d69309bc929d35c6bebf5868f128da13f + size: 1048264 + checksum: sha256:01d249b3d9889ab05adea246a1e84571e817013e06b24bbfc4bb42a1d7d8aa50 name: ca-certificates - evr: 2024.2.69_v8.0.303-80.0.el8_10 - sourcerpm: ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.src.rpm + evr: 2025.2.80_v9.0.304-80.2.el8_10 + sourcerpm: ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/chkconfig-1.19.2-1.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 203364 @@ -6022,20 +6022,20 @@ arches: name: chkconfig evr: 1.19.2-1.el8 sourcerpm: chkconfig-1.19.2-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/coreutils-8.30-15.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/coreutils-8.30-16.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1274536 - checksum: sha256:c7e02ffc3471e2d7ea8fbf19f1800742eeb0ea729ab6ec5796b1c9e1f65c1ef6 + size: 1272924 + checksum: sha256:83ad90c54f099ce9a4f1df020dbd6169e56b52dd6fc14583eb88c3cf4cdb162a name: coreutils - evr: 8.30-15.el8 - sourcerpm: coreutils-8.30-15.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/coreutils-common-8.30-15.el8.x86_64.rpm + evr: 8.30-16.el8_10 + sourcerpm: coreutils-8.30-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/coreutils-common-8.30-16.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 2092844 - checksum: sha256:f916e02672303e038ed39fee2bba94096db4d87d9ea061b1aba0e95930ecc28f + size: 2091880 + checksum: sha256:3a948401c294eb75b1399f82509b5590262894df4d51890dfb56045d9b2906e7 name: coreutils-common - evr: 8.30-15.el8 - sourcerpm: coreutils-8.30-15.el8.src.rpm + evr: 8.30-16.el8_10 + sourcerpm: coreutils-8.30-16.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/cpio-2.12-11.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 272056 @@ -6078,13 +6078,13 @@ arches: name: cryptsetup-libs evr: 2.3.7-7.el8 sourcerpm: cryptsetup-2.3.7-7.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/curl-7.61.1-34.el8_10.3.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/curl-7.61.1-34.el8_10.9.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 362392 - checksum: sha256:9982a2c567a50bdadee162a853d77b6c556fb4d2b2483c9c21197ed8af706327 + size: 362072 + checksum: sha256:80a15ee8d048cc81629020d2ad8c4037e63eb6c8d06017c7e8b2109751e7425d name: curl - evr: 7.61.1-34.el8_10.3 - sourcerpm: curl-7.61.1-34.el8_10.3.src.rpm + evr: 7.61.1-34.el8_10.9 + sourcerpm: curl-7.61.1-34.el8_10.9.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/c/cyrus-sasl-lib-2.1.27-6.el8_5.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 126324 @@ -6092,55 +6092,55 @@ arches: name: cyrus-sasl-lib evr: 2.1.27-6.el8_5 sourcerpm: cyrus-sasl-2.1.27-6.el8_5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-1.12.8-26.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-1.12.8-27.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 43292 - checksum: sha256:5426567ee5fe19e84dbe8c06c73602d588b193e6bb77b2becc31c773fafeb469 + size: 43432 + checksum: sha256:93d10e2ce2dee1f23a55f7106e0069bbf4e42993c5817dae42205285ef698461 name: dbus - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-common-1.12.8-26.el8.noarch.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-common-1.12.8-27.el8_10.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 48092 - checksum: sha256:3093c5c1356bc92805a6821f9242a7fc947bbaa1ff427d310dc397f4ea38ef3e + size: 48248 + checksum: sha256:e741b39006a6443632979bbebb15255798c45dbc65c61a09e31698df98fdd272 name: dbus-common - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-daemon-1.12.8-26.el8.x86_64.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-daemon-1.12.8-27.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 247064 - checksum: sha256:e2f321553b0a92fee5637e5837a35dbe7baf2b4b4f7fe9b2f1a9b66c8a6cdb85 + size: 247404 + checksum: sha256:1f000f0b48e435d6a72fbde451801a44b9d259d713b4b9e1de16d2e9306891ad name: dbus-daemon - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-libs-1.12.8-26.el8.x86_64.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-libs-1.12.8-27.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 189528 - checksum: sha256:57a38545641fdd14a7887d187fe147d2ca0a22e5a292b9ac5daa2018cc67ed7e + size: 189704 + checksum: sha256:13aeffc69fc9143606679fb4c3f08693e852da30dfa5a54bc6c523ea233caebb name: dbus-libs - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-tools-1.12.8-26.el8.x86_64.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dbus-tools-1.12.8-27.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 88560 - checksum: sha256:373d4320fbcb4e823fdf5ad07dbb39805a71a249429e1eff0575bc336ae5634e + size: 88720 + checksum: sha256:c89adcc09c3c7470d086cb76ec47ad5a6ca5540f7625c82aac48a6021531109c name: dbus-tools - evr: 1:1.12.8-26.el8 - sourcerpm: dbus-1.12.8-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/device-mapper-1.02.181-15.el8_10.x86_64.rpm + evr: 1:1.12.8-27.el8_10 + sourcerpm: dbus-1.12.8-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/device-mapper-1.02.181-15.el8_10.2.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 388100 - checksum: sha256:195756419b17c95c3e22bff3bf7e868ab98447c7ea10683e9cc33baa41da8b56 + size: 388312 + checksum: sha256:27d2bc6fa33c8b98a37e29161a78ed505c27ecc7daaa10517cdcacc2f99ebbbf name: device-mapper - evr: 8:1.02.181-15.el8_10 - sourcerpm: lvm2-2.03.14-15.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/device-mapper-libs-1.02.181-15.el8_10.x86_64.rpm + evr: 8:1.02.181-15.el8_10.2 + sourcerpm: lvm2-2.03.14-15.el8_10.2.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/device-mapper-libs-1.02.181-15.el8_10.2.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 421184 - checksum: sha256:b929c1c109c892a6bc379bfd0afd8f117100950a9f3b9037ee43e7d9ba025dc8 + size: 421472 + checksum: sha256:87b14770a42ae859889e69bd29b9d368e080e0635b86d6d651d84aa0949255d5 name: device-mapper-libs - evr: 8:1.02.181-15.el8_10 - sourcerpm: lvm2-2.03.14-15.el8_10.src.rpm + evr: 8:1.02.181-15.el8_10.2 + sourcerpm: lvm2-2.03.14-15.el8_10.2.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/diffutils-3.6-6.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 367420 @@ -6148,13 +6148,13 @@ arches: name: diffutils evr: 3.6-6.el8 sourcerpm: diffutils-3.6-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dracut-049-233.git20240115.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/d/dracut-049-239.git20251127.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 389412 - checksum: sha256:27358d09be00920c65409cee991cac19033e33617690bf02d4d71dd896b9ec46 + size: 388772 + checksum: sha256:02e50ff63cdfd01e3a2b9f6b83efb3ea20ec35aa65c632b6f2dd9dfd343f7bc0 name: dracut - evr: 049-233.git20240115.el8 - sourcerpm: dracut-049-233.git20240115.el8.src.rpm + evr: 049-239.git20251127.el8_10 + sourcerpm: dracut-049-239.git20251127.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/e/elfutils-debuginfod-client-0.190-2.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 77672 @@ -6183,27 +6183,27 @@ arches: name: elfutils-libs evr: 0.190-2.el8 sourcerpm: elfutils-0.190-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/e/expat-2.2.5-17.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/e/expat-2.5.0-1.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 117960 - checksum: sha256:d01df6f542762d94bd73a87f61d19fb98a6304eb9a2eb114a872a91d3312ea34 + size: 134428 + checksum: sha256:ea9b034a79279668a1eca4be141617e6a9f04ffc616033f035380f80c073837a name: expat - evr: 2.2.5-17.el8_10 - sourcerpm: expat-2.2.5-17.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/f/file-5.33-26.el8.x86_64.rpm + evr: 2.5.0-1.el8_10 + sourcerpm: expat-2.5.0-1.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/f/file-5.33-27.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 79320 - checksum: sha256:620ff70a4c50745bb242153f0a13ac4cc43b61ebbd0cd817e984efd2966ce1c9 + size: 79492 + checksum: sha256:a9775db69d9c918e3f8d311ee94b5543ea53ebce9aa69020cfa3fcd284d39c4e name: file - evr: 5.33-26.el8 - sourcerpm: file-5.33-26.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/f/file-libs-5.33-26.el8.x86_64.rpm + evr: 5.33-27.el8_10 + sourcerpm: file-5.33-27.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/f/file-libs-5.33-27.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 557180 - checksum: sha256:3576169d440647ebfbcdda7bdd53c250a1fba14c7c1cad6e96a58e8f7e6b7ab9 + size: 557336 + checksum: sha256:a7d04bca397f96e138713668a6172822dbb952368d67bccb6286fde7b11b3bec name: file-libs - evr: 5.33-26.el8 - sourcerpm: file-5.33-26.el8.src.rpm + evr: 5.33-27.el8_10 + sourcerpm: file-5.33-27.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/f/filesystem-3.8-6.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 1135804 @@ -6211,13 +6211,13 @@ arches: name: filesystem evr: 3.8-6.el8 sourcerpm: filesystem-3.8-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/f/findutils-4.6.0-23.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/f/findutils-4.6.0-24.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 540248 - checksum: sha256:cb645de7da1bd495a6df969de4b0f84f10ccf8d299c26099f1cd9075ed9c32cb + size: 538912 + checksum: sha256:d41cc52d67548b14a2cb4984073bbf4c6451126e5f11bf51c6e61565439ab0c7 name: findutils - evr: 1:4.6.0-23.el8_10 - sourcerpm: findutils-4.6.0-23.el8_10.src.rpm + evr: 1:4.6.0-24.el8_10 + sourcerpm: findutils-4.6.0-24.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/gawk-4.2.1-4.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 1190704 @@ -6253,41 +6253,41 @@ arches: name: gettext-libs evr: 0.19.8.1-17.el8 sourcerpm: gettext-0.19.8.1-17.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glib2-2.56.4-165.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glib2-2.56.4-167.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 2613332 - checksum: sha256:717d8f42ae429eb9f68320cf0a4180a6eb2ed4b4f1e7697b26bc2a0ee52c05b9 + size: 2614852 + checksum: sha256:c3f59a03d02b1ee00cca137485a66b63842e395eca465f0663426ac6933bd6ff name: glib2 - evr: 2.56.4-165.el8_10 - sourcerpm: glib2-2.56.4-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glibc-2.28-251.el8_10.16.x86_64.rpm + evr: 2.56.4-167.el8_10 + sourcerpm: glib2-2.56.4-167.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glibc-2.28-251.el8_10.27.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 2305632 - checksum: sha256:788907956d1b917b55f8234ec6fe9da3e5b32fe7dc82d57de5ac102335abd7a9 + size: 2307356 + checksum: sha256:73f2be29dc8efc28f1952424f8ca93caff70758be821eef76a3a19bd8b27eae8 name: glibc - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glibc-all-langpacks-2.28-251.el8_10.16.x86_64.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glibc-all-langpacks-2.28-251.el8_10.27.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 26776452 - checksum: sha256:75fda392357c40a6ef4a062c0906ded57f4c9e613c61fbe87fbbb7dab9d70178 + size: 26777212 + checksum: sha256:b1e3db05ee8fcf0d849376022537dd306aa2b11919cc06c7a9f1521b0a020102 name: glibc-all-langpacks - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glibc-common-2.28-251.el8_10.16.x86_64.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glibc-common-2.28-251.el8_10.27.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1052168 - checksum: sha256:34f130bbb239441b0b177f059ce832159d968249db5242905c2c5a90559afb21 + size: 1052412 + checksum: sha256:1ae6a4a88193309d4074744e4a21402c6b10f886d24564108024addc3dfa3ab8 name: glibc-common - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glibc-gconv-extra-2.28-251.el8_10.16.x86_64.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/glibc-gconv-extra-2.28-251.el8_10.27.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1627124 - checksum: sha256:e48f8d628056669fe2c4e37e629088dd47f1004e9fe5ddec982b9741e7ebdbcd + size: 1628144 + checksum: sha256:7cb343f85ab0aff5caeddf596474908e136088704c7c90f745bcda6aa8dd29cd name: glibc-gconv-extra - evr: 2.28-251.el8_10.16 - sourcerpm: glibc-2.28-251.el8_10.16.src.rpm + evr: 2.28-251.el8_10.27 + sourcerpm: glibc-2.28-251.el8_10.27.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/gmp-6.1.2-11.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 325760 @@ -6295,13 +6295,13 @@ arches: name: gmp evr: 1:6.1.2-11.el8 sourcerpm: gmp-6.1.2-11.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/gnutls-3.6.16-8.el8_10.3.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/gnutls-3.6.16-8.el8_10.4.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1043200 - checksum: sha256:a38e3151ae2430ff3b2baf87dfcf900ca290881dbfc7c61c3a651dbe3cb944b7 + size: 1041476 + checksum: sha256:34d4938f45b708dc7ebbfa7ce459252c705510ebb2541b4a16c89e0a0a1024b9 name: gnutls - evr: 3.6.16-8.el8_10.3 - sourcerpm: gnutls-3.6.16-8.el8_10.3.src.rpm + evr: 3.6.16-8.el8_10.4 + sourcerpm: gnutls-3.6.16-8.el8_10.4.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/grep-3.1-6.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 280356 @@ -6309,27 +6309,27 @@ arches: name: grep evr: 3.1-6.el8 sourcerpm: grep-3.1-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/grub2-common-2.02-165.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/grub2-common-2.02-169.el8_10.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 918848 - checksum: sha256:dba0a0d389fda562a8e32b1935e400e7f6616e72ad7d5d9b22a3488068737156 + size: 918448 + checksum: sha256:4439fe4a6403508b74d5d8913543a74195411f69acbc81213ca32e5645939004 name: grub2-common - evr: 1:2.02-165.el8_10 - sourcerpm: grub2-2.02-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/grub2-tools-2.02-165.el8_10.x86_64.rpm + evr: 1:2.02-169.el8_10 + sourcerpm: grub2-2.02-169.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/grub2-tools-2.02-169.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 2090600 - checksum: sha256:9349d374afdcdb59184bf66a0a41d523019b628e679b1c0984a48a79b4dca3fc + size: 2090060 + checksum: sha256:f5d4afedb52f80b63712b765e3207334ffeafdd95115b09222f283aa1e428711 name: grub2-tools - evr: 1:2.02-165.el8_10 - sourcerpm: grub2-2.02-165.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/grub2-tools-minimal-2.02-165.el8_10.x86_64.rpm + evr: 1:2.02-169.el8_10 + sourcerpm: grub2-2.02-169.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/grub2-tools-minimal-2.02-169.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 221220 - checksum: sha256:a307462f138d7ca956294226190a1291c4e86c8b307dedc1e527147ab1c7c8b4 + size: 220844 + checksum: sha256:c659e85e2f20340e9251dcbaf2cbf9f3c2eb12cfc5667d7f17f106e4a66592c0 name: grub2-tools-minimal - evr: 1:2.02-165.el8_10 - sourcerpm: grub2-2.02-165.el8_10.src.rpm + evr: 1:2.02-169.el8_10 + sourcerpm: grub2-2.02-169.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/g/grubby-8.40-49.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 51660 @@ -6414,13 +6414,13 @@ arches: name: kpartx evr: 0.8.4-42.el8_10 sourcerpm: device-mapper-multipath-0.8.4-42.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/k/krb5-libs-1.18.2-31.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/k/krb5-libs-1.18.2-32.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 865604 - checksum: sha256:061be39fa6f842b274c3a8679aab5476cab1ff42d62f590532db66cfeb97120d + size: 865984 + checksum: sha256:79cd06dfe11be91d99d26e688b1259ea11d23768839da6231899691878a06289 name: krb5-libs - evr: 1.18.2-31.el8_10 - sourcerpm: krb5-1.18.2-31.el8_10.src.rpm + evr: 1.18.2-32.el8_10 + sourcerpm: krb5-1.18.2-32.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libacl-2.2.53-3.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 35644 @@ -6428,13 +6428,13 @@ arches: name: libacl evr: 2.2.53-3.el8 sourcerpm: acl-2.2.53-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libarchive-3.3.3-5.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libarchive-3.3.3-6.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 368640 - checksum: sha256:af9fc180b9ce78e4a6fc0b7698cef52c063d5e8037e0d01c6e911c2368899cf8 + size: 367776 + checksum: sha256:d9896589fde144ea8a2eb6e489862bdbd99a02489c2519f10428e029ff68dcb9 name: libarchive - evr: 3.3.3-5.el8 - sourcerpm: libarchive-3.3.3-5.el8.src.rpm + evr: 3.3.3-6.el8_10 + sourcerpm: libarchive-3.3.3-6.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libattr-2.4.48-3.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 27572 @@ -6442,13 +6442,13 @@ arches: name: libattr evr: 2.4.48-3.el8 sourcerpm: attr-2.4.48-3.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libblkid-2.32.1-46.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libblkid-2.32.1-47.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 226324 - checksum: sha256:4d03b6b8d7c80936ea81b1d0cfa1b65a995a931819e1e9991fdd2c52b44756da + size: 225348 + checksum: sha256:d20de50e05c6c7a6a3232c57ba69a2e62d0aebe4ebe5540f6b4776eb762465a8 name: libblkid - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libcap-2.48-6.el8_9.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 76264 @@ -6463,13 +6463,13 @@ arches: name: libcap-ng evr: 0.7.11-1.el8 sourcerpm: libcap-ng-0.7.11-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libcom_err-1.45.6-5.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libcom_err-1.45.6-7.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 50552 - checksum: sha256:4ec238fdfb608694b5a973f624004b8671e4e787c6addfc3c8d486a6d3bcce8f + size: 49688 + checksum: sha256:41cf8fba1811352ca28838e0f401af390cb58e8572df792daf1c24fb5fa06e07 name: libcom_err - evr: 1.45.6-5.el8 - sourcerpm: e2fsprogs-1.45.6-5.el8.src.rpm + evr: 1.45.6-7.el8_10 + sourcerpm: e2fsprogs-1.45.6-7.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libcroco-0.6.12-4.el8_2.1.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 115260 @@ -6477,13 +6477,13 @@ arches: name: libcroco evr: 0.6.12-4.el8_2.1 sourcerpm: libcroco-0.6.12-4.el8_2.1.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libcurl-7.61.1-34.el8_10.3.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libcurl-7.61.1-34.el8_10.9.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 311596 - checksum: sha256:0642990d55ecd1cda963404cf8dcc7776302722a68bceabd610339a92660d52f + size: 311308 + checksum: sha256:7afd52dae8ea3545897e5d83e47668472a5434200f696ee7755be6a4ecf96608 name: libcurl - evr: 7.61.1-34.el8_10.3 - sourcerpm: curl-7.61.1-34.el8_10.3.src.rpm + evr: 7.61.1-34.el8_10.9 + sourcerpm: curl-7.61.1-34.el8_10.9.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libdb-5.3.28-42.el8_4.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 769444 @@ -6498,13 +6498,13 @@ arches: name: libdb-utils evr: 5.3.28-42.el8_4 sourcerpm: libdb-5.3.28-42.el8_4.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libfdisk-2.32.1-46.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libfdisk-2.32.1-47.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 260128 - checksum: sha256:e7793c66af8f2cdd7893527bc81971e50f985f27c67dc22bbf118e3e0468f1a9 + size: 259176 + checksum: sha256:93d94607b800a70cffe242fdaf13ebcf9a62eb77aa98564bab7087f86a8e0832 name: libfdisk - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libffi-3.1-24.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 38584 @@ -6512,13 +6512,13 @@ arches: name: libffi evr: 3.1-24.el8 sourcerpm: libffi-3.1-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libgcc-8.5.0-26.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libgcc-8.5.0-28.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 84096 - checksum: sha256:64290a186b6ef8520f108f46f53690507da8b0d3c92e314db17f40e182739bc2 + size: 84328 + checksum: sha256:6901d0887709832430ac8c5ed9d38ff4210b1ecbf7b561807bfa427ae8dcab4e name: libgcc - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libgcrypt-1.8.5-7.el8_6.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 473908 @@ -6526,13 +6526,13 @@ arches: name: libgcrypt evr: 1.8.5-7.el8_6 sourcerpm: libgcrypt-1.8.5-7.el8_6.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libgomp-8.5.0-26.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libgomp-8.5.0-28.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 213672 - checksum: sha256:d5ae3e6eb7eb9acc9e2a1527b73a99bb4845699835d39c03a2d87f3ea2689597 + size: 213900 + checksum: sha256:1ec29eef5987da5a17e2f11dc7a5014e3b804801078ef67142ce6b4f06e93748 name: libgomp - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libgpg-error-1.31-1.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 247520 @@ -6561,13 +6561,13 @@ arches: name: libkcapi-hmaccalc evr: 1.4.0-2.el8 sourcerpm: libkcapi-1.4.0-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libmount-2.32.1-46.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libmount-2.32.1-47.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 242716 - checksum: sha256:eff5e4d50998b9f7ecfcea058cc0bebde00b2d792ab198072ac8bb165deabb0c + size: 241732 + checksum: sha256:c92289f2e195e15fece08617be1d675abfd513109a0bd14c5cf45fcd68fb84a9 name: libmount - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libnghttp2-1.33.0-6.el8_10.1.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 80224 @@ -6610,13 +6610,13 @@ arches: name: libselinux evr: 2.9-10.el8_10 sourcerpm: libselinux-2.9-10.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libsemanage-2.9-11.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libsemanage-2.9-12.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 172936 - checksum: sha256:2fbbded84101ff93c19bdaebf7b05c2950654b010c37ba5de13d7a0342bd634b + size: 173008 + checksum: sha256:70ba287f1cc36b1be6c197a3a754fbc1c37e6e6b6e1798c69b96f9174654c62d name: libsemanage - evr: 2.9-11.el8_10 - sourcerpm: libsemanage-2.9-11.el8_10.src.rpm + evr: 2.9-12.el8_10 + sourcerpm: libsemanage-2.9-12.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libsepol-2.9-3.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 348080 @@ -6631,34 +6631,34 @@ arches: name: libsigsegv evr: 2.11-5.el8 sourcerpm: libsigsegv-2.11-5.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libsmartcols-2.32.1-46.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libsmartcols-2.32.1-47.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 184132 - checksum: sha256:69598308df2327d9bca762c9d52041fa9837d51984f8bbc13e16016d49af8273 + size: 183072 + checksum: sha256:7203046a7bbf0c72965933901614a682a220800c43f69748f8a4cb209193061c name: libsmartcols - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libssh-0.9.6-14.el8.x86_64.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libssh-0.9.6-16.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 225336 - checksum: sha256:3acf41aee9f1bf30fbf498becb44a695209e4fe3172354c1ee4796cdf6dd05b4 + size: 224400 + checksum: sha256:752f11a5a8d6e9218427504dd49a42c0deb897665a7abf31306877d3568ef0bb name: libssh - evr: 0.9.6-14.el8 - sourcerpm: libssh-0.9.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libssh-config-0.9.6-14.el8.noarch.rpm + evr: 0.9.6-16.el8_10 + sourcerpm: libssh-0.9.6-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libssh-config-0.9.6-16.el8_10.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 21548 - checksum: sha256:e8281fb82a512c0bbfdd4bbd0f7f9657fce2ad547189fb93d0a0bf814173a2a4 + size: 20644 + checksum: sha256:2471adc5113ee9a2ff70bbbd3c9ef2a8d63e2da99bcfb00566b0869b2f037d27 name: libssh-config - evr: 0.9.6-14.el8 - sourcerpm: libssh-0.9.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libstdc++-8.5.0-26.el8_10.x86_64.rpm + evr: 0.9.6-16.el8_10 + sourcerpm: libssh-0.9.6-16.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libstdc++-8.5.0-28.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 484720 - checksum: sha256:5bb9487cc69fa20dfd8ba6a27976ed618cf53ef23a8b4d6709e3de1e3ed73184 + size: 485052 + checksum: sha256:3f679b1a3d0034c33546e76b9280414d5ce16c79b7b8d93358f5302f26943403 name: libstdc++ - evr: 8.5.0-26.el8_10 - sourcerpm: gcc-8.5.0-26.el8_10.src.rpm + evr: 8.5.0-28.el8_10 + sourcerpm: gcc-8.5.0-28.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libtasn1-4.13-5.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 78540 @@ -6687,13 +6687,13 @@ arches: name: libutempter evr: 1.1.6-14.el8 sourcerpm: libutempter-1.1.6-14.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libuuid-2.32.1-46.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libuuid-2.32.1-47.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 101656 - checksum: sha256:5f24ded4d1436da0fef69b6c9288768ce41e1d2caf4849c49426e06d5212f5af + size: 100768 + checksum: sha256:9ba65072e9949c2c6dfa85b8daa36292264f4c3e6a35a515b6ef572d3405aaba name: libuuid - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libverto-0.3.2-2.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 24636 @@ -6708,13 +6708,13 @@ arches: name: libxcrypt evr: 4.1.1-6.el8 sourcerpm: libxcrypt-4.1.1-6.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libxml2-2.9.7-19.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libxml2-2.9.7-21.el8_10.3.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 713464 - checksum: sha256:c2eefe2e9fa41729d7841dc2959eb0da4504fb42288db3232ad41917319d5ebd + size: 713348 + checksum: sha256:b39ab07522f5a0a8ec07bf405a831c79d9799e3f8660965a15516ad7ba3b1ceb name: libxml2 - evr: 2.9.7-19.el8_10 - sourcerpm: libxml2-2.9.7-19.el8_10.src.rpm + evr: 2.9.7-21.el8_10.3 + sourcerpm: libxml2-2.9.7-21.el8_10.3.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/libzstd-1.4.4-1.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 272364 @@ -6729,13 +6729,13 @@ arches: name: lua-libs evr: 5.3.4-12.el8 sourcerpm: lua-5.3.4-12.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/lz4-libs-1.8.3-3.el8_4.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/l/lz4-libs-1.8.3-5.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 67392 - checksum: sha256:f0e3f336e2910f8282c39a5bce21ffa35d6037842d219761ed8c58b4208077cc + size: 67876 + checksum: sha256:848aa37625f771dcf95fea67ddb7bca5c78791b2e725ab99a4d2e3fbec951c19 name: lz4-libs - evr: 1.8.3-3.el8_4 - sourcerpm: lz4-1.8.3-3.el8_4.src.rpm + evr: 1.8.3-5.el8_10 + sourcerpm: lz4-1.8.3-5.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/m/memstrack-0.2.5-2.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 52828 @@ -6785,20 +6785,20 @@ arches: name: openldap evr: 2.4.46-21.el8_10 sourcerpm: openldap-2.4.46-21.el8_10.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/o/openssl-1.1.1k-14.el8_6.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/o/openssl-1.1.1k-14.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 728108 - checksum: sha256:a8e4ff3346cfa24713f54d2a9e2b53ad7f3c9d84a6c639ba2150b7cb09550af0 + size: 727084 + checksum: sha256:53536a8f76a30cb67a288dc7c9ded095e5bb1976fd11d113101c932b2878ca6b name: openssl - evr: 1:1.1.1k-14.el8_6 - sourcerpm: openssl-1.1.1k-14.el8_6.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/o/openssl-libs-1.1.1k-14.el8_6.x86_64.rpm + evr: 1:1.1.1k-14.el8_10 + sourcerpm: openssl-1.1.1k-14.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/o/openssl-libs-1.1.1k-14.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1542788 - checksum: sha256:5c87e7ec6269dbe1ec4922adc4016b5117fd5ecf8177015e76f471699f0de5f1 + size: 1541912 + checksum: sha256:0a28a74fb4b00d923b8d495c8875f6ffaeb7fee5b23388b42d2e3583c4b88be0 name: openssl-libs - evr: 1:1.1.1k-14.el8_6 - sourcerpm: openssl-1.1.1k-14.el8_6.src.rpm + evr: 1:1.1.1k-14.el8_10 + sourcerpm: openssl-1.1.1k-14.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/o/openssl-pkcs11-0.4.10-3.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 67740 @@ -6827,13 +6827,13 @@ arches: name: p11-kit-trust evr: 0.23.22-2.el8 sourcerpm: p11-kit-0.23.22-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/pam-1.3.1-36.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/pam-1.3.1-39.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 765548 - checksum: sha256:92bb7478c5945f4c83f748197ffb3ead918ba55e2d08448be6bafdbafbc2c821 + size: 766824 + checksum: sha256:55f3b294c9a4fbfaea0353a5ed38d15fb87fb9ca79f6cbfe4238923bd76cf4f3 name: pam - evr: 1.3.1-36.el8_10 - sourcerpm: pam-1.3.1-36.el8_10.src.rpm + evr: 1.3.1-39.el8_10 + sourcerpm: pam-1.3.1-39.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/pcre-8.42-6.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 215668 @@ -6855,13 +6855,13 @@ arches: name: pigz evr: 2.4-4.el8 sourcerpm: pigz-2.4-4.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/platform-python-3.6.8-69.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/platform-python-3.6.8-71.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 90592 - checksum: sha256:43e2eac6440b86c1ec9eec337abed72a2878adc0ec11aecc506de59963c47fb9 + size: 89788 + checksum: sha256:225f9e81e7ff60618c43bdb2fd9d46b43c1ec7d195faf7704dacead5f6bbffe4 name: platform-python - evr: 3.6.8-69.el8_10 - sourcerpm: python3-3.6.8-69.el8_10.src.rpm + evr: 3.6.8-71.el8_10 + sourcerpm: python3-3.6.8-71.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/platform-python-pip-9.0.3-24.el8.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 1633024 @@ -6869,13 +6869,13 @@ arches: name: platform-python-pip evr: 9.0.3-24.el8 sourcerpm: python-pip-9.0.3-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/platform-python-setuptools-39.2.0-8.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/platform-python-setuptools-39.2.0-9.el8_10.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 647476 - checksum: sha256:8f330a8602613473b6e4c0bc57cb3012932a9a9399ea7a3fa65175453a6580ab + size: 647688 + checksum: sha256:c809d773ee4709e911391552c2a162d04381848603a69102eb785a235b1c66be name: platform-python-setuptools - evr: 39.2.0-8.el8_10 - sourcerpm: python-setuptools-39.2.0-8.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + sourcerpm: python-setuptools-39.2.0-9.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/popt-1.18-1.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 62856 @@ -6897,13 +6897,13 @@ arches: name: publicsuffix-list-dafsa evr: 20180723-1.el8 sourcerpm: publicsuffix-list-20180723-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/python3-libs-3.6.8-69.el8_10.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/python3-libs-3.6.8-71.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 8251108 - checksum: sha256:6dcf5dcbb3000fe90877bafbb4e8bb9f9a170b262c12f7ae8033e649227cf1b0 + size: 8250824 + checksum: sha256:b80ef80e565941803678ce69506358c269cb2d02a862642199a5b22d20ca52a4 name: python3-libs - evr: 3.6.8-69.el8_10 - sourcerpm: python3-3.6.8-69.el8_10.src.rpm + evr: 3.6.8-71.el8_10 + sourcerpm: python3-3.6.8-71.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/python3-pip-wheel-9.0.3-24.el8.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 886996 @@ -6911,13 +6911,13 @@ arches: name: python3-pip-wheel evr: 9.0.3-24.el8 sourcerpm: python-pip-9.0.3-24.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/python3-setuptools-wheel-39.2.0-8.el8_10.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/p/python3-setuptools-wheel-39.2.0-9.el8_10.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 296040 - checksum: sha256:833dcb68b1eea48bfb8853886236753647743258fd74cc538ffa72408aab9213 + size: 296208 + checksum: sha256:eed50a1612ab8303c50f62d7c3409020b2ff829037cc651725562afa95e56e05 name: python3-setuptools-wheel - evr: 39.2.0-8.el8_10 - sourcerpm: python-setuptools-39.2.0-8.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + sourcerpm: python-setuptools-39.2.0-9.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/r/readline-7.0-10.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 204216 @@ -6967,13 +6967,13 @@ arches: name: setup evr: 2.12.2-9.el8 sourcerpm: setup-2.12.2-9.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/shadow-utils-4.6-22.el8.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/shadow-utils-4.6-23.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1292332 - checksum: sha256:ea73ee201451bbca0d6d14ca434c93800f01c8fb1b9daef727a5af1a27356d07 + size: 1292212 + checksum: sha256:14c51c9595e5af1b0949b230b03fd83becd05560f6e380a737436246d267b9a5 name: shadow-utils - evr: 2:4.6-22.el8 - sourcerpm: shadow-utils-4.6-22.el8.src.rpm + evr: 2:4.6-23.el8_10 + sourcerpm: shadow-utils-4.6-23.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/shared-mime-info-1.9-4.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 336852 @@ -6981,41 +6981,41 @@ arches: name: shared-mime-info evr: 1.9-4.el8 sourcerpm: shared-mime-info-1.9-4.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/sqlite-libs-3.26.0-19.el8_9.x86_64.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/sqlite-libs-3.26.0-20.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 595084 - checksum: sha256:4dc6160b4cdd96fc0205f18cc9f0dd0e8e276b8a05c511319469e1a7b44b2425 + size: 594128 + checksum: sha256:a77e624b3a8e10d9db21e42a2a8e599ed1ad9a1689eb4f57af77f438185e110c name: sqlite-libs - evr: 3.26.0-19.el8_9 - sourcerpm: sqlite-3.26.0-19.el8_9.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/systemd-239-82.el8_10.5.x86_64.rpm + evr: 3.26.0-20.el8_10 + sourcerpm: sqlite-3.26.0-20.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/systemd-239-82.el8_10.8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 3825744 - checksum: sha256:116ad89ce7a4368e19e1a22f07fb5e6d1c5227fc8eee708f2df697b68c77d6e5 + size: 3828188 + checksum: sha256:f4610daaffe36789deafdead6dfb621e1e722b151541bf259bffcaf892ce9bb2 name: systemd - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/systemd-libs-239-82.el8_10.5.x86_64.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/systemd-libs-239-82.el8_10.8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1196408 - checksum: sha256:064b35388b6c188002193500c53fbee2e7d4bb754810d62cdf37883d4361df94 + size: 1197600 + checksum: sha256:d77b012f317bb7736f25e2b03bc912f983bb265c4447890eb41a009ce3f5fa56 name: systemd-libs - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/systemd-pam-239-82.el8_10.5.x86_64.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/systemd-pam-239-82.el8_10.8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 526292 - checksum: sha256:35fe48ea4c2fc1b364b901b42a432b9fd1fb4edece973aca8a6e4773b04cf0a3 + size: 527476 + checksum: sha256:41a9be02b2a65f87bdf1546a3a034c5cd5aea85e187e9e1bc45efbe30897b3ee name: systemd-pam - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/systemd-udev-239-82.el8_10.5.x86_64.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/s/systemd-udev-239-82.el8_10.8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 1663872 - checksum: sha256:a55541d2ba40e1a2ae356e6135f71dbf95d60e9c1545a7d51074709fbb466c0e + size: 1665148 + checksum: sha256:c6b70e68144dc63475ef6bc43eb1483dd9b06b56929d1d22f660ebfe871f487b name: systemd-udev - evr: 239-82.el8_10.5 - sourcerpm: systemd-239-82.el8_10.5.src.rpm + evr: 239-82.el8_10.8 + sourcerpm: systemd-239-82.el8_10.8.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/t/trousers-0.3.15-2.el8.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 156324 @@ -7030,27 +7030,27 @@ arches: name: trousers-lib evr: 0.3.15-2.el8 sourcerpm: trousers-0.3.15-2.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/t/tzdata-2025b-1.el8.noarch.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/t/tzdata-2025c-1.el8.noarch.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 488428 - checksum: sha256:338539f7f0cd2770694153af81e2e65121b050a1bb555ad66a6fb6f562732602 + size: 560812 + checksum: sha256:e4b6cf905fb2111d9a45c3b6b95f6e0c5199bf9b3d576f2a06b4dcb49a63d55e name: tzdata - evr: 2025b-1.el8 - sourcerpm: tzdata-2025b-1.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/u/util-linux-2.32.1-46.el8.x86_64.rpm + evr: 2025c-1.el8 + sourcerpm: tzdata-2025c-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/u/util-linux-2.32.1-47.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 2597616 - checksum: sha256:1accef88d06655139903a7b4aa6a01cab62b3c899a93d297cb7ac92a476abed6 + size: 2596592 + checksum: sha256:4861ff37cf00bd0bab78a81004dfed1e7b0ee5355403510b9e78e2a90fc7226c name: util-linux - evr: 2.32.1-46.el8 - sourcerpm: util-linux-2.32.1-46.el8.src.rpm - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/w/which-2.21-20.el8.x86_64.rpm + evr: 2.32.1-47.el8_10 + sourcerpm: util-linux-2.32.1-47.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/w/which-2.21-21.el8_10.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms - size: 50960 - checksum: sha256:0778474c5d14d644f337f4ca2d2896598d27a71c097fa53e373b7c07e6b5384d + size: 51220 + checksum: sha256:7a66c234a7760649ae1753e108704adf94901f334e1acbcba22d3e6dbf778a58 name: which - evr: 2.21-20.el8 - sourcerpm: which-2.21-20.el8.src.rpm + evr: 2.21-21.el8_10 + sourcerpm: which-2.21-21.el8_10.src.rpm - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/Packages/x/xz-5.2.4-4.el8_6.x86_64.rpm repoid: rhel-8-for-x86_64-baseos-rpms size: 156884 @@ -7073,12 +7073,12 @@ arches: evr: 1.2.11-25.el8 sourcerpm: zlib-1.2.11-25.el8.src.rpm source: - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/source/SRPMS/Packages/j/jq-1.6-9.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/source/SRPMS/Packages/j/jq-1.6-11.el8_10.src.rpm repoid: rhel-8-for-x86_64-appstream-source-rpms - size: 1502487 - checksum: sha256:2dc420bdaef06107f892878c520cff069c55e4553bc3d8f0d2136ff0ed2c5d99 + size: 1506922 + checksum: sha256:0fce66914c13dd2a34fbd2d5a043cada5ed98ecc28895f07655b1b059758ab80 name: jq - evr: 1.6-9.el8_10 + evr: 1.6-11.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/source/SRPMS/Packages/l/libxkbcommon-0.9.1-1.el8.src.rpm repoid: rhel-8-for-x86_64-appstream-source-rpms size: 390739 @@ -7091,12 +7091,12 @@ arches: checksum: sha256:31cd372131f6eb404ce90285210fd74021914b4eb52e933b2aeebfa955099faa name: oniguruma evr: 6.8.2-3.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/source/SRPMS/Packages/p/postgresql-15.12-1.module+el8.10.0+22871+d29fc53a.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/source/SRPMS/Packages/p/postgresql-15.15-1.module+el8.10.0+23782+2d6b2a31.src.rpm repoid: rhel-8-for-x86_64-appstream-source-rpms - size: 53429582 - checksum: sha256:2659a0235ebefeb2151dc5629b45fd8ac688053ac6e44dad2c89f1b7a5cf3411 + size: 45654458 + checksum: sha256:30795de4ed7a01becc64ee50796e7c76b9195ff1eed0a341b279aeb3e4b15527 name: postgresql - evr: 15.12-1.module+el8.10.0+22871+d29fc53a + evr: 15.15-1.module+el8.10.0+23782+2d6b2a31 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/source/SRPMS/Packages/x/xkeyboard-config-2.28-1.el8.src.rpm repoid: rhel-8-for-x86_64-appstream-source-rpms size: 1699339 @@ -7115,24 +7115,24 @@ arches: checksum: sha256:07bef8d477176042b940e5732eba1600871aacc1a0dbe679952d62265b5e6dbc name: attr evr: 2.4.48-3.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/a/audit-3.1.2-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/a/audit-3.1.2-1.el8_10.1.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 1248664 - checksum: sha256:c1facd2ecc520c758bbe2b049207629ad08914798f63c92beef4790086ad2f29 + size: 1250424 + checksum: sha256:b5a47d142bc89e986f3c662c6552ec59c08bdfbec8d38fc8d2720df74cdda53c name: audit - evr: 3.1.2-1.el8 + evr: 3.1.2-1.el8_10.1 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/b/basesystem-11-5.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 11934 checksum: sha256:95fb2c11bd59c51fcb0c0239e3e2c307d7d8d40c24b2960792bbc8af8c14f95c name: basesystem evr: 11-5.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/b/bash-4.4.20-5.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/b/bash-4.4.20-6.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 9478334 - checksum: sha256:670d393f3d288bc61519be0d2c5378addc1cd4a752b738ce2424b69618f3965c + size: 9479153 + checksum: sha256:f0e4182affffe350e5dbd55e410baed663d514cd6832108b83899ac8d1524830 name: bash - evr: 4.4.20-5.el8 + evr: 4.4.20-6.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/b/brotli-1.0.6-3.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 23835509 @@ -7145,24 +7145,24 @@ arches: checksum: sha256:9c1d697f675f5889c57e7f983afa4b3e3f6e2334887ded9d7c10c5a205d1b06a name: bzip2 evr: 1.0.6-28.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/c/ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/c/ca-certificates-2025.2.80_v9.0.304-80.2.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 715540 - checksum: sha256:a066b501d49019ad53d7a8bd7badd1b073f317e406561f0cfad59b7bdfaba0a6 + size: 742547 + checksum: sha256:879547af21a33e8e0a2356bc7cbd8c4fdc17d4830fbcadbf9aac1cfbbcf140f5 name: ca-certificates - evr: 2024.2.69_v8.0.303-80.0.el8_10 + evr: 2025.2.80_v9.0.304-80.2.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/c/chkconfig-1.19.2-1.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 221618 checksum: sha256:7cf522c35fa5a5906c8c793ece9e599e80aba6c37d3f57afbf436c9abb8629c6 name: chkconfig evr: 1.19.2-1.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/c/coreutils-8.30-15.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/c/coreutils-8.30-16.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 5550193 - checksum: sha256:8e6d8f3d8929cfd896c09a6d7ebfdd0d78fd028169042f7df9e35803189e4eee + size: 5552304 + checksum: sha256:a765698d09c82865c7b71c2125273ed393aee734cdb2a999458bbbed9ccfe098 name: coreutils - evr: 8.30-15.el8 + evr: 8.30-16.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/c/cpio-2.12-11.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 1312438 @@ -7187,24 +7187,24 @@ arches: checksum: sha256:21bb087ab9a3d64c89295a1bd45b5e5b6189832a972d4b3ddccb2ff5437ac2ed name: cryptsetup evr: 2.3.7-7.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/c/curl-7.61.1-34.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/c/curl-7.61.1-34.el8_10.9.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 2629169 - checksum: sha256:da74fbd455075a1e124a5251e17946c0a2c8b8bd023e349d0c52b3cee8e3d37c + size: 2637559 + checksum: sha256:b69dcfee680f356433e48929a3b447b72d6e99bf8ad61b5a6c9ac2eededf87cd name: curl - evr: 7.61.1-34.el8_10.3 + evr: 7.61.1-34.el8_10.9 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/c/cyrus-sasl-2.1.27-6.el8_5.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 4032772 checksum: sha256:72d534b444990dbb647ead881f77e841ef9416109054cf74b7a5d12f912eef9a name: cyrus-sasl evr: 2.1.27-6.el8_5 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/d/dbus-1.12.8-26.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/d/dbus-1.12.8-27.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 2149642 - checksum: sha256:4934fea4bcebaf82dacd6d8258b35233f25e66cfd45d68f6b6e48d2ff3632395 + size: 2153514 + checksum: sha256:1a5cc2d3f263fa49f2e626d34ce7ac0ef2b6a3c8c3cf4a3c652e0614c0479911 name: dbus - evr: 1:1.12.8-26.el8 + evr: 1:1.12.8-27.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/d/device-mapper-multipath-0.8.4-42.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 770004 @@ -7217,60 +7217,60 @@ arches: checksum: sha256:1308e782ad4f9b17a5cbbac9734be496948db857de7458b3388645bf1786892d name: diffutils evr: 3.6-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/d/dracut-049-233.git20240115.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/d/dracut-049-239.git20251127.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 582719 - checksum: sha256:21cebc2005d7aa0b6cd45f1a5455ac85f75399b8d3f2a38de3f47585f2200acd + size: 585830 + checksum: sha256:559705b03309fdae2474df8798242da457ed1dd7d4014c37462188975bb3bf2e name: dracut - evr: 049-233.git20240115.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/e/e2fsprogs-1.45.6-5.el8.src.rpm + evr: 049-239.git20251127.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/e/e2fsprogs-1.45.6-7.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 5675423 - checksum: sha256:1c0771ea038777ecf84ba31cba0c3d221d39e351c1a6e7967857977c1949c792 + size: 5680546 + checksum: sha256:7adebb4cf95886f8dc9cdfa518378ba4609a2f9800782b8330ca5ddf4409d3bf name: e2fsprogs - evr: 1.45.6-5.el8 + evr: 1.45.6-7.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/e/elfutils-0.190-2.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 9288737 checksum: sha256:54fe49a6fd4f87d6fd594b62c465105fc3efab05a1ffcc216f053c277ab619bf name: elfutils evr: 0.190-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/e/expat-2.2.5-17.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/e/expat-2.5.0-1.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 8345318 - checksum: sha256:41de03fcbf3a8f7fa42e7017058ae0186e98a0e448ce01772de7af0a856a749d + size: 8388946 + checksum: sha256:566456bc755b628dc5a4ce77b6a643769165202f0ddd852ba73dd9512b994d2b name: expat - evr: 2.2.5-17.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/f/file-5.33-26.el8.src.rpm + evr: 2.5.0-1.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/f/file-5.33-27.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 899551 - checksum: sha256:1bdcfa5032e3ef5ff5f9f72233b6c9c67c0c7ff994a04df131d3b64b213b99cb + size: 900161 + checksum: sha256:f6996986985a11cebdb085b30dc7281eb320ee6234fa12ae43e39cd2d1de1afc name: file - evr: 5.33-26.el8 + evr: 5.33-27.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/f/filesystem-3.8-6.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 37286 checksum: sha256:113b7c5e28cc1d44e21c564c17d8c592a3f8a20b4c268cdaad6a407dee4d1540 name: filesystem evr: 3.8-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/f/findutils-4.6.0-23.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/f/findutils-4.6.0-24.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 3831527 - checksum: sha256:28510e1bb0c939d1b945f889611cf572e03ee18faaa5bff6f0ad203fd696fb29 + size: 3832656 + checksum: sha256:4ee9287c4f007ef160f3e2f61ddd3d6ff75dfa82ab99ba27f5c6ca673d97d529 name: findutils - evr: 1:4.6.0-23.el8_10 + evr: 1:4.6.0-24.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/gawk-4.2.1-4.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 3036497 checksum: sha256:fac4ea2cb712ff3f0dd723d6eec358e051040592492b5cf6bd66354b8a09f143 name: gawk evr: 4.2.1-4.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/gcc-8.5.0-26.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/gcc-8.5.0-28.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 65714976 - checksum: sha256:12ebb9cdefb5f8c68bbce3eb469440d26f0d64de958751f4916328ed02522ed2 + size: 65716029 + checksum: sha256:1e81087ab2f1f3435e106d747529d2a178e33a285722662fa89c56a37f471489 name: gcc - evr: 8.5.0-26.el8_10 + evr: 8.5.0-28.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/gdbm-1.18-2.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 966590 @@ -7283,42 +7283,42 @@ arches: checksum: sha256:114be9b072a7726f2ac557fda6b8a86254ae3b7ed984ed14cfa7733bea9005d4 name: gettext evr: 0.19.8.1-17.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/glib2-2.56.4-165.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/glib2-2.56.4-167.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 7127086 - checksum: sha256:0d418524f04a24e2357b26d4107424780acca901a1575a7a5cbf178b2aa1458c + size: 7164394 + checksum: sha256:80ee50b39aa478e1503dbd18626df91a023d30e3f9b6fb588fa82e6ce2b5972e name: glib2 - evr: 2.56.4-165.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/glibc-2.28-251.el8_10.16.src.rpm + evr: 2.56.4-167.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/glibc-2.28-251.el8_10.27.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 18487094 - checksum: sha256:f988b183ac97142187843e95dab32f9d7bc8bce3723c80a535a3dfdabba08a44 + size: 18525139 + checksum: sha256:c3f8d7e92cffbd4e81c33871b5c55034b3f11c7417e6d84805a67e52cc6ebec1 name: glibc - evr: 2.28-251.el8_10.16 + evr: 2.28-251.el8_10.27 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/gmp-6.1.2-11.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 2430007 checksum: sha256:0be11faec5810961b3b5b2f0e8a54c4628b62bb2bec4e282f47682c4be0cef64 name: gmp evr: 1:6.1.2-11.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/gnutls-3.6.16-8.el8_10.3.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/gnutls-3.6.16-8.el8_10.4.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 5774773 - checksum: sha256:e3dc1e166a626f8ff303c9d9a260d4a1ac68cd2a62d28bfec51d6b1aa3670053 + size: 5783117 + checksum: sha256:62b0fb59ca7babdf1f2558c69ff1ceb67358d455bbf107d32db851f0af8ef185 name: gnutls - evr: 3.6.16-8.el8_10.3 + evr: 3.6.16-8.el8_10.4 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/grep-3.1-6.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 1412532 checksum: sha256:c5d8342de1536365d5ccb340a4a381b40529eb98a6866981df956e4adc2727ac name: grep evr: 3.1-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/grub2-2.02-165.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/grub2-2.02-169.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 8327584 - checksum: sha256:01c652d9a48600b8a77f44c9d93878db5f5fffd3b4f0f9988fae892020feeb56 + size: 8327955 + checksum: sha256:1f583a9551862935908b05cfe9c75f5d0fd7b3eb46896a938341fbdc700d51c2 name: grub2 - evr: 1:2.02-165.el8_10 + evr: 1:2.02-169.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/g/grubby-8.40-49.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 233771 @@ -7361,18 +7361,18 @@ arches: checksum: sha256:3df9490dc2b5146a1e0953d254540d64b7e0c304c52ebd64baf2eeb78eae70bd name: kmod evr: 25-20.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/k/krb5-1.18.2-31.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/k/krb5-1.18.2-32.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 10383931 - checksum: sha256:1c1468efcb7c58f7e40727e45deb6f7d30b8ddb3acaa192a15807af8f1fdfc22 + size: 10400512 + checksum: sha256:b9f52264ad5dc5068e423d0c7f64717e76ba1b4eb68942e7e6124ca3149a72ac name: krb5 - evr: 1.18.2-31.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libarchive-3.3.3-5.el8.src.rpm + evr: 1.18.2-32.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libarchive-3.3.3-6.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 6570219 - checksum: sha256:97e61fdb02920262ab2c2506465dca8492b33050561d3d981ed1065083166c3e + size: 6570714 + checksum: sha256:411f2b5c7c8b0465e3d4c6dd1e91c6db56ed564f54ac3e100114cb9a86b0fcab name: libarchive - evr: 3.3.3-5.el8 + evr: 3.3.3-6.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libcap-2.48-6.el8_9.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 208927 @@ -7457,12 +7457,12 @@ arches: checksum: sha256:2f61feb51798629d4f7b78130e68eb2516463da41d6e7b64d82d28d17355b3f1 name: libselinux evr: 2.9-10.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libsemanage-2.9-11.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libsemanage-2.9-12.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 267435 - checksum: sha256:0e9bc0dd2ddcf5e8e8f734b32c7a3c93165060ef5b2f5910713984cea71e349f + size: 268557 + checksum: sha256:bdfaa6f41b668f889f15abc2165208ff2bc543e34da6235a19943613521e6df8 name: libsemanage - evr: 2.9-11.el8_10 + evr: 2.9-12.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libsepol-2.9-3.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 562616 @@ -7475,12 +7475,12 @@ arches: checksum: sha256:a139e44850d9210e2a662e676dd57a6a40323b1744a14be7a87221f8e36cffe5 name: libsigsegv evr: 2.11-5.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libssh-0.9.6-14.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libssh-0.9.6-16.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 1151415 - checksum: sha256:a04fb32a5bdaf33053918c3c931891fe7415a8ace08069b74d055931413056eb + size: 1151564 + checksum: sha256:71e885a125f15dbbce25f515cc80bd2df63a93c904e0b71c5645d27c18c9f98c name: libssh - evr: 0.9.6-14.el8 + evr: 0.9.6-16.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libtasn1-4.13-5.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 1968290 @@ -7517,30 +7517,30 @@ arches: checksum: sha256:d9803b5dd6cdbb4fd977258092cb50c48c8e28f3e3b4a0d6056c093983e17b29 name: libxcrypt evr: 4.1.1-6.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libxml2-2.9.7-19.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/libxml2-2.9.7-21.el8_10.3.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 5483351 - checksum: sha256:7e50cdc6eb992d219955bbff31a2647a4ed00b088ad3fa16954947c3afd2c62a + size: 5492235 + checksum: sha256:a236b9807436c13e06c88926d7d3b25c2746f5b7fb12fadc41462a00d448a1f7 name: libxml2 - evr: 2.9.7-19.el8_10 + evr: 2.9.7-21.el8_10.3 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/lua-5.3.4-12.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 437265 checksum: sha256:764fa61f3a6678bf93d94351468e49863176420688ab4e8c1aa6a5eb84ecf23d name: lua evr: 5.3.4-12.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/lvm2-2.03.14-15.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/lvm2-2.03.14-15.el8_10.2.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 3182486 - checksum: sha256:eb51bc7200bf3af803093b3b61c543aae9560c36999aeca1304cd718b8bbe453 + size: 3185875 + checksum: sha256:c464de2287071dd2c498af02ce271d6153a354bfbce16b271c7131f98a55f8c8 name: lvm2 - evr: 8:2.03.14-15.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/lz4-1.8.3-3.el8_4.src.rpm + evr: 8:2.03.14-15.el8_10.2 + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/l/lz4-1.8.3-5.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 343953 - checksum: sha256:5952931f1ccd36d3db5bf1bb007966056e5fde6569a8d2da8e91b38bd9f41d3b + size: 347074 + checksum: sha256:a5d3ef1654348c492e0a0655d7b71c692ac2753b867281df8f9d036cda46bc24 name: lz4 - evr: 1.8.3-3.el8_4 + evr: 1.8.3-5.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/m/memstrack-0.2.5-2.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 63665 @@ -7577,12 +7577,12 @@ arches: checksum: sha256:42a8826001f6a49c1385746f1c5ef3967c3f15fe6fa510fe001d5a232732661a name: openldap evr: 2.4.46-21.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/o/openssl-1.1.1k-14.el8_6.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/o/openssl-1.1.1k-14.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 7741480 - checksum: sha256:c97b10d6a034e025a19ec8443ef7c80755e3a407fe29a77dda95af958b199eed + size: 7743036 + checksum: sha256:01ef6da2173fdd58138e983a69f7213698673c3eddb23539d4876eaca0efc07d name: openssl - evr: 1:1.1.1k-14.el8_6 + evr: 1:1.1.1k-14.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/o/openssl-pkcs11-0.4.10-3.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 520347 @@ -7601,12 +7601,12 @@ arches: checksum: sha256:9dece924ffd6e5698e7cb865f01976d7786b8c3cc65e743cf9ce3a856baff95e name: p11-kit evr: 0.23.22-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/p/pam-1.3.1-36.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/p/pam-1.3.1-39.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 1166826 - checksum: sha256:5a73a9d6ffbc3fa84853486a233e95765189dd0bf7b18059f2b8e763bfc8591f + size: 1185014 + checksum: sha256:dbbbd55c9700e19c59e4e425a6b6f08eb4cb77f68967e773b318a8dfbdfdfb93 name: pam - evr: 1.3.1-36.el8_10 + evr: 1.3.1-39.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/p/pcre-8.42-6.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 1617186 @@ -7649,18 +7649,18 @@ arches: checksum: sha256:0c18dcaadf6e9596e2b939ae9cc75db12df7919a01a204f314df315e384b0d4a name: python-pip evr: 9.0.3-24.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/p/python-setuptools-39.2.0-8.el8_10.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/p/python-setuptools-39.2.0-9.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 868530 - checksum: sha256:cd563238ca4ec7c288874e42d1506337e4917620ed83b1e4a2aec2fb6a5ea770 + size: 869180 + checksum: sha256:31ae9c84f36f7d4e51b0e945e5d12210594defd3ea16cf5645c21d42fd6332fa name: python-setuptools - evr: 39.2.0-8.el8_10 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/p/python3-3.6.8-69.el8_10.src.rpm + evr: 39.2.0-9.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/p/python3-3.6.8-71.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 19223254 - checksum: sha256:4578b972df16aa25dae9170d339d86792c59612f29e0726ead0107ed7347ba3a + size: 19241145 + checksum: sha256:e7012ea23f3816772d64357f7db534f83c55279bcbefdecaefe2573d4734c6a3 name: python3 - evr: 3.6.8-69.el8_10 + evr: 3.6.8-71.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/r/readline-7.0-10.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 2937518 @@ -7691,30 +7691,30 @@ arches: checksum: sha256:72f87a1c0c92c9486bdb3748db880281fcc1f947bbedb99edbcebf189e4a5c40 name: setup evr: 2.12.2-9.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/s/shadow-utils-4.6-22.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/s/shadow-utils-4.6-23.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 1845120 - checksum: sha256:140a4273738ea9cfd1fc5627ebd66ad1696a5e3c959092b41bf5dc6d7657d8a6 + size: 1845199 + checksum: sha256:1f73218c7981d0fe5008adfb4b8460626ba2dfe43c4075f50045c48f8d9e30cd name: shadow-utils - evr: 2:4.6-22.el8 + evr: 2:4.6-23.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/s/shared-mime-info-1.9-4.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 644720 checksum: sha256:b070925e9e0d4824b3c0ed86bad64f77daf954ec359260789fe8f8150ef402c6 name: shared-mime-info evr: 1.9-4.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/s/sqlite-3.26.0-19.el8_9.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/s/sqlite-3.26.0-20.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 23592377 - checksum: sha256:d4bd6ea502814941a714ab1f40e87d8f48fc4a362b344ca928f3c2f514fdf024 + size: 23592583 + checksum: sha256:26dc49ea369dc145166e0a3959cc132f45e3345b99a75420c8932af24f44668c name: sqlite - evr: 3.26.0-19.el8_9 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/s/systemd-239-82.el8_10.5.src.rpm + evr: 3.26.0-20.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/s/systemd-239-82.el8_10.8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 9161850 - checksum: sha256:a20ae7bd2f13fd756b2389ec6ba6f84e6a9be28df01b5a7d04dab93b492a0eab + size: 9188443 + checksum: sha256:a3ade60f73bb3137b94ac38205c321511b70e2bf61b79e2a25e31015fb415844 name: systemd - evr: 239-82.el8_10.5 + evr: 239-82.el8_10.8 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/t/texinfo-6.5-7.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 4544531 @@ -7727,24 +7727,24 @@ arches: checksum: sha256:ad79eab11673ac2f172276a993d98f2bf98c77728863f656d7cc0ab595d5b593 name: trousers evr: 0.3.15-2.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/t/tzdata-2025b-1.el8.src.rpm + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/t/tzdata-2025c-1.el8.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 946701 - checksum: sha256:2f0ba51d371713287a690d9d1635b534113258aa2571862603d52870c1c8b60d + size: 960798 + checksum: sha256:c9798a08b98344921713d3183bda98727df494d83f96924604b6b755ddc30f61 name: tzdata - evr: 2025b-1.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/u/util-linux-2.32.1-46.el8.src.rpm + evr: 2025c-1.el8 + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/u/util-linux-2.32.1-47.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 4816801 - checksum: sha256:3fb688481dd062d917d8119cd64582a9e6ffa6736a6dbbf956d038a9115c6004 + size: 4817466 + checksum: sha256:e10e379f1386bdd6315e20cf735616747690c137ada562f47da85ca90ea966ee name: util-linux - evr: 2.32.1-46.el8 - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/w/which-2.21-20.el8.src.rpm + evr: 2.32.1-47.el8_10 + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/w/which-2.21-21.el8_10.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms - size: 171457 - checksum: sha256:70aca3ef4713172514dbe5334bd56b29a988e736211e946219f5d965b31eebce + size: 171834 + checksum: sha256:e2c4d30905324f6c2aeecbafab802fd9bdb6c46d2aece65ff3b17c1ec21ecbdf name: which - evr: 2.21-20.el8 + evr: 2.21-21.el8_10 - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/source/SRPMS/Packages/x/xz-5.2.4-4.el8_6.src.rpm repoid: rhel-8-for-x86_64-baseos-source-rpms size: 1077113 @@ -7764,7 +7764,7 @@ arches: name: zstd evr: 1.4.4-1.el8 module_metadata: - - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/repodata/9309fe60f0773f7fe7faa2d89fc8cda4b4b7f325af0fb1972e5d004c23749bec-modules.yaml.gz + - url: https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/repodata/014302642b55e11ae80efb4f656aab9af47bd7be486287c4121e40bb91d65238-modules.yaml.gz repoid: rhel-8-for-x86_64-appstream-rpms - size: 727191 - checksum: sha256:9309fe60f0773f7fe7faa2d89fc8cda4b4b7f325af0fb1972e5d004c23749bec + size: 780995 + checksum: sha256:014302642b55e11ae80efb4f656aab9af47bd7be486287c4121e40bb91d65238 diff --git a/scale/signatures/deploy.yaml b/scale/signatures/deploy.yaml index 212e92dab631a..85b356da9bf08 100644 --- a/scale/signatures/deploy.yaml +++ b/scale/signatures/deploy.yaml @@ -11,7 +11,7 @@ spec: spec: containers: - name: update-signature - image: quay.io/rhacs-eng/apollo-ci:stackrox-test-0.4.8 + image: quay.io/rhacs-eng/apollo-ci:stackrox-test-0.5.1 imagePullPolicy: IfNotPresent command: - /bin/bash diff --git a/scanner/enricher/csaf/internal/zreader/compression_string.go b/scanner/enricher/csaf/internal/zreader/compression_string.go index 50a5eb446f4e0..f0f1ab3bc02c8 100644 --- a/scanner/enricher/csaf/internal/zreader/compression_string.go +++ b/scanner/enricher/csaf/internal/zreader/compression_string.go @@ -19,8 +19,9 @@ const _Compression_name = "KindGzipKindZstdKindBzip2KindNone" var _Compression_index = [...]uint8{0, 8, 16, 25, 33} func (i Compression) String() string { - if i < 0 || i >= Compression(len(_Compression_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_Compression_index)-1 { return "Compression(" + strconv.FormatInt(int64(i), 10) + ")" } - return _Compression_name[_Compression_index[i]:_Compression_index[i+1]] + return _Compression_name[_Compression_index[idx]:_Compression_index[idx+1]] } diff --git a/scanner/enricher/fixedby/versiontype_string.go b/scanner/enricher/fixedby/versiontype_string.go index ca4539400f4a2..f98b5bfbe06d5 100644 --- a/scanner/enricher/fixedby/versiontype_string.go +++ b/scanner/enricher/fixedby/versiontype_string.go @@ -20,8 +20,9 @@ const _versionType_name = "unknownVersionTypenormalVersionTypeurlEncodedVersionT var _versionType_index = [...]uint8{0, 18, 35, 56, 73, 92} func (i versionType) String() string { - if i < 0 || i >= versionType(len(_versionType_index)-1) { + idx := int(i) - 0 + if i < 0 || idx >= len(_versionType_index)-1 { return "versionType(" + strconv.FormatInt(int64(i), 10) + ")" } - return _versionType_name[_versionType_index[i]:_versionType_index[i+1]] + return _versionType_name[_versionType_index[idx]:_versionType_index[idx+1]] } diff --git a/scanner/image/db/konflux.Dockerfile b/scanner/image/db/konflux.Dockerfile index 56d8c2c51e25f..101eb2e1ce5ab 100644 --- a/scanner/image/db/konflux.Dockerfile +++ b/scanner/image/db/konflux.Dockerfile @@ -1,4 +1,4 @@ -FROM registry.redhat.io/rhel8/postgresql-15:latest@sha256:0576206b44a5cb073b6364f7af104a4a17994f9bb8c7a948da9588d6b4bbf1e8 +FROM registry.redhat.io/rhel8/postgresql-15:latest@sha256:f5ff8f1968b4c842da981e234efee065c66bc5208d93055c3135b536f421d432 ARG BUILD_TAG RUN if [[ "$BUILD_TAG" == "" ]]; then >&2 echo "error: required BUILD_TAG arg is unset"; exit 6; fi @@ -11,7 +11,7 @@ LABEL \ io.k8s.display-name="scanner-v4-db" \ io.openshift.tags="rhacs,scanner-v4-db,stackrox" \ maintainer="Red Hat, Inc." \ - name="rhacs-scanner-v4-db-rhel8" \ + name="advanced-cluster-security/rhacs-scanner-v4-db-rhel8" \ # Custom Snapshot creation in `operator-bundle-pipeline` depends on source-location label to be set correctly. source-location="https://github.com/stackrox/stackrox" \ summary="Scanner v4 DB for Red Hat Advanced Cluster Security for Kubernetes" \ diff --git a/scanner/image/db/scripts/download.sh b/scanner/image/db/scripts/download.sh index e3de2547511e5..065310e082e5a 100755 --- a/scanner/image/db/scripts/download.sh +++ b/scanner/image/db/scripts/download.sh @@ -15,8 +15,11 @@ output_dir="/rpms" mkdir $output_dir if [[ "$arch" == "s390x" ]]; then + # TODO(ROX-30647): Builds are failing due to UBI9:latest not containing the + # necessary version of openssl-libs to build postgresql-contrib. + pg_build_version="0:16.8-1.module_el9+1209+bd6e4013.s390x" dnf module enable -y postgresql:16 - dnf install -y --downloadonly --downloaddir=/tmp postgresql postgresql-private-libs postgresql-server postgresql-contrib + dnf install -y --downloadonly --downloaddir=/tmp "postgresql-${pg_build_version}" "postgresql-private-libs-${pg_build_version}" "postgresql-server-${pg_build_version}" "postgresql-contrib-${pg_build_version}" mv /tmp/postgresql-contrib-*.rpm "${output_dir}/postgres-contrib.rpm" mv /tmp/postgresql-server-*.rpm "${output_dir}/postgres-server.rpm" mv /tmp/postgresql-private-libs-*.rpm "${output_dir}/postgres-libs.rpm" diff --git a/scanner/image/scanner/konflux.Dockerfile b/scanner/image/scanner/konflux.Dockerfile index e689b5461e56f..04ce74630e9ae 100644 --- a/scanner/image/scanner/konflux.Dockerfile +++ b/scanner/image/scanner/konflux.Dockerfile @@ -1,4 +1,5 @@ -FROM brew.registry.redhat.io/rh-osbs/openshift-golang-builder:rhel_8_1.23@sha256:0a070e4a8f2698b6aba3630a49eb995ff1b0a182d0c5fa264888acf9d535f384 AS builder +FROM brew.registry.redhat.io/rh-osbs/openshift-golang-builder:rhel_8_golang_1.25@sha256:527782f4a0270f786192281f68d0374f4a21b3ab759643eee4bfcafb6f539468 AS builder + ARG BUILD_TAG RUN if [[ "$BUILD_TAG" == "" ]]; then >&2 echo "error: required BUILD_TAG arg is unset"; exit 6; fi @@ -17,7 +18,7 @@ WORKDIR /src RUN make -C scanner NODEPS=1 CGO_ENABLED=1 image/scanner/bin/scanner copy-scripts -FROM registry.access.redhat.com/ubi8-minimal:latest@sha256:b2a1bec3dfbc7a14a1d84d98934dfe8fdde6eb822a211286601cf109cbccb075 +FROM registry.access.redhat.com/ubi8-minimal:latest@sha256:9f5006710578c36da022efbc740b27821056d504d582e1aeb204a602d2e8e4ce ARG BUILD_TAG @@ -29,7 +30,7 @@ LABEL \ io.k8s.display-name="scanner-v4" \ io.openshift.tags="rhacs,scanner-v4,stackrox" \ maintainer="Red Hat, Inc." \ - name="rhacs-scanner-v4-rhel8" \ + name="advanced-cluster-security/rhacs-scanner-v4-rhel8" \ # Custom Snapshot creation in `operator-bundle-pipeline` depends on source-location label to be set correctly. source-location="https://github.com/stackrox/stackrox" \ summary="The image scanner v4 for Red Hat Advanced Cluster Security for Kubernetes" \ diff --git a/scripts/certification/run.sh b/scripts/certification/run.sh index fb1cf3cb3d118..31701453504df 100755 --- a/scripts/certification/run.sh +++ b/scripts/certification/run.sh @@ -18,9 +18,9 @@ fi function cli() { if [[ -z $ROX_API_TOKEN ]]; then - roxctl --insecure-skip-tls-verify -e $ENDPOINT -p $PASSPHRASE $@ + roxctl --ca "" --insecure-skip-tls-verify -e "$ENDPOINT" -p "$PASSPHRASE" "$@" else - roxctl --insecure-skip-tls-verify -e $ENDPOINT $@ + roxctl --ca "" --insecure-skip-tls-verify -e "$ENDPOINT" "$@" fi } diff --git a/scripts/ci/jobs/check-konflux-setup.sh b/scripts/ci/jobs/check-konflux-setup.sh index 3623fe111821c..895598c140ba6 100755 --- a/scripts/ci/jobs/check-konflux-setup.sh +++ b/scripts/ci/jobs/check-konflux-setup.sh @@ -8,58 +8,13 @@ set -euo pipefail FAIL_FLAG="$(mktemp)" trap 'rm -f $FAIL_FLAG' EXIT -check_create_snapshot_runs_last() { - local -r pipeline_path=".tekton/operator-bundle-pipeline.yaml" - local -r task_name="create-acs-style-snapshot" - - local expected_runafter - expected_runafter="$(yq eval '.spec.tasks[] | select(.name != '\"${task_name}\"') | .name' "${pipeline_path}" | sort)" - - local actual_runafter - actual_runafter="$(yq eval '.spec.tasks[] | select(.name == '\"${task_name}\"') | .runAfter[]' "${pipeline_path}")" - - echo - echo "➤ ${pipeline_path} // checking ${task_name}: task's runAfter contents shall match the expected ones." - if ! compare "${expected_runafter}" "${actual_runafter}"; then - echo >&2 -e "How to resolve: -1. Open ${pipeline_path} and locate the ${task_name} task -2. Update the runAfter attribute of this task to the following list (all previous tasks in the pipeline, sorted alphabetically): -${expected_runafter}" - record_failure "${FUNCNAME}" - fi -} - -check_all_components_are_part_of_custom_snapshot() { - local -r pipeline_path=".tekton/operator-bundle-pipeline.yaml" - local -r task_name="create-acs-style-snapshot" - - # Actual components are based on the COMPONENTS parameter and stored as sorted multi-line string. - local actual_components - actual_components="$(yq eval '.spec.tasks[] | select(.name == '\"${task_name}\"') | .params[] | select(.name == "COMPONENTS") | .value' "${pipeline_path}" | yq eval '.[].name' - | tr " " "\n" | sort)" - - # Expected components are based on the wait-for-*-image task plus the operator-bundle and stored as a sorted multi-line string. - local expected_components_from_images - local expected_components - expected_components_from_images="$(yq eval '.spec.tasks[] | select(.name == "wait-for-*-image") | .name | sub("(wait-for-|-image)", "")' ${pipeline_path})" - expected_components=$(echo "${expected_components_from_images} operator-bundle" | tr " " "\n" | sort) - - echo - echo "➤ ${pipeline_path} // checking ${task_name}: COMPONENTS contents shall include all ACS images." - if ! compare "${expected_components}" "${actual_components}"; then - echo >&2 -e "How to resolve: -1. Open ${pipeline_path} and locate the ${task_name} task -2. Update the COMPONENTS parameter of this task to include entries for the missing components or delete references to removed components. COMPONENTS should include entries for (sorted alphabetically): -${expected_components}" - record_failure "${FUNCNAME}" - fi -} - check_example_rpmdb_files_are_ignored() { # At the time of this writing, Konflux uses syft to generate SBOMs for built containers. # If we happen to have test rpmdb databases in the repo, syft will union their contents with RPMs that it finds # installed in the container resulting in a misleading SBOM. # This check is to make sure the exclusion list in Syft config enumerates all such rpmdbs. # Ref https://github.com/anchore/syft/wiki/configuration + # TODO: the check can be removed after KONFLUX-3515 is implemented. local -r syft_config=".syft.yaml" local -r exclude_attribute=".exclude" @@ -99,8 +54,6 @@ record_failure() { } echo "Checking our Konflux pipelines and builds setup." -check_create_snapshot_runs_last -check_all_components_are_part_of_custom_snapshot check_example_rpmdb_files_are_ignored if [[ -s "$FAIL_FLAG" ]]; then diff --git a/scripts/ci/lib.sh b/scripts/ci/lib.sh index 3cd7dc35c9914..6b659a6825ae4 100755 --- a/scripts/ci/lib.sh +++ b/scripts/ci/lib.sh @@ -154,10 +154,8 @@ get_central_debug_dump() { require_environment "API_ENDPOINT" require_environment "ROX_ADMIN_PASSWORD" - # TODO(PR#15173): Temporarily reset the server name to fix CI: - roxctl -s "" -e "${API_ENDPOINT}" \ - central debug dump --output-dir "${output_dir}" \ - --insecure-skip-tls-verify + roxctl -e "${API_ENDPOINT}" --ca "" --insecure-skip-tls-verify \ + central debug dump --output-dir "${output_dir}" ls -l "${output_dir}" } @@ -217,10 +215,8 @@ get_central_diagnostics() { require_environment "API_ENDPOINT" require_environment "ROX_ADMIN_PASSWORD" - # TODO(PR#15173): Temporarily reset the server name to fix CI: - roxctl -s "" -e "${API_ENDPOINT}" \ - central debug download-diagnostics --output-dir "${output_dir}" \ - --insecure-skip-tls-verify + roxctl -e "${API_ENDPOINT}" --ca "" --insecure-skip-tls-verify \ + central debug download-diagnostics --output-dir "${output_dir}" ls -l "${output_dir}" } diff --git a/scripts/ci/roxctl.sh b/scripts/ci/roxctl.sh index 6004e6e21b066..45db1c280a83d 100755 --- a/scripts/ci/roxctl.sh +++ b/scripts/ci/roxctl.sh @@ -27,8 +27,7 @@ main() { fi api_endpoint="${api_hostname}:${api_port}" - # TODO(PR#15173): Temporarily reset the server name to fix CI: - roxctl -s "" -e "${api_endpoint}" --insecure-skip-tls-verify "$@" + roxctl -e "${api_endpoint}" --ca "" --insecure-skip-tls-verify "$@" } main "$@" diff --git a/scripts/grab-data-from-central.sh b/scripts/grab-data-from-central.sh index d688cf0769e49..929b97fde497e 100755 --- a/scripts/grab-data-from-central.sh +++ b/scripts/grab-data-from-central.sh @@ -46,8 +46,7 @@ main() { fi mkdir -p "${dest}" - # TODO(PR#15173): Temporarily reset the server name to fix CI: - roxctl -s "" --ca="" -e "${api_endpoint}" --insecure-skip-tls-verify central backup --output "${dest}" + roxctl --ca="" --insecure-skip-tls-verify -e "${api_endpoint}" central backup --output "${dest}" # Pull some data not found from the database set +e diff --git a/sensor/common/metrics/init.go b/sensor/common/metrics/init.go index a0c49bdcabb27..7993b04f02123 100644 --- a/sensor/common/metrics/init.go +++ b/sensor/common/metrics/init.go @@ -41,6 +41,7 @@ func init() { telemetryInfo, telemetrySecuredNodes, telemetrySecuredVCPU, + telemetryComplianceOperatorVersion, deploymentEnhancementQueueSize, responsesChannelOperationCount, ) diff --git a/sensor/common/metrics/metrics.go b/sensor/common/metrics/metrics.go index 5ec090f798692..34e25713763da 100644 --- a/sensor/common/metrics/metrics.go +++ b/sensor/common/metrics/metrics.go @@ -289,6 +289,17 @@ var ( []string{"central_id", "hosting", "install_method", "sensor_id"}, ) + telemetryComplianceOperatorVersion = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Namespace: metrics.PrometheusNamespace, + Subsystem: metrics.SensorSubsystem.String(), + Name: "compliance_operator_version_info", + Help: "Version of compliance operator reported in label with constant value of 1", + ConstLabels: telemetryLabels, + }, + []string{"central_id", "hosting", "install_method", "sensor_id", "compliance_operator_version"}, + ) + // responsesChannelOperationCount a counter to track the operations in the responses channel responsesChannelOperationCount = prometheus.NewCounterVec(prometheus.CounterOpts{ Namespace: metrics.PrometheusNamespace, @@ -492,4 +503,7 @@ func SetTelemetryMetrics(cm *central.ClusterMetrics) { telemetrySecuredVCPU.Reset() telemetrySecuredVCPU.WithLabelValues(labels...).Set(float64(cm.GetCpuCapacity())) + + telemetryComplianceOperatorVersion.Reset() + telemetryComplianceOperatorVersion.WithLabelValues(append(labels, cm.GetComplianceOperatorVersion())...).Set(1) } diff --git a/sensor/common/selector/selector.go b/sensor/common/selector/selector.go index 90da22a57188e..f2c611f1724ba 100644 --- a/sensor/common/selector/selector.go +++ b/sensor/common/selector/selector.go @@ -6,8 +6,7 @@ import ( // LabelsWithLen is label.Labels with added Len() function type LabelsWithLen interface { - Has(label string) (exists bool) - Get(label string) (value string) + labels.Labels Len() uint } @@ -31,6 +30,12 @@ func (l labelWithLenImpl) Get(label string) string { return l.labels[label] } +// Lookup returns the value for the provided label if it exists and whether the provided label exist +func (l labelWithLenImpl) Lookup(label string) (value string, exists bool) { + value, exists = l.labels[label] + return value, exists +} + // Len returns length of labels func (l labelWithLenImpl) Len() uint { return uint(len(l.labels)) diff --git a/sensor/kubernetes/complianceoperator/info.go b/sensor/kubernetes/complianceoperator/info.go index dcc0113983396..583a8b6d6bac3 100644 --- a/sensor/kubernetes/complianceoperator/info.go +++ b/sensor/kubernetes/complianceoperator/info.go @@ -23,7 +23,11 @@ func GetInstalledVersion(ctx context.Context, ns string, cli kubernetes.Interfac foundInNamespace := complianceOperatorDeployment.GetNamespace() version := extractVersionFromLabels(complianceOperatorDeployment.Labels) - return version, foundInNamespace, ErrUnableToExtractVersion + log.Debugf("Found compliance-operator version %s in namespace %s", version, foundInNamespace) + if version == "" { + err = ErrUnableToExtractVersion + } + return version, foundInNamespace, err } func extractVersionFromLabels(labels map[string]string) string { diff --git a/sensor/upgrader/resources/purpose_string.go b/sensor/upgrader/resources/purpose_string.go index 9c2cfd29db16f..7b690efe6087a 100644 --- a/sensor/upgrader/resources/purpose_string.go +++ b/sensor/upgrader/resources/purpose_string.go @@ -17,9 +17,9 @@ const _Purpose_name = "StateResourceBundleResource" var _Purpose_index = [...]uint8{0, 13, 27} func (i Purpose) String() string { - i -= 1 - if i < 0 || i >= Purpose(len(_Purpose_index)-1) { - return "Purpose(" + strconv.FormatInt(int64(i+1), 10) + ")" + idx := int(i) - 1 + if i < 1 || idx >= len(_Purpose_index)-1 { + return "Purpose(" + strconv.FormatInt(int64(i), 10) + ")" } - return _Purpose_name[_Purpose_index[i]:_Purpose_index[i+1]] + return _Purpose_name[_Purpose_index[idx]:_Purpose_index[idx+1]] } diff --git a/tests/api_kernel_support_available_test.go b/tests/api_kernel_support_available_test.go deleted file mode 100644 index 765401817d5cf..0000000000000 --- a/tests/api_kernel_support_available_test.go +++ /dev/null @@ -1,30 +0,0 @@ -//go:build test_e2e || test_compatibility - -package tests - -import ( - "context" - "testing" - "time" - - v1 "github.com/stackrox/rox/generated/api/v1" - "github.com/stackrox/rox/pkg/testutils/centralgrpc" - "github.com/stretchr/testify/assert" -) - -func TestKernelSupportAvailableApi(t *testing.T) { - t.Parallel() - - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - - conn := centralgrpc.GRPCConnectionToCentral(t) - - service := v1.NewClustersServiceClient(conn) - resp, err := service.GetKernelSupportAvailable(ctx, &v1.Empty{}) - - // Central in CI is deployed in online mode, hence the expectation is - // that kernel support is available via the HTTP download site. - assert.NoError(t, err) - assert.True(t, resp.KernelSupportAvailable) -} diff --git a/tests/compliance_operator_v2_test.go b/tests/compliance_operator_v2_test.go index eee984ad5510f..52b9cbaeced85 100644 --- a/tests/compliance_operator_v2_test.go +++ b/tests/compliance_operator_v2_test.go @@ -43,7 +43,7 @@ const ( var ( scanName = "sync-test" initialProfiles = []string{"ocp4-cis"} - updatedProfiles = []string{"ocp4-cis-1-4", "ocp4-cis-node-1-4"} + updatedProfiles = []string{"ocp4-high", "ocp4-cis-node"} initialSchedule = &v2.Schedule{ Hour: 12, Minute: 0, diff --git a/tests/e2e/lib.sh b/tests/e2e/lib.sh index 96a46a3994d42..d86b1dddbfeda 100755 --- a/tests/e2e/lib.sh +++ b/tests/e2e/lib.sh @@ -57,7 +57,6 @@ deploy_stackrox() { export_central_basic_auth_creds wait_for_api "${central_namespace}" - export_central_cert "${central_namespace}" setup_client_TLS_certs "${tls_client_certs}" record_build_info "${central_namespace}" @@ -187,6 +186,7 @@ export_test_environment() { ci_export ROX_SBOM_GENERATION "${ROX_SBOM_GENERATION:-true}" ci_export ROX_CLUSTERS_PAGE_MIGRATION_UI "${ROX_CLUSTERS_PAGE_MIGRATION_UI:-false}" ci_export ROX_EXTERNAL_IPS "${ROX_EXTERNAL_IPS:-true}" + ci_export ROX_NETWORK_GRAPH_AGGREGATE_EXT_IPS "${ROX_NETWORK_GRAPH_AGGREGATE_EXT_IPS:-true}" ci_export ROX_NETWORK_GRAPH_EXTERNAL_IPS "${ROX_NETWORK_GRAPH_EXTERNAL_IPS:-false}" ci_export ROX_FLATTEN_CVE_DATA "${ROX_FLATTEN_CVE_DATA:-true}" ci_export ROX_VULNERABILITY_ON_DEMAND_REPORTS "${ROX_VULNERABILITY_ON_DEMAND_REPORTS:-true}" @@ -330,6 +330,8 @@ deploy_central_via_operator() { customize_envVars+=$'\n value: "true"' customize_envVars+=$'\n - name: ROX_NETWORK_GRAPH_EXTERNAL_IPS' customize_envVars+=$'\n value: "false"' + customize_envVars+=$'\n - name: ROX_NETWORK_GRAPH_AGGREGATE_EXT_IPS' + customize_envVars+=$'\n value: "true"' customize_envVars+=$'\n - name: ROX_SBOM_GENERATION' customize_envVars+=$'\n value: "true"' customize_envVars+=$'\n - name: ROX_FLATTEN_CVE_DATA' @@ -515,25 +517,6 @@ export_central_basic_auth_creds() { ci_export "ROX_ADMIN_PASSWORD" "$ROX_ADMIN_PASSWORD" } -export_central_cert() { - # Export the internal central TLS certificate for roxctl to access central - # through TLS-passthrough router by specifying the TLS server name. - ci_export ROX_SERVER_NAME "central.${CENTRAL_NAMESPACE:-stackrox}" - - require_environment "API_ENDPOINT" - require_environment "ROX_ADMIN_PASSWORD" - - local central_cert - central_cert="$(mktemp -d)/central_cert.pem" - info "Storing central certificate in ${central_cert} for ${API_ENDPOINT}" - - roxctl -e "$API_ENDPOINT" \ - central cert --insecure-skip-tls-verify 1>"$central_cert" - - ci_export ROX_CA_CERT_FILE "$central_cert" - openssl x509 -in "${ROX_CA_CERT_FILE}" -subject -issuer -ext subjectAltName -noout -} - deploy_optional_e2e_components() { info "Installing optional components used in E2E tests" @@ -571,8 +554,7 @@ setup_client_CA_auth_provider() { require_environment "ROX_ADMIN_PASSWORD" require_environment "CLIENT_CA_PATH" - export_central_cert - roxctl -e "$API_ENDPOINT" \ + roxctl -e "$API_ENDPOINT" --ca "" --insecure-skip-tls-verify \ central userpki create test-userpki -r Analyst -c "$CLIENT_CA_PATH" } @@ -588,8 +570,7 @@ setup_generated_certs_for_test() { require_environment "API_ENDPOINT" require_environment "ROX_ADMIN_PASSWORD" - export_central_cert - roxctl -e "$API_ENDPOINT" \ + roxctl -e "$API_ENDPOINT" --ca "" --insecure-skip-tls-verify \ sensor generate-certs remote --output-dir "$dir" [[ -f "$dir"/cluster-remote-tls.yaml ]] # Use the certs in future steps that will use client auth. @@ -1324,8 +1305,8 @@ restore_4_1_postgres_backup() { require_environment "ROX_ADMIN_PASSWORD" gsutil cp gs://stackrox-ci-upgrade-test-fixtures/upgrade-test-dbs/postgres_db_4_1.sql.zip . - export_central_cert - roxctl -e "$API_ENDPOINT" \ + + roxctl -e "$API_ENDPOINT" --ca "" --insecure-skip-tls-verify \ central db restore --timeout 5m postgres_db_4_1.sql.zip } @@ -1352,19 +1333,17 @@ db_backup_and_restore_test() { # Ensure central is ready for requests after any previous tests wait_for_api "${central_namespace}" - export_central_cert "${central_namespace}" info "Backing up to ${output_dir}" mkdir -p "$output_dir" - # TODO(PR#15173): Temporarily reset the server name to fix CI: - roxctl --insecure-skip-tls-verify -s "" --ca="" -e "${API_ENDPOINT}" central backup --output "$output_dir" || touch DB_TEST_FAIL + roxctl --ca="" --insecure-skip-tls-verify -e "${API_ENDPOINT}" central backup --output "$output_dir" || touch DB_TEST_FAIL info "Updating public config" update_public_config if [[ ! -e DB_TEST_FAIL ]]; then info "Restoring from ${output_dir}/postgres_db_*" - roxctl --insecure-skip-tls-verify -s "" --ca="" -e "${API_ENDPOINT}" central db restore "$output_dir"/postgres_db_* || touch DB_TEST_FAIL + roxctl --ca="" --insecure-skip-tls-verify -e "${API_ENDPOINT}" central db restore "$output_dir"/postgres_db_* || touch DB_TEST_FAIL fi wait_for_api "${central_namespace}" diff --git a/tests/e2e/run-e2e-tests.sh b/tests/e2e/run-e2e-tests.sh index 9f9722cdc1782..b03d0b0cd6e67 100755 --- a/tests/e2e/run-e2e-tests.sh +++ b/tests/e2e/run-e2e-tests.sh @@ -148,7 +148,7 @@ if [[ ! -f "/i-am-rox-ci-image" ]]; then --platform linux/amd64 \ --rm -it \ --entrypoint="$0" \ - quay.io/stackrox-io/apollo-ci:stackrox-test-0.4.8 "$@" + quay.io/stackrox-io/apollo-ci:stackrox-test-0.5.1 "$@" exit 0 fi diff --git a/tests/e2e/run-scanner-v4-install.bats b/tests/e2e/run-scanner-v4-install.bats index 6a90c3382b614..41109c6ea5bdd 100755 --- a/tests/e2e/run-scanner-v4-install.bats +++ b/tests/e2e/run-scanner-v4-install.bats @@ -58,13 +58,16 @@ current_label="" post_processor_pid="" _begin() { + local label="${1:-}" + # In case it is convenient for a given test-case, _begin() can take care of the initialization. if [[ $initialized = "false" ]]; then init initialized="true" + elif [[ -n "$post_processor_pid" ]]; then + _end fi - local label="${1:-}" current_label="$label" # Save original stdout and stderr fds as 4 and 5. @@ -104,12 +107,6 @@ TIMING_DATA: {"test": "$test", "step": "$step", "seconds_spent": $seconds_spent} EOT } -# Combined _end() and _begin() for convenience. -_step() { - _end - _begin "$1" -} - export TEST_SUITE_ABORTED="false" export test_suite_begin_timestamp="" @@ -137,8 +134,25 @@ EOT export MAIN_IMAGE_TAG="${MAIN_IMAGE_TAG:-$(make --quiet --no-print-directory -C "${ROOT}" tag)}" info "Using MAIN_IMAGE_TAG=$MAIN_IMAGE_TAG" + # Prepare earlier Helm chart version. + if [[ -z "${CHART_REPOSITORY:-}" ]]; then + CHART_REPOSITORY=$(mktemp -d "helm-charts.XXXXXX" -p /tmp) + fi + if [[ ! -e "${CHART_REPOSITORY}/.git" ]]; then + echo "Cloning released Helm charts into ${CHART_REPOSITORY}..." + git clone --quiet --depth 1 -b main https://github.com/stackrox/helm-charts "${CHART_REPOSITORY}" + fi + export CHART_REPOSITORY + export CURRENT_MAIN_IMAGE_TAG=${CURRENT_MAIN_IMAGE_TAG:-} # Setting a tag can be useful for local testing. - export EARLIER_CHART_VERSION="4.6.0" + + EARLIER_CHART_VERSION=$(resolve_previous_x_y_0_version "$CHART_REPOSITORY" "$MAIN_IMAGE_TAG") + if [[ -z "$EARLIER_CHART_VERSION" ]]; then + die "Could not resolve previous version for version tag \"${MAIN_IMAGE_TAG}\"" + fi + export EARLIER_CHART_VERSION + info "Using EARLIER_CHART_VERSION=${EARLIER_CHART_VERSION}" + export EARLIER_MAIN_IMAGE_TAG=$EARLIER_CHART_VERSION export USE_LOCAL_ROXCTL="${USE_LOCAL_ROXCTL:-true}" export ROX_PRODUCT_BRANDING=RHACS_BRANDING @@ -161,18 +175,21 @@ EOT die "roxctl not found, please make sure it can be resolved via PATH." fi - local roxctl_version - roxctl_version="$(roxctl version)" - - # Prepare earlier Helm chart version. - if [[ -z "${CHART_REPOSITORY:-}" ]]; then - CHART_REPOSITORY=$(mktemp -d "helm-charts.XXXXXX" -p /tmp) + ROXCTL_BUILT_IN_RELEASE_MODE="false" + if roxctl_built_in_release_mode; then + ROXCTL_BUILT_IN_RELEASE_MODE="true" fi - if [[ ! -e "${CHART_REPOSITORY}/.git" ]]; then - echo "Cloning released Helm charts into ${CHART_REPOSITORY}..." - git clone --quiet --depth 1 -b main https://github.com/stackrox/helm-charts "${CHART_REPOSITORY}" + + if [[ "$ROXCTL_BUILT_IN_RELEASE_MODE" == "true" ]]; then + info "roxctl is built in release mode." + info "Local modification of the Helm charts will not be taken into account for Helm chart tests." + else + info "roxctl is built in non-release mode." + info "Local modification of the Helm charts will be taken into account for Helm chart tests." fi - export CHART_REPOSITORY + + local roxctl_version + roxctl_version="$(roxctl version)" if [[ -n "$MAIN_IMAGE_TAG" ]] && [[ "$roxctl_version" != "$MAIN_IMAGE_TAG" ]]; then info "MAIN_IMAGE_TAG ($MAIN_IMAGE_TAG) does not match roxctl version ($roxctl_version)." @@ -213,18 +230,32 @@ EOT if [[ -z "${HEAD_HELM_CHART_CENTRAL_SERVICES_DIR:-}" ]]; then HEAD_HELM_CHART_CENTRAL_SERVICES_DIR=$(mktemp -d) echo "Rendering fresh central-services Helm chart and writing to ${HEAD_HELM_CHART_CENTRAL_SERVICES_DIR}..." - roxctl helm output central-services \ - --debug --debug-path="${ROOT}/image" \ - --output-dir="${HEAD_HELM_CHART_CENTRAL_SERVICES_DIR}" --remove + if [[ "$ROXCTL_BUILT_IN_RELEASE_MODE" == "true" ]]; then + # development-build image defaults are not available in the release mode, so we set opensource + # (which which uses the same image names) and override the registry/org elsewhere. + roxctl helm output central-services --image-defaults=opensource \ + --output-dir="${HEAD_HELM_CHART_CENTRAL_SERVICES_DIR}" --remove + else + roxctl helm output central-services \ + --debug --debug-path="${ROOT}/image" \ + --output-dir="${HEAD_HELM_CHART_CENTRAL_SERVICES_DIR}" --remove + fi export HEAD_HELM_CHART_CENTRAL_SERVICES_DIR fi if [[ -z "${HEAD_HELM_CHART_SECURED_CLUSTER_SERVICES_DIR:-}" ]]; then HEAD_HELM_CHART_SECURED_CLUSTER_SERVICES_DIR=$(mktemp -d) echo "Rendering fresh secured-cluster-services Helm chart and writing to ${HEAD_HELM_CHART_SECURED_CLUSTER_SERVICES_DIR}..." - roxctl helm output secured-cluster-services \ - --debug --debug-path="${ROOT}/image" \ - --output-dir="${HEAD_HELM_CHART_SECURED_CLUSTER_SERVICES_DIR}" --remove + if [[ "$ROXCTL_BUILT_IN_RELEASE_MODE" == "true" ]]; then + # development-build image defaults are not available in the release mode, so we set opensource + # (which which uses the same image names) and override the registry/org elsewhere. + roxctl helm output secured-cluster-services --image-defaults=opensource \ + --output-dir="${HEAD_HELM_CHART_SECURED_CLUSTER_SERVICES_DIR}" --remove + else + roxctl helm output secured-cluster-services \ + --debug --debug-path="${ROOT}/image" \ + --output-dir="${HEAD_HELM_CHART_SECURED_CLUSTER_SERVICES_DIR}" --remove + fi export HEAD_HELM_CHART_SECURED_CLUSTER_SERVICES_DIR fi @@ -269,7 +300,7 @@ setup() { setup_deployment_env false false fi - _step "pre-test-tear-down" + _begin "pre-test-tear-down" if [[ "${SKIP_INITIAL_TEARDOWN:-}" != "true" ]] && (( test_case_no == 0 )); then # executing teardown to begin test execution in a well-defined state @@ -402,6 +433,10 @@ teardown() { local old_central_chart="${CHART_REPOSITORY}/${EARLIER_CHART_VERSION}/central-services" local old_sensor_chart="${CHART_REPOSITORY}/${EARLIER_CHART_VERSION}/secured-cluster-services" + # NOTE: Expected behaviour for 4.7.x is that + # - scanner V4 is not deployed by default. + # - secured-cluster does not deploy any scanners by default. + _begin "deploy-old-central" info "Deploying StackRox central-services using chart ${old_central_chart}" deploy_central_with_helm "$CUSTOM_CENTRAL_NAMESPACE" "$EARLIER_MAIN_IMAGE_TAG" "$old_central_chart" \ @@ -412,24 +447,28 @@ central: EOT ) - _step "verify-scanner-V4-not-deployed" + _begin "verify-scanner-v2-deployed" verify_scannerV2_deployed "$CUSTOM_CENTRAL_NAMESPACE" + + _begin "verify-scanner-V4-not-deployed" verify_no_scannerV4_deployed "$CUSTOM_CENTRAL_NAMESPACE" + run ! verify_deployment_scannerV4_env_var_set "$CUSTOM_CENTRAL_NAMESPACE" "central" _begin "upgrade-to-HEAD-central" deploy_central_with_helm "$CUSTOM_CENTRAL_NAMESPACE" "$MAIN_IMAGE_TAG" "" \ --reuse-values - _step "verify-scanner-V4-not-deployed" + _begin "verify-scanner-V4-not-deployed" verify_scannerV2_deployed "$CUSTOM_CENTRAL_NAMESPACE" verify_no_scannerV4_deployed "$CUSTOM_CENTRAL_NAMESPACE" + run ! verify_deployment_scannerV4_env_var_set "$CUSTOM_CENTRAL_NAMESPACE" "central" _begin "enable-scanner-V4-in-central" deploy_central_with_helm "$CUSTOM_CENTRAL_NAMESPACE" "$MAIN_IMAGE_TAG" "" \ --reuse-values \ --set scannerV4.disable=false - _step "verify-scanners-deployed" + _begin "verify-scanners-are-deployed" verify_scannerV2_deployed "$CUSTOM_CENTRAL_NAMESPACE" verify_scannerV4_deployed "$CUSTOM_CENTRAL_NAMESPACE" verify_deployment_scannerV4_env_var_set "$CUSTOM_CENTRAL_NAMESPACE" "central" @@ -442,16 +481,20 @@ EOT "$EARLIER_MAIN_IMAGE_TAG" "$old_sensor_chart" \ "$secured_cluster_name" "$ROX_ADMIN_PASSWORD" "$central_endpoint" - _step "verify-scanner-V4-not-deployed" + _begin "verify-scanners-are-not-deployed" + verify_no_scannerV2_deployed "$CUSTOM_SENSOR_NAMESPACE" verify_no_scannerV4_deployed "$CUSTOM_SENSOR_NAMESPACE" + run ! verify_deployment_scannerV4_env_var_set "$CUSTOM_SENSOR_NAMESPACE" "sensor" - _step "upgrade-to-HEAD-sensor" + _begin "upgrade-to-HEAD-sensor" deploy_sensor_with_helm "$CUSTOM_CENTRAL_NAMESPACE" "$CUSTOM_SENSOR_NAMESPACE" "" "" "" "" "" - _step "verify-scanner-not-deployed" + _begin "verify-scanners-not-deployed" + verify_no_scannerV2_deployed "$CUSTOM_SENSOR_NAMESPACE" verify_no_scannerV4_deployed "$CUSTOM_SENSOR_NAMESPACE" + run ! verify_deployment_scannerV4_env_var_set "$CUSTOM_SENSOR_NAMESPACE" "sensor" - _begin "enable-scanner-V4-in-secured-cluster" + _begin "enable-scanners-in-secured-cluster" # Without creating the scanner-db-password secret manually Scanner V2 doesn't come up. # Let's just reuse an existing password for this for simplicity. "$ORCH_CMD" &1 | grep -- --debug= >/dev/null +} + +resolve_previous_x_y_0_version() { + local helm_charts_repo="$1" + local version_tag="$2" + local x_y_version + x_y_version=$(extract_x_y_part "$version_tag") + # Gets all Helm chart versions. Make sure that we also have a x.y.z tag + # corresponding to the provided one -- it might not be released yet, but that is fine, + # we only need it for identifying the *previous* version. + local regex_x_y_z="^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$" + local helm_chart_versions + helm_chart_versions=$(list_sub_directories "${helm_charts_repo}" | grep -E "$regex_x_y_z") + if [[ -z "$helm_chart_versions" ]]; then + die "No helm chart versions were found in \"${helm_charts_repo}\"." + fi + local previous_x_y_0_version + previous_x_y_0_version=$( + # Begin with all sort of tags. + { echo "$helm_chart_versions"; echo "$x_y_version"; } | + # Delete the z component. + extract_x_y_part | + # Sort stripped x.y version tags. + sort -V | + # Filter out duplicates. + uniq | + # Locate the current version among the tags, output also the previous tag. + grep -Fx "$x_y_version" -B 1 | + # Check if we have exactly two lines, abort pipe otherwise. + assert_num_lines 2 | + # Extract the previous tag. + head -1 | + # Add a z=0 suffix. + sed -e 's/^\(.*\)$/\1.0/' + ) + echo -n "$previous_x_y_0_version" +} + +list_sub_directories() { + local path="$1" + ( + cd "$path" + for d in */; do echo "$d"; done | tr -d '/' + ) +} + +extract_x_y_part() { + local version_tag="${1:-}" + regex='s/^\([[:digit:]]\+\.[[:digit:]]\+\)\..*$/\1/' + if [[ -z "$version_tag" ]]; then + sed -e "$regex" + else + sed -e "$regex" <<<"$version_tag" + fi +} + +assert_num_lines() { + local num="$1" + local input + input=$(cat) + input_lines="$(echo -n "$input" | safe_count_lines)" + if [[ "$input_lines" != "$num" ]]; then + echo >&2 "Assertion failed: Expected exactly $num lines, but got $input_lines lines:" + echo >&2 "---" + [[ -n "$input" ]] && echo >&2 "$input" + echo >&2 "---" + exit 1 + fi + echo "$input" +} + +# Also works in case the last line is missing a newline. +safe_count_lines() { + awk 'BEGIN { c = 0 } { c++ } END { print c }' +} diff --git a/tests/performance/scale/go.mod b/tests/performance/scale/go.mod index bafd4b01c7525..0df34144e6bbb 100644 --- a/tests/performance/scale/go.mod +++ b/tests/performance/scale/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/stackrox/performance-scale-tests -go 1.23.0 - -toolchain go1.23.6 +go 1.25 require ( github.com/cloud-bulldozer/go-commons v1.0.11 diff --git a/tests/roxctl/authz-trace.sh b/tests/roxctl/authz-trace.sh index 41bade3c75e75..b76591dc5422c 100755 --- a/tests/roxctl/authz-trace.sh +++ b/tests/roxctl/authz-trace.sh @@ -89,7 +89,7 @@ curl_central_admin /v1/apitokens/generate -d '{"name": "test", "roles": ["Analys FAILED_CHECKS=0 # Run authorization trace collection in the background. -nohup roxctl --endpoint "$API_ENDPOINT" --insecure-skip-tls-verify --insecure -t 20s central debug authz-trace > trace.out & +nohup roxctl --endpoint "$API_ENDPOINT" --ca "" --insecure-skip-tls-verify --insecure -t 20s central debug authz-trace > trace.out & # Wait for roxctl to subscribe for authz traces. sleep 5 diff --git a/tests/roxctl/bats-tests/helpers.bash b/tests/roxctl/bats-tests/helpers.bash index dd8798ac9b73e..8b5ed298678a0 100644 --- a/tests/roxctl/bats-tests/helpers.bash +++ b/tests/roxctl/bats-tests/helpers.bash @@ -48,7 +48,7 @@ roxctl-development-cmd() { # roxctl-development runs roxctl built with GOTAGS=''. It builds the binary if needed roxctl-development() { - "$(roxctl-development-cmd)" "$@" + "$(roxctl-development-cmd)" --ca "" --insecure-skip-tls-verify "$@" } # roxctl-release-cmd prints the path to roxctl built with GOTAGS='release'. It builds the binary if needed @@ -64,7 +64,7 @@ roxctl-release-cmd() { # roxctl-release runs roxctl built with GOTAGS='release'. It builds the binary if needed roxctl-release() { - "$(roxctl-release-cmd)" "$@" + "$(roxctl-release-cmd)" --ca "" --insecure-skip-tls-verify "$@" } helm_template_central() { @@ -343,7 +343,7 @@ has_flag_collision_warning() { } roxctl_authenticated() { - roxctl-development --insecure-skip-tls-verify -e "$API_ENDPOINT" "$@" + roxctl-development -e "$API_ENDPOINT" "$@" } yaml_valid() { diff --git a/tests/roxctl/istio-support.sh b/tests/roxctl/istio-support.sh index 63a8ec4c01a62..8ddfdb0b12727 100755 --- a/tests/roxctl/istio-support.sh +++ b/tests/roxctl/istio-support.sh @@ -17,7 +17,7 @@ test_roxctl_cmd() { echo "Testing command: roxctl " "$@" output_dir=$(mktemp -d) - cmd=(roxctl --insecure-skip-tls-verify -e "$API_ENDPOINT" "$@" --output-dir "$output_dir") + cmd=(roxctl --ca "" --insecure-skip-tls-verify -e "$API_ENDPOINT" "$@" --output-dir "$output_dir") echo "${cmd[@]}" @@ -64,8 +64,8 @@ test_roxctl_cmd sensor get-bundle k8s-istio-test-cluster test_roxctl_cmd sensor generate openshift --name os-istio-test-cluster --continue-if-exists test_roxctl_cmd sensor get-bundle os-istio-test-cluster -roxctl --insecure-skip-tls-verify -e "$API_ENDPOINT" cluster delete --name k8s-istio-test-cluster -roxctl --insecure-skip-tls-verify -e "$API_ENDPOINT" cluster delete --name os-istio-test-cluster +roxctl --ca "" --insecure-skip-tls-verify -e "$API_ENDPOINT" cluster delete --name k8s-istio-test-cluster +roxctl --ca "" --insecure-skip-tls-verify -e "$API_ENDPOINT" cluster delete --name os-istio-test-cluster if [ $FAILURES -eq 0 ]; then echo "Passed" diff --git a/tests/roxctl/roxctl-image-check.sh b/tests/roxctl/roxctl-image-check.sh index 7232d50bda751..c127d58bd6c2f 100755 --- a/tests/roxctl/roxctl-image-check.sh +++ b/tests/roxctl/roxctl-image-check.sh @@ -14,7 +14,7 @@ test_roxctl_cmd() { echo "Testing command: roxctl image check --image " "$@" # Verify image check. - if OUTPUT=$(roxctl --insecure-skip-tls-verify --insecure image check --image \ + if OUTPUT=$(roxctl --ca "" --insecure-skip-tls-verify --insecure image check --image \ "$@" \ 2>&1); then echo "[OK] roxctl image check " "$@" " works" diff --git a/tests/roxctl/slim-collector.sh b/tests/roxctl/slim-collector.sh index cf6100d033a5a..7a37ab49b5045 100755 --- a/tests/roxctl/slim-collector.sh +++ b/tests/roxctl/slim-collector.sh @@ -51,7 +51,7 @@ test_collector_image_references_in_deployment_bundles() { echo "Testing correctness of collector image references for clusters generated with $SLIM_COLLECTOR_FLAG (cluster name is $CLUSTER_NAME)" # Verify that generating a cluster works. - if OUTPUT="$(roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + if OUTPUT="$(roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ sensor generate k8s --name "$CLUSTER_NAME" "$SLIM_COLLECTOR_FLAG" 2>&1)"; then echo "[OK] Generating cluster works" else @@ -86,7 +86,7 @@ test_collector_image_references_in_deployment_bundles() { rm -r "sensor-${CLUSTER_NAME}" # Verify that refetching deployment bundle for newly created cluster works as expected (i.e. that the bundle references the expected collector image). - OUTPUT="$(roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + OUTPUT="$(roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ sensor get-bundle --output-dir="sensor-${CLUSTER_NAME}-refetched" "$CLUSTER_NAME" 2>&1)" COLLECTOR_IMAGE="$(egrep 'image: \S+/collector' "sensor-${CLUSTER_NAME}-refetched/collector.yaml" | sed -e 's/[^:]*: "\(.*\)"$/\1/;')" diff --git a/tests/roxctl/token-file.sh b/tests/roxctl/token-file.sh index 9f7c6933253be..96651e7a76f92 100755 --- a/tests/roxctl/token-file.sh +++ b/tests/roxctl/token-file.sh @@ -39,7 +39,7 @@ test_roxctl_cmd() { local ROX_API_TOKEN="" # Verify that specifying a token file works. - if OUTPUT=$(roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + if OUTPUT=$(roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ --token-file "$TOKEN_FILE" \ "$@" \ 2>&1); then @@ -52,7 +52,7 @@ test_roxctl_cmd() { fi # Verify that specifying a token file and password at the same time fails. - if OUTPUT=$(roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + if OUTPUT=$(roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ --token-file "$TOKEN_FILE" \ --password "secret" \ "$@" \ @@ -73,7 +73,7 @@ test_roxctl_cmd() { # Verify that specifying a token file and password at the same time fails. # shellcheck disable=SC2030 if OUTPUT=$(export ROX_API_TOKEN_FILE="$TOKEN_FILE" ROX_ADMIN_PASSWORD="$password"; \ - roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ "$@" \ 2>&1); then eecho "[FAIL] Specifying ROX_API_TOKEN_FILE and ROX_ADMIN_PASSWORD did not produce error" @@ -92,7 +92,7 @@ test_roxctl_cmd() { # Verify that token on the command line has precedence over token in the environment # shellcheck disable=SC2030 if OUTPUT=$(export ROX_API_TOKEN="invalid-token"; \ - roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ --token-file "$TOKEN_FILE" \ "$@" \ 2>&1); then @@ -107,7 +107,7 @@ test_roxctl_cmd() { # Verify that a password on the command line has precedence over token in the environment # shellcheck disable=SC2031 if OUTPUT=$(export ROX_API_TOKEN="invalid-token"; \ - roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ --password "$password" \ "$@" \ 2>&1); then @@ -122,7 +122,7 @@ test_roxctl_cmd() { # Verify that a password on the command line has precedence over password in the environment. # shellcheck disable=SC2030,SC2031 if OUTPUT=$(export ROX_ADMIN_PASSWORD="bad-password"; \ - roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ --password "$password" \ "$@" \ 2>&1); then @@ -141,7 +141,7 @@ test_roxctl_cmd() { exit 1 fi - if OUTPUT=$(roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + if OUTPUT=$(roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ --token-file "$NON_EXISTING" \ "$@" \ 2>&1); then @@ -159,7 +159,7 @@ test_roxctl_cmd() { # Verify that a password on the command line has precedence over token file in the environment. # shellcheck disable=SC2031 if OUTPUT=$(export ROX_API_TOKEN_FILE="$TOKEN_FILE"; \ - roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ --password "$password" \ "$@" \ 2>&1); then @@ -174,7 +174,7 @@ test_roxctl_cmd() { # Verify that the token file on the command line has precedence over password in the environment. # shellcheck disable=SC2031 if OUTPUT=$(export ROX_ADMIN_PASSWORD="bad-password"; \ - roxctl --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ + roxctl --ca "" --insecure-skip-tls-verify --insecure -e "$API_ENDPOINT" \ --token-file "$TOKEN_FILE" \ "$@" \ 2>&1); then diff --git a/tests/upgrade/lib.sh b/tests/upgrade/lib.sh index 95d61b6057e86..a9932c806c4f9 100644 --- a/tests/upgrade/lib.sh +++ b/tests/upgrade/lib.sh @@ -175,9 +175,8 @@ validate_sensor_bundle_via_upgrader() { test_sensor_bundle() { info "Testing the sensor bundle" - export_central_cert rm -rf sensor-remote - "$TEST_ROOT/bin/${TEST_HOST_PLATFORM}/roxctl" -e "$API_ENDPOINT" sensor get-bundle remote + "$TEST_ROOT/bin/${TEST_HOST_PLATFORM}/roxctl" -e "$API_ENDPOINT" --ca "" --insecure-skip-tls-verify sensor get-bundle remote [[ -d sensor-remote ]] ./sensor-remote/sensor.sh @@ -192,13 +191,12 @@ test_sensor_bundle() { test_upgrader() { info "Starting bin/upgrader tests" - export_central_cert deactivate_metrics_server info "Creating a 'sensor-remote-new' cluster" rm -rf sensor-remote-new - "$TEST_ROOT/bin/${TEST_HOST_PLATFORM}/roxctl" -e "$API_ENDPOINT" sensor generate k8s \ + "$TEST_ROOT/bin/${TEST_HOST_PLATFORM}/roxctl" -e "$API_ENDPOINT" --ca "" --insecure-skip-tls-verify sensor generate k8s \ --name remote-new \ --create-admission-controller diff --git a/tests/upgrade/postgres_run.sh b/tests/upgrade/postgres_run.sh index 03934b0fc01ae..6c07264d9b355 100755 --- a/tests/upgrade/postgres_run.sh +++ b/tests/upgrade/postgres_run.sh @@ -93,7 +93,6 @@ test_upgrade_paths() { deploy_earlier_postgres_central wait_for_api setup_client_TLS_certs - export_central_cert restore_4_1_backup wait_for_api @@ -225,12 +224,12 @@ test_upgrade_paths() { helm uninstall -n stackrox stackrox-secured-cluster-services # Remove scaled Sensor from Central - "$TEST_ROOT/bin/$TEST_HOST_PLATFORM/roxctl" -e "$API_ENDPOINT" cluster delete --name scale-remote + "$TEST_ROOT/bin/$TEST_HOST_PLATFORM/roxctl" -e "$API_ENDPOINT" --ca "" --insecure-skip-tls-verify cluster delete --name scale-remote info "Fetching a sensor bundle for cluster 'remote'" "$TEST_ROOT/bin/$TEST_HOST_PLATFORM/roxctl" version rm -rf sensor-remote - "$TEST_ROOT/bin/$TEST_HOST_PLATFORM/roxctl" -e "$API_ENDPOINT" sensor get-bundle remote + "$TEST_ROOT/bin/$TEST_HOST_PLATFORM/roxctl" -e "$API_ENDPOINT" --ca "" --insecure-skip-tls-verify sensor get-bundle remote [[ -d sensor-remote ]] info "Installing sensor" diff --git a/tests/upgrade/postgres_upgrade_run.sh b/tests/upgrade/postgres_upgrade_run.sh index ae6f5b52de904..e9e119f1a5e01 100755 --- a/tests/upgrade/postgres_upgrade_run.sh +++ b/tests/upgrade/postgres_upgrade_run.sh @@ -96,7 +96,6 @@ test_upgrade_path() { deploy_earlier_postgres_central wait_for_api setup_client_TLS_certs - export_central_cert # It's damn fiddly, restore is needed because later test will search for a # default secured cluster, created by it :( @@ -211,7 +210,6 @@ test_not_enough_disk_space() { unset PVC_SIZE wait_for_api setup_client_TLS_certs - export_central_cert # It's damn fiddly, restore is needed because later test will search for a # default secured cluster, created by it :( diff --git a/tools/check-workflow-run/go.mod b/tools/check-workflow-run/go.mod index 5398fbf1c9f1c..eb58422b0e5d6 100644 --- a/tools/check-workflow-run/go.mod +++ b/tools/check-workflow-run/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/stackrox/tools/check-workflow-run -go 1.23 - -toolchain go1.23.2 +go 1.25 require github.com/google/go-github/v61 v61.0.0 diff --git a/tools/generate-helpers/pg-table-bindings/main.go b/tools/generate-helpers/pg-table-bindings/main.go index 29a579f8638f8..97d246a0fc6a3 100644 --- a/tools/generate-helpers/pg-table-bindings/main.go +++ b/tools/generate-helpers/pg-table-bindings/main.go @@ -205,6 +205,7 @@ func main() { "RegisterSchema": !props.ConversionFuncs, "FeatureFlag": props.FeatureFlag, "CachedStore": props.CachedStore, + "Singleton": props.SingletonStore, } if err := common.RenderFile(templateMap, schemaTemplate, getSchemaFileName(props.SchemaDirectory, schema.Table)); err != nil { diff --git a/tools/generate-helpers/pg-table-bindings/schema.go.tpl b/tools/generate-helpers/pg-table-bindings/schema.go.tpl index b1a872aa7c1d2..5db476dbfb3bd 100644 --- a/tools/generate-helpers/pg-table-bindings/schema.go.tpl +++ b/tools/generate-helpers/pg-table-bindings/schema.go.tpl @@ -24,20 +24,26 @@ import ( ) {{- define "createTableStmt" }} -{{- $schema := . }} +{{- $singleton := .Singleton }} +{{- $schema := .Schema }} &postgres.CreateStmts{ GormModel: (*{{$schema.Table|upperCamelCase}})(nil), Children: []*postgres.CreateStmts{ {{- range $index, $child := $schema.Children }} - {{- template "createTableStmt" $child }}, + {{- template "createTableStmt" dict "Schema" $child "Singleton" $singleton }}, {{- end }} }, + {{- if $singleton }} + PostStmts: []string{ + "ALTER TABLE {{$schema.Table|lowerCase}} REPLICA IDENTITY FULL", + }, + {{- end }} } {{- end}} var ( // {{template "createTableStmtVar" .Schema }} holds the create statement for table `{{.Schema.Table|lowerCase}}`. - {{template "createTableStmtVar" .Schema }} = {{template "createTableStmt" .Schema }} + {{template "createTableStmtVar" .Schema }} = {{template "createTableStmt" dict "Schema" .Schema "Singleton" .Singleton }} // {{template "schemaVar" .Schema.Table}} is the go schema for table `{{.Schema.Table|lowerCase}}`. {{template "schemaVar" .Schema.Table}} = func() *walker.Schema { diff --git a/tools/linters/go.mod b/tools/linters/go.mod index 583c67f24c706..eb5a389e3c9be 100644 --- a/tools/linters/go.mod +++ b/tools/linters/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/stackrox/tools/linters -go 1.23.0 - -toolchain go1.23.2 +go 1.25 require ( github.com/golangci/golangci-lint/v2 v2.1.6 @@ -73,7 +71,7 @@ require ( github.com/go-toolsmith/astp v1.1.0 // indirect github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/go-viper/mapstructure/v2 v2.3.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.12.1 // indirect diff --git a/tools/linters/go.sum b/tools/linters/go.sum index 882dc31863d6a..94131cf38d209 100644 --- a/tools/linters/go.sum +++ b/tools/linters/go.sum @@ -209,8 +209,8 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= +github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= diff --git a/tools/proto/go.mod b/tools/proto/go.mod index 0f308a2d2a1f7..2f326944aa870 100644 --- a/tools/proto/go.mod +++ b/tools/proto/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/stackrox/tools/proto -go 1.23.4 - -toolchain go1.23.6 +go 1.25 require ( github.com/bufbuild/buf v1.54.0 diff --git a/tools/test/go.mod b/tools/test/go.mod index a0afdde3bfbd1..65aeda123af95 100644 --- a/tools/test/go.mod +++ b/tools/test/go.mod @@ -1,8 +1,6 @@ module github.com/stackrox/stackrox/tools/test -go 1.23.0 - -toolchain go1.23.6 +go 1.25 require ( github.com/jstemmer/go-junit-report/v2 v2.1.0 diff --git a/ui/apps/platform/cypress/integration/compliance/complianceList.test.js b/ui/apps/platform/cypress/integration/compliance/complianceList.test.js index 0ffe24e6764df..3d6780dfe05bf 100644 --- a/ui/apps/platform/cypress/integration/compliance/complianceList.test.js +++ b/ui/apps/platform/cypress/integration/compliance/complianceList.test.js @@ -14,7 +14,8 @@ import { selectors } from './Compliance.selectors'; describe('Compliance entities list', () => { withAuth(); - it('should filter namespaces table with passing controls', () => { + // TODO: ROX-30939: fix test for OCP4.20 "1 namespace" (openshift-cloud-credential-operator) + it.skip('should filter namespaces table with passing controls', () => { triggerScan(); // in case complianceDashboard.test.js is skipped visitComplianceEntities('namespaces'); diff --git a/ui/apps/platform/cypress/integration/integrations/externalBackups.test.js b/ui/apps/platform/cypress/integration/integrations/externalBackups.test.js index b6314e755b34f..68b5af23649fc 100644 --- a/ui/apps/platform/cypress/integration/integrations/externalBackups.test.js +++ b/ui/apps/platform/cypress/integration/integrations/externalBackups.test.js @@ -4,6 +4,7 @@ import { getHelperElementByLabel, getInputByLabel, } from '../../helpers/formHelpers'; +import fakeGCPServiceAccount from '../../helpers/fakeGCPServiceAccount'; import { clickCreateNewIntegrationInTable, @@ -205,9 +206,8 @@ describe('Backup Integrations', () => { getInputByLabel('Object prefix').clear().type('acs-'); getInputByLabel('Backups to retain').clear().type(1).blur(); getInputByLabel('Service account key (JSON)') - .type('{ "type": "service_account" }', { - parseSpecialCharSequences: false, - }) + .clear() + .type(JSON.stringify(fakeGCPServiceAccount), { parseSpecialCharSequences: false }) .blur(); // enter invalid JSON const staticResponseForTest = { body: {} }; diff --git a/ui/apps/platform/cypress/integration/vulnmanagement/dashboardToEntityPage.test.js b/ui/apps/platform/cypress/integration/vulnmanagement/dashboardToEntityPage.test.js index 27c2280daac98..62f63dd834d57 100644 --- a/ui/apps/platform/cypress/integration/vulnmanagement/dashboardToEntityPage.test.js +++ b/ui/apps/platform/cypress/integration/vulnmanagement/dashboardToEntityPage.test.js @@ -66,7 +66,8 @@ describe('Vulnerability Management Dashboard', () => { ); }); - it('has item link to node component page from Top riskiest node components', () => { + // ROX-30069: test perma-fails on OCP 4.19 after June 4, 2025 + it.skip('has item link to node component page from Top riskiest node components', () => { visitVulnerabilityManagementDashboard(); const entitiesKey = 'node-components'; diff --git a/ui/apps/platform/cypress/integration/vulnmanagement/nodeComponents.test.js b/ui/apps/platform/cypress/integration/vulnmanagement/nodeComponents.test.js index 2c8b2ec4984bd..c46476db5c87d 100644 --- a/ui/apps/platform/cypress/integration/vulnmanagement/nodeComponents.test.js +++ b/ui/apps/platform/cypress/integration/vulnmanagement/nodeComponents.test.js @@ -32,7 +32,8 @@ describe('Vulnerability Management Node Components', () => { ]); }); - it('should sort the Risk Priority column', () => { + // ROX-30069: test perma-fails on OCP 4.19 after June 4, 2025 + it.skip('should sort the Risk Priority column', () => { visitVulnerabilityManagementEntities(entitiesKey); const thSelector = '.rt-th:contains("Risk Priority")'; @@ -117,11 +118,13 @@ describe('Vulnerability Management Node Components', () => { // Argument 3 in verify functions is index of column which has the links. // The one-based index includes checkbox, hidden, invisible. - it('should display either links for node CVEs or text for No CVEs', () => { + // ROX-30069: test perma-fails on OCP 4.19 after June 4, 2025 + it.skip('should display either links for node CVEs or text for No CVEs', () => { verifyConditionalCVEs(entitiesKey, 'node-cves', 4, 'vulnCounter'); }); - it('should display links for nodes', () => { + // ROX-30069: test perma-fails on OCP 4.19 after June 4, 2025 + it.skip('should display links for nodes', () => { verifySecondaryEntities(entitiesKey, 'nodes', 6); }); }); diff --git a/ui/apps/platform/package-lock.json b/ui/apps/platform/package-lock.json index 16758b1769597..305c03a3a598f 100644 --- a/ui/apps/platform/package-lock.json +++ b/ui/apps/platform/package-lock.json @@ -19,7 +19,7 @@ "@patternfly/react-table": "^5.2.2", "@patternfly/react-topology": "^5.2.1", "@patternfly/react-user-feedback": "^5.0.0", - "axios": "^1.9.0", + "axios": "^1.12.0", "computed-style-to-inline-style": "^3.0.0", "core-js": "^3.41.0", "d3-axis": "^1.0.12", @@ -39,15 +39,15 @@ "html2canvas": "1.0.0-rc.7", "initials": "^3.1.2", "js-base64": "^3.7.2", - "jspdf": "^2.3.1", - "jspdf-autotable": "^3.5.14", + "jspdf": "^4.0.0", + "jspdf-autotable": "^5.0.7", "lodash": "^4.17.21", "mobx": "^6.9.0", "mobx-react": "^7.6.0", "object-resolve-path": "^1.1.1", "pluralize": "^8.0.0", "prop-types": "^15.7.2", - "qs": "^6.12.1", + "qs": "6.14.1", "raven-for-redux": "^1.3.1", "raven-js": "^3.27.0", "react": "^18.2.0", @@ -64,7 +64,7 @@ "react-popper": "0.9.0", "react-redux": "^7.2.6", "react-responsive": "^9.0.2", - "react-router-dom": "^6.28.0", + "react-router-dom": "^6.30.3", "react-router-hash-link": "^2.4.3", "react-select": "^2.0.0", "react-spinners": "^0.10.4", @@ -132,6 +132,7 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-junit": "^16.0.0", + "jsdom": "^20.0.3", "levenary": "^1.1.1", "mocha-junit-reporter": "^2.2.0", "mocha-multi-reporters": "^1.5.1", @@ -2215,13 +2216,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", - "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } @@ -2535,9 +2533,9 @@ } }, "node_modules/@cypress/request": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.6.tgz", - "integrity": "sha512-fi0eVdCOtKu5Ed6+E8mYxUF6ZTFJDZvHogCBelM0xVXmrDEkyM22gRArQzq1YcHPm1V47Vf/iAD+WgVdUlJCGg==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.10.tgz", + "integrity": "sha512-hauBrOdvu08vOsagkZ/Aju5XuiZx6ldsLfByg1htFeldhex+PeMrYauANzFsMJeAA0+dyPLbDoX2OYuvVoLDkQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2547,14 +2545,14 @@ "combined-stream": "~1.0.6", "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~4.0.0", + "form-data": "~4.0.4", "http-signature": "~1.4.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "6.13.0", + "qs": "~6.14.1", "safe-buffer": "^5.1.2", "tough-cookie": "^5.0.0", "tunnel-agent": "^0.6.0", @@ -2564,21 +2562,6 @@ "node": ">= 6" } }, - "node_modules/@cypress/request/node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@cypress/request/node_modules/tough-cookie": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", @@ -4075,9 +4058,10 @@ } }, "node_modules/@remix-run/router": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz", - "integrity": "sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", + "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -5102,6 +5086,28 @@ "form-data": "^3.0.0" } }, + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", + "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==", + "license": "MIT" + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -6512,17 +6518,6 @@ "node": ">= 4.0.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k= sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/attr-accept": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", @@ -6607,30 +6602,16 @@ } }, "node_modules/axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/axios/node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -7033,23 +7014,24 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, + "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -7065,6 +7047,27 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/body-parser/node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -7083,6 +7086,16 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/bonjour-service": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", @@ -7190,17 +7203,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha1-AamQn4ssk/a/aAuiYTHrMPf6PXM= sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", - "bin": { - "btoa": "bin/btoa.js" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -9865,11 +9867,13 @@ ] }, "node_modules/dompurify": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.7.tgz", - "integrity": "sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", "license": "(MPL-2.0 OR Apache-2.0)", - "optional": true + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } }, "node_modules/domutils": { "version": "2.8.0", @@ -10216,7 +10220,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -11168,40 +11171,40 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -11343,6 +11346,17 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-png": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fast-png/-/fast-png-6.4.0.tgz", + "integrity": "sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==", + "license": "MIT", + "dependencies": { + "@types/pako": "^2.0.3", + "iobuffer": "^5.3.2", + "pako": "^2.1.0" + } + }, "node_modules/fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", @@ -11439,9 +11453,10 @@ } }, "node_modules/fflate": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", - "integrity": "sha1-+QuCrvvYrBdCE6uzOL1++Ejw9a4= sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==" + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" }, "node_modules/figures": { "version": "3.2.0", @@ -11867,12 +11882,15 @@ "dev": true }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha1-69U3kbeDVqma+aMA1CgsTV65dV8= sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -13135,6 +13153,12 @@ "loose-envify": "^1.0.0" } }, + "node_modules/iobuffer": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz", + "integrity": "sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==", + "license": "MIT" + }, "node_modules/ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -14759,20 +14783,6 @@ } } }, - "node_modules/jsdom/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha1-k5Gdrq82HuUpWEubMWZNwSyfpFI= sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -14877,27 +14887,29 @@ } }, "node_modules/jspdf": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.3.1.tgz", - "integrity": "sha1-MT0RcjS1RkaWlKH9gaHgJBFkdXY= sha512-1vp0USP1mQi1h7NKpwxjFgQkJ5ncZvtH858aLpycUc/M+r/RpWJT8PixAU7Cw/3fPd4fpC8eB/Bj42LnsR21YQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-4.0.0.tgz", + "integrity": "sha512-w12U97Z6edKd2tXDn3LzTLg7C7QLJlx0BPfM3ecjK2BckUl9/81vZ+r5gK4/3KQdhAcEZhENUxRhtgYBj75MqQ==", + "license": "MIT", "dependencies": { - "atob": "^2.1.2", - "btoa": "^1.2.1", - "fflate": "^0.4.8" + "@babel/runtime": "^7.28.4", + "fast-png": "^6.2.0", + "fflate": "^0.8.1" }, "optionalDependencies": { - "canvg": "^3.0.6", + "canvg": "^3.0.11", "core-js": "^3.6.0", - "dompurify": "^2.2.0", + "dompurify": "^3.2.4", "html2canvas": "^1.0.0-rc.5" } }, "node_modules/jspdf-autotable": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-3.5.14.tgz", - "integrity": "sha1-mRo+2HtsiB+RrYB5i2eBqb+YtKk= sha512-Qm11yQ2hTvM2iZ7MpWLpeDGR+uQlI8bcOsMjWYXon9mTo+UehMqp5xdQk6JpVSNUN6+rnJnpS5mkqelv4ncd5g==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-5.0.7.tgz", + "integrity": "sha512-2wr7H6liNDBYNwt25hMQwXkEWFOEopgKIvR1Eukuw6Zmprm/ZcnmLTQEjW7Xx3FCbD3v7pflLcnMAv/h1jFDQw==", + "license": "MIT", "peerDependencies": { - "jspdf": "^2.1.1" + "jspdf": "^2 || ^3 || ^4" } }, "node_modules/jsprim": { @@ -16236,10 +16248,11 @@ } }, "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha1-vo2iryQ7JBfV9kancGY6krfp3tM= sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -16751,6 +16764,12 @@ "node": ">=6" } }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -18844,11 +18863,12 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -18936,18 +18956,40 @@ "deprecated": "Please upgrade to @sentry/browser. See the migration guide https://bit.ly/3ybOlo7" }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/raw-body/node_modules/iconv-lite": { @@ -18962,6 +19004,16 @@ "node": ">=0.10.0" } }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -19422,11 +19474,12 @@ } }, "node_modules/react-router": { - "version": "6.28.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.0.tgz", - "integrity": "sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==", + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz", + "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==", + "license": "MIT", "dependencies": { - "@remix-run/router": "1.21.0" + "@remix-run/router": "1.23.2" }, "engines": { "node": ">=14.0.0" @@ -19436,12 +19489,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.28.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.28.0.tgz", - "integrity": "sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg==", + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz", + "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==", + "license": "MIT", "dependencies": { - "@remix-run/router": "1.21.0", - "react-router": "6.28.0" + "@remix-run/router": "1.23.2", + "react-router": "6.30.3" }, "engines": { "node": ">=14.0.0" @@ -20076,15 +20130,6 @@ "styled-components": "^4.1.1 || ^5.1.1 || ^6.0.5" } }, - "node_modules/redoc/node_modules/dompurify": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", - "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, "node_modules/redoc/node_modules/mobx-react": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-9.2.0.tgz", @@ -20324,11 +20369,6 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha1-XhnWjrEtSG95fhWjxqkY987F60U= sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", diff --git a/ui/apps/platform/package.json b/ui/apps/platform/package.json index a23bbd6f4968b..d8cf7e0af584b 100644 --- a/ui/apps/platform/package.json +++ b/ui/apps/platform/package.json @@ -23,7 +23,7 @@ "@patternfly/react-table": "^5.2.2", "@patternfly/react-topology": "^5.2.1", "@patternfly/react-user-feedback": "^5.0.0", - "axios": "^1.9.0", + "axios": "^1.12.0", "computed-style-to-inline-style": "^3.0.0", "core-js": "^3.41.0", "d3-axis": "^1.0.12", @@ -43,15 +43,15 @@ "html2canvas": "1.0.0-rc.7", "initials": "^3.1.2", "js-base64": "^3.7.2", - "jspdf": "^2.3.1", - "jspdf-autotable": "^3.5.14", + "jspdf": "^4.0.0", + "jspdf-autotable": "^5.0.7", "lodash": "^4.17.21", "mobx": "^6.9.0", "mobx-react": "^7.6.0", "object-resolve-path": "^1.1.1", "pluralize": "^8.0.0", "prop-types": "^15.7.2", - "qs": "^6.12.1", + "qs": "6.14.1", "raven-for-redux": "^1.3.1", "raven-js": "^3.27.0", "react": "^18.2.0", @@ -68,7 +68,7 @@ "react-popper": "0.9.0", "react-redux": "^7.2.6", "react-responsive": "^9.0.2", - "react-router-dom": "^6.28.0", + "react-router-dom": "^6.30.3", "react-router-hash-link": "^2.4.3", "react-select": "^2.0.0", "react-spinners": "^0.10.4", @@ -156,6 +156,7 @@ "jest-environment-jsdom": "^29.7.0", "jest-junit": "^16.0.0", "levenary": "^1.1.1", + "jsdom": "^20.0.3", "mocha-junit-reporter": "^2.2.0", "mocha-multi-reporters": "^1.5.1", "node-fetch": "^2.6.1", diff --git a/ui/apps/platform/src/Components/WorkflowPDFExportButton.jsx b/ui/apps/platform/src/Components/WorkflowPDFExportButton.jsx index 5436dc21e7b89..9a7dd2043ad92 100644 --- a/ui/apps/platform/src/Components/WorkflowPDFExportButton.jsx +++ b/ui/apps/platform/src/Components/WorkflowPDFExportButton.jsx @@ -1,14 +1,18 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import html2canvas from 'html2canvas'; -import jsPDF from 'jspdf'; -import 'jspdf-autotable'; +import { jsPDF } from 'jspdf'; +import { applyPlugin } from 'jspdf-autotable'; import computedStyleToInlineStyle from 'computed-style-to-inline-style'; import { Button } from '@patternfly/react-core'; import { getDate } from 'utils/dateUtils'; import { enhanceWordBreak } from 'utils/pdfUtils'; import { getProductBranding } from 'constants/productBranding'; +import logError from 'utils/logError'; + +// Register the AutoTable plugin with jsPDF +applyPlugin(jsPDF); const printClassName = 'pdf-page'; const imagesClassName = 'pdf-page-image'; @@ -212,75 +216,80 @@ class WorkflowPDFExportButton extends Component { } setTimeout(() => { - Promise.all(this.beforePDFPrinting()).then((canvases) => { - const printClonedElements = Array.from( - element.getElementsByClassName('clonedNode') - ); - const header = document.getElementById('pdf-header'); - canvases.forEach((canvas, index) => { - const isWidgetsView = - id.includes('capture-dashboard') || id.includes('capture-widgets'); - const imgData = canvas.toDataURL('image/jpeg'); - if (isWidgetsView && index > 0) { - imgWidth = canvas.classList.contains('pdf-stretch') - ? (WIDGET_WIDTH + paddingX) * 2 - : WIDGET_WIDTH; - } - const imgHeight = (canvas.height * imgWidth) / canvas.width; - - // for PDF page header - if (index === 0) { - doc.addImage( - imgData, - 'jpg', - positionX, - positionY, - imgWidth, - imgHeight, - `Image${index}`, - 'FAST' - ); - positionY = imgHeight + paddingY; - remainingHeight -= imgHeight; - } else { - if (isWidgetsView) { - if (id === 'capture-dashboard' || id === 'capture-widgets') { - drawPDF(imgHeight, imgWidth, index, imgData, canvases); - } else { - drawStretchPDF(imgHeight, index, imgData); - } + Promise.all(this.beforePDFPrinting()) + .then((canvases) => { + const printClonedElements = Array.from( + element.getElementsByClassName('clonedNode') + ); + const header = document.getElementById('pdf-header'); + canvases.forEach((canvas, index) => { + const isWidgetsView = + id.includes('capture-dashboard') || id.includes('capture-widgets'); + const imgData = canvas.toDataURL('image/jpeg'); + if (isWidgetsView && index > 0) { + imgWidth = canvas.classList.contains('pdf-stretch') + ? (WIDGET_WIDTH + paddingX) * 2 + : WIDGET_WIDTH; } - if (id === 'capture-list') { + const imgHeight = (canvas.height * imgWidth) / canvas.width; + + // for PDF page header + if (index === 0) { doc.addImage( imgData, - 'JPEG', + 'jpg', positionX, positionY, imgWidth, - imgHeight + imgHeight, + `Image${index}`, + 'FAST' ); - positionY += imgHeight; - this.drawTable(positionY, doc); + positionY = imgHeight + paddingY; + remainingHeight -= imgHeight; + } else { + if (isWidgetsView) { + if (id === 'capture-dashboard' || id === 'capture-widgets') { + drawPDF(imgHeight, imgWidth, index, imgData, canvases); + } else { + drawStretchPDF(imgHeight, index, imgData); + } + } + if (id === 'capture-list') { + doc.addImage( + imgData, + 'JPEG', + positionX, + positionY, + imgWidth, + imgHeight + ); + positionY += imgHeight; + this.drawTable(positionY, doc); + } } - } - }); + }); - // only header and table - if (canvases.length === 1) { - if (id === 'capture-list') { - this.drawTable(positionY, doc); + // only header and table + if (canvases.length === 1) { + if (id === 'capture-list') { + this.drawTable(positionY, doc); + } } - } - Array.from(imgElements).forEach((el, index) => { - printElements[index].className = - printClonedElements[index].getAttribute('data-class-name'); - el.parentNode.removeChild(printClonedElements[index]); - el.parentNode.removeChild(el); + Array.from(imgElements).forEach((el, index) => { + printElements[index].className = + printClonedElements[index].getAttribute('data-class-name'); + el.parentNode.removeChild(printClonedElements[index]); + el.parentNode.removeChild(el); + }); + element.removeChild(header); + doc.save(`${fileName}.pdf`); + setIsExporting(false); + }) + .catch((error) => { + logError(error); + setIsExporting(false); }); - element.removeChild(header); - doc.save(`${fileName}.pdf`); - setIsExporting(false); - }); }, 0); }; diff --git a/ui/apps/platform/src/Containers/ConfigManagement/Entity/ConfigManagementEntityImage.jsx b/ui/apps/platform/src/Containers/ConfigManagement/Entity/ConfigManagementEntityImage.jsx index 582ba922f2265..8fe9a198e7b21 100644 --- a/ui/apps/platform/src/Containers/ConfigManagement/Entity/ConfigManagementEntityImage.jsx +++ b/ui/apps/platform/src/Containers/ConfigManagement/Entity/ConfigManagementEntityImage.jsx @@ -68,11 +68,11 @@ const ConfigManagementEntityImage = ({ tag } scan { - components { + imageComponents { name layerIndex version - vulns { + imageVulnerabilities { cve cvss link @@ -161,9 +161,14 @@ const ConfigManagementEntityImage = ({ layers.forEach((layer, i) => { layers[i].components = []; }); - scan.components.forEach((component) => { + scan.imageComponents.forEach((component) => { if (component.layerIndex !== undefined && layers[component.layerIndex]) { - layers[component.layerIndex].components.push(component); + // Transform imageVulnerabilities to vulns for CVETable compatibility + const transformedComponent = { + ...component, + vulns: component.imageVulnerabilities || [], + }; + layers[component.layerIndex].components.push(transformedComponent); } }); diff --git a/ui/apps/platform/src/Containers/VulnMgmt/Entity/Image/VulnMgmtEntityImage.jsx b/ui/apps/platform/src/Containers/VulnMgmt/Entity/Image/VulnMgmtEntityImage.jsx index 2ac84a0d17323..c4b83db70c277 100644 --- a/ui/apps/platform/src/Containers/VulnMgmt/Entity/Image/VulnMgmtEntityImage.jsx +++ b/ui/apps/platform/src/Containers/VulnMgmt/Entity/Image/VulnMgmtEntityImage.jsx @@ -67,7 +67,7 @@ const VulnMgmtEntityImage = ({ name } notes - components: imageComponents { + imageComponents { id priority name @@ -75,7 +75,7 @@ const VulnMgmtEntityImage = ({ version source location - vulns: imageVulnerabilities { + imageVulnerabilities { ...cveFields } } diff --git a/ui/apps/platform/src/Containers/VulnMgmt/Entity/Image/VulnMgmtImageOverview.jsx b/ui/apps/platform/src/Containers/VulnMgmt/Entity/Image/VulnMgmtImageOverview.jsx index dd32f2760f101..9f8a474df5a7e 100644 --- a/ui/apps/platform/src/Containers/VulnMgmt/Entity/Image/VulnMgmtImageOverview.jsx +++ b/ui/apps/platform/src/Containers/VulnMgmt/Entity/Image/VulnMgmtImageOverview.jsx @@ -37,7 +37,7 @@ const emptyImage = { name: {}, priority: 0, scan: { - components: [], + imageComponents: [], }, topVuln: {}, vulnCount: 0, @@ -49,31 +49,35 @@ const VulnMgmtImageOverview = ({ data, entityContext }) => { // guard against incomplete GraphQL-cached data const safeData = { ...emptyImage, ...data }; const { metadata, scan, topVuln, priority, notes } = safeData; - safeData.componentCount = scan?.components?.length || 0; + safeData.componentCount = scan?.imageComponents?.length || 0; - // TODO: replace this hack with feature flag selection of components or imageComponents, - // after `layerIndex` is available on ImageComponent - safeData.imageComponentCount = scan?.components?.length || 0; + // Updated to use imageComponents now that layerIndex is available on ImageComponent + safeData.imageComponentCount = scan?.imageComponents?.length || 0; const layers = metadata ? cloneDeep(metadata.v1.layers) : []; const fixableCves = []; // If we have a scan, then we can try and assume we have layers - if (scan) { + if (scan && scan.imageComponents) { layers.forEach((layer, i) => { layers[i].components = []; layers[i].cvesCount = 0; }); - scan.components.forEach((component) => { - component.vulns.forEach((cve) => { + scan.imageComponents.forEach((component) => { + component.imageVulnerabilities.forEach((cve) => { if (cve.isFixable) { fixableCves.push(cve); } }); if (component.layerIndex !== undefined && layers[component.layerIndex]) { - layers[component.layerIndex].components.push(component); - layers[component.layerIndex].cvesCount += component.vulns.length; + // Transform imageVulnerabilities to vulns for CVETable compatibility + const transformedComponent = { + ...component, + vulns: component.imageVulnerabilities || [], + }; + layers[component.layerIndex].components.push(transformedComponent); + layers[component.layerIndex].cvesCount += component.imageVulnerabilities.length; } }); } diff --git a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/VulnReports/VulnReportingLayout.tsx b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/VulnReports/VulnReportingLayout.tsx index 6e68ec6203c57..471d1cda07c47 100644 --- a/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/VulnReports/VulnReportingLayout.tsx +++ b/ui/apps/platform/src/Containers/Vulnerabilities/VulnerablityReporting/VulnReports/VulnReportingLayout.tsx @@ -20,7 +20,7 @@ const tabs = [ function VulnReportingLayout() { const { isFeatureFlagEnabled } = useFeatureFlags(); - const isOnDemandReportsEnabled = !isFeatureFlagEnabled('ROX_VULNERABILITY_ON_DEMAND_REPORTS'); + const isOnDemandReportsEnabled = isFeatureFlagEnabled('ROX_VULNERABILITY_ON_DEMAND_REPORTS'); const location = useLocation(); const navigate = useNavigate(); diff --git a/ui/apps/platform/src/queries/image.js b/ui/apps/platform/src/queries/image.js index 434dd913edc09..c70cd9e92671d 100644 --- a/ui/apps/platform/src/queries/image.js +++ b/ui/apps/platform/src/queries/image.js @@ -29,11 +29,11 @@ export const IMAGE_FRAGMENT = gql` tag } scan { - components { + imageComponents { name layerIndex version - vulns { + imageVulnerabilities { cve cvss link diff --git a/ui/apps/platform/src/utils/getEntityName.test.js b/ui/apps/platform/src/utils/getEntityName.test.js index c318486563d47..2fe98ec2c5cff 100644 --- a/ui/apps/platform/src/utils/getEntityName.test.js +++ b/ui/apps/platform/src/utils/getEntityName.test.js @@ -163,7 +163,7 @@ describe('getEntityName', () => { component: { id: 'bGlieG1sMg:Mi45LjErZGZzZzEtNStkZWI4dTQ', name: 'libxml2', - __typename: 'EmbeddedImageScanComponent', + __typename: 'ImageComponent', }, }; diff --git a/ui/apps/platform/src/utils/pdfUtils.js b/ui/apps/platform/src/utils/pdfUtils.js index 82b83f2372f4c..6d13dd0ded81e 100644 --- a/ui/apps/platform/src/utils/pdfUtils.js +++ b/ui/apps/platform/src/utils/pdfUtils.js @@ -117,9 +117,15 @@ const createPDFTable = (tableData, entityType, query, pdfId, tableColumns) => { headerKeys.forEach((key, index) => { const td = document.createElement('td'); let colValue = ''; - if (filteredColumns[index] && filteredColumns[index].Cell) { + // Adjust column index if type was prepended + const columnIndex = tableData[0].rows && type ? index - 1 : index; + if ( + columnIndex >= 0 && + filteredColumns[columnIndex] && + filteredColumns[columnIndex].Cell + ) { colValue = ReactDOMServer.renderToString( - filteredColumns[index].Cell({ original: val, pdf: true }) + filteredColumns[columnIndex].Cell({ original: val, pdf: true }) ); } else { const flattenedObj = flattenObject(val);