aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-kikimr-dev <robot-kikimr-dev@yandex-team.ru>2022-04-04 12:54:27 +0300
committerrobot-kikimr-dev <robot-kikimr-dev@yandex-team.ru>2022-04-04 12:54:27 +0300
commit480f03e5a3c538cf2983c355da8663a970eca83b (patch)
tree9327b3bc3b56485df4c36110ced2863367759f2b
parent5cc5cb796ae9ded67d650fc1dd1121a61212882b (diff)
downloadydb-480f03e5a3c538cf2983c355da8663a970eca83b.tar.gz
Sync YDB SDK from github
Release YDB recipe binaries ref:900159106091011f5102f7759dc9dbb1a6650c6b
-rw-r--r--ydb/public/sdk/python/CHANGELOG.md1
-rw-r--r--ydb/public/sdk/python/ydb/connection.py1
-rw-r--r--ydb/public/sdk/python/ydb/settings.py28
-rw-r--r--ydb/public/sdk/python/ydb/table.py16
-rw-r--r--ydb/public/sdk/python/ydb/ydb_version.py2
-rw-r--r--ydb/public/sdk/python/ydb_version.py1
6 files changed, 46 insertions, 3 deletions
diff --git a/ydb/public/sdk/python/CHANGELOG.md b/ydb/public/sdk/python/CHANGELOG.md
index 16975ee4b01..e39d0ae2f79 100644
--- a/ydb/public/sdk/python/CHANGELOG.md
+++ b/ydb/public/sdk/python/CHANGELOG.md
@@ -2,6 +2,7 @@
* allow to refer endpoints by node id
* support null type in queries
+* support session balancer feature
## 2.1.0 ##
diff --git a/ydb/public/sdk/python/ydb/connection.py b/ydb/public/sdk/python/ydb/connection.py
index a51736728b6..ed86de4479a 100644
--- a/ydb/public/sdk/python/ydb/connection.py
+++ b/ydb/public/sdk/python/ydb/connection.py
@@ -146,6 +146,7 @@ def _construct_metadata(driver_config, settings):
metadata.append((YDB_TRACE_ID_HEADER, settings.trace_id))
if settings.request_type is not None:
metadata.append((YDB_REQUEST_TYPE_HEADER, settings.request_type))
+ metadata.extend(getattr(settings, "headers", []))
metadata.append(_utilities.x_ydb_sdk_build_info_header())
return metadata
diff --git a/ydb/public/sdk/python/ydb/settings.py b/ydb/public/sdk/python/ydb/settings.py
index e1e1f0f2d30..f55b1abb30d 100644
--- a/ydb/public/sdk/python/ydb/settings.py
+++ b/ydb/public/sdk/python/ydb/settings.py
@@ -10,6 +10,7 @@ class BaseRequestSettings(object):
"operation_timeout",
"tracer",
"compression",
+ "headers",
)
def __init__(self):
@@ -22,11 +23,38 @@ class BaseRequestSettings(object):
self.cancel_after = None
self.operation_timeout = None
self.compression = None
+ self.headers = []
+
+ def make_copy(self):
+ return (
+ BaseRequestSettings()
+ .with_trace_id(self.trace_id)
+ .with_request_type(self.request_type)
+ .with_timeout(self.timeout)
+ .with_cancel_after(self.cancel_after)
+ .with_operation_timeout(self.operation_timeout)
+ .with_compression(self.compression)
+ )
def with_compression(self, compression):
+ """
+ Enables compression for the specific RPC
+ :param compression: An RPCCompression enum value.
+ :return The self instance.
+ """
self.compression = compression
return self
+ def with_header(self, key, value):
+ """
+ Adds a key-value pair to the request headers.
+ :param key: A string with a header key.
+ :param value: A string with a header value.
+ :return The self instance.
+ """
+ self.headers.append((key, value))
+ return self
+
def with_trace_id(self, trace_id):
"""
Includes trace id for RPC headers
diff --git a/ydb/public/sdk/python/ydb/table.py b/ydb/public/sdk/python/ydb/table.py
index c49c4660c7c..97b1fba85ff 100644
--- a/ydb/public/sdk/python/ydb/table.py
+++ b/ydb/public/sdk/python/ydb/table.py
@@ -1602,12 +1602,18 @@ class BaseSession(ISession):
def create(self, settings=None):
if self._state.session_id is not None:
return self
+ create_settings = settings_impl.BaseRequestSettings()
+ if settings is not None:
+ create_settings = settings.make_copy()
+ create_settings = create_settings.with_header(
+ "x-ydb-client-capabilities", "session-balancer"
+ )
return self._driver(
_apis.ydb_table.CreateSessionRequest(),
_apis.TableService.Stub,
_apis.TableService.CreateSession,
_session_impl.initialize_session,
- settings,
+ create_settings,
(self._state, self),
self._state.endpoint,
)
@@ -1860,12 +1866,18 @@ class Session(BaseSession):
def async_create(self, settings=None):
if self._state.session_id is not None:
return _utilities.wrap_result_in_future(self)
+ create_settings = settings_impl.BaseRequestSettings()
+ if settings is not None:
+ create_settings = settings.make_copy()
+ create_settings = create_settings.with_header(
+ "x-ydb-client-capabilities", "session-balancer"
+ )
return self._driver.future(
_apis.ydb_table.CreateSessionRequest(),
_apis.TableService.Stub,
_apis.TableService.CreateSession,
_session_impl.initialize_session,
- settings,
+ create_settings,
(self._state, self),
self._state.endpoint,
)
diff --git a/ydb/public/sdk/python/ydb/ydb_version.py b/ydb/public/sdk/python/ydb/ydb_version.py
index 3c00bb49aaa..707faadc7ee 100644
--- a/ydb/public/sdk/python/ydb/ydb_version.py
+++ b/ydb/public/sdk/python/ydb/ydb_version.py
@@ -1 +1 @@
-VERSION = "2.2.0"
+VERSION = "2.3.0"
diff --git a/ydb/public/sdk/python/ydb_version.py b/ydb/public/sdk/python/ydb_version.py
new file mode 100644
index 00000000000..707faadc7ee
--- /dev/null
+++ b/ydb/public/sdk/python/ydb_version.py
@@ -0,0 +1 @@
+VERSION = "2.3.0"