protected void doPost()

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