Skip to content

Multi-Hypervisor Node Labeller changes for comparison#111

Draft
harshitgupta1337 wants to merge 96 commits intomultihypervisor/1-controllerfrom
multihypervisor/2-node-labeller
Draft

Multi-Hypervisor Node Labeller changes for comparison#111
harshitgupta1337 wants to merge 96 commits intomultihypervisor/1-controllerfrom
multihypervisor/2-node-labeller

Conversation

@harshitgupta1337
Copy link
Collaborator

@harshitgupta1337 harshitgupta1337 commented Feb 10, 2026

What this PR does

This PR decouples the node-labeler component from KVM. It passes the correct hypervisor device and virt-type to the node-labeller.sh script by using the LauncherHypervisorResources interface.

References

Why we need it and why it was done in this way

The following tradeoffs were made:

The following alternatives were considered:

Links to places where the discussion took place:

Special notes for your reviewer

Checklist

This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR.
Approvers are expected to review this list.

Release note


Dsanatar and others added 22 commits January 22, 2026 13:07
in hotplug tests.

Signed-off-by: dsanatar <dsanatar@redhat.com>
Signed-off-by: dsanatar <dsanatar@redhat.com>
…bevirtci

Flannel has been the default in kubevirtci for a number of months[1] so this is no longer required to be configured.

[1] kubevirt/kubevirtci#1526

Signed-off-by: Brian Carey <brian.carey@protonmail.com>
…test

Signed-off-by: Jed Lejosne <jed@redhat.com>
Signed-off-by: Jed Lejosne <jed@redhat.com>
This feature gate will be responsible for:
- disabling VMI controller's NetworkAttachmentDefinition query.
- disabling the deployment of NetworkAttachmentDefinition-related RBAC
  rules.

This is part of VEP 106 [1].

[1] kubevirt/enhancements#106

Signed-off-by: Orel Misan <omisan@redhat.com>
Currently, the VMI controller queries kube-api for each secondary
network present on the VMI.
It then requires ths relevant resources on the virt-launcher pod's
compute container in order to assist with scheduling.

Conditionally disable this logic in case the
`DisableNADResourceInjection` feature gate is enabled.
This is done in preparation for dropping KubeVirt's dependency on
NetworkAttachmentDefinition objects as part of VEP 106 [1].

Users may deploy [2] before enabling this feature gate in case they
require the disabled functionality (using SR-IOV, bridge-marker, etc).

[1] kubevirt/enhancements#106
[2] https://github.com/k8snetworkplumbingwg/network-resources-injector

Signed-off-by: Orel Misan <omisan@redhat.com>
Following [1], the kind-sriov provider deploys the
network-resources-injector [2].

Enable the FG to disable NAD query so [2] will query
the NAD objects and mutate the virt-launcher pods to have the correct
network resources.

The SR-IOV tests are already serial, so they shouldn't take a
significant runtime hit by enabling the feature gate.

[1] kubevirt/kubevirtci#1609
[2] https://github.com/k8snetworkplumbingwg/network-resources-injector

Signed-off-by: Orel Misan <omisan@redhat.com>
Replaces QuiesceFailed indication with QuiesceTimeout to better reflect
Windows VSS 10-second limitation. When the freeze window times out before
snapshot completion, the QuiesceTimeout indication is set instead.

Signed-off-by: Noam Assouline <nassouli@redhat.com>
Sets pre.hook.backup.velero.io/timeout annotation to 60s on virt-launcher pods.
Also increases gRPC timeout for freeze operations to 60s in virt-handler client.
This allows sufficient time to complete the freeze operation during backups.

Signed-off-by: Noam Assouline <nassouli@redhat.com>
kubevirt#16616 quarantined the 2 tests
under the with error disk context. While the first test that runs has a
legitimate failure that's caused by a regression in the QEMU version
that KubeVirt currently uses[1], the second test fails because the
scsi_debug cleanup was failing silently.

This commit changes the test cleanup logic to ensure that scsi_debug
runs after the referenced disk is no longer in-use and dequarantines the
affected test.

[1] https://issues.redhat.com/browse/RHEL-144004

Signed-off-by: Adi Aloni <aaloni@redhat.com>
… kubevirt_virt_operator_ready to use sum and * instead of count and +

Signed-off-by: ronilerr <rrabinov@redhat.com>
…eeze-command-timeout

Improve handling of Windows VSS fsfreeze limitations
Introduce a builder pattern to help with the simplification of
`DomainConfigurator.configureInterface`.

Signed-off-by: Orel Misan <omisan@redhat.com>
Currently, the logic responsible for configuring the interface's driver
field is spread across the file.

Extract all of it into a single function.

Signed-off-by: Orel Misan <omisan@redhat.com>
Signed-off-by: Orel Misan <omisan@redhat.com>
Signed-off-by: Orel Misan <omisan@redhat.com>
Use the builder for setting:
- Interface Type
- Boot order
- ROM

Signed-off-by: Orel Misan <omisan@redhat.com>
Signed-off-by: Orel Misan <omisan@redhat.com>
VEP 106: virt-ctrl, template: Conditionally disable NAD query
Signed-off-by: Martin Sivak <msivak@redhat.com>
PDBsForVMI is not a very useful function anymore, keep util leaner.

Signed-off-by: Dan Kenigsberg <danken@redhat.com>
@harshitgupta1337 harshitgupta1337 force-pushed the multihypervisor/2-node-labeller branch from a8e4a22 to 3d98227 Compare February 10, 2026 22:53
kubevirt-bot and others added 7 commits February 11, 2026 02:27
Fix virt-controller and virt-operator status recording rules and update e2e tests
VolumeNamePolicy was added to VirtualMachineClone by
ed81071 and wired down into the
resulting VirtualMachineRestore as a VolumeRestorePolicy by
dd42fb8. Initially this was limited to
the existing RandomizeNames policy through a simple openapi validation.

PrefixTargetName was then added as a supported VolumeRestorePolicy for
VirtualMachineRestore by a3306c8.

This commit allows the use of PrefixTargetName as a VolumeNamePolicy by
VirtualMachineClone that will map into a PrefixTargetName
VolumeRestorePolicy used by the eventual VirtualMachineRestore.

Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Add the Template feature gate which will enable the deployment of
virt-template through virt-operator.

Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Add the VirtTemplateDeployment configurable which will allow to control
the deploymennt of virt-template through virt-operator.

Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Bundle the install-virt-operator.yaml of virt-template into
virt-operator and add a parser that will allow to use the contents of
the bundle from virt-operator's generation code.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Add a generator for the certificate secrets required by virt-template to
virt-operator.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
nirdothan and others added 29 commits February 15, 2026 10:34
Add passt binding support in netpod discovery and configuration phases
as part of the migration from binding plugin to core binding. Discover
and cache passt interface data. Configure privileged network settings
(PingGroupRange and UnprivilegedPortStart) required for passt to
function properly.

Signed-off-by: Nir Dothan <ndothan@redhat.com>
Interfaces types that do not go through phase2
of network discovery should configure user specified
MAC addresses at converter stage.

This leaves a tiny bit of redundant code in [1], which will be handled
in a follow-up.
[1] https://github.com/kubevirt/kubevirt/blob/v1.8.0-alpha.0/pkg/network/domainspec/generators.go#L83

Signed-off-by: Nir Dothan <ndothan@redhat.com>
passt binding uses a vhostuser interface configuration in the
domain XML. Its configuration options are significantly different
from tap based bindings, which are configured as Ethernet type.
Split the options between tap and passt, and augment some converter
tests to follow the tap flow, as passt has a dedicated test file its own
flow.

Implement passt interface creation with vhostuser interface type,
passt backend, port forwarding, and shared memory backing configuration.
Support interface attributes and Istio proxy injection handling.

Assisted by Cursor AI

Signed-off-by: Nir Dothan <ndothan@redhat.com>
Extract binding-specific logic from configureInterface into dedicated
methods tapBindingOptions and passtBindingOptions. This reduces the
cyclomatic complexity from 16 to well under the linter threshold of 15,
while improving readability by grouping each binding type's configuration
in its own method.

Signed-off-by: Nir Dothan <ndothan@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
PasstBinding doesn't require DHCP or Tap
device. The entire configuration is completed
in the converter step.
Skip this stage as done for BP and SR-IOV.

Signed-off-by: Nir Dothan <ndothan@redhat.com>
Replicate passt binding plugin tests and replace BP with core binding
as part of the migration of passt binding plugin to the core.

Add passt test to linter exceptions, as was done with
bindingplugin_passt.go

Signed-off-by: Nir Dothan <ndothan@redhat.com>
Revert e21905d, excluding
passt BP tests on top of passt core binding tests.
Those tests are deliberately duplicate, and passt BP tests
will be removed in v1.9.

Signed-off-by: Nir Dothan <ndothan@redhat.com>
[9ec4ec1 kind: Introduce kind-1.35 provider](kubevirt/kubevirtci#1625)
[034a027 Automatic bump of CentOS Stream to latest](kubevirt/kubevirtci#1623)
[6a20d60 Run go run ./robots/kubevirtci-bumper -ensure-last-three-minor-of v1 --k8s-provider-dir /home/prow/go/src/github.com/kubevirt/project-infra/../kubevirtci/cluster-provision/k8s](kubevirt/kubevirtci#1624)
[266ffff chore: Remove old kind-1.33-vgpu cluster provider as no longer needed](kubevirt/kubevirtci#1622)

```release-note
NONE
```

Signed-off-by: kubevirt-bot <kubevirtbot@redhat.com>
…-to-guest-checks

tests: replace libvirt domain XML checks with guest-side verification
net: Passt Beta core backend implementation
Currently passt-repair is only called if the migrated
VMI has a binding plugin (any binding not just passt).
Following the introduction of passt core binding,
seamless migration is only supported if the VMI has
the core passt binding.
Replace the condition to run passt repair accordingly.
Adapt unit tests to modified functionality.
This commit does not modify function signatures,
such that callers are not impacted.
The following commit removes the unused parameters.

Signed-off-by: Nir Dothan <ndothan@redhat.com>
automation: Remove KUBEVIRT_FLANNEL as this is now the default for kubevirtci
Following the introduction of passt core binding,
the signatures and Feature Gates for calling
the passt-repair wrapper are changed.
Remove unused arguments and FG.
Adapt unit tests accordingly.

Signed-off-by: Nir Dothan <ndothan@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Following the introduction of passt core binding,
seamless migration with passt binding plugin
is no longer supported, hence the FG has no use.
Passt network binding plugin is still supported
(without seamaless migration)
though and does not require a FG.

Signed-off-by: Nir Dothan <ndothan@redhat.com>
Signed-off-by: avlitman <alitman@redhat.com>
parallelized suites:
- VM status metrics
- VM snapshot metrics
- VM metrics based on the guest agent
- Metrics based on VMI connections
- VM dirty rate metrics
- Kubevirt alert rules
- Migration Alerts
- Deprecation Alerts

kept disruptive suites Serial:
- Cluster VM metrics
- VM migration metrics
- VM alerts
- System Alerts

updated to use shared vm/i:
- VMI metrics

Signed-off-by: avlitman <alitman@redhat.com>
container-disk tests: fix alpine vs cirros mismatch
virt-operator: Add support for deploying virt-template components
Fixed incorrect reference path to log package in logging.md
…errors

tests, storage: dequarantine should report IO errors in the guest
fix(dockerized): avoid container cleanup affecting build
tests, instance types: Remove deprecated gomnd from nolint directive
Parallelize observability functional tests
…migration

net, passt: Support seamless migration with core binding
Signed-off-by: Harshit Gupta <guptaharshit@microsoft.com>
Rename the struct implementing KVM's version of the hypervisor interface
to KvmHypervisorBackend because it matches its purpose. The struct
serves as the implementation for multiple hypervisor interfaces.

Signed-off-by: Harshit Gupta <guptaharshit@microsoft.com>
Add env vars to the node-labeller.sh script to specify the
hypervisor device (e.g., kvm or mshv) and the LibVirt virt-type
of VMs on that hypervisor. Update the defn of the virt-handler
daemonset to pass the default KVM-specific values to the script.
If either of the env vars are not specified by the script caller the
default KVM value is set for both the variables.

Signed-off-by: Harshit Gupta <guptaharshit@microsoft.com>
Add HypervisorName to KubeVirtDeploymentConfig.AdditionalProperties.
Extract HypervisorName from KubeVirtConfiguration.
Invoke the LauncherResourceRenderer interface to fetch hypervisor dev
and virtType to pass to node-labeller.

Signed-off-by: Harshit Gupta <guptaharshit@microsoft.com>
@harshitgupta1337 harshitgupta1337 force-pushed the multihypervisor/2-node-labeller branch from 1044303 to 6863b0b Compare February 18, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.