diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesServiceHelperImpl.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesServiceHelperImpl.java index 1b149a97de2..9551142d24e 100644 --- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesServiceHelperImpl.java +++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesServiceHelperImpl.java @@ -84,6 +84,9 @@ public class KubernetesServiceHelperImpl extends AdapterBase implements Kubernet KubernetesCluster kubernetesCluster = kubernetesClusterDao.findById(vmMapVO.getClusterId()); String msg = "Instance is a part of a Kubernetes cluster"; if (kubernetesCluster != null) { + if (KubernetesCluster.ClusterType.ExternalManaged.equals(kubernetesCluster.getClusterType())) { + return; + } msg += String.format(": %s", kubernetesCluster.getName()); } msg += ". Use Instance delete option from Kubernetes cluster details or scale API for " + diff --git a/plugins/integrations/kubernetes-service/src/test/java/com/cloud/kubernetes/cluster/KubernetesServiceHelperImplTest.java b/plugins/integrations/kubernetes-service/src/test/java/com/cloud/kubernetes/cluster/KubernetesServiceHelperImplTest.java index 8749fe2b7dc..3e6688e8757 100644 --- a/plugins/integrations/kubernetes-service/src/test/java/com/cloud/kubernetes/cluster/KubernetesServiceHelperImplTest.java +++ b/plugins/integrations/kubernetes-service/src/test/java/com/cloud/kubernetes/cluster/KubernetesServiceHelperImplTest.java @@ -58,14 +58,30 @@ public class KubernetesServiceHelperImplTest { } @Test(expected = CloudRuntimeException.class) - public void testCheckVmCanBeDestroyedInCluster() { + public void testCheckVmCanBeDestroyedInCloudManagedCluster() { UserVm vm = Mockito.mock(UserVm.class); Mockito.when(vm.getId()).thenReturn(1L); Mockito.when(vm.getUserVmType()).thenReturn(UserVmManager.CKS_NODE); KubernetesClusterVmMapVO map = Mockito.mock(KubernetesClusterVmMapVO.class); Mockito.when(map.getClusterId()).thenReturn(1L); Mockito.when(kubernetesClusterVmMapDao.findByVmId(1L)).thenReturn(map); - Mockito.when(kubernetesClusterDao.findById(1L)).thenReturn(Mockito.mock(KubernetesClusterVO.class)); + KubernetesClusterVO kubernetesCluster = Mockito.mock(KubernetesClusterVO.class); + Mockito.when(kubernetesClusterDao.findById(1L)).thenReturn(kubernetesCluster); + Mockito.when(kubernetesCluster.getClusterType()).thenReturn(KubernetesCluster.ClusterType.CloudManaged); + kubernetesServiceHelper.checkVmCanBeDestroyed(vm); + } + + @Test + public void testCheckVmCanBeDestroyedInExternalManagedCluster() { + UserVm vm = Mockito.mock(UserVm.class); + Mockito.when(vm.getId()).thenReturn(1L); + Mockito.when(vm.getUserVmType()).thenReturn(UserVmManager.CKS_NODE); + KubernetesClusterVmMapVO map = Mockito.mock(KubernetesClusterVmMapVO.class); + Mockito.when(map.getClusterId()).thenReturn(1L); + Mockito.when(kubernetesClusterVmMapDao.findByVmId(1L)).thenReturn(map); + KubernetesClusterVO kubernetesCluster = Mockito.mock(KubernetesClusterVO.class); + Mockito.when(kubernetesClusterDao.findById(1L)).thenReturn(kubernetesCluster); + Mockito.when(kubernetesCluster.getClusterType()).thenReturn(KubernetesCluster.ClusterType.ExternalManaged); kubernetesServiceHelper.checkVmCanBeDestroyed(vm); } }