Skip to content

SPLAT-2588: fix hypershift topology variant to match Sippy classification#2899

Merged
openshift-merge-bot[bot] merged 3 commits into
openshift:masterfrom
mtulio:fix-hypershift-topology-external
Jun 23, 2026
Merged

SPLAT-2588: fix hypershift topology variant to match Sippy classification#2899
openshift-merge-bot[bot] merged 3 commits into
openshift:masterfrom
mtulio:fix-hypershift-topology-external

Conversation

@mtulio

@mtulio mtulio commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Fixes the topology variant mismatch between openshift/api's verify-feature-promotion tool and Sippy's variant classification for hypershift jobs.

mtulio and others added 3 commits June 22, 2026 17:33
Adds comprehensive unit tests for previously untested pure functions:
- topologyDisplayName: verifies external->hypershift display mapping
- filterVariants: variant selection by feature gate name
- matchTwoNodeFeatureGates: DualReplica/Fencing topology matching
- testResultByName: test result lookup helper
- OrderedJobVariants: sorting with external topology
- nonHypershiftPlatforms: regex matching for platform detection
- validateJobTiers: extended coverage for tier validation
- allDefinedVariantsHaveValidJobTiers: validates all variant configs
- buildHTMLFeatureGateData: HTML report with display name mapping
- requiredHypershiftJobVariants regression guards: asserts topology
  is "external" and Sippy queries contain Topology:external

Co-Authored-By: Claude Code <noreply@anthropic.com>
…topology

Adds topologyDisplayName() to map Sippy's "external" topology back to
"hypershift" in the feature-promotion HTML and markdown reports, so the
output remains user-friendly while queries use the correct Sippy value.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Sippy classifies hypershift jobs with Topology:"external", not
"hypershift". The mismatch caused verify-feature-promotion to find
0 tests when querying Sippy for hypershift variants, blocking
feature gate promotions.

Co-Authored-By: Claude Code <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 added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 22, 2026
@openshift-ci-robot

openshift-ci-robot commented Jun 22, 2026

Copy link
Copy Markdown

@mtulio: This pull request references SPLAT-2588 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:

Fixes the topology variant mismatch between openshift/api's verify-feature-promotion tool and Sippy's variant classification for hypershift jobs.

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 Jun 22, 2026

Copy link
Copy Markdown
Contributor

Hello @mtulio! 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.

@coderabbitai

coderabbitai Bot commented Jun 22, 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: 2b7bd9ba-a78f-4061-a989-3d3162461d4f

📥 Commits

Reviewing files that changed from the base of the PR and between 5346161 and 5300823.

📒 Files selected for processing (2)
  • tools/codegen/cmd/featuregate-test-analyzer.go
  • tools/codegen/cmd/featuregate-test-analyzer_test.go

📝 Walkthrough

Walkthrough

The requiredHypershiftJobVariants data structure changes its Topology field value from "hypershift" to "external", aligning the internal value with how sippy queries filter results. A new unexported helper topologyDisplayName maps "external" to "hypershift" for display, leaving other topology strings unchanged. Both the HTML feature-gate variant column headers and the Markdown testing-results table headers are updated to call this helper instead of using the raw topology string. The test file adds imports for fmt, sort, and strings, and introduces eleven new test functions covering the topology data value, Sippy query filtering, display-name mapping, platform detection, variant filtering, two-node feature-gate matching, test result lookup, variant ordering, JobTiers validation, and HTML feature-gate data generation.

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (14 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: fixing hypershift topology variant classification to match Sippy's system.
Description check ✅ Passed The description is directly related to the changeset, explaining the topology variant mismatch fix for hypershift jobs in the verify-feature-promotion tool.
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 All test names in the PR use stable, deterministic values. Two tests use fmt.Sprintf to format static test data (variant names, topologies, cloud providers), but values are hardcoded and repeat con...
Test Structure And Quality ✅ Passed The custom check targets Ginkgo test code, but this PR contains Go standard testing package tests, not Ginkgo tests. The check is not applicable.
Microshift Test Compatibility ✅ Passed This PR does not add any Ginkgo e2e tests. It only modifies a code generation tool and adds standard Go unit tests. The custom check is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No Ginkgo e2e tests are added in this PR. The new tests are standard Go unit tests for a code generation tool, using the testing.T framework, not Ginkgo patterns.
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies only featuregate-test-analyzer tool that generates test reports; no deployment manifests, operator code, or scheduling constraints are introduced.
Ote Binary Stdout Contract ✅ Passed All fmt.Printf statements are in regular command execution functions (listTestResultFor, listTestResultForVariant), not process-level code like main/init, so they don't violate OTE stdout contract.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR adds only standard Go unit tests in tools/codegen (not Ginkgo e2e tests). No e2e test patterns (Describe, It, Context, When, By) or connectivity/IPv4 assumptions found.
No-Weak-Crypto ✅ Passed No weak cryptographic algorithms (MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB), custom crypto implementations, or non-constant-time secret comparisons found in the modified files.
Container-Privileges ✅ Passed The PR modifies Go source files (featuregate-test-analyzer.go/test.go) and does not contain any container or Kubernetes manifests with privileged configurations.
No-Sensitive-Data-In-Logs ✅ Passed Logging contains only non-sensitive operational data: feature gate names, cluster profiles, test results, release versions, and infrastructure metadata. No passwords, tokens, API keys, PII, or othe...

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

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

@openshift-ci openshift-ci Bot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Jun 22, 2026
@openshift-ci openshift-ci Bot requested review from JoelSpeed and everettraven June 22, 2026 20:35
@openshift-ci

openshift-ci Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

@mtulio: all tests passed!

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.

@JoelSpeed

Copy link
Copy Markdown
Contributor

/lgtm
/verified by @mtulio

@openshift-ci-robot

Copy link
Copy Markdown

@JoelSpeed: This PR has been marked as verified by @mtulio.

Details

In response to this:

/lgtm
/verified by @mtulio

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 verified Signifies that the PR passed pre-merge verification criteria label Jun 23, 2026
@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 23, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification

No second-stage tests were triggered for this PR.

This can happen when:

  • The changed files don't match any pipeline_run_if_changed patterns
  • All files match pipeline_skip_if_only_changed patterns
  • No pipeline-controlled jobs are defined for the master branch

Use /test ? to see all available tests.

@openshift-ci

openshift-ci Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: JoelSpeed

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 Jun 23, 2026
@openshift-merge-bot openshift-merge-bot Bot merged commit c5eb460 into openshift:master Jun 23, 2026
16 checks passed
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. 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/XL Denotes a PR that changes 500-999 lines, ignoring generated files. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants