def check_cluster_version()

in eland/cli/eland_import_hub_model.py [0:0]


def check_cluster_version(es_client, logger):
    es_info = es_client.info()

    if is_serverless_es(es_client):
        logger.info(f"Connected to serverless cluster '{es_info['cluster_name']}'")
        # Serverless is compatible
        # Return the latest known semantic version, i.e. this version
        return parse_es_version(__version__)

    # check the semantic version for none serverless clusters
    logger.info(
        f"Connected to cluster named '{es_info['cluster_name']}' (version: {es_info['version']['number']})"
    )

    sem_ver = parse_es_version(es_info["version"]["number"])
    major_version = sem_ver[0]

    # NLP models added in 8
    if major_version < 8:
        logger.error(
            f"Elasticsearch version {major_version} does not support NLP models. Please upgrade Elasticsearch to the latest version"
        )
        exit(1)
    elif major_version < 9:
        logger.error(
            "Eland 9.x does not support Elasticsearch 8.x. Please upgrade Elasticsearch first."
        )
        exit(1)

    return sem_ver