public ClusterInfo mainInfo()

in mr/src/main/java/org/elasticsearch/hadoop/rest/RestClient.java [754:799]


    public ClusterInfo mainInfo() {
        Response response = execute(GET, "", true);
        Map<String, Object> result = parseContent(response.body(), null);
        if (result == null) {
            throw new EsHadoopIllegalStateException("Unable to retrieve elasticsearch main cluster info.");
        }
        String clusterName = result.get("cluster_name").toString();
        String clusterUUID = (String)result.get("cluster_uuid");
        @SuppressWarnings("unchecked")
        Map<String, String> versionBody = (Map<String, String>) result.get("version");
        if (versionBody == null || !StringUtils.hasText(versionBody.get("number"))) {
            throw new EsHadoopIllegalStateException("Unable to retrieve elasticsearch version.");
        }
        String versionNumber = versionBody.get("number");
        EsMajorVersion major = EsMajorVersion.parse(versionNumber);
        if (major.before(EsMajorVersion.V_6_X)) {
            throw new EsHadoopIllegalStateException("Invalid major version [" + major + "]. " +
                    "Version is lower than minimum required version [" + EsMajorVersion.V_6_X + "].");
        } else if (major.onOrAfter(V_6_X)) {
            String tagline = result.get("tagline").toString();
            if (ELASTICSEARCH_TAGLINE.equals(tagline) == false) {
                LOG.warn("Could not verify server is Elasticsearch! Invalid main action response body format [tag].");
            }
            if (major.onOrAfter(V_7_X)) {
                String buildFlavor = versionBody.get("build_flavor");
                if (ELASTICSEARCH_BUILD_FLAVOR.equals(buildFlavor) == false) {
                    LOG.warn("Could not verify server is Elasticsearch! Invalid main action response body format [build_flavor].");
                }

                List<String> productHeader = response.getHeaders(ELASTIC_PRODUCT_HEADER);
                boolean validElasticsearchHeader = productHeader != null && productHeader.size() == 1 && productHeader.get(0).equals(ELASTIC_PRODUCT_HEADER_VALUE);
                boolean verifyServer = (major.on(V_7_X) && major.parseMinorVersion(versionNumber) >= 14) || major.onOrAfter(V_8_X);
                if (validElasticsearchHeader == false) {
                    if (verifyServer) {
                        throw new EsHadoopTransportException("Connected, but could not verify server is Elasticsearch. Response missing [" +
                                ELASTIC_PRODUCT_HEADER + "] header. Please check that you are connecting to an Elasticsearch instance, and " +
                                "that any networking filters are preserving that header.");
                    } else {
                        LOG.warn("Could not verify server is Elasticsearch! ES-Hadoop will require server validation when connecting to an " +
                                "Elasticsearch cluster if that Elasticsearch cluster is v7.14 and up.");
                    }
                }
            }
        }
        return new ClusterInfo(new ClusterName(clusterName, clusterUUID), EsMajorVersion.parse(versionNumber));
    }