Skip to content

[release-4.19] SPLAT-2868: Add vSphere multi vCenter Day 2 - #3110

Open
vr4manta wants to merge 14 commits into
openshift:release-4.19from
vr4manta:SPLAT-2868
Open

vr4manta wants to merge 14 commits into
openshift:release-4.19from
vr4manta:SPLAT-2868

Conversation

@vr4manta

@vr4manta vr4manta commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

SPLAT-2868

Changes

  • Created new VSphereMultiVCenterDay2 feature gate
  • Added logic to handle day 2 processing of adding / removing vCenters

Notes

This PR is attempting to backport the following PRs:

There were also bugs that have not been ported back that fix CRD generation that have been included in this PR.

vr4manta and others added 14 commits October 15, 2026 10:56
(cherry picked from commit 76aebe7)
(cherry picked from commit 424381b)
(cherry picked from commit 727806d)
(cherry picked from commit d409749)
(cherry picked from commit 43def11)
(cherry picked from commit 4a0a0f6)
…e, and other review suggestions.

(cherry picked from commit 7b21e9d)
(cherry picked from commit cdcc0d1)
(cherry picked from commit af78729)
(cherry picked from commit f6577eb)
(cherry picked from commit 291a26c)
(cherry picked from commit 43db680)
…2 feature gate to TP""

(cherry picked from commit 1bf28d7)
(cherry picked from commit c225300)
(cherry picked from commit db1ed9c)
(cherry picked from commit e1bd70c)
(cherry picked from commit 5c06b67)
(cherry picked from commit 0425a9d)
VSphereMultiVCenters is already enabled in Default/DevPreviewNoUpgrade/
TechPreviewNoUpgrade on this release, so the FeatureGateAwareMaxItems
split (1 vs 3) was functionally always resolving to 3 for every real
featureset already. Having two FeatureGateAwareXValidation marker
variants on the vcenters field (the pre-existing one and the new
VSphereMultiVCenterDay2 one) plus the FeatureGateAwareMaxItems marker
referencing the legacy VSphereMultiVCenters gate causes the
feature-gated CRD manifest merge generator to non-deterministically
drop validations depending on alphabetic file ordering between the
VSphereMultiVCenters and VSphereMultiVCenterDay2 partial schemas.

Hardcoding MaxItems=3 (matching upstream, where VSphereMultiVCenters
has already been fully removed) avoids a second competing
FeatureGateAwareXValidation-adjacent marker on this field and keeps
the generated schema stable across TechPreviewNoUpgrade,
DevPreviewNoUpgrade and CustomNoUpgrade.
Change the meta-schema used by the feature-gated CRD manifest merge
generator so that the x-kubernetes-validations array is merged with
list-type atomic instead of list-type map (keyed by rule). With the
rule-keyed map strategy, two FeatureGateAwareXValidation marker
variants with different CEL rule text (e.g. the pre-existing "vcenters
cannot be added or removed once set" rule and the new
VSphereMultiVCenterDay2-gated rules) are treated as distinct map
entries and accumulate rather than the more specific, feature-gated
variant replacing the default one. Using atomic ensures that whichever
partial schema is merged last for a given feature set correctly
replaces the whole validations list for that field.

(cherry picked from commit 760409d)
Run make update to regenerate the CRD manifests, feature-gated CRD
manifest snapshots, payload manifests, openapi and features.md to
reflect the VSphereMultiVCenterDay2 changes and the vcenters MaxItems
hardcoding, now that the manifest-merge schema correctly replaces
x-kubernetes-validations per feature set instead of accumulating
conflicting variants.

The VSphereMultiVCenters feature-gated CRD manifest snapshot is
removed since no type marker references that gate any longer (its
MaxItems annotation was hardcoded away); the gate itself remains
registered in features/features.go and payload-manifests/featuregates.

(cherry picked from commit ea9f400)
…ions

VSphereMultiVCenters is this release's leftover legacy feature gate for
multi-vCenter support (already GA, enabled in Default); its dedicated
integration test file is exercised against every feature set where the
gate is enabled, including DevPreviewNoUpgrade, TechPreviewNoUpgrade
and CustomNoUpgrade, all of which also enable VSphereMultiVCenterDay2.

- Exclude VSphereMultiVCenterDay2 so this file only exercises the
  pre-Day2 behavior; once Day2 is active, adding/removing vCenters
  (including going straight from zero/partial vcenters to multiple) is
  intentionally allowed by the new Day2-specific validations, which
  contradicts what this file asserts.
- Fix two tests that referenced a vcenter server name
  (vcs8e-vc.ocp2.dev.cluster.com) not matching any configured failure
  domain's server, which now trips the new "all failure domains must
  have a corresponding vCenter entry" validation.
- Update the two tests that relied on the pre-existing
  "vcenters cannot be added or removed once set" validation still
  being enforced once the vcenters field also carries
  VSphereMultiVCenterDay2-gated validations: with two
  FeatureGateAwareXValidation variants now present on the same field,
  the default (featureGate="") variant is only generated for the
  fully-ungated manifest, so once a schema is regenerated for any other
  single feature gate the default variant is absent from that partial
  schema too. This matches upstream's shipped behavior for the
  equivalent field (see the Default feature set CRD manifest).
Cherry-pick of upstream d5e334d. The previous sort.Slice comparator was
an invalid strict weak ordering, making partial-manifest merge order
Go-toolchain-dependent: a regen built with go1.26 placed AAA_ungated.yaml
after the gated partials, so the ungated values clobbered
VSphereMultiNetworks maxItems=10 and the DualReplica enum.

Regenerate infrastructures CRD manifests to restore the gated values.

Co-Authored-By: Claude Code <noreply@anthropic.com>
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Oct 19, 2026
@openshift-ci-robot

openshift-ci-robot commented Oct 19, 2026 •

Copy link
Copy Markdown

@vr4manta: This pull request references SPLAT-2868 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 "4.19.z" version, but no target version was set.

Details

In response to this:

SPLAT-2868

Changes

  • Created new VSphereMultiVCenterDay2 feature gate
  • Added logic to handle day 2 processing of adding / removing vCenters

Notes

This PR is attempting to backport the following PRs:

There were also bugs that have not been ported back that fix CRD generation that have been included in this PR.

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

openshift-ci Bot commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Hello @vr4manta! 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-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification

This PR uses the pipeline controller for second-stage tests. Selection and triggering follow the repository configuration.

Use /test ? to list jobs and /pipeline help for commands.

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

coderabbitai Bot commented Oct 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: f72a4f69-60bd-464c-9d66-9bafa79fe803

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@vr4manta

Copy link
Copy Markdown
Contributor Author

/pipeline required

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-techpreview

@openshift-ci

openshift-ci Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

@vr4manta: 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/e2e-aws-ovn-hypershift-conformance b1568bc link true /test e2e-aws-ovn-hypershift-conformance
ci/prow/e2e-aws-serial-2of2 b1568bc link true /test e2e-aws-serial-2of2
ci/prow/e2e-aws-ovn b1568bc link true /test e2e-aws-ovn
ci/prow/e2e-aws-serial-techpreview-1of2 b1568bc link true /test e2e-aws-serial-techpreview-1of2
ci/prow/e2e-aws-ovn-techpreview b1568bc link true /test e2e-aws-ovn-techpreview
ci/prow/e2e-aws-serial-1of2 b1568bc link true /test e2e-aws-serial-1of2

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.

@everettraven

Copy link
Copy Markdown
Contributor

/approve
/lgtm
/label backport-risk-assessed

@openshift-ci openshift-ci Bot added the backport-risk-assessed Indicates a PR to a release branch has been evaluated and considered safe to accept. label Oct 27, 2026
@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Oct 27, 2026
@openshift-ci

openshift-ci Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: everettraven

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

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Oct 27, 2026
@vr4manta

Copy link
Copy Markdown
Contributor Author

/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.19-e2e-vsphere-ovn-zones-techpreview openshift/machine-api-operator#1590 openshift/installer#11024 openshift/cluster-cloud-controller-manager-operator#530 openshift/cluster-config-operator#531

@openshift-ci

openshift-ci Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

@vr4manta: trigger 0 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. backport-risk-assessed Indicates a PR to a release branch has been evaluated and considered safe to accept. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. 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.

4 participants