Skip to content

Commit 3d98227

Browse files
author
Harshit Gupta
committed
Pass hypervisor params to node-labeller from KVConfig
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>
1 parent 83bb8d8 commit 3d98227

File tree

4 files changed

+35
-9
lines changed

4 files changed

+35
-9
lines changed

pkg/virt-operator/resource/generate/components/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ go_library(
2828
"//pkg/certificates/bootstrap:go_default_library",
2929
"//pkg/certificates/triple:go_default_library",
3030
"//pkg/certificates/triple/cert:go_default_library",
31-
"//pkg/hypervisor/kvm:go_default_library",
31+
"//pkg/hypervisor:go_default_library",
3232
"//pkg/pointer:go_default_library",
3333
"//pkg/storage/reservation:go_default_library",
3434
"//pkg/util:go_default_library",

pkg/virt-operator/resource/generate/components/daemonsets.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
virtv1 "kubevirt.io/api/core/v1"
1515

16-
"kubevirt.io/kubevirt/pkg/hypervisor/kvm"
16+
"kubevirt.io/kubevirt/pkg/hypervisor"
1717
"kubevirt.io/kubevirt/pkg/pointer"
1818
"kubevirt.io/kubevirt/pkg/storage/reservation"
1919
"kubevirt.io/kubevirt/pkg/util"
@@ -138,7 +138,7 @@ func NewHandlerDaemonSet(config *operatorutil.KubeVirtDeploymentConfig, productN
138138
pod.ServiceAccountName = HandlerServiceAccountName
139139
pod.HostPID = true
140140

141-
launcherHypervisorResources := kvm.NewKvmLauncherHypervisorResources()
141+
launcherHypervisorResources := hypervisor.NewLauncherHypervisorResources(config.GetHypervisorName())
142142

143143
// nodelabeller currently only support x86. The arch check will be done in node-labller.sh
144144
pod.InitContainers = []corev1.Container{

pkg/virt-operator/util/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ go_library(
1313
visibility = ["//visibility:public"],
1414
deps = [
1515
"//pkg/controller:go_default_library",
16+
"//pkg/virt-config:go_default_library",
1617
"//pkg/virt-config/featuregate:go_default_library",
1718
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
1819
"//staging/src/kubevirt.io/client-go/kubecli:go_default_library",

pkg/virt-operator/util/config.go

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
v1 "kubevirt.io/api/core/v1"
3838
"kubevirt.io/client-go/log"
3939

40+
virtconfig "kubevirt.io/kubevirt/pkg/virt-config"
4041
"kubevirt.io/kubevirt/pkg/virt-config/featuregate"
4142
)
4243

@@ -84,6 +85,9 @@ const (
8485
// lookup key in AdditionalProperties
8586
AdditionalPropertiesPersistentReservationEnabled = "PersistentReservationEnabled"
8687

88+
// lookup key in AdditionalProperties
89+
AdditionalPropertiesHypervisorName = "HypervisorName"
90+
8791
// lookup key in AdditionalProperties
8892
AdditionalPropertiesSynchronizationPort = "SynchronizationPort"
8993
DefaultSynchronizationPort int32 = 9185
@@ -158,13 +162,14 @@ func GetTargetConfigFromKVWithEnvVarManager(kv *v1.KubeVirt, envVarManager EnvVa
158162
kv.Spec.Configuration.MigrationConfiguration.Network != nil {
159163
additionalProperties[AdditionalPropertiesMigrationNetwork] = *kv.Spec.Configuration.MigrationConfiguration.Network
160164
}
161-
if kv.Spec.Configuration.DeveloperConfiguration != nil && len(kv.Spec.Configuration.DeveloperConfiguration.FeatureGates) > 0 {
162-
for _, v := range kv.Spec.Configuration.DeveloperConfiguration.FeatureGates {
163-
if v == featuregate.PersistentReservation {
164-
additionalProperties[AdditionalPropertiesPersistentReservationEnabled] = ""
165-
}
166-
}
165+
166+
if isFeatureGateEnabledInKvConfig(&kv.Spec.Configuration, featuregate.PersistentReservation) {
167+
additionalProperties[AdditionalPropertiesPersistentReservationEnabled] = ""
167168
}
169+
170+
hypervisor := virtconfig.GetHypervisorFromKvConfig(&kv.Spec.Configuration, isFeatureGateEnabledInKvConfig(&kv.Spec.Configuration, featuregate.ConfigurableHypervisor))
171+
additionalProperties[AdditionalPropertiesHypervisorName] = hypervisor.Name
172+
168173
// don't use status.target* here, as that is always set, but we need to know if it was set by the spec and with that
169174
// overriding shasums from env vars
170175
return getConfig(kv.Spec.ImageRegistry,
@@ -174,6 +179,17 @@ func GetTargetConfigFromKVWithEnvVarManager(kv *v1.KubeVirt, envVarManager EnvVa
174179
envVarManager)
175180
}
176181

182+
func isFeatureGateEnabledInKvConfig(kvConfig *v1.KubeVirtConfiguration, featureGate string) bool {
183+
if kvConfig.DeveloperConfiguration != nil && len(kvConfig.DeveloperConfiguration.FeatureGates) > 0 {
184+
for _, v := range kvConfig.DeveloperConfiguration.FeatureGates {
185+
if v == featureGate {
186+
return true
187+
}
188+
}
189+
}
190+
return false
191+
}
192+
177193
func getKVMapFromSpec(spec v1.KubeVirtSpec) map[string]string {
178194
kvMap := make(map[string]string)
179195
v := reflect.ValueOf(spec)
@@ -491,6 +507,15 @@ func (c *KubeVirtDeploymentConfig) GetImagePullSecrets() []k8sv1.LocalObjectRefe
491507
return data
492508
}
493509

510+
func (c *KubeVirtDeploymentConfig) GetHypervisorName() string {
511+
value, enabled := c.AdditionalProperties[AdditionalPropertiesHypervisorName]
512+
if enabled {
513+
return value
514+
} else {
515+
return v1.KvmHypervisorName
516+
}
517+
}
518+
494519
func (c *KubeVirtDeploymentConfig) PersistentReservationEnabled() bool {
495520
_, enabled := c.AdditionalProperties[AdditionalPropertiesPersistentReservationEnabled]
496521
return enabled

0 commit comments

Comments
 (0)