Skip to content

CORS-4417: Add UniverseDomain field to GCPPlatformStatus - #2963

Open
rochacbruno wants to merge 2 commits into
openshift:masterfrom
rochacbruno:CORS-4417-universe-domain
Open

CORS-4417: Add UniverseDomain field to GCPPlatformStatus#2963
rochacbruno wants to merge 2 commits into
openshift:masterfrom
rochacbruno:CORS-4417-universe-domain

Conversation

@rochacbruno

Copy link
Copy Markdown
Member

Summary

  • Adds a universeDomain field to GCPPlatformStatus, gated behind the GCPSovereignCloudInstall feature gate
  • The field reports the GCP universe domain for the cluster (detected from installer credentials), enabling components without their own GCP credentials to determine the correct universe domain
  • Validates as a DNS subdomain (RFC 1123), max 253 characters. When omitted, standard public GCP (googleapis.com) is assumed

Supersedes #2933 - rebased to resolve conflicts (original author @barbacbd on PTO).

Test plan

  • make update - all generated files regenerated cleanly
  • make verify - all verification checks pass (codegen, lint, prerelease lifecycle)
  • make -C config/v1 test - 3101 integration tests passed, 0 failed
  • Integration test suite covers valid domains (googleapis.com, s3nsapis.fr), invalid domains (uppercase, spaces, leading hyphen)

cc @barbacbd @patrickdillon

Adds a universeDomain field to GCPPlatformStatus, gated behind the
GCPSovereignCloudInstall feature gate. This field reports the GCP
universe domain for the cluster as detected from installer credentials,
enabling components without their own GCP credentials to determine the
correct universe domain to use.

The field validates as a DNS subdomain (RFC 1123) with a maximum length
of 253 characters. When omitted, standard public GCP (googleapis.com)
is assumed.

Supersedes openshift#2933 (rebased to resolve conflicts, original author on PTO).

Co-Authored-By: Brent Barbachem <barbacbd@gmail.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot

openshift-ci-robot commented Jul 30, 2026

Copy link
Copy Markdown

@rochacbruno: This pull request references CORS-4417 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

  • Adds a universeDomain field to GCPPlatformStatus, gated behind the GCPSovereignCloudInstall feature gate
  • The field reports the GCP universe domain for the cluster (detected from installer credentials), enabling components without their own GCP credentials to determine the correct universe domain
  • Validates as a DNS subdomain (RFC 1123), max 253 characters. When omitted, standard public GCP (googleapis.com) is assumed

Supersedes #2933 - rebased to resolve conflicts (original author @barbacbd on PTO).

Test plan

  • make update - all generated files regenerated cleanly
  • make verify - all verification checks pass (codegen, lint, prerelease lifecycle)
  • make -C config/v1 test - 3101 integration tests passed, 0 failed
  • Integration test suite covers valid domains (googleapis.com, s3nsapis.fr), invalid domains (uppercase, spaces, leading hyphen)

cc @barbacbd @patrickdillon

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 openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 30, 2026
@openshift-ci

openshift-ci Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Hello @rochacbruno! Some important instructions when contributing to openshift/api:
API design plays an important part in the user experience of OpenShift and as such API PRs are subject to a high level of scrutiny to ensure they follow our best practices. If you haven't already done so, please review the OpenShift API Conventions and ensure that your proposed changes are compliant. Following these conventions will help expedite the api review process for your PR.

@openshift-ci openshift-ci Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Jul 30, 2026
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: aebb60c5-1cee-4ebf-9fe7-0dd465402637

📥 Commits

Reviewing files that changed from the base of the PR and between e8f898e and 9a13390.

⛔ Files ignored due to path filters (13)
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • config/v1/zz_generated.swagger_doc_generated.go is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPSovereignCloudInstall.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • openapi/generated_openapi/zz_generated.openapi.go is excluded by !openapi/**, !**/zz_generated*
  • openapi/openapi.json is excluded by !openapi/**
📒 Files selected for processing (11)
  • config/v1/tests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml
  • config/v1/types_infrastructure.go
  • machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPSovereignCloudInstall.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
🚧 Files skipped from review as they are similar to previous changes (2)
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • config/v1/types_infrastructure.go

📝 Walkthrough

Walkthrough

Adds the feature-gated GCPPlatformStatus.UniverseDomain field with DNS subdomain and length validation. Updates Infrastructure and ControllerConfig CRD schemas across supported variants. Adds tests for minimal creation, valid public and sovereign domains, invalid values, empty values, oversized values, and ControllerConfig status propagation.

Suggested reviewers: joelspeed, yuqi-zhang, mkowalski

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Microshift Test Compatibility ⚠️ Warning New tests hit config.openshift.io and machineconfiguration.openshift.io APIs, and I found no [Skipped:MicroShift], apigroup tag, or runtime skip. Add an [apigroup:...] tag for the OpenShift API group(s) used, or mark the tests [Skipped:MicroShift]/guard them with exutil.IsMicroShiftCluster().
✅ Passed checks (14 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly names the new UniverseDomain field added to GCPPlatformStatus.
Description check ✅ Passed The description matches the change set, covering the new field, validation, feature gate, and test coverage.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed The added test titles are static, descriptive YAML names and contain no dynamic suffixes, timestamps, UUIDs, IPs, or other run-dependent values.
Test Structure And Quality ✅ Passed The new YAML-driven cases each cover one universeDomain behavior, match existing CRD test patterns, and add no cluster lifecycle or wait logic.
Single Node Openshift (Sno) Test Compatibility ✅ Passed Only generated YAML/schema tests were added; no new Ginkgo code or node-scheduling assumptions, and the ControllerConfig case already uses SingleReplica.
Topology-Aware Scheduling Compatibility ✅ Passed Only API schema/tests/CRDs changed; diff adds universeDomain validation, with no new affinity, nodeSelector, toleration, replicas, or topology-spread scheduling logic.
Ote Binary Stdout Contract ✅ Passed Changed Go files only add a GCP status field and regenerated docs/OpenAPI; no fmt.Print/klog/log.SetOutput, main/init, or TestMain/RunSpecs hooks were added.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed New test fixtures only validate strings; they use IPv6 and cluster-internal/example values, with no IPv4 assumptions or public-internet connectivity.
No-Weak-Crypto ✅ Passed No weak-crypto, custom crypto, or secret/token comparison code appears in the changed files; the PR only adds GCP universe-domain status/validation and tests.
Container-Privileges ✅ Passed Touched files are API/CRD/test updates only; searched them for privileged, hostPID/Network/IPC, SYS_ADMIN, and allowPrivilegeEscalation and found none.
No-Sensitive-Data-In-Logs ✅ Passed PASS: Diff only adds schema/comments and test manifests; no new log statements or sensitive-data exposure was introduced.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.12.2)

Error: build linters: unable to load custom analyzer "kubeapilinter": tools/_output/bin/kube-api-linter.so, plugin: not implemented
The command is terminated due to an error: build linters: unable to load custom analyzer "kubeapilinter": tools/_output/bin/kube-api-linter.so, plugin: not implemented


Comment @coderabbitai help to get the list of available commands.

@openshift-ci
openshift-ci Bot requested review from JoelSpeed and yuqi-zhang July 30, 2026 15:10
@openshift-ci

openshift-ci Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign everettraven 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

@qodo-for-rh-openshift

Copy link
Copy Markdown

PR Summary by Qodo

Add universeDomain to GCPPlatformStatus (feature-gated)

✨ Enhancement 🧪 Tests ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Add feature-gated universeDomain to Infrastructure.status.platformStatus.gcp for GCP universe
 discovery.
• Enforce RFC1123 DNS-subdomain validation (1–253 chars) and regenerate CRD/OpenAPI artifacts.
• Add integration tests for valid/invalid universe domains under GCPSovereignCloudInstall.
Diagram

graph TD
FG{"GCPSovereignCloudInstall enabled?"} --> INST["Installer reads GCP creds"] --> INFRA["Infrastructure.status.gcp.universeDomain"] --> CONS["Components w/o GCP creds"] --> ENDPT["Use correct GCP endpoints"]
INFRA --> VAL["CRD/OpenAPI validation"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Publish universe domain via ConfigMap/Config resource
  • ➕ Avoids expanding the stable config.openshift.io API surface
  • ➕ Can be owned by a single operator/controller without CRD schema changes
  • ➖ Harder for generic consumers to discover consistently vs Infrastructure status
  • ➖ Weaker typing/validation guarantees than CRD schema
  • ➖ More moving parts (controller + lifecycle) for a simple datum
2. Require each component to read universe domain from its own credentials
  • ➕ Keeps the authoritative source local to the consumer
  • ➕ No shared cluster-wide API field required
  • ➖ Doesn't solve the motivating use case (components without credentials)
  • ➖ Encourages duplicated parsing/logic across components
3. Add to spec at install time instead of status
  • ➕ Makes desired value explicit and user-visible
  • ➕ Avoids implying the value is always installer-derived
  • ➖ Conflicts with stated source-of-truth (installer credentials) and could drift
  • ➖ Introduces user-mutability questions (should it be immutable?)

Recommendation: Current approach (feature-gated Infrastructure.status.platformStatus.gcp.universeDomain with schema validation) is the best fit for the stated goal: it centralizes discovery for consumers without credentials while keeping the authoritative source as installer credentials. The feature gate limits exposure during rollout, and CRD-level DNS-subdomain validation provides strong, consistent enforcement.

Files changed (26) +6096 / -0

Enhancement (1) +18 / -0
types_infrastructure.goAdd 'UniverseDomain' to 'GCPPlatformStatus' with validation and feature gate +18/-0

Add 'UniverseDomain' to 'GCPPlatformStatus' with validation and feature gate

• Adds 'UniverseDomain' to 'GCPPlatformStatus' (status) and gates it behind 'GCPSovereignCloudInstall'. Applies length bounds (1–253) and an XValidation rule enforcing RFC1123 DNS-subdomain formatting, with comments clarifying behavior and default assumption ('googleapis.com' when omitted).

config/v1/types_infrastructure.go

Tests (2) +295 / -0
GCPSovereignCloudInstall.yamlAdd feature-gated CRD tests for GCP universeDomain +191/-0

Add feature-gated CRD tests for GCP universeDomain

• Introduces integration tests under the GCPSovereignCloudInstall feature gate to validate 'status.platformStatus.gcp.universeDomain'. Covers accepted domains (e.g., 'googleapis.com', 's3nsapis.fr') and rejects invalid values (uppercase, spaces, leading hyphen).

config/v1/tests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml

GCPSovereignCloudInstall.yamlAdd feature-gated CRD tests for ControllerConfig under GCPSovereignCloudInstall +104/-0

Add feature-gated CRD tests for ControllerConfig under GCPSovereignCloudInstall

• Introduces a feature-gated ControllerConfig CRD test fixture to ensure minimal ControllerConfig creation continues to work when 'GCPSovereignCloudInstall' manifests are present.

machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPSovereignCloudInstall.yaml

Documentation (1) +1 / -0
zz_generated.swagger_doc_generated.goExpose universeDomain in generated Swagger docs for GCPPlatformStatus +1/-0

Expose universeDomain in generated Swagger docs for GCPPlatformStatus

• Updates the generated swagger doc map for 'GCPPlatformStatus' to include the 'universeDomain' field description.

config/v1/zz_generated.swagger_doc_generated.go

Other (22) +5782 / -0
0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yamlRegenerate Infrastructure CRD to include GCP universeDomain schema +21/-0

Regenerate Infrastructure CRD to include GCP universeDomain schema

• Updates generated Infrastructure CRD schema to add the 'universeDomain' field under GCP platform status. Includes min/max length and DNS1123-subdomain validation message/rule.

config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml

0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yamlRegenerate Infrastructure CRD (Hypershift DevPreview) for universeDomain +21/-0

Regenerate Infrastructure CRD (Hypershift DevPreview) for universeDomain

• Regenerates the DevPreviewNoUpgrade Hypershift Infrastructure CRD variant to include 'universeDomain' schema and validations for GCP platform status.

config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml

0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yamlRegenerate Infrastructure CRD (SelfManagedHA Custom) for universeDomain +21/-0

Regenerate Infrastructure CRD (SelfManagedHA Custom) for universeDomain

• Regenerates the SelfManagedHA CustomNoUpgrade Infrastructure CRD variant to include the new GCP 'universeDomain' status field schema and validation rules.

config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml

0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yamlRegenerate Infrastructure CRD (SelfManagedHA DevPreview) for universeDomain +21/-0

Regenerate Infrastructure CRD (SelfManagedHA DevPreview) for universeDomain

• Regenerates the SelfManagedHA DevPreviewNoUpgrade Infrastructure CRD variant to include the new 'universeDomain' schema and DNS1123-subdomain validations.

config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml

zz_generated.featuregated-crd-manifests.yamlRegister GCPSovereignCloudInstall for Infrastructure feature-gated CRDs +1/-0

Register GCPSovereignCloudInstall for Infrastructure feature-gated CRDs

• Adds 'GCPSovereignCloudInstall' to the list of feature gates producing feature-gated Infrastructure CRD manifests.

config/v1/zz_generated.featuregated-crd-manifests.yaml

GCPSovereignCloudInstall.yamlAdd feature-gated Infrastructure CRD manifest for GCPSovereignCloudInstall +2443/-0

Add feature-gated Infrastructure CRD manifest for GCPSovereignCloudInstall

• Adds/regenerates the feature-gated CRD manifest for 'infrastructures.config.openshift.io' when 'GCPSovereignCloudInstall' is enabled. This manifest includes the 'universeDomain' field in the GCP platform status schema and its validation constraints.

config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml

0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yamlRegenerate ControllerConfig CRD to include Infra GCP universeDomain schema +21/-0

Regenerate ControllerConfig CRD to include Infra GCP universeDomain schema

• Regenerates ControllerConfig CRD schema (Hypershift CustomNoUpgrade) embedding updated Infrastructure schema that includes 'status.platformStatus.gcp.universeDomain' and validations.

machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml

0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yamlRegenerate ControllerConfig CRD (Hypershift DevPreview) for universeDomain +21/-0

Regenerate ControllerConfig CRD (Hypershift DevPreview) for universeDomain

• Regenerates the DevPreviewNoUpgrade Hypershift ControllerConfig CRD variant to carry updated Infra schema with 'universeDomain' and validations.

machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml

0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yamlRegenerate ControllerConfig CRD (SelfManagedHA Custom) for universeDomain +21/-0

Regenerate ControllerConfig CRD (SelfManagedHA Custom) for universeDomain

• Regenerates the SelfManagedHA CustomNoUpgrade ControllerConfig CRD variant to include updated embedded Infra schema with 'universeDomain' and validations.

machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml

0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yamlRegenerate ControllerConfig CRD (SelfManagedHA DevPreview) for universeDomain +21/-0

Regenerate ControllerConfig CRD (SelfManagedHA DevPreview) for universeDomain

• Regenerates the SelfManagedHA DevPreviewNoUpgrade ControllerConfig CRD variant to include updated embedded Infra schema with 'universeDomain' and validations.

machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml

zz_generated.featuregated-crd-manifests.yamlRegister GCPSovereignCloudInstall for ControllerConfig feature-gated CRDs +1/-0

Register GCPSovereignCloudInstall for ControllerConfig feature-gated CRDs

• Adds 'GCPSovereignCloudInstall' to the list of feature gates producing feature-gated ControllerConfig CRD manifests.

machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml

GCPSovereignCloudInstall.yamlAdd feature-gated ControllerConfig CRD manifest for GCPSovereignCloudInstall +2990/-0

Add feature-gated ControllerConfig CRD manifest for GCPSovereignCloudInstall

• Adds/regenerates the feature-gated CRD manifest for 'controllerconfigs.machineconfiguration.openshift.io' when 'GCPSovereignCloudInstall' is enabled, including updated embedded Infrastructure schema with 'universeDomain' validation.

machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPSovereignCloudInstall.yaml

zz_generated.openapi.goRegenerate Go OpenAPI schema for universeDomain +7/-0

Regenerate Go OpenAPI schema for universeDomain

• Updates generated OpenAPI schema for 'config.openshift.io/v1' to include 'universeDomain' in 'GCPPlatformStatus' with its field description.

openapi/generated_openapi/zz_generated.openapi.go

openapi.jsonRegenerate JSON OpenAPI for universeDomain +4/-0

Regenerate JSON OpenAPI for universeDomain

• Updates the published OpenAPI JSON to include 'universeDomain' in the 'GCPPlatformStatus' schema description.

openapi/openapi.json

0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yamlUpdate payload Infrastructure CRD (Hypershift Custom) for universeDomain +21/-0

Update payload Infrastructure CRD (Hypershift Custom) for universeDomain

• Regenerates payload CRD manifest for Infrastructure to include the new GCP 'universeDomain' status field schema and validations.

payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml

0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yamlUpdate payload Infrastructure CRD (Hypershift DevPreview) for universeDomain +21/-0

Update payload Infrastructure CRD (Hypershift DevPreview) for universeDomain

• Regenerates payload CRD manifest (Hypershift DevPreviewNoUpgrade) to include 'universeDomain' schema and DNS1123-subdomain validation.

payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml

0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yamlUpdate payload Infrastructure CRD (SelfManagedHA Custom) for universeDomain +21/-0

Update payload Infrastructure CRD (SelfManagedHA Custom) for universeDomain

• Regenerates payload CRD manifest (SelfManagedHA CustomNoUpgrade) to include 'universeDomain' and validation rules in GCP platform status.

payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml

0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yamlUpdate payload Infrastructure CRD (SelfManagedHA DevPreview) for universeDomain +21/-0

Update payload Infrastructure CRD (SelfManagedHA DevPreview) for universeDomain

• Regenerates payload CRD manifest (SelfManagedHA DevPreviewNoUpgrade) to include 'universeDomain' schema and validations.

payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml

0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yamlUpdate payload ControllerConfig CRD (Hypershift Custom) for universeDomain +21/-0

Update payload ControllerConfig CRD (Hypershift Custom) for universeDomain

• Regenerates payload CRD manifest for ControllerConfig to incorporate updated embedded Infrastructure schema including 'universeDomain' validation.

payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml

0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yamlUpdate payload ControllerConfig CRD (Hypershift DevPreview) for universeDomain +21/-0

Update payload ControllerConfig CRD (Hypershift DevPreview) for universeDomain

• Regenerates payload CRD manifest (Hypershift DevPreviewNoUpgrade) to incorporate updated embedded Infrastructure schema including 'universeDomain'.

payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml

0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yamlUpdate payload ControllerConfig CRD (SelfManagedHA Custom) for universeDomain +21/-0

Update payload ControllerConfig CRD (SelfManagedHA Custom) for universeDomain

• Regenerates payload CRD manifest (SelfManagedHA CustomNoUpgrade) to include updated embedded Infrastructure schema with 'universeDomain' validation.

payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml

0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yamlUpdate payload ControllerConfig CRD (SelfManagedHA DevPreview) for universeDomain +21/-0

Update payload ControllerConfig CRD (SelfManagedHA DevPreview) for universeDomain

• Regenerates payload CRD manifest (SelfManagedHA DevPreviewNoUpgrade) to include updated embedded Infrastructure schema with 'universeDomain'.

payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

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

⚠️ Outside diff range comments (1)
machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPSovereignCloudInstall.yaml (1)

1-105: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Missing universeDomain coverage for ControllerConfig.

Only a minimal onCreate test is present. The PR states this layer covers "valid domains, propagation, and invalid domain rejection" for ControllerConfig too, but no onUpdate test here sets infra.status.platformStatus.gcp.universeDomain (valid or invalid), unlike the parallel config/v1/tests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml file. Since the same DNS1123Subdomain CEL rule is duplicated into the embedded infra schema here, this path should be exercised with its own update/rejection tests.

🤖 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
`@machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPSovereignCloudInstall.yaml`
around lines 1 - 105, Add onUpdate coverage to the GCPSovereignCloudInstall
ControllerConfig test configuration for
infra.status.platformStatus.gcp.universeDomain. Include a valid DNS1123Subdomain
case asserting the value is preserved, and an invalid-domain case asserting the
update is rejected, matching the corresponding Infrastructure tests and
exercising the embedded infra schema validation.
🧹 Nitpick comments (1)
config/v1/tests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml (1)

105-191: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider adding boundary tests for maxLength/minLength.

Uppercase, spaces, and leading-hyphen cases are covered, but the 253-character maxLength and 1-character minLength boundaries introduced by this schema aren't exercised (e.g. a 254-char domain or an empty string).

🤖 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
`@config/v1/tests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml`
around lines 105 - 191, Extend the GCP universeDomain validation cases in the
infrastructure test suite to cover schema length boundaries: add an invalid
value exceeding the 253-character maxLength and an invalid empty value below the
1-character minLength, each expecting the existing “universeDomain must be a
valid DNS subdomain” status error.
🤖 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.

Outside diff comments:
In
`@machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPSovereignCloudInstall.yaml`:
- Around line 1-105: Add onUpdate coverage to the GCPSovereignCloudInstall
ControllerConfig test configuration for
infra.status.platformStatus.gcp.universeDomain. Include a valid DNS1123Subdomain
case asserting the value is preserved, and an invalid-domain case asserting the
update is rejected, matching the corresponding Infrastructure tests and
exercising the embedded infra schema validation.

---

Nitpick comments:
In
`@config/v1/tests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml`:
- Around line 105-191: Extend the GCP universeDomain validation cases in the
infrastructure test suite to cover schema length boundaries: add an invalid
value exceeding the 253-character maxLength and an invalid empty value below the
1-character minLength, each expecting the existing “universeDomain must be a
valid DNS subdomain” status error.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 20a279bc-6f5b-48f6-b85d-f25c51142388

📥 Commits

Reviewing files that changed from the base of the PR and between 72624b9 and e8f898e.

⛔ Files ignored due to path filters (15)
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • config/v1/zz_generated.swagger_doc_generated.go is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPSovereignCloudInstall.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • openapi/generated_openapi/zz_generated.openapi.go is excluded by !openapi/**, !**/zz_generated*
  • openapi/openapi.json is excluded by !openapi/**
📒 Files selected for processing (11)
  • config/v1/tests/infrastructures.config.openshift.io/GCPSovereignCloudInstall.yaml
  • config/v1/types_infrastructure.go
  • machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPSovereignCloudInstall.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml

@qodo-for-rh-openshift

qodo-for-rh-openshift Bot commented Jul 30, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 29 rules
✅ Skills: api-review

Grey Divider


Action required

1. UniverseDomain MinLength undocumented ✓ Resolved 📜 Skill insight ✧ Quality
Description
UniverseDomain has +kubebuilder:validation:MinLength=1, but the field comment does not document
that the value must be non-empty when specified. This violates the requirement that all kubebuilder
constraint markers (including MinLength) be described in the field’s documentation comments.
Code

config/v1/types_infrastructure.go[R842-846]

+	// universeDomain must be a valid DNS subdomain: it must contain no more than 253 characters,
+	// contain only lowercase alphanumeric characters, '-' or '.', and start and end with an alphanumeric character.
+	//
+	// +kubebuilder:validation:MinLength=1
+	// +kubebuilder:validation:MaxLength=253
Relevance

●● Moderate

Docs/GoDoc improvements often accepted (PR2680), but repo has MinLength=1 without “non-empty”
wording (PR2805).

PR-#2680
PR-#2805

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The field has a MinLength=1 marker, but the adjacent human-readable comment only mentions the
maximum length (253) and DNS subdomain requirements, not the minimum length/non-empty constraint.
This conflicts with the requirement to document all kubebuilder constraint markers and specifically
MinLength/MaxLength constraints in comments.

Rule 202: Document MinLength/MaxLength kubebuilder constraints in Go comments
config/v1/types_infrastructure.go[842-847]
Skill: api-review

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`UniverseDomain` includes a kubebuilder `MinLength=1` constraint, but the documentation comment does not mention the minimum length / non-empty requirement.

## Issue Context
Compliance requires that all kubebuilder constraint markers (including MinLength/MaxLength) be documented in the field’s Go comments so readers don’t need to infer constraints from marker syntax.

## Fix Focus Areas
- config/v1/types_infrastructure.go[842-847]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

Comment thread config/v1/types_infrastructure.go Outdated
- Document MinLength=1 constraint in universeDomain field comment
- Add boundary tests for empty string and >253 char domains
- Add onUpdate tests for ControllerConfig (valid and invalid universeDomain)
- Regenerate CRD manifests, swagger docs, and OpenAPI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@patrickdillon

Copy link
Copy Markdown
Contributor

@JoelSpeed This is the follow up to Brent's #2933 since Brent's on PTO and it needed a rebase. PTAL

@openshift-ci

openshift-ci Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@rochacbruno: The following test 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-hypershift-integration 9a13390 link true /test verify-hypershift-integration

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

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants