Allow deletion of external managed cks nodes (#9183)

* Allow deleteion of external managed cks nodes

* Fix unit tests

* Update plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterHelperImpl.java

Co-authored-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
This commit is contained in:
Vishesh 2024-06-23 22:08:13 +05:30 committed by GitHub
parent f4612c51ec
commit 6a518e29b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 2 deletions

View File

@ -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 " +

View File

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