-
Notifications
You must be signed in to change notification settings - Fork 13
feat: add feature status generator from metadata.yaml #271
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,5 @@ | ||
| # Binaries for programs and plugins | ||
| /feature-status-gen | ||
| *.exe | ||
| *.exe~ | ||
| *.dll | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -66,6 +66,9 @@ assets: | |
| value: "true" | ||
| - type: hardware-detection | ||
| detector: pciDevicesPresent | ||
| - type: annotation | ||
| key: platform.kubevirt.io/enable-pci-passthrough | ||
| value: "true" | ||
|
|
||
| - name: psi-enable | ||
| group: descheduler-loadaware | ||
|
|
@@ -898,3 +901,105 @@ assets: | |
| # - node-maintenance-operator (operators/node-maintenance.yaml.tpl) | ||
| # - 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. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This comment implies that when the framework graduates to GA, the I'd suggest that
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 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.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. +1 on avoiding fresh install differentiation
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 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. |
||
| framework: | ||
| maturity: tp | ||
| opt_in: platform.kubevirt.io/autopilot=true | ||
|
|
||
| # Feature catalog: maps user-facing features to assets/groups. | ||
| # - maturity is required only for opt-in features ("dp" or "tp") | ||
| # - features whose assets are all install: always are auto-classified as GA | ||
| # - opt-in conditions are derived from the referenced assets (no duplication) | ||
| # - every asset must be covered by a feature entry or listed in excluded_assets | ||
|
|
||
| # Assets intentionally excluded from feature tracking (e.g. internal-only, | ||
| # not yet user-facing, or managed externally). | ||
| excluded_assets: | ||
| - hco-golden-config | ||
|
|
||
| features: | ||
| - name: SWAP | ||
| description: OpenShift worker node swap support | ||
| assets: [swap-enable] | ||
|
|
||
| - name: Kubelet Performance | ||
| description: Optimized kubelet settings for virtualization workloads | ||
| assets: [kubelet-perf-settings] | ||
|
|
||
| - name: Observability | ||
| description: Prometheus metrics, alerting rules, and Perses dashboards in the OpenShift console | ||
| assets: [metrics-service, metrics-servicemonitor, prometheus-alerts, monitoring-ui-plugin, autopilot-dashboard] | ||
| requires: | ||
| - Cluster Observability Operator | ||
|
|
||
| - name: Load-Aware Descheduler | ||
| description: Load-aware VM balancing based on CPU/memory utilization and pressure stall metrics | ||
| assets: [descheduler-loadaware, psi-enable, psi-enable-master] | ||
| requires: | ||
| - Kube Descheduler Operator | ||
|
|
||
| - name: PCI Passthrough | ||
| description: GPU/PCI device passthrough via VFIO | ||
| maturity: dp | ||
| assets: [pci-passthrough] | ||
|
tiraboschi marked this conversation as resolved.
|
||
|
|
||
| - name: CPU Manager | ||
| description: Dedicated CPU pinning for guaranteed QoS workloads | ||
| maturity: dp | ||
| assets: [kubelet-cpu-manager] | ||
|
|
||
| - name: MTV Operator | ||
| description: Migration Toolkit for Virtualization | ||
| maturity: dp | ||
| assets: [mtv-operator] | ||
|
|
||
| - name: MetalLB Operator | ||
| description: Bare-metal load balancer for services | ||
| maturity: dp | ||
| assets: [metallb-operator] | ||
|
|
||
| - name: Logging | ||
| description: Integrated logging stack with LokiStack and ClusterLogForwarder | ||
| maturity: dp | ||
| groups: [logging, audit-logging] | ||
| requires: | ||
| - Loki Operator | ||
| - Red Hat OpenShift Logging Operator | ||
|
|
||
| - name: Troubleshooting Panel | ||
| description: Korrel8r observability signal correlation in the console | ||
| maturity: dp | ||
| assets: [troubleshooting-panel-ui-plugin] | ||
| requires: | ||
| - Cluster Observability Operator | ||
|
|
||
| - name: KubeVirt Metrics Exporter | ||
| description: Per-node VM storage I/O latency collection via QMP, QGA, and eBPF, and detailed KVM and memory statistics | ||
| maturity: dp | ||
| groups: [metrics-exporter] | ||
| recommended: | ||
| - Cluster Observability Operator | ||
|
|
||
| - name: In-Flight Operations | ||
|
tiraboschi marked this conversation as resolved.
|
||
| description: OperationRuleSet-based coordination for safe concurrent operations | ||
| groups: [inflightoperations] | ||
|
|
||
| - name: Kernel Samepage Merging (KSM) zero pages only | ||
| description: Node-level KSM tuning that enables zero-pages-only deduplication with adaptive scan rate | ||
| maturity: dp | ||
| groups: [ksm-zero-only] | ||
|
|
||
| - name: Transparent Huge Pages (THP) Tuning | ||
| description: Node-level THP tuning that sets madvise mode and khugepaged scan rate for KVM guest memory | ||
| maturity: dp | ||
| groups: [thp-tuning] | ||
|
|
||
| - name: NHC with FAR remediator and SBR detection-mode config | ||
| description: Node health checks with fence-agents remediation and storage-based remediation in detection-only mode | ||
| maturity: dp | ||
| assets: [nhc-far, sbr-detection-config] | ||
| requires: | ||
| - Node Health Check Operator | ||
| - Fence Agents Remediation Operator | ||
| - Storage Based Remediation Operator | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
was it missing? does it belong to this PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.