From eaeac5d04ee1d12aadc9db6c849808c9a3b381b7 Mon Sep 17 00:00:00 2001 From: Quentin Pradet Date: Thu, 16 Nov 2023 17:10:29 +0400 Subject: [PATCH] Set Elastic-Api-Version header --- elasticsearch_serverless/_sync/client/utils.py | 5 +++++ test_elasticsearch_serverless/test_client/test_options.py | 8 ++++++-- test_elasticsearch_serverless/test_transport.py | 4 +++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/elasticsearch_serverless/_sync/client/utils.py b/elasticsearch_serverless/_sync/client/utils.py index f950045..2c1f238 100644 --- a/elasticsearch_serverless/_sync/client/utils.py +++ b/elasticsearch_serverless/_sync/client/utils.py @@ -60,6 +60,7 @@ # Default User-Agent used by the client USER_AGENT = create_user_agent("elasticsearch-py", __versionstr__) +ELASTIC_API_VERSION = "2023-10-31" _TYPE_HOST = Union[str, Mapping, NodeConfig] @@ -97,6 +98,8 @@ def client_node_config( # Set the 'User-Agent' default header. headers = HttpHeaders(node_options.pop("headers", ())) headers.setdefault("user-agent", USER_AGENT) + headers.setdefault("elastic-api-version", ELASTIC_API_VERSION) + node_options["headers"] = headers # If a custom Requests AuthBase is passed we set that via '_extras'. @@ -112,6 +115,8 @@ def client_node_config( headers.update(headers_to_add) headers.setdefault("user-agent", USER_AGENT) + headers.setdefault("elastic-api-version", ELASTIC_API_VERSION) + headers.freeze() node_options["headers"] = headers diff --git a/test_elasticsearch_serverless/test_client/test_options.py b/test_elasticsearch_serverless/test_client/test_options.py index 7686123..2c50ce2 100644 --- a/test_elasticsearch_serverless/test_client/test_options.py +++ b/test_elasticsearch_serverless/test_client/test_options.py @@ -20,7 +20,7 @@ from elastic_transport.client_utils import DEFAULT from elasticsearch_serverless import AsyncElasticsearch, Elasticsearch -from elasticsearch_serverless._sync.client.utils import USER_AGENT +from elasticsearch_serverless._sync.client.utils import ELASTIC_API_VERSION, USER_AGENT from test_elasticsearch_serverless.test_cases import ( DummyAsyncTransport, DummyTransport, @@ -279,7 +279,10 @@ def test_default_node_configs(self): assert node_config.host == "localhost" assert node_config.port == 9200 assert node_config.path_prefix == "" - assert node_config.headers == {"user-agent": USER_AGENT} + assert node_config.headers == { + "user-agent": USER_AGENT, + "elastic-api-version": ELASTIC_API_VERSION, + } def test_http_headers_overrides(self): client = Elasticsearch( @@ -324,6 +327,7 @@ def test_http_headers_overrides(self): assert node_config.headers == { "authorization": "Basic dXNlcm5hbWU6cGFzc3dvcmQ=", "user-agent": USER_AGENT, + "elastic-api-version": ELASTIC_API_VERSION, } assert client._headers == {"key": "val"} diff --git a/test_elasticsearch_serverless/test_transport.py b/test_elasticsearch_serverless/test_transport.py index 095f6ec..26c365f 100644 --- a/test_elasticsearch_serverless/test_transport.py +++ b/test_elasticsearch_serverless/test_transport.py @@ -25,6 +25,7 @@ from elastic_transport.client_utils import DEFAULT from elasticsearch_serverless import Elasticsearch, __versionstr__ +from elasticsearch_serverless._sync.client import utils from elasticsearch_serverless.exceptions import ( ApiError, ConnectionError, @@ -189,8 +190,9 @@ def test_custom_user_agent_on_initialization(self): "http://localhost:9200", headers={"user-agent": "custom/1.2.3"} ) headers = [node.config for node in client.transport.node_pool.all()][0].headers - assert list(headers.keys()) == ["user-agent"] + assert list(headers.keys()) == ["user-agent", "elastic-api-version"] assert headers["user-agent"].startswith(f"elasticsearch-py/{__versionstr__} (") + assert headers["elastic-api-version"] == utils.ELASTIC_API_VERSION def test_request_with_custom_user_agent_header(self): client = Elasticsearch(