Skip to content

WIP: debug rebase in place vpa failure#2672

Open
haircommander wants to merge 2964 commits into
openshift:masterfrom
haircommander:fix-deferred-resize
Open

WIP: debug rebase in place vpa failure#2672
haircommander wants to merge 2964 commits into
openshift:masterfrom
haircommander:fix-deferred-resize

Conversation

@haircommander
Copy link
Copy Markdown
Member

@haircommander haircommander commented May 20, 2026

What type of PR is this?

What this PR does / why we need it:

Which issue(s) this PR is related to:

Special notes for your reviewer:

Does this PR introduce a user-facing change?


Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:


Summary by CodeRabbit

  • New Features

    • Added support for sharded list and watch operations across multiple APIs (alpha feature behind ShardedListAndWatch gate).
    • New admission control resources: MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding.
    • New scheduling API resources: PodGroup and Workload support in scheduling.k8s.io/v1alpha2.
    • New resource management APIs: DeviceTaintRule and ResourcePoolStatusRequest.
  • Updates

    • Upgraded Go toolchain to version 1.26.2.
    • Enhanced API discovery documentation for list mapping configuration.
  • Deprecations

    • Marked PodCertificateRequest fields pkixPublicKey and proofOfPossession as deprecated in favor of stubPKCS10Request.
  • Chores

    • Updated CI operator build configuration and project ownership aliases.

k8s-ci-robot and others added 30 commits March 21, 2026 14:18
KEP-5491: DRA: List Types for Attributes [Alpha]
The fast-delete pod status tests currently require the intentionally failing
"fail" container to report exit code 1. In CI, some runtimes occasionally
report exit code 2 with reason=Error even though the tested invariant still
holds: the container failed and the blocked workload container never started.

The latest dims/test-k8s failure on master showed exactly that state: the pod
remained Failed, Initialized=False, the blocked container reported
started=false, and only the failing init container drifted from exit 1 to exit
2. This matches kubernetes/kubernetes issue 135713 and the related
pending-container history in PR 131605.

Accept exit code 2 in this verifier so the test continues to assert the
behavior it is meant to cover instead of a lower-layer exit-code detail.

Fixes issue 135713

Tested:
- hack/verify-gofmt.sh
- hack/verify-test-code.sh
- hack/verify-typecheck.sh ./test/e2e/node/...
- go test ./test/e2e/node -run TestNonExistent -count=1

Co-authored-by: Jordan Liggitt <jordan@liggitt.net>
Replace plain bool with sync/atomic.Bool for the useStreaming field
in remoteRuntimeService and remoteImageService to eliminate a data
race when multiple goroutines concurrently read/write the field
during Unimplemented fallback.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
…logquery-lock-defualt

[FeatureGate] Promote NodeLogQuery to GA in  v1.36 and lock default to `true`
…-flake

Set WithSerial on HPA tests that conflict api registration
…able-tolerance-e2e-deterministic-cpu-load

fix: [sig-autoscaling] flaky HPAConfigurableTolerance e2e should scale up but should not scale down
…-pod-status-exit-2

test/e2e/node: tolerate exit code 2 in pod status flake
gRPC defaults to the DNS resolver for bare targets passed to
NewClient. For CRI socket endpoints, GetAddressAndDialer returns a
socket path plus a custom dialer, but handing the bare path to
grpc.NewClient still lets gRPC resolve the target first.

That breaks unix socket clients with errors like "name resolver error:
produced zero addresses" before the custom dialer ever sees the raw
path. Use the passthrough resolver for socket-style addresses so the
runtime and image clients hand the original endpoint directly to the
custom dialer.

Add a regression test for unix sockets, Windows named pipes, and TCP
addresses.

Precedent:
https://github.com/etcd-io/etcd/blob/v3.3.27/clientv3/client.go#L266-L270
https://github.com/grpc/grpc-go/blob/v1.72.2/dialoptions.go#L448-L451

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
…nt-unix-socket-dialing

cri-client: use passthrough resolver for socket endpoints
KEP-5729: DRA: ResourceClaim Support for Workloads
…g-fixes

[InPlacePodLevelResourcesVerticalScaling] Plr ippr kubelet bug fixes
[InPlacePodLevelResourcesVerticalScaling] Ippr flaky test
[PodLevelResources] Graduate InPlacePodLevelResourcesVerticalScaling feature to beta
cri-client: use atomic.Bool for useStreaming to fix data race
Fix restartable init container startup race
Co-authored-by: Omar Sayed <omarsayed@google.com>
ShazaAldawamneh and others added 14 commits May 18, 2026 14:35
…e when claims.email is used in username expression

Signed-off-by: Shaza Aldawamneh <shaza.aldawamneh@hotmail.com>
…acheGC is enabled

Squash into UPSTREAM: <carry>: create termination events
Could squash into UPSTREAM: <carry>: emit event when readyz goes true
Squash into: UPSTREAM: <carry>: add management support to kubelet
kuberc subcommand is not yet registered in oc. Tests will be re-enabled after oc is bumped to 1.36
To be squashed with the commit UPSTREAM: <carry>: Add OpenShift tooling, images, configs and docs before 1.36 rebase bump merges

Signed-off-by: jubittajohn <jujohn@redhat.com>
… driver when not enabled

The upstream csi-hostpath-plugin.yaml manifest now includes a csi-snapshot-metadata sidecar container and volume (added in k/k#130918). Upstream PR k/k#137057 added conditional stripping of these when CapSnapshotMetadata is not enabled, but only for the upstream hostpathCSIDriver. The OpenShift-specific groupSnapshotHostpathCSIDriver was never updated, causing the driver pod to fail with "secret csi-snapshot-metadata-server-certs not found"  and all csi-hostpath-groupsnapshot tests to fail in techpreview jobs.

Signed-off-by: jubittajohn <jujohn@redhat.com>
Signed-off-by: Sai Ramesh Vanka <svanka@redhat.com>
instead, check whether the pod is allocated, and return that when we return allocated pods

Signed-off-by: Peter Hunt <pehunt@redhat.com>
Signed-off-by: jubittajohn <jujohn@redhat.com>
Signed-off-by: jubittajohn <jujohn@redhat.com>
Signed-off-by: Peter Hunt <pehunt@redhat.com>
Signed-off-by: Peter Hunt <pehunt@redhat.com>
@openshift-ci-robot openshift-ci-robot added the backports/unvalidated-commits Indicates that not all commits come to merged upstream PRs. label May 20, 2026
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 20, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@haircommander: the contents of this pull request could not be automatically validated.

The following commits are valid:

The following commits could not be validated and must be approved by a top-level approver:

Comment /validate-backports to re-evaluate validity of the upstream PRs, for example when they are merged upstream.

@haircommander
Copy link
Copy Markdown
Member Author

/test e2e-aws-ovn-techpreview-serial-1of2
/test k8s-e2e-gcp-serial

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 20, 2026

Walkthrough

This PR advances Kubernetes toolchain versions (Go 1.25.7→1.26.2), migrates scheduling.k8s.io from v1alpha1 to v1alpha2 with new PodGroup resources, expands API discovery for admissionregistration and resource APIs, and broadly introduces ShardInfo schema and CEL-based shardSelector parameters for alpha sharded list filtering across numerous API groups (admissionregistration, autoscaling, batch, certificates, coordination, discovery, events, flowcontrol, and networking).

Changes

Build Toolchain and Developer Workflow

Layer / File(s) Summary
Go toolchain and CI operator image version updates
.go-version, .ci-operator.yaml
Go version pinned to 1.26.2 and CI operator build root image upgraded to rhel-9-release-golang-1.26-openshift-5.0.
Developer workflow and local configuration support
.github/PULL_REQUEST_TEMPLATE.md, .gitignore, CHANGELOG/README.md
PR template adds /kind dependency option; .gitignore entries exclude locally-overridden AGENTS.md pending repo merge; changelog index links new CHANGELOG-1.36.md.

Team Ownership and Governance

Layer / File(s) Summary
OWNERS_ALIASES team membership updates
OWNERS_ALIASES
sig-scheduling adds ania-borowiec and tosi3k; sig-instrumentation aliases adjust members (logicalhan removed, pohly/nmn3m added); feature-approvers swap andrewsykim for cheftako, add maintainers, remove logicalhan; dep-reviewers removes logicalhan; commented feature-approvers-emeritus block added.

Kubernetes API Surface and Discovery Updates

Layer / File(s) Summary
API rule violation exceptions and sample controller exemptions
api/api-rules/sample_controller_violation_exceptions.list, api/api-rules/violation_exceptions.list
Adds 15 sample controller violation exception entries and expands violation_exceptions.list with TLSCurvePreferences, DeviceAttribute plural variants, and controller field exceptions.
scheduling.k8s.io v1alpha1 to v1alpha2 migration with PodGroup
api/discovery/aggregated_v2.json, api/discovery/apis.json, api/discovery/apis__scheduling.k8s.io.json, api/discovery/apis__scheduling.k8s.io__v1alpha1.json, api/discovery/apis__scheduling.k8s.io__v1alpha2.json
Removes v1alpha1 discovery document, creates v1alpha2 APIResourceList with namespaced PodGroup (including status subresource) and Workload, updates aggregated and group version metadata.
admissionregistration and resource API discovery additions
api/discovery/aggregated_v2.json, api/discovery/apis__admissionregistration.k8s.io__v1.json, api/discovery/apis__resource.k8s.io__v1beta2.json, api/discovery/apis__resource.k8s.io__v1alpha3.json
Adds MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding to admissionregistration v1; introduces DeviceTaintRule and ResourcePoolStatusRequest to resource APIs.
Storage version hash updates
api/discovery/apis__storage.k8s.io__v1.json, api/discovery/apis__storage.k8s.io__v1beta1.json
Updates storageVersionHash values for VolumeAttributesClass resource.
OpenAPI core schema additions: PodSchedulingGroup and related types
api/openapi-spec/v3/apis__*.json
Introduces PodSchedulingGroup schema, adds schedulingGroup immutable field to PodSpec, removes workloadRef and WorkloadReference; updates pod security and volume documentation across apps, batch, and other API specs.
ShardInfo schema and ListMeta.shardInfo additions
api/openapi-spec/v3/apis__admissionregistration.k8s.io__v1alpha1_openapi.json, api/openapi-spec/v3/apis__admissionregistration.k8s.io__v1beta1_openapi.json, api/openapi-spec/v3/apis__apiextensions.k8s.io__v1_openapi.json, api/openapi-spec/v3/apis__apiregistration.k8s.io__v1_openapi.json, api/openapi-spec/v3/apis__apps__v1_openapi.json, api/openapi-spec/v3/apis__autoscaling__v1_openapi.json, api/openapi-spec/v3/apis__autoscaling__v2_openapi.json, api/openapi-spec/v3/apis__batch__v1_openapi.json, api/openapi-spec/v3/apis__certificates.k8s.io__v1_openapi.json, api/openapi-spec/v3/apis__certificates.k8s.io__v1alpha1_openapi.json, api/openapi-spec/v3/apis__certificates.k8s.io__v1beta1_openapi.json, api/openapi-spec/v3/apis__coordination.k8s.io__v1_openapi.json, api/openapi-spec/v3/apis__coordination.k8s.io__v1alpha2_openapi.json, api/openapi-spec/v3/apis__coordination.k8s.io__v1beta1_openapi.json, api/openapi-spec/v3/apis__discovery.k8s.io__v1_openapi.json, api/openapi-spec/v3/apis__events.k8s.io__v1_openapi.json, api/openapi-spec/v3/apis__flowcontrol.apiserver.k8s.io__v1_openapi.json, api/openapi-spec/v3/apis__internal.apiserver.k8s.io__v1alpha1_openapi.json, api/openapi-spec/v3/apis__networking.k8s.io__v1_openapi.json
Introduces io.k8s.apimachinery.pkg.apis.meta.v1.ShardInfo schema with required selector field; adds shardInfo property to ListMeta; updates x-kubernetes-group-version-kind metadata for DeleteOptions and WatchEvent across all updated API specs.
shardSelector query parameter additions for CEL-based sharded list filtering
api/openapi-spec/v3/apis__*.json
Adds shardSelector query parameter (CEL shardRange() expression, alpha ShardedListAndWatch feature gate) to list/watch/deletecollection operations across admissionregistration, apiextensions, apiregistration, autoscaling, batch, certificates, coordination, discovery, events, flowcontrol, internal.apiserver, and networking API endpoints.
OpenAPI schema refinements and description updates
api/openapi-spec/v3/apis__*.json, api/openapi-spec/README.md
Updates schema descriptions for authentication, authorization, certificates, coordination, discovery, and internal.apiserver APIs; refines required field constraints; regenerates meta component schemas; adds x-kubernetes-list-map-keys documentation to OpenAPI spec readme.

🎯 4 (Complex) | ⏱️ ~75 minutes

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

@openshift-ci openshift-ci Bot requested review from deads2k and mrunalp May 20, 2026 21:17
@openshift-ci openshift-ci Bot added the vendor-update Touching vendor dir or related files label May 20, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 20, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: haircommander
Once this PR has been reviewed and has the lgtm label, please assign deads2k for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
api/openapi-spec/v3/apis__certificates.k8s.io__v1beta1_openapi.json (1)

273-282: ⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

Required-field swap in v1beta1 introduces a breaking API contract.

At Line 281, making stubPKCS10Request required in io.k8s.api.certificates.v1beta1.PodCertificateRequestSpec means existing clients that still send only deprecated pkixPublicKey + proofOfPossession will fail schema validation. For a v1beta1 API, this is a high-risk compatibility break unless explicitly intended and coordinated.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@api/openapi-spec/v3/apis__certificates.k8s.io__v1beta1_openapi.json` around
lines 273 - 282, The OpenAPI spec change made "stubPKCS10Request" required in
io.k8s.api.certificates.v1beta1.PodCertificateRequestSpec, which breaks clients
still using the deprecated pkixPublicKey + proofOfPossession fields; revert that
change by removing "stubPKCS10Request" from the "required" array in the
PodCertificateRequestSpec definition so it remains optional, ensure the spec
still documents pkixPublicKey and proofOfPossession as supported (deprecated)
fields, and run schema validation to confirm both input forms are accepted by
the v1beta1 schema.
🧹 Nitpick comments (1)
.gitignore (1)

110-113: ⚡ Quick win

Avoid repo-level ignore for AGENTS.md.

Line 113 can unintentionally hide a future canonical AGENTS.md from git status. Keep the local override ignore, but prefer not ignoring the shared filename in-repo.

♻️ Proposed change
 # Local agent override file
 AGENTS.override.md
-# TODO: remove once there is a merged AGENTS.md
-AGENTS.md
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.gitignore around lines 110 - 113, The .gitignore currently ignores both
AGENTS.override.md and AGENTS.md which hides a shared repo file; remove or
comment out the AGENTS.md entry but keep AGENTS.override.md so local overrides
remain ignored. Edit the .gitignore to delete the "AGENTS.md" line (or prefix it
with #) while leaving "AGENTS.override.md" intact, ensuring future canonical
AGENTS.md appears in git status; reference the entries "AGENTS.override.md" and
"AGENTS.md" when making the change.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.go-version:
- Line 1: The .go-version file was bumped to 1.26.2 but many go.mod files (e.g.,
the root go.mod and module files under staging/src/k8s.io/*/go.mod) still state
"go 1.26.0", causing a toolchain mismatch; pick one resolution and make it
consistent across the repo: either revert .go-version back to 1.26.0, or update
every go.mod (root go.mod and all staging module go.mod files) to "go 1.26.2" so
the Go directive matches .go-version—ensure you update all occurrences rather
than only root or a subset.

In `@api/openapi-spec/README.md`:
- Around line 59-60: The README wording has a typo: change the extension name
`x-kubernetes-list-maps-keys` to the correct `x-kubernetes-list-map-keys` in the
sentence that begins "Operations and Definitions may have
`x-kubernetes-list-maps-keys`..." so all references to that extension (in this
paragraph) use `x-kubernetes-list-map-keys`; ensure the surrounding explanatory
sentence that mentions `x-kubernetes-list-type = map` remains unchanged.

In `@api/openapi-spec/v3/apis__apps__v1_openapi.json`:
- Line 5262: Fix typos and field-name casing in the volume descriptions: update
the "image" description to use the correct field name
spec.containers[*].volumeMounts.subPath (capital P) instead of subpath and
change the stray "fail If" to "fail if"; also correct phrasing like "kubelets
host machine" to "kubelet's host machine" (and apply the same fixes to the
duplicate occurrence referenced as the other location). Edit the JSON values for
the "image" description and the "portworxVolume" text to reflect these exact
string fixes so generated API docs show the proper field names and grammar.
- Around line 3788-3803: The PodSchedulingGroup schema currently allows an empty
object even though its description requires exactly one field; add a required
constraint so podGroupName is mandatory. Edit the
io.k8s.api.core.v1.PodSchedulingGroup object to include "required":
["podGroupName"] alongside its existing properties and x-kubernetes-unions,
ensuring the podGroupName property is enforced by validators and generated
clients.

---

Outside diff comments:
In `@api/openapi-spec/v3/apis__certificates.k8s.io__v1beta1_openapi.json`:
- Around line 273-282: The OpenAPI spec change made "stubPKCS10Request" required
in io.k8s.api.certificates.v1beta1.PodCertificateRequestSpec, which breaks
clients still using the deprecated pkixPublicKey + proofOfPossession fields;
revert that change by removing "stubPKCS10Request" from the "required" array in
the PodCertificateRequestSpec definition so it remains optional, ensure the spec
still documents pkixPublicKey and proofOfPossession as supported (deprecated)
fields, and run schema validation to confirm both input forms are accepted by
the v1beta1 schema.

---

Nitpick comments:
In @.gitignore:
- Around line 110-113: The .gitignore currently ignores both AGENTS.override.md
and AGENTS.md which hides a shared repo file; remove or comment out the
AGENTS.md entry but keep AGENTS.override.md so local overrides remain ignored.
Edit the .gitignore to delete the "AGENTS.md" line (or prefix it with #) while
leaving "AGENTS.override.md" intact, ensuring future canonical AGENTS.md appears
in git status; reference the entries "AGENTS.override.md" and "AGENTS.md" when
making the change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 63684a92-cd4a-48e5-b64c-a9dddd13b010

📥 Commits

Reviewing files that changed from the base of the PR and between 73359c5 and 1a73e8d.

⛔ Files ignored due to path filters (26)
  • LICENSES/vendor/github.com/armon/circbuf/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/github.com/cenkalti/backoff/v4/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/github.com/cenkalti/backoff/v5/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/github.com/gregjones/httpcache/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/github.com/grpc-ecosystem/go-grpc-prometheus/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/github.com/karrick/godirwalk/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/github.com/libopenstorage/openstorage/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/github.com/mohae/deepcopy/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/github.com/mrunalp/fileutils/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/github.com/pkg/errors/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.opentelemetry.io/otel/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.opentelemetry.io/otel/metric/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.opentelemetry.io/otel/sdk/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.opentelemetry.io/otel/trace/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/go.uber.org/zap/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/k8s.io/utils/third_party/forked/golang/LICENSE is excluded by !**/vendor/**
  • LICENSES/vendor/k8s.io/utils/third_party/forked/golang/btree/LICENSE is excluded by !**/vendor/**
  • cmd/kubeadm/app/discovery/token/testdata/ca-cert.pem is excluded by !**/*.pem
  • cmd/kubeadm/app/util/config/testdata/mynode.pem is excluded by !**/*.pem
  • cmd/kubeadm/app/util/pubkeypin/testdata/test-cert.pem is excluded by !**/*.pem
  • cmd/kubeadm/app/util/pubkeypin/testdata/test-cert2.pem is excluded by !**/*.pem
📒 Files selected for processing (274)
  • .ci-operator.yaml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .gitignore
  • .go-version
  • CHANGELOG/CHANGELOG-1.35.md
  • CHANGELOG/CHANGELOG-1.36.md
  • CHANGELOG/README.md
  • OWNERS_ALIASES
  • api/api-rules/sample_controller_violation_exceptions.list
  • api/api-rules/violation_exceptions.list
  • api/discovery/aggregated_v2.json
  • api/discovery/apis.json
  • api/discovery/apis__admissionregistration.k8s.io__v1.json
  • api/discovery/apis__resource.k8s.io__v1alpha3.json
  • api/discovery/apis__resource.k8s.io__v1beta2.json
  • api/discovery/apis__scheduling.k8s.io.json
  • api/discovery/apis__scheduling.k8s.io__v1alpha1.json
  • api/discovery/apis__scheduling.k8s.io__v1alpha2.json
  • api/discovery/apis__storage.k8s.io__v1.json
  • api/discovery/apis__storage.k8s.io__v1beta1.json
  • api/openapi-spec/README.md
  • api/openapi-spec/swagger.json
  • api/openapi-spec/v3/api__v1_openapi.json
  • api/openapi-spec/v3/apis__admissionregistration.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__admissionregistration.k8s.io__v1alpha1_openapi.json
  • api/openapi-spec/v3/apis__admissionregistration.k8s.io__v1beta1_openapi.json
  • api/openapi-spec/v3/apis__apiextensions.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__apiregistration.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__apps__v1_openapi.json
  • api/openapi-spec/v3/apis__authentication.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__authorization.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__autoscaling__v1_openapi.json
  • api/openapi-spec/v3/apis__autoscaling__v2_openapi.json
  • api/openapi-spec/v3/apis__batch__v1_openapi.json
  • api/openapi-spec/v3/apis__certificates.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__certificates.k8s.io__v1alpha1_openapi.json
  • api/openapi-spec/v3/apis__certificates.k8s.io__v1beta1_openapi.json
  • api/openapi-spec/v3/apis__coordination.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__coordination.k8s.io__v1alpha2_openapi.json
  • api/openapi-spec/v3/apis__coordination.k8s.io__v1beta1_openapi.json
  • api/openapi-spec/v3/apis__discovery.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__events.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__flowcontrol.apiserver.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__internal.apiserver.k8s.io__v1alpha1_openapi.json
  • api/openapi-spec/v3/apis__networking.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__networking.k8s.io__v1beta1_openapi.json
  • api/openapi-spec/v3/apis__node.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__policy__v1_openapi.json
  • api/openapi-spec/v3/apis__rbac.authorization.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__resource.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__resource.k8s.io__v1alpha3_openapi.json
  • api/openapi-spec/v3/apis__resource.k8s.io__v1beta1_openapi.json
  • api/openapi-spec/v3/apis__resource.k8s.io__v1beta2_openapi.json
  • api/openapi-spec/v3/apis__scheduling.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__scheduling.k8s.io__v1alpha1_openapi.json
  • api/openapi-spec/v3/apis__scheduling.k8s.io__v1alpha2_openapi.json
  • api/openapi-spec/v3/apis__storage.k8s.io__v1_openapi.json
  • api/openapi-spec/v3/apis__storage.k8s.io__v1beta1_openapi.json
  • api/openapi-spec/v3/apis__storagemigration.k8s.io__v1beta1_openapi.json
  • build/build-image/cross/VERSION
  • build/common.sh
  • build/dependencies.yaml
  • build/lib/release.sh
  • build/nsswitch.conf
  • build/pause/CHANGELOG.md
  • build/pause/Dockerfile.Rhel
  • build/pause/Makefile
  • build/server-image/Dockerfile
  • build/server-image/kube-apiserver/Dockerfile
  • build/tools.go
  • cluster/addons/dns/coredns/coredns.yaml.base
  • cluster/addons/dns/coredns/coredns.yaml.in
  • cluster/addons/dns/coredns/coredns.yaml.sed
  • cluster/addons/dns/kube-dns/kube-dns.yaml.base
  • cluster/addons/dns/kube-dns/kube-dns.yaml.in
  • cluster/addons/dns/kube-dns/kube-dns.yaml.sed
  • cluster/addons/dns/nodelocaldns/nodelocaldns.yaml
  • cluster/addons/kube-proxy/OWNERS
  • cluster/addons/kube-proxy/kube-proxy-ds.yaml
  • cluster/addons/kube-proxy/kube-proxy-rbac.yaml
  • cluster/addons/volumesnapshots/volume-snapshot-controller/volume-snapshot-controller-deployment.yaml
  • cluster/gce/addons/konnectivity-agent/konnectivity-agent-ds.yaml
  • cluster/gce/config-common.sh
  • cluster/gce/config-default.sh
  • cluster/gce/config-test.sh
  • cluster/gce/gci/configure-helper.sh
  • cluster/gce/gci/configure.sh
  • cluster/gce/gci/master.yaml
  • cluster/gce/gci/mounter/mounter.go
  • cluster/gce/gci/node.yaml
  • cluster/gce/manifests/cloud-controller-manager.manifest
  • cluster/gce/manifests/etcd.manifest
  • cluster/gce/manifests/konnectivity-server.yaml
  • cluster/gce/manifests/kube-proxy.manifest
  • cluster/gce/upgrade-aliases.sh
  • cluster/gce/util.sh
  • cluster/gce/windows/k8s-node-setup.psm1
  • cluster/gce/windows/smoke-test.sh
  • cluster/images/etcd/Dockerfile
  • cluster/images/etcd/Dockerfile.windows
  • cluster/images/etcd/Makefile
  • cluster/images/etcd/OWNERS
  • cluster/images/etcd/README.md
  • cluster/images/etcd/cloudbuild.yaml
  • cluster/images/etcd/migrate-if-needed.bat
  • cluster/images/etcd/migrate-if-needed.sh
  • cluster/images/etcd/migrate/copy_file.go
  • cluster/images/etcd/migrate/data_dir.go
  • cluster/images/etcd/migrate/data_dir_test.go
  • cluster/images/etcd/migrate/integration_test.go
  • cluster/images/etcd/migrate/migrate.go
  • cluster/images/etcd/migrate/migrate_client.go
  • cluster/images/etcd/migrate/migrate_server.go
  • cluster/images/etcd/migrate/migrator.go
  • cluster/images/etcd/migrate/options.go
  • cluster/images/etcd/migrate/options_test.go
  • cluster/images/etcd/migrate/testdata/datadir_with_version/version.txt
  • cluster/images/etcd/migrate/testdata/datadir_without_version/.placeholder
  • cluster/images/etcd/migrate/util_others.go
  • cluster/images/etcd/migrate/utils_windows.go
  • cluster/images/etcd/migrate/versions.go
  • cluster/images/etcd/migrate/versions_test.go
  • cmd/cloud-controller-manager/.import-restrictions
  • cmd/genfeaturegates/genfeaturegates.go
  • cmd/kube-apiserver/OWNERS
  • cmd/kube-apiserver/app/aggregator.go
  • cmd/kube-apiserver/app/testing/testserver.go
  • cmd/kube-controller-manager/app/batch.go
  • cmd/kube-controller-manager/app/controller_descriptor.go
  • cmd/kube-controller-manager/app/controllermanager.go
  • cmd/kube-controller-manager/app/controllermanager_test.go
  • cmd/kube-controller-manager/app/core.go
  • cmd/kube-controller-manager/app/options/options.go
  • cmd/kube-controller-manager/app/options/options_test.go
  • cmd/kube-controller-manager/app/options/resourceclaimcontroller.go
  • cmd/kube-controller-manager/app/plugins.go
  • cmd/kube-controller-manager/app/plugins_providers.go
  • cmd/kube-controller-manager/app/plugins_test.go
  • cmd/kube-controller-manager/app/resource.go
  • cmd/kube-controller-manager/app/scheduling.go
  • cmd/kube-controller-manager/app/scheduling_test.go
  • cmd/kube-controller-manager/app/storageversionmigrator.go
  • cmd/kube-controller-manager/app/testing/testserver.go
  • cmd/kube-controller-manager/names/controller_names.go
  • cmd/kube-proxy/app/conntrack.go
  • cmd/kube-proxy/app/init_linux.go
  • cmd/kube-proxy/app/init_other.go
  • cmd/kube-proxy/app/init_windows.go
  • cmd/kube-proxy/app/options.go
  • cmd/kube-proxy/app/server.go
  • cmd/kube-proxy/app/server_linux.go
  • cmd/kube-proxy/app/server_linux_test.go
  • cmd/kube-proxy/app/server_other.go
  • cmd/kube-proxy/app/server_test.go
  • cmd/kube-proxy/app/server_windows.go
  • cmd/kube-scheduler/app/options/options.go
  • cmd/kube-scheduler/app/options/options_test.go
  • cmd/kube-scheduler/app/server.go
  • cmd/kubeadm/app/apis/kubeadm/v1beta3/defaults_unix.go
  • cmd/kubeadm/app/apis/kubeadm/v1beta3/defaults_windows.go
  • cmd/kubeadm/app/apis/kubeadm/v1beta4/defaults_unix.go
  • cmd/kubeadm/app/apis/kubeadm/v1beta4/defaults_windows.go
  • cmd/kubeadm/app/apis/kubeadm/validation/util_unix.go
  • cmd/kubeadm/app/apis/kubeadm/validation/util_windows.go
  • cmd/kubeadm/app/cmd/certs_test.go
  • cmd/kubeadm/app/cmd/config.go
  • cmd/kubeadm/app/cmd/init.go
  • cmd/kubeadm/app/cmd/options/constant.go
  • cmd/kubeadm/app/cmd/phases/init/bootstraptoken.go
  • cmd/kubeadm/app/cmd/phases/init/data.go
  • cmd/kubeadm/app/cmd/phases/init/data_test.go
  • cmd/kubeadm/app/cmd/phases/init/kubeletfinalize.go
  • cmd/kubeadm/app/cmd/phases/init/uploadconfig.go
  • cmd/kubeadm/app/cmd/phases/init/waitcontrolplane.go
  • cmd/kubeadm/app/cmd/phases/join/controlplanejoin.go
  • cmd/kubeadm/app/cmd/phases/join/data.go
  • cmd/kubeadm/app/cmd/phases/join/data_test.go
  • cmd/kubeadm/app/cmd/phases/join/kubelet.go
  • cmd/kubeadm/app/cmd/phases/reset/cleanupnode.go
  • cmd/kubeadm/app/cmd/phases/reset/data.go
  • cmd/kubeadm/app/cmd/phases/reset/data_test.go
  • cmd/kubeadm/app/cmd/phases/reset/removeetcdmember_test.go
  • cmd/kubeadm/app/cmd/phases/reset/testdata/etcd-pod-without-data-volume.yaml
  • cmd/kubeadm/app/cmd/phases/reset/testdata/etcd-pod.yaml
  • cmd/kubeadm/app/cmd/phases/reset/unmount.go
  • cmd/kubeadm/app/cmd/phases/reset/unmount_linux.go
  • cmd/kubeadm/app/cmd/phases/reset/unmount_linux_test.go
  • cmd/kubeadm/app/cmd/phases/upgrade/apply/bootstraptoken.go
  • cmd/kubeadm/app/cmd/phases/upgrade/apply/uploadconfig.go
  • cmd/kubeadm/app/cmd/phases/upgrade/data.go
  • cmd/kubeadm/app/cmd/phases/upgrade/data_test.go
  • cmd/kubeadm/app/cmd/phases/upgrade/postupgrade.go
  • cmd/kubeadm/app/cmd/reset.go
  • cmd/kubeadm/app/cmd/testdata/token-config.yaml
  • cmd/kubeadm/app/cmd/token_test.go
  • cmd/kubeadm/app/cmd/upgrade/common_test.go
  • cmd/kubeadm/app/cmd/upgrade/plan.go
  • cmd/kubeadm/app/cmd/upgrade/testdata/config-token.yaml
  • cmd/kubeadm/app/cmd/util_other_test.go
  • cmd/kubeadm/app/cmd/util_windows_test.go
  • cmd/kubeadm/app/componentconfigs/kubelet_unix.go
  • cmd/kubeadm/app/componentconfigs/kubelet_unix_test.go
  • cmd/kubeadm/app/componentconfigs/kubelet_windows.go
  • cmd/kubeadm/app/componentconfigs/kubelet_windows_test.go
  • cmd/kubeadm/app/constants/constants.go
  • cmd/kubeadm/app/constants/constants_test.go
  • cmd/kubeadm/app/constants/constants_unix.go
  • cmd/kubeadm/app/constants/constants_windows.go
  • cmd/kubeadm/app/discovery/discovery.go
  • cmd/kubeadm/app/discovery/discovery_test.go
  • cmd/kubeadm/app/discovery/testdata/ca.crt
  • cmd/kubeadm/app/discovery/token/testdata/expected-kubeconfig.yaml
  • cmd/kubeadm/app/discovery/token/token_test.go
  • cmd/kubeadm/app/features/features.go
  • cmd/kubeadm/app/phases/addons/dns/dns_test.go
  • cmd/kubeadm/app/phases/bootstraptoken/node/tlsbootstrap.go
  • cmd/kubeadm/app/phases/bootstraptoken/node/tlsbootstrap_test.go
  • cmd/kubeadm/app/phases/certs/certlist.go
  • cmd/kubeadm/app/phases/controlplane/manifests_test.go
  • cmd/kubeadm/app/phases/controlplane/volumes.go
  • cmd/kubeadm/app/phases/controlplane/volumes_test.go
  • cmd/kubeadm/app/phases/copycerts/testutil_umask.go
  • cmd/kubeadm/app/phases/copycerts/testutil_umask_noop.go
  • cmd/kubeadm/app/phases/etcd/local.go
  • cmd/kubeadm/app/phases/etcd/local_test.go
  • cmd/kubeadm/app/phases/kubeconfig/kubeconfig.go
  • cmd/kubeadm/app/phases/kubeconfig/kubeconfig_test.go
  • cmd/kubeadm/app/phases/upgrade/health.go
  • cmd/kubeadm/app/preflight/checks.go
  • cmd/kubeadm/app/preflight/checks_darwin.go
  • cmd/kubeadm/app/preflight/checks_linux.go
  • cmd/kubeadm/app/preflight/checks_other.go
  • cmd/kubeadm/app/preflight/checks_unix.go
  • cmd/kubeadm/app/preflight/checks_windows.go
  • cmd/kubeadm/app/util/apiclient/wait.go
  • cmd/kubeadm/app/util/chroot_unix.go
  • cmd/kubeadm/app/util/chroot_windows.go
  • cmd/kubeadm/app/util/config/cluster.go
  • cmd/kubeadm/app/util/config/cluster_test.go
  • cmd/kubeadm/app/util/config/common.go
  • cmd/kubeadm/app/util/config/common_test.go
  • cmd/kubeadm/app/util/config/initconfiguration.go
  • cmd/kubeadm/app/util/config/initconfiguration_test.go
  • cmd/kubeadm/app/util/config/testdata/kubelet-with-embedded-cert.yaml
  • cmd/kubeadm/app/util/config/testdata/kubelet-with-invalid-context.yaml
  • cmd/kubeadm/app/util/config/testdata/kubelet-with-invalid-user.yaml
  • cmd/kubeadm/app/util/config/testdata/kubelet-with-linked-cert.yaml
  • cmd/kubeadm/app/util/config/testdata/kubelet-without-cert.yaml
  • cmd/kubeadm/app/util/config/upgradeconfiguration.go
  • cmd/kubeadm/app/util/copy_unix.go
  • cmd/kubeadm/app/util/copy_windows.go
  • cmd/kubeadm/app/util/etcd/etcd.go
  • cmd/kubeadm/app/util/etcd/etcd_test.go
  • cmd/kubeadm/app/util/initsystem/initsystem_unix.go
  • cmd/kubeadm/app/util/initsystem/initsystem_windows.go
  • cmd/kubeadm/app/util/kubeconfig/kubeconfig.go
  • cmd/kubeadm/app/util/kubeconfig/kubeconfig_test.go
  • cmd/kubeadm/app/util/kubeconfig/testdata/user1.yaml
  • cmd/kubeadm/app/util/kubeconfig/testdata/user2.yaml
  • cmd/kubeadm/app/util/marshal_test.go
  • cmd/kubeadm/app/util/pubkeypin/pubkeypin_test.go
  • cmd/kubeadm/app/util/runtime/fake_impl.go
  • cmd/kubeadm/app/util/runtime/impl.go
  • cmd/kubeadm/app/util/runtime/runtime.go
  • cmd/kubeadm/app/util/runtime/runtime_unix.go
  • cmd/kubeadm/app/util/runtime/runtime_windows.go
  • cmd/kubeadm/app/util/staticpod/testdata/invalid-with-default-fields.yaml
  • cmd/kubeadm/app/util/staticpod/testdata/valid-pod-different-order.yaml
  • cmd/kubeadm/app/util/staticpod/testdata/valid-pod.yaml
  • cmd/kubeadm/app/util/staticpod/testdata/valid-pod2.yaml
  • cmd/kubeadm/app/util/staticpod/utils.go
  • cmd/kubeadm/app/util/staticpod/utils_linux.go
  • cmd/kubeadm/app/util/staticpod/utils_linux_test.go
  • cmd/kubeadm/app/util/staticpod/utils_others.go
💤 Files with no reviewable changes (1)
  • api/discovery/apis__scheduling.k8s.io__v1alpha1.json

Comment thread .go-version
@@ -1 +1 @@
1.25.7
1.26.2
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Go/toolchain version pins =="
fd -HI 'go.mod|\.go-version|\.ci-operator\.yaml|Dockerfile|Containerfile|Makefile' \
  | xargs -r rg -n --no-heading -e '(^go [0-9]+\.[0-9]+)|(^toolchain go[0-9]+\.[0-9]+(\.[0-9]+)?)|(1\.26\.2)|(golang-1\.26)'

Repository: openshift/kubernetes

Length of output: 3492


Align Go version across all go.mod files to match .go-version.

The .go-version change to 1.26.2 creates an inconsistency with all go.mod files pinned to 1.26.0 (including the root go.mod and 30+ modules in staging/src/k8s.io/*/go.mod). This split will cause local builds to use Go 1.26.2 while go.mod directives enforce 1.26.0, leading to build inconsistency and potential issues. Either update all go.mod files to go 1.26.2 or revert .go-version to 1.26.0.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.go-version at line 1, The .go-version file was bumped to 1.26.2 but many
go.mod files (e.g., the root go.mod and module files under
staging/src/k8s.io/*/go.mod) still state "go 1.26.0", causing a toolchain
mismatch; pick one resolution and make it consistent across the repo: either
revert .go-version back to 1.26.0, or update every go.mod (root go.mod and all
staging module go.mod files) to "go 1.26.2" so the Go directive matches
.go-version—ensure you update all occurrences rather than only root or a subset.

Comment on lines +59 to +60
Operations and Definitions may have `x-kubernetes-list-maps-keys` if they
are associated with a [kubernetes resource](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources). `x-kubernetes-list-type` = `map` specifies field names inside each list element to serve as unique keys for the list-as-map.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix extension name typo in docs.

Line 59 says x-kubernetes-list-maps-keys, but the valid key is x-kubernetes-list-map-keys.

📝 Proposed fix
-Operations and Definitions may have `x-kubernetes-list-maps-keys` if they
+Operations and Definitions may have `x-kubernetes-list-map-keys` if they
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Operations and Definitions may have `x-kubernetes-list-maps-keys` if they
are associated with a [kubernetes resource](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources). `x-kubernetes-list-type` = `map` specifies field names inside each list element to serve as unique keys for the list-as-map.
Operations and Definitions may have `x-kubernetes-list-map-keys` if they
are associated with a [kubernetes resource](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources). `x-kubernetes-list-type` = `map` specifies field names inside each list element to serve as unique keys for the list-as-map.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@api/openapi-spec/README.md` around lines 59 - 60, The README wording has a
typo: change the extension name `x-kubernetes-list-maps-keys` to the correct
`x-kubernetes-list-map-keys` in the sentence that begins "Operations and
Definitions may have `x-kubernetes-list-maps-keys`..." so all references to that
extension (in this paragraph) use `x-kubernetes-list-map-keys`; ensure the
surrounding explanatory sentence that mentions `x-kubernetes-list-type = map`
remains unchanged.

Comment on lines +3788 to +3803
"io.k8s.api.core.v1.PodSchedulingGroup": {
"description": "PodSchedulingGroup identifies the runtime scheduling group instance that a Pod belongs to. The scheduler uses this information to apply workload-aware scheduling semantics. Exactly one field must be specified.",
"properties": {
"podGroupName": {
"description": "PodGroupName specifies the name of the standalone PodGroup object that represents the runtime instance of this group. Must be a DNS subdomain.",
"type": "string"
}
},
"type": "object",
"x-kubernetes-unions": [
{
"fields-to-discriminateBy": {
"podGroupName": "PodGroupName"
}
}
]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python - <<'PY'
import json
from pathlib import Path

doc = json.loads(Path("api/openapi-spec/v3/apis__apps__v1_openapi.json").read_text())
schema = doc["components"]["schemas"]["io.k8s.api.core.v1.PodSchedulingGroup"]

print("properties:", list(schema.get("properties", {}).keys()))
print("required:", schema.get("required", []))
print("empty object allowed by plain schema:", "podGroupName" not in schema.get("required", []))
PY

Repository: openshift/kubernetes

Length of output: 149


Add required constraint to PodSchedulingGroup schema.

The description states "Exactly one field must be specified", but the schema does not enforce this: podGroupName is missing from the required array, allowing invalid empty objects {} to pass validation. This creates a contract mismatch that weakens validation for generated clients and schema validators.

Fix
       "io.k8s.api.core.v1.PodSchedulingGroup": {
         "description": "PodSchedulingGroup identifies the runtime scheduling group instance that a Pod belongs to. The scheduler uses this information to apply workload-aware scheduling semantics. Exactly one field must be specified.",
         "properties": {
           "podGroupName": {
             "description": "PodGroupName specifies the name of the standalone PodGroup object that represents the runtime instance of this group. Must be a DNS subdomain.",
             "type": "string"
           }
         },
+        "required": [
+          "podGroupName"
+        ],
         "type": "object",
         "x-kubernetes-unions": [
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@api/openapi-spec/v3/apis__apps__v1_openapi.json` around lines 3788 - 3803,
The PodSchedulingGroup schema currently allows an empty object even though its
description requires exactly one field; add a required constraint so
podGroupName is mandatory. Edit the io.k8s.api.core.v1.PodSchedulingGroup object
to include "required": ["podGroupName"] alongside its existing properties and
x-kubernetes-unions, ensuring the podGroupName property is enforced by
validators and generated clients.

}
],
"description": "image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. The volume is resolved at pod startup depending on which PullPolicy value is provided:\n\n- Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n\nThe volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. The volume will be mounted read-only (ro) and non-executable files (noexec). Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33. The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type."
"description": "image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. The volume is resolved at pod startup depending on which PullPolicy value is provided:\n\n- Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n\nThe volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. The volume will be mounted read-only (ro). Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33. The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type."
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Clean up the new volume description typos.

These strings feed generated API docs. The image description uses subpath instead of the actual subPath field name and has a stray fail If, and the portworxVolume text says kubelets host machine.

Also applies to: 5307-5307

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@api/openapi-spec/v3/apis__apps__v1_openapi.json` at line 5262, Fix typos and
field-name casing in the volume descriptions: update the "image" description to
use the correct field name spec.containers[*].volumeMounts.subPath (capital P)
instead of subpath and change the stray "fail If" to "fail if"; also correct
phrasing like "kubelets host machine" to "kubelet's host machine" (and apply the
same fixes to the duplicate occurrence referenced as the other location). Edit
the JSON values for the "image" description and the "portworxVolume" text to
reflect these exact string fixes so generated API docs show the proper field
names and grammar.

@haircommander
Copy link
Copy Markdown
Member Author

/retest

@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 21, 2026

@haircommander: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/verify-commits 1a73e8d link true /test verify-commits
ci/prow/e2e-aws-ovn-techpreview-serial-1of2 1a73e8d link false /test e2e-aws-ovn-techpreview-serial-1of2
ci/prow/e2e-aws-ovn-techpreview-serial-2of2 1a73e8d link false /test e2e-aws-ovn-techpreview-serial-2of2

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label May 21, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 21, 2026

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

1 similar comment
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 21, 2026

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backports/unvalidated-commits Indicates that not all commits come to merged upstream PRs. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. vendor-update Touching vendor dir or related files

Projects

None yet

Development

Successfully merging this pull request may close these issues.