From 90db24f28935f590fccdbc135fa59d1b04428bf2 Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Tue, 28 May 2024 12:15:32 -0300 Subject: [PATCH] Fix network cleanup in case of CKS cluster failure --- .../cluster/KubernetesClusterManagerImpl.java | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java index d75b009103a..b301347e549 100644 --- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java +++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java @@ -1436,31 +1436,22 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne } Map templateNodeTypeMap = cmd.getTemplateNodeTypeMap(); + final VMTemplateVO finalTemplate = getKubernetesServiceTemplate(zone, hypervisorType, templateNodeTypeMap, DEFAULT); + final VMTemplateVO controlNodeTemplate = getKubernetesServiceTemplate(zone, hypervisorType, templateNodeTypeMap, CONTROL); + final VMTemplateVO workerNodeTemplate = getKubernetesServiceTemplate(zone, hypervisorType, templateNodeTypeMap, WORKER); + final VMTemplateVO etcdNodeTemplate = getKubernetesServiceTemplate(zone, hypervisorType, templateNodeTypeMap, ETCD); final Network defaultNetwork = getKubernetesClusterNetworkIfMissing(cmd.getName(), zone, owner, (int)controlNodeCount, (int)clusterSize, cmd.getExternalLoadBalancerIpAddress(), cmd.getNetworkId()); - VMTemplateVO finalTemplate = null; - VMTemplateVO controlNodeTemplate = null; - VMTemplateVO workerNodeTemplate = null; - VMTemplateVO etcdNodeTemplate = null; - finalTemplate = getKubernetesServiceTemplate(zone, hypervisorType, templateNodeTypeMap, DEFAULT); - controlNodeTemplate = getKubernetesServiceTemplate(zone, hypervisorType, templateNodeTypeMap, CONTROL); - workerNodeTemplate = getKubernetesServiceTemplate(zone, hypervisorType, templateNodeTypeMap, WORKER); - etcdNodeTemplate = getKubernetesServiceTemplate(zone, hypervisorType, templateNodeTypeMap, ETCD); - - final ServiceOffering defaultServiceOffering = serviceOfferingDao.findById(defaultServiceOfferingId); - Pair capacityPair = calculateClusterCapacity(serviceOfferingNodeTypeMap, nodeTypeCount, defaultServiceOfferingId); - final long cores = capacityPair.first(); - final long memory = capacityPair.second(); - final SecurityGroup finalSecurityGroup = securityGroup; - VMTemplateVO finalDefaultTemplate = finalTemplate; - VMTemplateVO finalControlNodeTemplate = controlNodeTemplate; - VMTemplateVO finalEtcdNodeTemplate = etcdNodeTemplate; - VMTemplateVO finalWorkerNodeTemplate = workerNodeTemplate; final KubernetesClusterVO cluster = Transaction.execute(new TransactionCallback() { @Override public KubernetesClusterVO doInTransaction(TransactionStatus status) { + final ServiceOffering defaultServiceOffering = serviceOfferingDao.findById(defaultServiceOfferingId); + Pair capacityPair = calculateClusterCapacity(serviceOfferingNodeTypeMap, nodeTypeCount, defaultServiceOfferingId); + final long cores = capacityPair.first(); + final long memory = capacityPair.second(); + KubernetesClusterVO newCluster = new KubernetesClusterVO(cmd.getName(), cmd.getDisplayName(), zone.getId(), clusterKubernetesVersion.getId(), - defaultServiceOffering.getId(), Objects.nonNull(finalDefaultTemplate) ? finalDefaultTemplate.getId() : null, + defaultServiceOffering.getId(), Objects.nonNull(finalTemplate) ? finalTemplate.getId() : null, defaultNetwork.getId(), owner.getDomainId(), owner.getAccountId(), controlNodeCount, clusterSize, KubernetesCluster.State.Created, cmd.getSSHKeyPairName(), cores, memory, cmd.getNodeRootDiskSize(), "", KubernetesCluster.ClusterType.CloudManaged); @@ -1471,24 +1462,23 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne newCluster.setControlServiceOfferingId(serviceOfferingNodeTypeMap.get(CONTROL.name())); } if (etcdNodes > 0) { - newCluster.setEtcdTemplateId(finalEtcdNodeTemplate.getId()); + newCluster.setEtcdTemplateId(etcdNodeTemplate.getId()); newCluster.setEtcdNodeCount(etcdNodes); if (serviceOfferingNodeTypeMap.containsKey(ETCD.name())) { newCluster.setEtcdServiceOfferingId(serviceOfferingNodeTypeMap.get(ETCD.name())); } } - newCluster.setWorkerTemplateId(finalWorkerNodeTemplate.getId()); - newCluster.setControlTemplateId(finalControlNodeTemplate.getId()); + newCluster.setWorkerTemplateId(workerNodeTemplate.getId()); + newCluster.setControlTemplateId(controlNodeTemplate.getId()); if (zone.isSecurityGroupEnabled()) { newCluster.setSecurityGroupId(finalSecurityGroup.getId()); } kubernetesClusterDao.persist(newCluster); + addKubernetesClusterDetails(newCluster, defaultNetwork, cmd); return newCluster; } }); - addKubernetesClusterDetails(cluster, defaultNetwork, cmd); - if (logger.isInfoEnabled()) { logger.info(String.format("Kubernetes cluster name: %s and ID: %s has been created", cluster.getName(), cluster.getUuid())); }