From 4bb67153ce9cdf844832941a0db74b872ed0c59e Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Thu, 2 Oct 2025 17:50:16 +0800 Subject: [PATCH] fix: set maxSockets : 1 if not enabled cpuMemoryhotplug (#539) --- pkg/harvester/mixins/harvester-vm/index.js | 4 +--- pkg/harvester/utils/cpuMemory.js | 11 +++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/pkg/harvester/mixins/harvester-vm/index.js b/pkg/harvester/mixins/harvester-vm/index.js index ebbd2496..9b0edb5c 100644 --- a/pkg/harvester/mixins/harvester-vm/index.js +++ b/pkg/harvester/mixins/harvester-vm/index.js @@ -687,14 +687,12 @@ export default { set(this.spec.template.spec, 'domain.memory.maxGuest', this.maxMemory); set(this.spec.template.spec, 'domain.resources.limits.memory', this.maxMemory); } else { + this.spec.template.spec.domain.cpu.maxSockets = 1; this.spec.template.spec.domain.cpu.sockets = 1; this.spec.template.spec.domain.cpu.cores = this.cpu; this.spec.template.spec.domain.resources.limits.cpu = this.cpu?.toString(); this.spec.template.spec.domain.resources.limits.memory = this.memory; // clean below fields as we don't need them if not enable CPU and memory hotplug - if (this.spec?.template?.spec?.domain?.cpu?.maxSockets) { - delete this.spec.template.spec.domain.cpu.maxSockets; - } if (this.spec?.template?.spec?.domain?.memory?.maxGuest) { delete this.spec.template.spec.domain.memory.maxGuest; } diff --git a/pkg/harvester/utils/cpuMemory.js b/pkg/harvester/utils/cpuMemory.js index 8ba47a8e..7883eaee 100644 --- a/pkg/harvester/utils/cpuMemory.js +++ b/pkg/harvester/utils/cpuMemory.js @@ -10,10 +10,12 @@ export function getVmCPUMemoryValues(vm) { } const isHotplugEnabled = isCPUMemoryHotPlugEnabled(vm); + const { sockets = 1, threads = 1, cores = 1 } = vm.spec.template.spec.domain.cpu || {}; + const cpu = sockets * threads * cores; if (isHotplugEnabled) { return { - cpu: vm.spec.template.spec.domain.cpu.sockets, + cpu, memory: vm.spec.template.spec.domain?.memory?.guest || null, maxCpu: vm.spec.template.spec.domain.cpu?.maxSockets || 0, maxMemory: vm.spec.template.spec.domain?.memory?.maxGuest || null, @@ -21,7 +23,7 @@ export function getVmCPUMemoryValues(vm) { }; } else { return { - cpu: vm.spec.template.spec.domain.cpu.cores, + cpu, memory: vm.spec.template.spec.domain.resources?.limits?.memory || null, isHotplugEnabled }; @@ -29,8 +31,5 @@ export function getVmCPUMemoryValues(vm) { } export function isCPUMemoryHotPlugEnabled(vm) { - return vm?.metadata?.annotations[HCI_ANNOTATIONS.VM_CPU_MEMORY_HOTPLUG] === 'true' || - !!vm?.spec?.template?.spec?.domain.cpu?.maxSockets || - !!vm?.spec?.template?.spec?.domain?.memory?.maxGuest || - false; + return vm?.metadata?.annotations[HCI_ANNOTATIONS.VM_CPU_MEMORY_HOTPLUG] === 'true' || !!vm?.spec?.template?.spec?.domain?.memory?.maxGuest || false; }