Skip to content

Commit

Permalink
UDN: Add managedTap to Kubevirt CR
Browse files Browse the repository at this point in the history
Kubevirt introduce new binding for seamless migration, instead the Passt one.
kubevirt/kubevirt#13024
This commit adds support to it via the Kubevirt CR.

Signed-off-by: Or Shoval <oshoval@redhat.com>
  • Loading branch information
oshoval committed Oct 13, 2024
1 parent f9d1adf commit f979cbf
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
11 changes: 10 additions & 1 deletion controllers/operands/kubevirt.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ const (
)

const (
primaryUDNNetworkBindingName = "passt"
primaryUDNNetworkBindingName = "passt"
managedTapUDNNetworkBindingName = "managedTap"
// Needs to align with the NAD that will be deployed by CNAO
primaryUDNNetworkBindingNADName = "primary-udn-kubevirt-binding"
primaryUDNNetworkBindingNADNamespace = "default"
Expand Down Expand Up @@ -534,6 +535,7 @@ func getNetworkBindings(

sidecarImage, _ := os.LookupEnv(hcoutil.PrimaryUDNImageEnvV)
networkBindings[primaryUDNNetworkBindingName] = primaryUserDefinedNetworkBinding(sidecarImage)
networkBindings[managedTapUDNNetworkBindingName] = managedTapUserDefinedNetworkBinding()
}
return networkBindings

Expand Down Expand Up @@ -778,6 +780,13 @@ func primaryUserDefinedNetworkBinding(sidecarImage string) kubevirtcorev1.Interf
}
}

func managedTapUserDefinedNetworkBinding() kubevirtcorev1.InterfaceBindingPlugin {
return kubevirtcorev1.InterfaceBindingPlugin{
DomainAttachmentType: managedTapUDNNetworkBindingName,
Migration: &kubevirtcorev1.InterfaceBindingMigration{},
}
}

// Static for now, could be configured in the HCO CR in the future
func getKVSeccompConfig() *kubevirtcorev1.SeccompConfiguration {
return &kubevirtcorev1.SeccompConfiguration{
Expand Down
5 changes: 3 additions & 2 deletions controllers/operands/kubevirt_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2153,7 +2153,7 @@ Version: 1.2.3`)

Expect(existingResource.Spec.Configuration.NetworkConfiguration).NotTo(BeNil())
Expect(existingResource.Spec.Configuration.NetworkConfiguration.Binding).NotTo(BeNil())
expectedInterfaceBindingPlugin := kubevirtcorev1.InterfaceBindingPlugin{
expectedPasstInterfaceBindingPlugin := kubevirtcorev1.InterfaceBindingPlugin{
NetworkAttachmentDefinition: primaryUDNNetworkBindingNADNamespace + "/" + primaryUDNNetworkBindingNADName,
SidecarImage: expectedPrimaryUDNImage,
Migration: &kubevirtcorev1.InterfaceBindingMigration{
Expand All @@ -2165,7 +2165,8 @@ Version: 1.2.3`)
},
},
}
Expect(existingResource.Spec.Configuration.NetworkConfiguration.Binding[primaryUDNNetworkBindingName]).To(Equal(expectedInterfaceBindingPlugin))
Expect(existingResource.Spec.Configuration.NetworkConfiguration.Binding).To(HaveKeyWithValue(managedTapUDNNetworkBindingName, managedTapUserDefinedNetworkBinding()))
Expect(existingResource.Spec.Configuration.NetworkConfiguration.Binding).To(HaveKeyWithValue(primaryUDNNetworkBindingName, expectedPasstInterfaceBindingPlugin))
})

It("should not add the Primary User Defined Network Binding to Kubevirt CR if PrimaryUserDefinedNetworkBinding is false in HyperConverged CR", func() {
Expand Down

0 comments on commit f979cbf

Please sign in to comment.