in teamcity-kubernetes-plugin-server/src/main/java/jetbrains/buildServer/clouds/kubernetes/web/KubeProfileEditController.java [117:154]
protected void doPost(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Element xmlResponse) {
if(isTestConnection(request)){
final KubeApiConnection connectionSettings = new RequestKubeApiConnection(request);
final KubeAuthStrategy strategy = myAuthStrategyProvider.get(connectionSettings.getAuthStrategy());
try (final KubeApiConnectorImpl apiConnector = new KubeApiConnectorImpl(getProfileId(request), connectionSettings, strategy, myCredentialsFactory)) {
KubeApiConnectionCheckResult connectionCheckResult = IOGuard.allowNetworkCall(()->apiConnector.testConnection());
if(!connectionCheckResult.isSuccess()){
if (strategy.isRefreshable() && connectionCheckResult.isNeedRefresh()){
final KubeApiConnectionCheckResult retryResult = IOGuard.allowNetworkCall(()->{
apiConnector.invalidate();
return apiConnector.testConnection();
});
if (retryResult.isSuccess()){
return;
}
}
final String checkResultMessage = connectionCheckResult.getMessage();
LOG.debug("Error while checking connection to k8s API. " + checkResultMessage);
final ActionErrors errors = new ActionErrors();
errors.addError("connection", checkResultMessage);
writeErrors(xmlResponse, errors);
}
} catch (Exception ex){
LOG.debug(ex);
final ActionErrors errors = new ActionErrors();
final String errorMessage;
if (ex.getCause() != null) {
errorMessage = ex.getMessage() + ": " + ex.getCause().getMessage();
} else {
errorMessage = ex.getMessage();
}
errors.addError("connection", errorMessage);
writeErrors(xmlResponse, errors);
}
}
}