# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
#
# IF YOU WANT TO MODIFY THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
# `get_provider_info_TEMPLATE.py.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY


def get_provider_info():
    return {
        "package-name": "apache-airflow-providers-elasticsearch",
        "name": "Elasticsearch",
        "description": "`Elasticsearch <https://www.elastic.co/elasticsearch>`__\n",
        "integrations": [
            {
                "integration-name": "Elasticsearch",
                "external-doc-url": "https://www.elastic.co/elasticsearch",
                "logo": "/docs/integration-logos/Elasticsearch.png",
                "tags": ["software"],
            }
        ],
        "hooks": [
            {
                "integration-name": "Elasticsearch",
                "python-modules": ["airflow.providers.elasticsearch.hooks.elasticsearch"],
            }
        ],
        "connection-types": [
            {
                "hook-class-name": "airflow.providers.elasticsearch.hooks.elasticsearch.ElasticsearchSQLHook",
                "hook-name": "Elasticsearch",
                "connection-type": "elasticsearch",
            }
        ],
        "logging": ["airflow.providers.elasticsearch.log.es_task_handler.ElasticsearchTaskHandler"],
        "config": {
            "elasticsearch": {
                "description": None,
                "options": {
                    "host": {
                        "description": "Elasticsearch host\n",
                        "version_added": "1.10.4",
                        "type": "string",
                        "example": None,
                        "default": "",
                    },
                    "log_id_template": {
                        "description": "Format of the log_id, which is used to query for a given tasks logs\n",
                        "version_added": "1.10.4",
                        "type": "string",
                        "example": None,
                        "is_template": True,
                        "default": "{dag_id}-{task_id}-{run_id}-{map_index}-{try_number}",
                    },
                    "end_of_log_mark": {
                        "description": "Used to mark the end of a log stream for a task\n",
                        "version_added": "1.10.4",
                        "type": "string",
                        "example": None,
                        "default": "end_of_log",
                    },
                    "frontend": {
                        "description": "Qualified URL for an elasticsearch frontend (like Kibana) with a template argument for log_id\nCode will construct log_id using the log_id template from the argument above.\nNOTE: scheme will default to https if one is not provided\n",
                        "version_added": "1.10.4",
                        "type": "string",
                        "example": "http://localhost:5601/app/kibana#/discover?_a=(columns:!(message),query:(language:kuery,query:'log_id: \"{log_id}\"'),sort:!(log.offset,asc))",
                        "default": "",
                    },
                    "write_stdout": {
                        "description": "Write the task logs to the stdout of the worker, rather than the default files\n",
                        "version_added": "1.10.4",
                        "type": "string",
                        "example": None,
                        "default": "False",
                    },
                    "write_to_es": {
                        "description": "Write the task logs to the ElasticSearch\n",
                        "version_added": "5.5.4",
                        "type": "string",
                        "example": None,
                        "default": "False",
                    },
                    "target_index": {
                        "description": "Name of the index to write to, when enabling writing the task logs to the ElasticSearch\n",
                        "version_added": "5.5.4",
                        "type": "string",
                        "example": None,
                        "default": "airflow-logs",
                    },
                    "json_format": {
                        "description": "Instead of the default log formatter, write the log lines as JSON\n",
                        "version_added": "1.10.4",
                        "type": "string",
                        "example": None,
                        "default": "False",
                    },
                    "json_fields": {
                        "description": "Log fields to also attach to the json output, if enabled\n",
                        "version_added": "1.10.4",
                        "type": "string",
                        "example": None,
                        "default": "asctime, filename, lineno, levelname, message",
                    },
                    "host_field": {
                        "description": "The field where host name is stored (normally either `host` or `host.name`)\n",
                        "version_added": "2.1.1",
                        "type": "string",
                        "example": None,
                        "default": "host",
                    },
                    "offset_field": {
                        "description": "The field where offset is stored (normally either `offset` or `log.offset`)\n",
                        "version_added": "2.1.1",
                        "type": "string",
                        "example": None,
                        "default": "offset",
                    },
                    "index_patterns": {
                        "description": "Comma separated list of index patterns to use when searching for logs (default: `_all`).\nThe index_patterns_callable takes precedence over this.\n",
                        "version_added": "2.6.0",
                        "type": "string",
                        "example": "something-*",
                        "default": "_all",
                    },
                    "index_patterns_callable": {
                        "description": "A string representing the full path to the Python callable path which accept TI object and\nreturn comma separated list of index patterns. This will takes precedence over index_patterns.\n",
                        "version_added": "5.5.0",
                        "type": "string",
                        "example": "module.callable",
                        "default": "",
                    },
                    "max_lines_per_page": {
                        "description": "The Page size of logs to retrieve from elasticsearch using the ElasticsearchTaskHandler.\nIf this is set too low, this can cause log read queries to become very slow.\nThis is limited on the server side (default limit of 10,000).\n",
                        "version_added": "6.4.4",
                        "type": "string",
                        "example": None,
                        "default": "1000",
                    },
                    "es_compat_with": {
                        "description": 'Pin the ``compatible-with`` HTTP content-negotiation level used by the\nElasticsearch client. Accepts a server major version string (e.g. ``"7"``,\n``"8"``, ``"9"``). When unset, the elasticsearch-py client negotiates its\nown major version, which makes an ``elasticsearch>=9`` client (the default\nfor fresh installs) incompatible with Elasticsearch 8.x servers — every\nrequest is rejected with HTTP 400 ``media_type_header_exception``.\nSetting this option keeps a single Airflow image compatible with both\n``elasticsearch<9`` and ``elasticsearch>=9`` servers.\n',
                        "version_added": "6.5.4",
                        "type": "string",
                        "example": "8",
                        "default": "",
                    },
                },
            },
            "elasticsearch_configs": {
                "description": None,
                "options": {
                    "http_compress": {
                        "description": None,
                        "version_added": "1.10.5",
                        "type": "string",
                        "example": None,
                        "default": "False",
                    },
                    "verify_certs": {
                        "description": None,
                        "version_added": "1.10.5",
                        "type": "string",
                        "example": None,
                        "default": "True",
                    },
                },
            },
        },
    }
