Skip to content

Bump dependencies for OCP 4.20#1981

Open
stuggi wants to merge 2 commits into
openstack-k8s-operators:mainfrom
stuggi:ocp-4.20-bump
Open

Bump dependencies for OCP 4.20#1981
stuggi wants to merge 2 commits into
openstack-k8s-operators:mainfrom
stuggi:ocp-4.20-bump

Conversation

@stuggi

@stuggi stuggi commented Jul 16, 2026

Copy link
Copy Markdown
Contributor
  • k8s.io/*: v0.31.14 -> v0.33.13
  • controller-runtime: v0.19.7 -> v0.21.0
  • openshift/api: release-4.18 -> release-4.20
  • cert-manager: v1.16.5 -> v1.18.6
  • cmctl: v2.1.2 -> v2.3.0
  • ENVTEST_K8S_VERSION: 1.31 -> 1.33
  • OC_VERSION: 4.16.0 -> 4.20.0
  • CRD_SCHEMA_CHECKER_VERSION: release-4.16 -> release-4.18

Code changes required by the bump:

  • Remove webhook.Defaulter/webhook.Validator interface assertions from api/client and api/dataplane webhook files (removed in controller-runtime v0.21)
  • Remove old-style SetupWebhookWithManager methods (superseded by internal/webhook CustomDefaulter/CustomValidator pattern)
  • Remove duplicate kubebuilder webhook annotations from api/ files (already present in internal/webhook/ files)
  • Update test suites to use new webhook setup functions
  • Update test expectations for ServicesOverride from nil to []string{} (k8s 1.33 serialization normalizes omitted slice fields to empty slices instead of nil)

Also fixes Normalize ServicesOverride to avoid CEL immutability check failure

On k8s 1.33 (OCP 4.20), the API server normalizes nil and empty slices differently during admission, causing the CEL validation rule self == oldSelf on OpenStackDataPlaneDeployment Spec to fail when updating a deployment (even just adding an annotation).
Move the immutability check from CEL to the webhook ValidateUpdate where both old and new specs are normalized via Default() before comparison, making nil vs empty slice differences transparent.
Also default ServicesOverride to []string{} in the webhook defaulter for consistent serialization across k8s versions.
This is a backportable fix — affects any operator version running on OCP 4.20 regardless of the operator's build-time dependencies.

On k8s 1.33 (OCP 4.20), the API server normalizes nil and empty
slices differently during admission, causing the CEL validation
rule `self == oldSelf` on OpenStackDataPlaneDeployment Spec to fail
when updating a deployment (even just adding an annotation).

Move the immutability check from CEL to the webhook ValidateUpdate
where both old and new specs are normalized via Default() before
comparison, making nil vs empty slice differences transparent.

Also default ServicesOverride to []string{} in the webhook defaulter
for consistent serialization across k8s versions.

This is a backportable fix — affects any operator version running on
OCP 4.20 regardless of the operator's build-time dependencies.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Martin Schuppert <mschuppert@redhat.com>
@openshift-ci

openshift-ci Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: stuggi

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

The pull request process is described 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

@github-actions

Copy link
Copy Markdown

OpenStackControlPlane CRD Size Report

Metric Value
CRD JSON size 350002 bytes (342KB)
Base branch size 350002 bytes
Change +0.00%
Status yellow — growing
Threshold reference
Color Range Meaning
🟢 green < 300KB Comfortable
🟡 yellow 300–400KB Growing
🟠 orange 400–750KB Concerning
🔴 red > 750KB Approaching 1.5MB etcd limit (cut in half to allow space for update)

@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/b36deab000e942c6966c02255adf1a81

openstack-k8s-operators-content-provider FAILURE in 7m 00s
⚠️ podified-multinode-edpm-deployment-crc SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ cifmw-crc-podified-edpm-baremetal SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ adoption-standalone-to-crc-ceph-provider SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ openstack-operator-tempest-multinode SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ openstack-operator-edpm-baremetal-minor-update SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider

- k8s.io/*: v0.31.14 -> v0.33.13
- controller-runtime: v0.19.7 -> v0.21.0
- openshift/api: release-4.18 -> release-4.20
- cert-manager: v1.16.5 -> v1.18.6
- cmctl: v2.1.2 -> v2.3.0
- ENVTEST_K8S_VERSION: 1.31 -> 1.33
- OC_VERSION: 4.16.0 -> 4.20.0
- CRD_SCHEMA_CHECKER_VERSION: release-4.16 -> release-4.18

Code changes required by the bump:
- Remove webhook.Defaulter/webhook.Validator interface assertions from
  api/client and api/dataplane webhook files (removed in
  controller-runtime v0.21)
- Remove old-style SetupWebhookWithManager methods (superseded by
  internal/webhook CustomDefaulter/CustomValidator pattern)
- Remove duplicate kubebuilder webhook annotations from api/ files
  (already present in internal/webhook/ files)
- Update test suites to use new webhook setup functions
- Update test expectations for ServicesOverride from nil to []string{}
  (k8s 1.33 serialization normalizes omitted slice fields to empty
  slices instead of nil)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Martin Schuppert <mschuppert@redhat.com>
@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/e9512f74fe6e463a9bed90d68c3813ae

openstack-k8s-operators-content-provider FAILURE in 7m 13s
⚠️ podified-multinode-edpm-deployment-crc SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ cifmw-crc-podified-edpm-baremetal SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ adoption-standalone-to-crc-ceph-provider SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ openstack-operator-tempest-multinode SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ openstack-operator-edpm-baremetal-minor-update SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider

@openshift-ci

openshift-ci Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

@stuggi: 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/openstack-operator-build-deploy-kuttl-4-20 4851a68 link true /test openstack-operator-build-deploy-kuttl-4-20
ci/prow/precommit-check 4851a68 link true /test precommit-check

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.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant