feat: add feature status generator from metadata.yaml - #271
Conversation
|
❌ Generated Files Verification Failed One or more generated files in this PR are out of sync:
Please regenerate the files locally and commit the changes. |
1172c98 to
23559af
Compare
|
❌ Generated Files Verification Failed One or more generated files in this PR are out of sync:
Please regenerate the files locally and commit the changes. |
23559af to
9d0b6aa
Compare
| # - fence-agents-operator (operators/fence-agents.yaml.tpl) | ||
| # - usb-passthrough (machine-config/05-usb-passthrough.yaml.tpl) | ||
|
|
||
| # Framework-level maturity. Remove opt_in once the autopilot graduates to GA. |
There was a problem hiding this comment.
This comment implies that when the framework graduates to GA, the opt_in annotation will be removed — but it's not clear what that means in practice for existing clusters. Two possible paths: (1) HCO adds the annotation automatically on upgrade, or (2) the autopilot stops requiring it altogether. Both would silently activate autopilot on existing clusters during an upgrade, potentially triggering MachineConfig rollouts without admin consent.
I'd suggest that platform.kubevirt.io/autopilot=true should be added by default only on new installations, not injected automatically on upgrades. Could you clarify the intended upgrade path when the framework reaches GA?
There was a problem hiding this comment.
Thanks for raising this.
Intended GA behavior: at GA, we will drop the framework activation gate (path 2). The autopilot is on by default without platform.kubevirt.io/autopilot=true (honoring just platform.kubevirt.io/autopilot=false to completely disable it). HCO will not inject that annotation on upgrade nor the autopilot will touch the HCO CR. This matches the opt-out plan already in ARCHITECTURE.md.
fresh install only? That splits one product into two behaviors simply according to when you deployed it for the first time, doubles test/doc burden... on my opinion is an anti-pattern and we should try to avoid it if not really justified.
MachineConfig concern: only GA features become unconditional at framework GA; DP/TP features keep their own opt-ins. Admins can still opt out per resource (mode: unmanaged, disabled-resources, feature annotations). More than that, framework GA is tied to a minor (or major, e.g. 5.0) release, not a patch one. Admins already expect relevant change at that cadence (node configs refresh, virt-launcher rolls, etc). MachineConfig delivery on that boundary is consistent with that expectation, not a surprise patch-level side effect.
There was a problem hiding this comment.
+1 on avoiding fresh install differentiation
MC - I worry mostly about potential troubles when user defined their own conflicting MCs already. I agree we should try to push on it and deliver ours out of the box though...so don't know if we have anything better than a big fat warning in docs.
There was a problem hiding this comment.
The Machine Config Operator (MCO) is expected to merge all machine configs into a single rendered configuration before applying it. While unexpected conflicts can still occur, sticking to what we've previously documented in product docs or KB articles keeps the risk lower (though never zero). The MCO also uses a rolling update strategy, so it won't move to the next node if the first one fails to come back up.
Ultimately, the risk isn't substantially higher than asking customers to trust and apply a published snippet from our documentation.
|
waiting for a broader agreement |
|
this is dope. this is a pattern which ... we need in other places as well. |
9d0b6aa to
dbabc5d
Compare
|
/unhold |
| value: "true" | ||
| - type: hardware-detection | ||
| detector: pciDevicesPresent | ||
| - type: annotation |
There was a problem hiding this comment.
was it missing? does it belong to this PR?
There was a problem hiding this comment.
It was not gated although not ready to be named GA, and this PR made it visible which is exactly its goal. So let's also gate it.
| # - fence-agents-operator (operators/fence-agents.yaml.tpl) | ||
| # - usb-passthrough (machine-config/05-usb-passthrough.yaml.tpl) | ||
|
|
||
| # Framework-level maturity. Remove opt_in once the autopilot graduates to GA. |
There was a problem hiding this comment.
+1 on avoiding fresh install differentiation
MC - I worry mostly about potential troubles when user defined their own conflicting MCs already. I agree we should try to push on it and deliver ours out of the box though...so don't know if we have anything better than a big fat warning in docs.
| requires: | ||
| - Cluster Observability Operator | ||
|
|
||
| - name: Metrics Exporter |
There was a problem hiding this comment.
separately - I was wondering if we shoulndt' rename to kubevirt-metrics-exporter to be aligned with the project name and also with the "KME" we used in the metrics' names
There was a problem hiding this comment.
OK, let's keep it for a follow-up PR
dbabc5d to
d818b20
Compare
|
❌ Generated Files Verification Failed One or more generated files in this PR are out of sync:
Please regenerate the files locally and commit the changes. |
aa6956c to
aeb527a
Compare
Structured approach to the feature maturity table proposed in openshift-virtualization#251 Instead of a manually-maintained table, features are declared in metadata.yaml alongside assets. Shared derivation logic in pkg/assets builds the catalog for both the generator and the debug server: - docs/generated/feature-status.json: structured data for CI/tests - README.md: markdown table injected between sentinel comments - /debug/features: live feature catalog on the debug server Key design decisions: - Coverage validation: every asset must be covered by a feature entry or explicitly listed in excluded_assets, preventing silent gaps. - Soft dependencies: features can declare a requires field listing operators that must be installed for the feature to activate. - Framework maturity: tracked separately (currently TP) and rendered as a note above the feature table; will be removed at GA. - Maturity auto-derivation: install:always assets without explicit maturity are classified as GA; opt-in features need dp or tp. - Opt-in reporting: only user-facing conditions (annotations, feature gates, HCO prerequisites) appear in generated output; internal gates such as topology, hardware detection, and image availability are omitted. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Simone Tiraboschi <stirabos@redhat.com>
aeb527a to
9cd8632
Compare
|
/lgtm |
|
/approve |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: tiraboschi The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
91abec0
into
openshift-virtualization:main
|
/cherry-pick release-4.22 |
|
@tiraboschi: new pull request created: #325 DetailsIn response to this:
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. |
Structured approach to the feature maturity table proposed in #251
Instead of a manually-maintained table, features are declared in metadata.yaml alongside assets. Shared derivation logic in pkg/assets builds the catalog for both the generator and the debug server:
Key design decisions:
See: #142