From 864071f50b5aca2402b923533828c6dbbf3bd0bd Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Wed, 10 Dec 2025 12:30:35 -0500 Subject: [PATCH 1/4] Prevent NPE when removing NIC from a stopped VM using service offering with CPU cap set --- server/src/main/java/com/cloud/hypervisor/KVMGuru.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/hypervisor/KVMGuru.java b/server/src/main/java/com/cloud/hypervisor/KVMGuru.java index 9edaa5e6d646..c178cc8bc53b 100644 --- a/server/src/main/java/com/cloud/hypervisor/KVMGuru.java +++ b/server/src/main/java/com/cloud/hypervisor/KVMGuru.java @@ -132,7 +132,8 @@ protected void setVmQuotaPercentage(VirtualMachineTO to, VirtualMachineProfile v VirtualMachine vm = vmProfile.getVirtualMachine(); HostVO host = hostDao.findById(vm.getHostId()); if (host == null) { - throw new CloudRuntimeException("Host with id: " + vm.getHostId() + " not found"); + logger.warn("Host is not available. Skipping CPU quota calculation for VM: {}", vm); + return; } logger.debug("Limiting CPU usage for VM: {} on host: {}", vm, host); double hostMaxSpeed = getHostCPUSpeed(host); From 07cf173867e57c50467e6e159c28d8fa3156807d Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Wed, 10 Dec 2025 12:51:02 -0500 Subject: [PATCH 2/4] fix test --- server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java b/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java index eea8bb9de680..eb11aca18177 100644 --- a/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java +++ b/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java @@ -141,10 +141,12 @@ public void testSetVmQuotaPercentage() { Mockito.verify(vmTO).setCpuQuotaPercentage(Mockito.anyDouble()); } - @Test(expected = CloudRuntimeException.class) + @Test public void testSetVmQuotaPercentageNullHost() { Mockito.when(hostDao.findById(hostId)).thenReturn(null); + Mockito.when(vm.getLastHostId()).thenReturn(null); guru.setVmQuotaPercentage(vmTO, vmProfile); + Mockito.verify(vmTO, Mockito.never()).setCpuQuotaPercentage(Mockito.anyDouble()); } @Test From 60e5ffc3ac9141453df5962e89dfd1112ae4d080 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Wed, 10 Dec 2025 13:06:30 -0500 Subject: [PATCH 3/4] removed unused import --- server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java b/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java index eb11aca18177..59ec3d2801dd 100644 --- a/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java +++ b/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java @@ -32,7 +32,6 @@ import com.cloud.storage.dao.GuestOSDao; import com.cloud.storage.dao.GuestOSHypervisorDao; import com.cloud.utils.Pair; -import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineProfile; import org.apache.cloudstack.api.ApiConstants; From 3dac8291bed9a0cb163733d8f3f30bfa0a7dfdaf Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Wed, 10 Dec 2025 13:20:40 -0500 Subject: [PATCH 4/4] fix test --- server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java b/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java index 59ec3d2801dd..07e19d99f394 100644 --- a/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java +++ b/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java @@ -143,7 +143,6 @@ public void testSetVmQuotaPercentage() { @Test public void testSetVmQuotaPercentageNullHost() { Mockito.when(hostDao.findById(hostId)).thenReturn(null); - Mockito.when(vm.getLastHostId()).thenReturn(null); guru.setVmQuotaPercentage(vmTO, vmProfile); Mockito.verify(vmTO, Mockito.never()).setCpuQuotaPercentage(Mockito.anyDouble()); }