allow nic plug for stopped vm

This commit is contained in:
Manoj Kumar 2026-04-27 14:02:38 +05:30
parent 5f627aa70a
commit e997f4c227
No known key found for this signature in database
GPG Key ID: E952B7234D2C6F88
2 changed files with 5 additions and 4 deletions

View File

@ -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<VirtualMachine.State> 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);

View File

@ -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());
}