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