Skip to content

Conversation

@barbacbd
Copy link
Contributor

Removing the GCP Service Endpoints in favor of a new solution. The new solution will create a private hosted zone that will route traffic to the googleapi endpoints via an ip address created during the initialization of the private serivce connect endpoint. The cluster components no longer need the endpoint overrides, so the service endpoints can and should be removed to avoid confusion.

@openshift-ci-robot
Copy link

Pipeline controller notification
This repository 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. Review these jobs and use /test <job> to manually trigger optional jobs most likely to be impacted by the proposed changes.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Nov 10, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 10, 2025

@barbacbd: This pull request references CORS-4281 which is a valid jira issue.

In response to this:

Removing the GCP Service Endpoints in favor of a new solution. The new solution will create a private hosted zone that will route traffic to the googleapi endpoints via an ip address created during the initialization of the private serivce connect endpoint. The cluster components no longer need the endpoint overrides, so the service endpoints can and should be removed to avoid confusion.

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
Copy link
Contributor

openshift-ci bot commented Nov 10, 2025

Hello @barbacbd! 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 Nov 10, 2025
Copy link
Member

@damdo damdo left a comment

Choose a reason for hiding this comment

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

/lgtm

Thanks

/assign @everettraven @JoelSpeed

@damdo
Copy link
Member

damdo commented Nov 20, 2025

@barbacbd verify jobs are failing, might be worth rebasing and checking what's wrong

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Nov 20, 2025
@openshift-ci-robot
Copy link

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-hypershift
/test e2e-aws-ovn-hypershift-conformance
/test e2e-aws-ovn-techpreview
/test e2e-aws-serial-1of2
/test e2e-aws-serial-2of2
/test e2e-aws-serial-techpreview-1of2
/test e2e-aws-serial-techpreview-2of2
/test e2e-azure
/test e2e-gcp
/test e2e-upgrade
/test e2e-upgrade-out-of-change

@coderabbitai
Copy link

coderabbitai bot commented Nov 20, 2025

Walkthrough

Removes GCP custom API endpoint support: deletes types, constants, struct and field, removes serviceEndpoints schema from multiple CRD manifests (infrastructures and controllerconfigs), deletes related tests, and cleans up generated deepcopy, OpenAPI, and swagger/docs and feature-gate entries.

Changes

Cohort / File(s) Summary
Config tests
config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml, config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpointsInstall.yaml
Deleted table-driven test suites covering GCP service endpoint overrides (onCreate/onUpdate), URL/name/path validations, duplicates, and expected error outcomes.
MachineConfig tests
machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml, machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpointsInstall.yaml
Deleted ControllerConfig test files and install-gated test definitions validating GCP endpoint scenarios and expected manifests.
Type changes
config/v1/types_infrastructure.go
Removed GCPServiceEndpointName type and all GCPServiceEndpointName* constants, removed GCPServiceEndpoint struct, and removed ServiceEndpoints []GCPServiceEndpoint from GCPPlatformStatus.
CRD manifests (infrastructures)
config/v1/zz_generated.crd-manifests/.../0000_10_config-operator_01_infrastructures-*.crd.yaml, payload-manifests/crds/0000_10_config-operator_01_infrastructures-*.crd.yaml
Removed serviceEndpoints schema blocks and per-item definitions/validations from multiple provider sections (GCP, AWS, IBMCloud, PowerVS, Azure, OpenStack where present) across Custom/DevPreview/TechPreview CRD variants.
CRD manifests (controllerconfigs)
machineconfiguration/v1/zz_generated.crd-manifests/.../0000_80_machine-config_01_controllerconfigs-*.crd.yaml, payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-*.crd.yaml
Removed serviceEndpoints schema blocks and associated item schemas/validations from provider sections (GCP, AWS, IBMCloud, PowerVS) across manifest variants.
Generated deepcopy
config/v1/zz_generated.deepcopy.go
Removed deepcopy methods for GCPServiceEndpoint and removed copying logic for ServiceEndpoints from GCPPlatformStatus deepcopy.
Generated feature-gated manifests
config/v1/zz_generated.featuregated-crd-manifests.yaml, machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml
Removed GCPCustomAPIEndpointsInstall from feature gate lists for infrastructures and controllerconfigs.
Swagger / OpenAPI / docs
config/v1/zz_generated.swagger_doc_generated.go, openapi/generated_openapi/zz_generated.openapi.go
Removed map_GCPServiceEndpoint and its SwaggerDoc, deleted serviceEndpoints entry from map_GCPPlatformStatus, removed GCPServiceEndpoint OpenAPI schema and related references/dependencies.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Check for any remaining references to GCPServiceEndpoint, serviceEndpoints, or removed constants across the repo to avoid orphaned symbols.
  • Verify generated artifacts (deepcopy, OpenAPI, swagger, payload-manifests) are consistent and compile-generate cleanly.
  • Ensure feature-gate removals align with gating logic elsewhere (no dangling gate checks).
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.5.0)

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 and usage tips.

@openshift-ci openshift-ci bot removed the lgtm Indicates that a PR is ready to be merged. label Nov 20, 2025
@damdo
Copy link
Member

damdo commented Nov 21, 2025

/lgtm

@everettraven are the CRD verifications failures expected? TY

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Nov 21, 2025
@openshift-ci-robot
Copy link

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-hypershift
/test e2e-aws-ovn-hypershift-conformance
/test e2e-aws-ovn-techpreview
/test e2e-aws-serial-1of2
/test e2e-aws-serial-2of2
/test e2e-aws-serial-techpreview-1of2
/test e2e-aws-serial-techpreview-2of2
/test e2e-azure
/test e2e-gcp
/test e2e-upgrade
/test e2e-upgrade-out-of-change

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 21, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

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

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

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

@openshift-ci openshift-ci bot removed the lgtm Indicates that a PR is ready to be merged. label Nov 21, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 21, 2025

New changes are detected. LGTM label has been removed.

@everettraven
Copy link
Contributor

@damdo @barbacbd Both verify-crd-schema and verify-crdify are failing in an anticipated way. They aren't aware of the nuance of TPNU vs GA states so these can be overridden.

That being said, verify is failing for a legitimate reason - it looks like the payload manifests were not updated appropriately. Looks like something needs to be regenerated so running make update and including the payload manifest changes in your commit should resolve that.

    Removing the GCP Service Endpoints in favor of a new solution. The new solution will create a
    private hosted zone that will route traffic to the googleapi endpoints via an ip address created
    during the initialization of the private serivce connect endpoint. The cluster components no longer
    need the endpoint overrides, so the service endpoints can and should be removed to avoid confusion.
Copy link

@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: 0

🧹 Nitpick comments (1)
config/v1/types_infrastructure.go (1)

756-770: Tombstoned serviceEndpoints looks good; consider disabling the remaining kubebuilder/feature-gate markers

The approach of commenting out the ServiceEndpoints field and adding a tombstone comment is consistent with the earlier ClusterHostedDNS tombstone and clearly reserves the JSON field name.

However, all of the schema/feature-gate markers immediately below (the +listType, +listMapKey, +kubebuilder:validation:*, and +openshift:enable:FeatureGate=GCPCustomAPIEndpointsInstall lines) are still active markers even though there is no longer a field. That can:

  • Mislead future readers into thinking serviceEndpoints is still part of the active schema.
  • Potentially confuse code-generation/validation tooling, since these markers are intended to be field-scoped.

I'd recommend either deleting those marker lines or “hard-commenting” them so they are no longer parsed as markers (e.g. prefix with an extra /), while keeping the explanatory tombstone comments and the commented-out field name.

For example:

-// +listType=map
-// +listMapKey=name
-// +kubebuilder:validation:MaxItems=11
-// +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="only 1 endpoint override is permitted per GCP service name"
-// +optional
-// +openshift:enable:FeatureGate=GCPCustomAPIEndpointsInstall
-// ServiceEndpoints []GCPServiceEndpoint `json:"serviceEndpoints,omitempty"`
+//// +listType=map
+//// +listMapKey=name
+//// +kubebuilder:validation:MaxItems=11
+//// +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="only 1 endpoint override is permitted per GCP service name"
+//// +optional
+//// +openshift:enable:FeatureGate=GCPCustomAPIEndpointsInstall
+//// ServiceEndpoints []GCPServiceEndpoint `json:"serviceEndpoints,omitempty"`

This keeps the historical context while ensuring no stray markers affect CRD/OpenAPI/feature-gate generation.

Please re-run make update and the verify-crd-schema / verify-crdify / verify jobs after such a change to confirm all generators still pass cleanly.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 013c645 and 7e003d3.

📒 Files selected for processing (22)
  • config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml (0 hunks)
  • config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpointsInstall.yaml (0 hunks)
  • config/v1/types_infrastructure.go (1 hunks)
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml (0 hunks)
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml (0 hunks)
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml (0 hunks)
  • config/v1/zz_generated.deepcopy.go (0 hunks)
  • config/v1/zz_generated.featuregated-crd-manifests.yaml (0 hunks)
  • config/v1/zz_generated.swagger_doc_generated.go (0 hunks)
  • machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml (0 hunks)
  • machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpointsInstall.yaml (0 hunks)
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml (0 hunks)
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml (0 hunks)
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml (0 hunks)
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml (0 hunks)
  • openapi/generated_openapi/zz_generated.openapi.go (1 hunks)
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml (0 hunks)
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml (0 hunks)
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml (0 hunks)
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml (0 hunks)
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml (0 hunks)
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml (0 hunks)
💤 Files with no reviewable changes (20)
  • config/v1/zz_generated.swagger_doc_generated.go
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
  • machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpointsInstall.yaml
  • machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml
  • config/v1/zz_generated.deepcopy.go
  • config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpointsInstall.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml
  • config/v1/zz_generated.featuregated-crd-manifests.yaml
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml
  • config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.

Files:

  • openapi/generated_openapi/zz_generated.openapi.go
  • config/v1/types_infrastructure.go
🔇 Additional comments (1)
openapi/generated_openapi/zz_generated.openapi.go (1)

12930-12940: LGTM - Generated code correctly reflects GCPServiceEndpoint removal.

The Dependencies array correctly omits the removed GCPServiceEndpoint type, leaving only the three remaining GCP-related types. Since this is generated code (zz_generated prefix), ensure the generators have been run completely via make update as mentioned in the PR discussion.

@JoelSpeed
Copy link
Contributor

/hold

@barbacbd and I had agreed that these should stay to follow our newer patterns for populating CCM configuration. Would like to catch up on what's changed before we move forward here

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Nov 21, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 21, 2025

@barbacbd: 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-crd-schema 7e003d3 link true /test verify-crd-schema
ci/prow/e2e-aws-serial-techpreview-1of2 343e1c7 link true /test e2e-aws-serial-techpreview-1of2
ci/prow/e2e-aws-serial-1of2 343e1c7 link true /test e2e-aws-serial-1of2
ci/prow/verify-crdify 7e003d3 link true /test verify-crdify

Full PR test history. Your PR dashboard.

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

do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. 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.

5 participants