Skip to content

Commit 83bb8d8

Browse files
author
Harshit Gupta
committed
Add args to node-labeller script and pass KVM vals
Add cmdline args 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. Signed-off-by: Harshit Gupta <guptaharshit@microsoft.com>
1 parent c516222 commit 83bb8d8

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

cmd/virt-launcher/node-labeller/node-labeller.sh

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,23 @@
22

33
set -xeo pipefail
44

5+
while getopts d:t: flag; do
6+
case "${flag}" in
7+
d) HYPERVISOR_DEVICE=${OPTARG} ;;
8+
t) PREFERRED_VIRTTYPE=${OPTARG} ;;
9+
*)
10+
echo "Invalid option"
11+
exit 1
12+
;;
13+
esac
14+
done
15+
16+
if [ -z "$HYPERVISOR_DEVICE" ] || [ -z "$PREFERRED_VIRTTYPE" ]; then
17+
echo "Error: Missing required arguments."
18+
echo "Usage: $0 -d <HYPERVISOR_DEVICE> -t <PREFERRED_VIRTTYPE>"
19+
exit 1
20+
fi
21+
522
ARCH=$(uname -m)
623
MACHINE=q35
724
if [ "$ARCH" == "aarch64" ]; then
@@ -14,19 +31,19 @@ fi
1431

1532
set +o pipefail
1633

17-
KVM_MINOR=$(grep -w 'kvm' /proc/misc | cut -f 1 -d' ')
34+
HYPERVISOR_DEV_PATH="/dev/${HYPERVISOR_DEVICE}"
35+
HYPERVISOR_DEV_MINOR=$(grep -w ${HYPERVISOR_DEVICE} /proc/misc | cut -f 1 -d' ')
1836
set -o pipefail
1937

2038
VIRTTYPE=qemu
2139

22-
23-
if [ ! -e /dev/kvm ] && [ -n "$KVM_MINOR" ]; then
24-
mknod /dev/kvm c 10 $KVM_MINOR
40+
if [ ! -e "$HYPERVISOR_DEV_PATH" ] && [ -n "$HYPERVISOR_DEV_MINOR" ]; then
41+
mknod "$HYPERVISOR_DEV_PATH" c 10 "$HYPERVISOR_DEV_MINOR"
2542
fi
2643

27-
if [ -e /dev/kvm ]; then
28-
chmod o+rw /dev/kvm
29-
VIRTTYPE=kvm
44+
if [ -e "$HYPERVISOR_DEV_PATH" ]; then
45+
chmod o+rw "$HYPERVISOR_DEV_PATH"
46+
VIRTTYPE=${PREFERRED_VIRTTYPE}
3047
fi
3148

3249
if [ -e /dev/sev ]; then

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +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",
3132
"//pkg/pointer:go_default_library",
3233
"//pkg/storage/reservation:go_default_library",
3334
"//pkg/util:go_default_library",

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

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

16+
"kubevirt.io/kubevirt/pkg/hypervisor/kvm"
1617
"kubevirt.io/kubevirt/pkg/pointer"
1718
"kubevirt.io/kubevirt/pkg/storage/reservation"
1819
"kubevirt.io/kubevirt/pkg/util"
@@ -137,6 +138,8 @@ func NewHandlerDaemonSet(config *operatorutil.KubeVirtDeploymentConfig, productN
137138
pod.ServiceAccountName = HandlerServiceAccountName
138139
pod.HostPID = true
139140

141+
launcherHypervisorResources := kvm.NewKvmLauncherHypervisorResources()
142+
140143
// nodelabeller currently only support x86. The arch check will be done in node-labller.sh
141144
pod.InitContainers = []corev1.Container{
142145
{
@@ -147,7 +150,7 @@ func NewHandlerDaemonSet(config *operatorutil.KubeVirtDeploymentConfig, productN
147150
Image: launcherImage,
148151
Name: "virt-launcher",
149152
Args: []string{
150-
"node-labeller.sh",
153+
fmt.Sprintf("node-labeller.sh -d %s -t %s", launcherHypervisorResources.GetHypervisorDevice(), launcherHypervisorResources.GetVirtType()),
151154
},
152155
SecurityContext: &corev1.SecurityContext{
153156
Privileged: pointer.P(true),

0 commit comments

Comments
 (0)