Skip to content

Remove VideoConfig feature gate#4294

Open
dasionov wants to merge 1 commit into
kubevirt:mainfrom
dasionov:ga-videoconfig-fg
Open

Remove VideoConfig feature gate#4294
dasionov wants to merge 1 commit into
kubevirt:mainfrom
dasionov:ga-videoconfig-fg

Conversation

@dasionov

@dasionov dasionov commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

The VideoConfig feature gate was enabled by default in HCO [1]
as the feature was beta in KubeVirt 1.8 and GA in KubeVirt 1.9 [2].

Now that the feature has reached GA and the feature gate protection has been removed upstream in KubeVirt, there is no point to set it anymore.

This PR modifies HCO to stop adding the VideoConfig feature gate
to the KubeVirt CR and marks the v1beta1 API field as discontinued.

[1] #4180
[2] kubevirt/kubevirt#16599

Reviewer Checklist

Reviewers are supposed to review the PR for every aspect below one by one. To check an item means the PR is either "OK" or "Not Applicable" in terms of that item. All items are supposed to be checked before merging a PR.

  • PR Message
  • Commit Messages
  • How to test
  • Unit Tests
  • Functional Tests
  • User Documentation
  • Developer Documentation
  • Upgrade Scenario
  • Uninstallation Scenario
  • Backward Compatibility
  • Troubleshooting Friendly

Jira Ticket:

NONE

Release note:

The VideoConfig feature gate has been graduated to GA and is no longer configurable.

@kubevirt-bot kubevirt-bot added do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. size/L dco-signoff: yes Indicates the PR's author has DCO signed all their commits. labels Jun 4, 2026
@kubevirt-bot

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 sradco 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

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR removes videoConfig from default feature-gate lists, catalog entries, CRD schemas, and API docs, and marks the gate deprecated/ignored in generated schema metadata. Controller wiring drops kvVideoConfig and now maps alignCPUs to kvAlignCPUs. Tests were updated to remove VideoConfig expectations and to reflect new default gate sets, while decentralizedLiveMigration is added to the feature-gate catalog and defaults.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

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.

🔧 ast-grep (0.44.0)
controllers/handlers/kubevirt_test.go

Warning

Review ran into problems

🔥 Problems

Linked repositories: Your configuration references 13 linked repositories, but your current plan allows 0. Analyzed ``, skipped kubevirt/kubevirt, `kubevirt/containerized-data-importer`, `kubevirt/ssp-operator`, `kubevirt/cluster-network-addons-operator`, `kubevirt/hostpath-provisioner-operator`, `kubevirt/application-aware-quota`, `kubevirt/managed-tenant-quota`, `kubevirt/hyperconverged-cluster-operator`, `kubevirt/monitoring`, `kubevirt/community`, `kubevirt/enhancements`, `kubevirt/project-infra`, `kubevirt/kubevirtci`.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@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.

Actionable comments posted: 1

🧹 Nitpick comments (1)
api/v1/featuregates/feature_gates_test.go (1)

193-193: ⚡ Quick win

Clarify the test description to match the assertion.

The test description on line 193 says "not in list; disabled" but expects BeTrue(). Since beta feature gates default to enabled when not explicitly listed, the description should say "not in list; enabled" to accurately reflect the expected behavior being tested.

📝 Proposed fix for test description clarity
-		Entry("known beta FG; not in list; disabled", featuregates.HyperConvergedFeatureGates{{Name: "deployKubeSecondaryDNS", State: ptr.To(featuregates.Enabled)}}, "decentralizedLiveMigration", BeTrue()),
+		Entry("known beta FG; not in list; enabled", featuregates.HyperConvergedFeatureGates{{Name: "deployKubeSecondaryDNS", State: ptr.To(featuregates.Enabled)}}, "decentralizedLiveMigration", BeTrue()),
🤖 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 `@api/v1/featuregates/feature_gates_test.go` at line 193, Update the test case
description string in the failing Entry to match the expected assertion: change
the description from "known beta FG; not in list; disabled" to "known beta FG;
not in list; enabled" in the Entry that uses
featuregates.HyperConvergedFeatureGates{{Name: "deployKubeSecondaryDNS", State:
ptr.To(featuregates.Enabled)}} and checks BeTrue() so the human-readable test
name accurately reflects that beta FGs default to enabled when not listed.
🤖 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.

Inline comments:
In `@controllers/handlers/kubevirt_test.go`:
- Around line 41-42: The test constant conditionalFeatureGatesCount is out of
sync with the feature-gate defaults after VideoConfig removal—update its value
to reflect that getFeatureGateChecks (in controllers/handlers/kubevirt.go) will
always add two conditional gates (kvDecentralizedLiveMigration and
kvHotplugVolumesGate) when .spec.featureGates is empty; change
conditionalFeatureGatesCount to 2 and also simplify the comment to read “volume
hotplug and decentralizedLiveMigration” for clarity so the test and its comment
match the behavior of getFeatureGateChecks.

---

Nitpick comments:
In `@api/v1/featuregates/feature_gates_test.go`:
- Line 193: Update the test case description string in the failing Entry to
match the expected assertion: change the description from "known beta FG; not in
list; disabled" to "known beta FG; not in list; enabled" in the Entry that uses
featuregates.HyperConvergedFeatureGates{{Name: "deployKubeSecondaryDNS", State:
ptr.To(featuregates.Enabled)}} and checks BeTrue() so the human-readable test
name accurately reflects that beta FGs default to enabled when not listed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 2e7854e8-dded-49e0-a87e-bb7772faa528

📥 Commits

Reviewing files that changed from the base of the PR and between e006d8b and 959e92f.

⛔ Files ignored due to path filters (4)
  • api/v1/zz_generated.openapi.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.defaults.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.featuregates_conversion.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.openapi.go is excluded by !**/zz_generated.*
📒 Files selected for processing (18)
  • api/v1/featuregates/feature_gates_test.go
  • api/v1/hyperconverged_types.go
  • api/v1beta1/conversion_test.go
  • api/v1beta1/hyperconverged_types.go
  • config/crd/bases/hco.kubevirt.io_hyperconvergeds.yaml
  • controllers/handlers/kubevirt.go
  • controllers/handlers/kubevirt_test.go
  • controllers/hyperconverged/hyperconverged_controller_test.go
  • deploy/crds/hco00.crd.yaml
  • deploy/hco.cr.yaml
  • deploy/index-image/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • deploy/olm-catalog/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • pkg/featuregatedetails/feature-gates.json
  • pkg/internal/kvfeaturegates/kv-beta-feature-gates.json
  • tests/func-tests/conversion_test.go
  • tests/func-tests/defaults_test.go
  • tools/csv-merger/generated-crd.yaml
  • tools/manifest-templator/generated-crd.yaml
💤 Files with no reviewable changes (7)
  • controllers/hyperconverged/hyperconverged_controller_test.go
  • api/v1/hyperconverged_types.go
  • pkg/internal/kvfeaturegates/kv-beta-feature-gates.json
  • pkg/featuregatedetails/feature-gates.json
  • tests/func-tests/defaults_test.go
  • deploy/hco.cr.yaml
  • controllers/handlers/kubevirt.go

Comment thread controllers/handlers/kubevirt_test.go Outdated
@kubevirt-bot kubevirt-bot added release-note Denotes a PR that will be considered when it comes time to generate release notes. and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Jun 4, 2026
@dasionov

dasionov commented Jun 4, 2026

Copy link
Copy Markdown
Contributor Author

/cc @nunnatsa PTAL 🙏

@coveralls

coveralls commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 28512372997

Coverage decreased (-0.004%) to 81.424%

Details

  • Coverage decreased (-0.004%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 13921
Covered Lines: 11335
Line Coverage: 81.42%
Coverage Strength: 2.18 hits per line

💛 - Coveralls

@hco-bot

hco-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

hco-e2e-consecutive-operator-sdk-upgrades-azure lane succeeded.
/override ci/prow/hco-e2e-consecutive-operator-sdk-upgrades-aws
hco-e2e-upgrade-prev-operator-sdk-aws lane succeeded.
/override ci/prow/hco-e2e-upgrade-prev-operator-sdk-azure
hco-e2e-upgrade-operator-sdk-aws lane succeeded.
/override ci/prow/hco-e2e-upgrade-operator-sdk-azure
hco-e2e-operator-sdk-azure, hco-e2e-operator-sdk-gcp lanes succeeded.
/override ci/prow/hco-e2e-operator-sdk-aws

@kubevirt-bot

Copy link
Copy Markdown
Contributor

@hco-bot: Overrode contexts on behalf of hco-bot: ci/prow/hco-e2e-consecutive-operator-sdk-upgrades-aws, ci/prow/hco-e2e-operator-sdk-aws, ci/prow/hco-e2e-upgrade-operator-sdk-azure, ci/prow/hco-e2e-upgrade-prev-operator-sdk-azure

Details

In response to this:

hco-e2e-consecutive-operator-sdk-upgrades-azure lane succeeded.
/override ci/prow/hco-e2e-consecutive-operator-sdk-upgrades-aws
hco-e2e-upgrade-prev-operator-sdk-aws lane succeeded.
/override ci/prow/hco-e2e-upgrade-prev-operator-sdk-azure
hco-e2e-upgrade-operator-sdk-aws lane succeeded.
/override ci/prow/hco-e2e-upgrade-operator-sdk-azure
hco-e2e-operator-sdk-azure, hco-e2e-operator-sdk-gcp lanes succeeded.
/override ci/prow/hco-e2e-operator-sdk-aws

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.

@hco-bot

hco-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

hco-e2e-kv-smoke-gcp lane succeeded.
/override ci/prow/hco-e2e-kv-smoke-azure
hco-e2e-operator-sdk-azure, hco-e2e-operator-sdk-gcp lanes succeeded.
/override ci/prow/hco-e2e-operator-sdk-aws

1 similar comment
@hco-bot

hco-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

hco-e2e-kv-smoke-gcp lane succeeded.
/override ci/prow/hco-e2e-kv-smoke-azure
hco-e2e-operator-sdk-azure, hco-e2e-operator-sdk-gcp lanes succeeded.
/override ci/prow/hco-e2e-operator-sdk-aws

@kubevirt-bot

Copy link
Copy Markdown
Contributor

@hco-bot: Overrode contexts on behalf of hco-bot: ci/prow/hco-e2e-kv-smoke-azure, ci/prow/hco-e2e-operator-sdk-aws

Details

In response to this:

hco-e2e-kv-smoke-gcp lane succeeded.
/override ci/prow/hco-e2e-kv-smoke-azure
hco-e2e-operator-sdk-azure, hco-e2e-operator-sdk-gcp lanes succeeded.
/override ci/prow/hco-e2e-operator-sdk-aws

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.

@kubevirt-bot

Copy link
Copy Markdown
Contributor

@hco-bot: Overrode contexts on behalf of hco-bot: ci/prow/hco-e2e-kv-smoke-azure, ci/prow/hco-e2e-operator-sdk-aws

Details

In response to this:

hco-e2e-kv-smoke-gcp lane succeeded.
/override ci/prow/hco-e2e-kv-smoke-azure
hco-e2e-operator-sdk-azure, hco-e2e-operator-sdk-gcp lanes succeeded.
/override ci/prow/hco-e2e-operator-sdk-aws

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.

@dasionov dasionov force-pushed the ga-videoconfig-fg branch from b05bc01 to 4802ceb Compare June 4, 2026 16:27
@hco-bot

hco-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

hco-e2e-upgrade-operator-sdk-aws lane succeeded.
/override ci/prow/hco-e2e-upgrade-operator-sdk-azure
hco-e2e-upgrade-prev-operator-sdk-azure lane succeeded.
/override ci/prow/hco-e2e-upgrade-prev-operator-sdk-aws
hco-e2e-upgrade-operator-sdk-sno-aws lane succeeded.
/override ci/prow/hco-e2e-upgrade-operator-sdk-sno-azure

@kubevirt-bot

Copy link
Copy Markdown
Contributor

@hco-bot: Overrode contexts on behalf of hco-bot: ci/prow/hco-e2e-upgrade-operator-sdk-azure, ci/prow/hco-e2e-upgrade-operator-sdk-sno-azure, ci/prow/hco-e2e-upgrade-prev-operator-sdk-aws

Details

In response to this:

hco-e2e-upgrade-operator-sdk-aws lane succeeded.
/override ci/prow/hco-e2e-upgrade-operator-sdk-azure
hco-e2e-upgrade-prev-operator-sdk-azure lane succeeded.
/override ci/prow/hco-e2e-upgrade-prev-operator-sdk-aws
hco-e2e-upgrade-operator-sdk-sno-aws lane succeeded.
/override ci/prow/hco-e2e-upgrade-operator-sdk-sno-azure

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.

@hco-bot

hco-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

hco-e2e-kv-smoke-gcp lane succeeded.
/override ci/prow/hco-e2e-kv-smoke-azure

@kubevirt-bot

Copy link
Copy Markdown
Contributor

@hco-bot: Overrode contexts on behalf of hco-bot: ci/prow/hco-e2e-kv-smoke-azure

Details

In response to this:

hco-e2e-kv-smoke-gcp lane succeeded.
/override ci/prow/hco-e2e-kv-smoke-azure

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.

@dasionov

dasionov commented Jun 8, 2026

Copy link
Copy Markdown
Contributor Author

/cc @nunnatsa

@kubevirt-bot kubevirt-bot requested a review from nunnatsa June 8, 2026 07:26
@nunnatsa

Copy link
Copy Markdown
Collaborator

We're still using KubeVirt v1.9.0-beta.0, that does not contain kubevirt/kubevirt#16599.

/hold

@kubevirt-bot kubevirt-bot added do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Jun 10, 2026
@dasionov dasionov force-pushed the ga-videoconfig-fg branch from 4802ceb to e54148a Compare June 30, 2026 08:08
@kubevirt-bot kubevirt-bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 30, 2026
@kubevirt-prow

kubevirt-prow Bot commented Jun 30, 2026

Copy link
Copy Markdown

[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 sradco 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

@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.

Actionable comments posted: 1

🤖 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.

Inline comments:
In `@tests/func-tests/defaults_test.go`:
- Around line 67-99: The feature-gate defaults test no longer covers the removed
videoConfig contract, so add an explicit regression assertion in
defaults_test.go alongside defaultFeatureGates and the Existing GetHCO/PatchHCO
flow. Use hc.Spec.FeatureGates to verify videoConfig is ignored/absent after
defaulting, or that explicitly setting it has no effect, so the functional test
still guards the VideoConfig removal behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5f1c7bca-7f34-4726-8abd-bb57961dce0e

📥 Commits

Reviewing files that changed from the base of the PR and between 4802ceb and e54148a.

⛔ Files ignored due to path filters (4)
  • api/v1/zz_generated.openapi.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.defaults.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.featuregates_conversion.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.openapi.go is excluded by !**/zz_generated.*
📒 Files selected for processing (17)
  • api/v1/featuregates/feature_gates_test.go
  • api/v1/hyperconverged_types.go
  • api/v1beta1/conversion_test.go
  • api/v1beta1/hyperconverged_types.go
  • config/crd/bases/hco.kubevirt.io_hyperconvergeds.yaml
  • controllers/handlers/kubevirt.go
  • controllers/handlers/kubevirt_test.go
  • controllers/hyperconverged/hyperconverged_controller_test.go
  • deploy/crds/hco00.crd.yaml
  • deploy/index-image/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • deploy/olm-catalog/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • docs/api-v1.md
  • docs/api.md
  • pkg/featuregatedetails/feature-gates.json
  • pkg/internal/kvfeaturegates/kv-beta-feature-gates.json
  • tests/func-tests/defaults_test.go
  • tools/csv-merger/generated-crd.yaml
💤 Files with no reviewable changes (4)
  • api/v1/hyperconverged_types.go
  • pkg/internal/kvfeaturegates/kv-beta-feature-gates.json
  • api/v1/featuregates/feature_gates_test.go
  • pkg/featuregatedetails/feature-gates.json
✅ Files skipped from review due to trivial changes (3)
  • docs/api.md
  • docs/api-v1.md
  • tools/csv-merger/generated-crd.yaml
🚧 Files skipped from review as they are similar to previous changes (9)
  • controllers/handlers/kubevirt.go
  • api/v1beta1/hyperconverged_types.go
  • deploy/crds/hco00.crd.yaml
  • controllers/handlers/kubevirt_test.go
  • controllers/hyperconverged/hyperconverged_controller_test.go
  • config/crd/bases/hco.kubevirt.io_hyperconvergeds.yaml
  • deploy/index-image/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • api/v1beta1/conversion_test.go
  • deploy/olm-catalog/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.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

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🤖 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.

Inline comments:
In `@tests/func-tests/defaults_test.go`:
- Around line 67-99: The feature-gate defaults test no longer covers the removed
videoConfig contract, so add an explicit regression assertion in
defaults_test.go alongside defaultFeatureGates and the Existing GetHCO/PatchHCO
flow. Use hc.Spec.FeatureGates to verify videoConfig is ignored/absent after
defaulting, or that explicitly setting it has no effect, so the functional test
still guards the VideoConfig removal behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5f1c7bca-7f34-4726-8abd-bb57961dce0e

📥 Commits

Reviewing files that changed from the base of the PR and between 4802ceb and e54148a.

⛔ Files ignored due to path filters (4)
  • api/v1/zz_generated.openapi.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.defaults.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.featuregates_conversion.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.openapi.go is excluded by !**/zz_generated.*
📒 Files selected for processing (17)
  • api/v1/featuregates/feature_gates_test.go
  • api/v1/hyperconverged_types.go
  • api/v1beta1/conversion_test.go
  • api/v1beta1/hyperconverged_types.go
  • config/crd/bases/hco.kubevirt.io_hyperconvergeds.yaml
  • controllers/handlers/kubevirt.go
  • controllers/handlers/kubevirt_test.go
  • controllers/hyperconverged/hyperconverged_controller_test.go
  • deploy/crds/hco00.crd.yaml
  • deploy/index-image/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • deploy/olm-catalog/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • docs/api-v1.md
  • docs/api.md
  • pkg/featuregatedetails/feature-gates.json
  • pkg/internal/kvfeaturegates/kv-beta-feature-gates.json
  • tests/func-tests/defaults_test.go
  • tools/csv-merger/generated-crd.yaml
💤 Files with no reviewable changes (4)
  • api/v1/hyperconverged_types.go
  • pkg/internal/kvfeaturegates/kv-beta-feature-gates.json
  • api/v1/featuregates/feature_gates_test.go
  • pkg/featuregatedetails/feature-gates.json
✅ Files skipped from review due to trivial changes (3)
  • docs/api.md
  • docs/api-v1.md
  • tools/csv-merger/generated-crd.yaml
🚧 Files skipped from review as they are similar to previous changes (9)
  • controllers/handlers/kubevirt.go
  • api/v1beta1/hyperconverged_types.go
  • deploy/crds/hco00.crd.yaml
  • controllers/handlers/kubevirt_test.go
  • controllers/hyperconverged/hyperconverged_controller_test.go
  • config/crd/bases/hco.kubevirt.io_hyperconvergeds.yaml
  • deploy/index-image/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • api/v1beta1/conversion_test.go
  • deploy/olm-catalog/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
🛑 Comments failed to post (1)
tests/func-tests/defaults_test.go (1)

67-99: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Keep an explicit regression check for videoConfig being ignored.

Dropping videoConfig from defaultFeatureGates removes the only coverage for this PR’s main contract. This test now proves the remaining defaults, but it no longer proves that videoConfig is absent/ignored, so a regression that still surfaces or honors that gate would pass here unnoticed. Please add an assertion for the removed gate itself (for example, that the key is absent from hc.Spec.FeatureGates after defaulting, or that setting it has no effect). As per coding guidelines, "New features must have functional tests under tests/func-tests." As per path instructions, "verify test scenarios and coverage are still sufficient after removing the VideoConfig gate (including boundary/edge cases)."

🤖 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 `@tests/func-tests/defaults_test.go` around lines 67 - 99, The feature-gate
defaults test no longer covers the removed videoConfig contract, so add an
explicit regression assertion in defaults_test.go alongside defaultFeatureGates
and the Existing GetHCO/PatchHCO flow. Use hc.Spec.FeatureGates to verify
videoConfig is ignored/absent after defaulting, or that explicitly setting it
has no effect, so the functional test still guards the VideoConfig removal
behavior.

Sources: Coding guidelines, Path instructions

@kubevirt-bot kubevirt-bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 30, 2026
The VideoConfig feature gate was enabled by default in HCO [1]
as the feature was beta in KubeVirt 1.8 and GA in KubeVirt 1.9 [2].

Now that the feature has reached GA and the feature gate
protection has been removed upstream in KubeVirt, there is no point to
set it anymore.

This PR modifies HCO to stop adding the VideoConfig feature gate
to the KubeVirt CR and marks the v1beta1 API field as discontinued.

[1] kubevirt#4180
[2] kubevirt/kubevirt#16599

Assisted-By: Claude opus 4.6 <noreply@anthropic.com>
Signed-off-by: Daniel Sionov <dsionov@redhat.com>
@dasionov dasionov force-pushed the ga-videoconfig-fg branch from e54148a to 831fdfb Compare July 1, 2026 10:54
@kubevirt-bot kubevirt-bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 1, 2026
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

@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)
tools/csv-merger/generated-crd.yaml (1)

5383-5392: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Keep videoConfig enabled until the KubeVirt version bump lands. tools/csv-merger/generated-crd.yaml:5383-5392 removes videoConfig from the default feature-gate map, but the operator is still pinned to v1.9.0-beta.0 in hack/config:3 and deploy/operator.yaml:62,508. That pre-GA KubeVirt build still needs the gate, so this would silently disable video config for existing users on upgrade.

🤖 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 `@tools/csv-merger/generated-crd.yaml` around lines 5383 - 5392, The default
feature-gate map in the CRD generator is dropping videoConfig too early, which
would disable it for upgrades while the operator still targets the older
KubeVirt build. Update the featureGates block in generated-crd.yaml to keep
videoConfig enabled alongside the existing gates until the version bump is
completed. Use the featureGates map in the generated CRD output as the place to
restore the missing videoConfig entry.
🤖 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 `@tools/csv-merger/generated-crd.yaml`:
- Around line 5383-5392: The default feature-gate map in the CRD generator is
dropping videoConfig too early, which would disable it for upgrades while the
operator still targets the older KubeVirt build. Update the featureGates block
in generated-crd.yaml to keep videoConfig enabled alongside the existing gates
until the version bump is completed. Use the featureGates map in the generated
CRD output as the place to restore the missing videoConfig entry.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 9a64e389-491d-481a-99dd-a19f3195d17d

📥 Commits

Reviewing files that changed from the base of the PR and between e54148a and 831fdfb.

⛔ Files ignored due to path filters (4)
  • api/v1/zz_generated.openapi.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.defaults.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.featuregates_conversion.go is excluded by !**/zz_generated.*
  • api/v1beta1/zz_generated.openapi.go is excluded by !**/zz_generated.*
📒 Files selected for processing (18)
  • api/v1/featuregates/feature_gates_test.go
  • api/v1/hyperconverged_types.go
  • api/v1beta1/conversion_test.go
  • api/v1beta1/hyperconverged_types.go
  • config/crd/bases/hco.kubevirt.io_hyperconvergeds.yaml
  • controllers/handlers/kubevirt.go
  • controllers/handlers/kubevirt_test.go
  • controllers/hyperconverged/hyperconverged_controller_test.go
  • deploy/crds/hco00.crd.yaml
  • deploy/index-image/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • deploy/olm-catalog/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • docs/api-v1.md
  • docs/api.md
  • pkg/featuregatedetails/feature-gates.json
  • pkg/internal/kvfeaturegates/kv-beta-feature-gates.json
  • tests/func-tests/defaults_test.go
  • tools/csv-merger/generated-crd.yaml
  • tools/manifest-templator/generated-crd.yaml
💤 Files with no reviewable changes (4)
  • pkg/internal/kvfeaturegates/kv-beta-feature-gates.json
  • tests/func-tests/defaults_test.go
  • api/v1/featuregates/feature_gates_test.go
  • controllers/hyperconverged/hyperconverged_controller_test.go
✅ Files skipped from review due to trivial changes (4)
  • docs/api-v1.md
  • docs/api.md
  • pkg/featuregatedetails/feature-gates.json
  • api/v1/hyperconverged_types.go
🚧 Files skipped from review as they are similar to previous changes (7)
  • tools/manifest-templator/generated-crd.yaml
  • controllers/handlers/kubevirt.go
  • api/v1beta1/conversion_test.go
  • api/v1beta1/hyperconverged_types.go
  • deploy/olm-catalog/community-kubevirt-hyperconverged/1.19.0/manifests/hco00.crd.yaml
  • config/crd/bases/hco.kubevirt.io_hyperconvergeds.yaml
  • controllers/handlers/kubevirt_test.go

@openshift-ci

openshift-ci Bot commented Jul 1, 2026

Copy link
Copy Markdown

@dasionov: 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/ci-index-hco-bundle 831fdfb link true /test ci-index-hco-bundle
ci/prow/ci-index-hco-upgrade-operator-sdk-bundle 831fdfb link true /test ci-index-hco-upgrade-operator-sdk-bundle
ci/prow/hco-e2e-operator-sdk-azure 831fdfb link true /test hco-e2e-operator-sdk-azure
ci/prow/hco-e2e-upgrade-operator-sdk-sno-azure 831fdfb link false /test hco-e2e-upgrade-operator-sdk-sno-azure
ci/prow/hco-e2e-operator-sdk-sno-azure 831fdfb link false /test hco-e2e-operator-sdk-sno-azure
ci/prow/hco-e2e-upgrade-prev-operator-sdk-azure 831fdfb link true /test hco-e2e-upgrade-prev-operator-sdk-azure
ci/prow/hco-e2e-upgrade-prev-operator-sdk-sno-azure 831fdfb link false /test hco-e2e-upgrade-prev-operator-sdk-sno-azure
ci/prow/hco-e2e-upgrade-operator-sdk-azure 831fdfb link true /test hco-e2e-upgrade-operator-sdk-azure
ci/prow/hco-e2e-consecutive-operator-sdk-upgrades-aws 831fdfb link true /test hco-e2e-consecutive-operator-sdk-upgrades-aws
ci/prow/hco-e2e-kv-smoke-azure 831fdfb link true /test hco-e2e-kv-smoke-azure
ci/prow/hco-e2e-upgrade-prev-operator-sdk-sno-aws 831fdfb link false /test hco-e2e-upgrade-prev-operator-sdk-sno-aws
ci/prow/hco-e2e-upgrade-operator-sdk-aws 831fdfb link true /test hco-e2e-upgrade-operator-sdk-aws
ci/prow/hco-e2e-upgrade-prev-operator-sdk-aws 831fdfb link true /test hco-e2e-upgrade-prev-operator-sdk-aws
ci/prow/hco-e2e-operator-sdk-aws 831fdfb link true /test hco-e2e-operator-sdk-aws

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

dco-signoff: yes Indicates the PR's author has DCO signed all their commits. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants