public void terminateInstance()

in teamcity-kubernetes-plugin-server/src/main/java/jetbrains/buildServer/clouds/kubernetes/KubeCloudClient.java [126:152]


    public void terminateInstance(@NotNull CloudInstance cloudInstance) {
        final KubeCloudInstance kubeCloudInstance = (KubeCloudInstance) cloudInstance;
        kubeCloudInstance.setStatus(InstanceStatus.SCHEDULED_TO_STOP);
        myExecutorService.submit(() -> {
            long gracePeriod = TeamCityProperties.getLong(TEAMCITY_KUBE_PODS_GRACE_PERIOD, 0);
            kubeCloudInstance.setStatus(InstanceStatus.STOPPING);
            try{
                int failedDeleteAttempts = 0;
                final String pvcName = kubeCloudInstance.getPVCName();
                while (!myApiConnector.deletePod(kubeCloudInstance.getName(), gracePeriod)){
                    failedDeleteAttempts++;
                    if(failedDeleteAttempts == 3) throw new KubeCloudException("Failed to delete pod " + kubeCloudInstance.getName());
                }
                failedDeleteAttempts = 0;
                while (pvcName != null && !myApiConnector.deletePVC(pvcName)){
                    failedDeleteAttempts++;
                    if(failedDeleteAttempts == 3) throw new KubeCloudException("Failed to delete PersistentVolumeClaim " + pvcName);
                }
                kubeCloudInstance.setError(null);
                kubeCloudInstance.setStatus(InstanceStatus.STOPPED);
            } catch (KubernetesClientException ex){
                kubeCloudInstance.setStatus(InstanceStatus.ERROR);
                kubeCloudInstance.setError(new CloudErrorInfo("Failed to terminate instance", ex.getMessage(), ex));
            }
            kubeCloudInstance.getImage().populateInstances();
        });
    }