From e997f4c227538a2e455389363fdbd4ae3f9deacd Mon Sep 17 00:00:00 2001 From: Manoj Kumar Date: Mon, 27 Apr 2026 14:02:38 +0530 Subject: [PATCH] allow nic plug for stopped vm --- .../org/apache/cloudstack/dns/DnsProviderManagerImpl.java | 5 ++++- .../apache/cloudstack/dns/DnsProviderManagerImplTest.java | 4 +--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/org/apache/cloudstack/dns/DnsProviderManagerImpl.java b/server/src/main/java/org/apache/cloudstack/dns/DnsProviderManagerImpl.java index 50c97032058..8415251d2e8 100644 --- a/server/src/main/java/org/apache/cloudstack/dns/DnsProviderManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/dns/DnsProviderManagerImpl.java @@ -23,6 +23,7 @@ import static com.cloud.event.EventTypes.EVENT_NIC_UPDATE; import static com.cloud.event.EventTypes.EVENT_VM_UPDATE; import java.util.ArrayList; +import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -142,6 +143,8 @@ public class DnsProviderManagerImpl extends ManagerBase implements DnsProviderMa @Inject NicDnsJoinDao nicDnsJoinDao; + private static final Set VM_ALLOWED_STATES = EnumSet.of(VirtualMachine.State.Running, VirtualMachine.State.Stopped); + private DnsProvider getProviderByType(DnsProviderType type) { if (type == null) { throw new CloudRuntimeException("Provider type cannot be null"); @@ -1056,7 +1059,7 @@ public class DnsProviderManagerImpl extends ManagerBase implements DnsProviderMa void handleNicPlug(long instanceId, long nicId) { VirtualMachine instance = vmInstanceDao.findById(instanceId); - if (instance == null || instance.getState() != VirtualMachine.State.Running) { + if (instance == null || !VM_ALLOWED_STATES.contains(instance.getState())) { return; } NicDnsJoinVO nic = nicDnsJoinDao.findById(nicId); diff --git a/server/src/test/java/org/apache/cloudstack/dns/DnsProviderManagerImplTest.java b/server/src/test/java/org/apache/cloudstack/dns/DnsProviderManagerImplTest.java index 662a805cb5f..9b1ca59916a 100644 --- a/server/src/test/java/org/apache/cloudstack/dns/DnsProviderManagerImplTest.java +++ b/server/src/test/java/org/apache/cloudstack/dns/DnsProviderManagerImplTest.java @@ -1129,11 +1129,9 @@ public class DnsProviderManagerImplTest { @Test public void testHandleNicPlugVmNotRunningExitsEarly() throws DnsProviderException { com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); - when(instanceMock.getState()).thenReturn(com.cloud.vm.VirtualMachine.State.Stopped); + when(instanceMock.getState()).thenReturn(VirtualMachine.State.Destroyed); when(vmInstanceDao.findById(33L)).thenReturn(instanceMock); - manager.handleNicPlug(33L, 500L); - verify(nicDnsJoinDao, never()).findById(anyLong()); verify(dnsProviderMock, never()).addRecord(any(), any(), any()); }