Skip to content

Commit 678598b

Browse files
committed
fix public wrappers
1 parent 53ebed9 commit 678598b

File tree

8 files changed

+253
-109
lines changed

8 files changed

+253
-109
lines changed

tests/coordination/test_coordination_alter_node.py

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import ydb
2+
3+
from ydb.coordination import (
4+
NodeConfig,
5+
ConsistencyMode,
6+
RateLimiterCountersMode,
7+
CoordinationClient
8+
)
9+
10+
class TestCoordination:
11+
12+
def test_coordination_alter_node(self, driver_sync: ydb.Driver):
13+
client = CoordinationClient(driver_sync)
14+
node_path = "/local/test_alter_node"
15+
16+
try:
17+
client.delete_node(node_path)
18+
except ydb.SchemeError:
19+
pass
20+
21+
client.create_node(node_path)
22+
23+
new_config = NodeConfig(
24+
session_grace_period_millis=12345,
25+
attach_consistency_mode=ConsistencyMode.STRICT,
26+
read_consistency_mode=ConsistencyMode.RELAXED,
27+
rate_limiter_counters_mode=RateLimiterCountersMode.UNSET,
28+
self_check_period_millis=0,
29+
)
30+
31+
client.alter_node(node_path, new_config)
32+
33+
node_desc = client.describe_node(node_path)
34+
node_config = node_desc.config
35+
path = node_desc.path
36+
37+
assert node_path == path
38+
assert node_config.session_grace_period_millis == 12345
39+
assert node_config.attach_consistency_mode == ConsistencyMode.STRICT
40+
assert node_config.read_consistency_mode == ConsistencyMode.RELAXED
41+
42+
client.delete_node(node_path)
43+
44+
def test_coordination_nodes(self, driver_sync: ydb.Driver):
45+
client = CoordinationClient(driver_sync)
46+
node_path = "/local/test_node"
47+
48+
try:
49+
client.delete_node(node_path)
50+
except ydb.SchemeError:
51+
pass
52+
53+
client.create_node(node_path)
54+
55+
node_descr = client.describe_node(node_path)
56+
57+
node_descr_path = node_descr.path
58+
59+
assert node_descr_path == node_path
60+
61+
client.delete_node(node_path)

tests/coordination/test_coordination_describe_node.py

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,59 @@
11
import typing
22
from dataclasses import dataclass
33

4-
import ydb
54

65
if typing.TYPE_CHECKING:
76
from ..v4.protos import ydb_coordination_pb2
87
else:
98
from ..common.protos import ydb_coordination_pb2
109

1110
from .common_utils import IToProto, IFromProto, ServerStatus
12-
from . import ydb_coordination_public_types as public_types
11+
from ydb.coordination import NodeConfig
1312

1413

15-
# -------------------- Requests --------------------
16-
1714
@dataclass
1815
class CreateNodeRequest(IToProto):
1916
path: str
20-
config: typing.Optional[public_types.NodeConfig] = None
21-
operation_params: typing.Any = None
17+
config: typing.Optional[NodeConfig] = None
2218

2319
def to_proto(self) -> ydb_coordination_pb2.CreateNodeRequest:
2420
cfg_proto = self.config.to_proto() if self.config else None
2521
return ydb_coordination_pb2.CreateNodeRequest(
2622
path=self.path,
2723
config=cfg_proto,
28-
operation_params=self.operation_params,
2924
)
3025

3126
@dataclass
3227
class AlterNodeRequest(IToProto):
3328
path: str
34-
config: typing.Optional[public_types.NodeConfig] = None
35-
operation_params: typing.Any = None
29+
config: typing.Optional[NodeConfig] = None
3630

3731
def to_proto(self) -> ydb_coordination_pb2.AlterNodeRequest:
3832
cfg_proto = self.config.to_proto() if self.config else None
3933
return ydb_coordination_pb2.AlterNodeRequest(
4034
path=self.path,
4135
config=cfg_proto,
42-
operation_params=self.operation_params,
4336
)
4437

4538

4639

4740
@dataclass
4841
class DescribeNodeRequest(IToProto):
4942
path: str
50-
operation_params: typing.Any = None
5143

5244
def to_proto(self) -> ydb_coordination_pb2.DescribeNodeRequest:
5345
return ydb_coordination_pb2.DescribeNodeRequest(
5446
path=self.path,
55-
operation_params=self.operation_params,
5647
)
5748

5849

5950
@dataclass
6051
class DropNodeRequest(IToProto):
6152
path: str
62-
operation_params: typing.Any = None
6353

6454
def to_proto(self) -> ydb_coordination_pb2.DropNodeRequest:
6555
return ydb_coordination_pb2.DropNodeRequest(
6656
path=self.path,
67-
operation_params=self.operation_params,
6857
)
6958

7059

Lines changed: 120 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,147 @@
11
from dataclasses import dataclass
22
from enum import Enum
33
import typing
4+
import ydb
45

56
if typing.TYPE_CHECKING:
67
from ..v4.protos import ydb_coordination_pb2
78
else:
89
from ..common.protos import ydb_coordination_pb2
910

1011

12+
13+
class ConsistencyMode(Enum):
14+
UNSET = 0
15+
STRICT = 1
16+
RELAXED = 2
17+
18+
@classmethod
19+
def from_proto(cls, proto_val: int) -> "ConsistencyMode":
20+
mapping = {
21+
ydb_coordination_pb2.ConsistencyMode.CONSISTENCY_MODE_UNSET: cls.UNSET,
22+
ydb_coordination_pb2.ConsistencyMode.CONSISTENCY_MODE_STRICT: cls.STRICT,
23+
ydb_coordination_pb2.ConsistencyMode.CONSISTENCY_MODE_RELAXED: cls.RELAXED,
24+
}
25+
return mapping[proto_val]
26+
27+
def to_proto(self) -> int:
28+
mapping = {
29+
self.UNSET: ydb_coordination_pb2.ConsistencyMode.CONSISTENCY_MODE_UNSET,
30+
self.STRICT: ydb_coordination_pb2.ConsistencyMode.CONSISTENCY_MODE_STRICT,
31+
self.RELAXED: ydb_coordination_pb2.ConsistencyMode.CONSISTENCY_MODE_RELAXED,
32+
}
33+
return mapping[self]
34+
35+
36+
class RateLimiterCountersMode(Enum):
37+
UNSET = 0
38+
AGGREGATED = 1
39+
DETAILED = 2
40+
41+
@classmethod
42+
def from_proto(cls, proto_val: int) -> "RateLimiterCountersMode":
43+
mapping = {
44+
ydb_coordination_pb2.RateLimiterCountersMode.RATE_LIMITER_COUNTERS_MODE_UNSET: cls.UNSET,
45+
ydb_coordination_pb2.RateLimiterCountersMode.RATE_LIMITER_COUNTERS_MODE_AGGREGATED: cls.AGGREGATED,
46+
ydb_coordination_pb2.RateLimiterCountersMode.RATE_LIMITER_COUNTERS_MODE_DETAILED: cls.DETAILED,
47+
}
48+
return mapping[proto_val]
49+
50+
def to_proto(self) -> int:
51+
mapping = {
52+
self.UNSET: ydb_coordination_pb2.RateLimiterCountersMode.RATE_LIMITER_COUNTERS_MODE_UNSET,
53+
self.AGGREGATED: ydb_coordination_pb2.RateLimiterCountersMode.RATE_LIMITER_COUNTERS_MODE_AGGREGATED,
54+
self.DETAILED: ydb_coordination_pb2.RateLimiterCountersMode.RATE_LIMITER_COUNTERS_MODE_DETAILED,
55+
}
56+
return mapping[self]
57+
58+
1159
@dataclass
1260
class NodeConfig:
13-
attach_consistency_mode: ydb_coordination_pb2.ConsistencyMode
14-
path: str
15-
rate_limiter_counters_mode: ydb_coordination_pb2.RateLimiterCountersMode
16-
read_consistency_mode: ydb_coordination_pb2.ConsistencyMode
61+
attach_consistency_mode: ConsistencyMode
62+
rate_limiter_counters_mode: RateLimiterCountersMode
63+
read_consistency_mode: ConsistencyMode
1764
self_check_period_millis: int
1865
session_grace_period_millis: int
1966

2067
@staticmethod
2168
def from_proto(msg: ydb_coordination_pb2.Config) -> "NodeConfig":
2269
return NodeConfig(
23-
attach_consistency_mode=msg.attach_consistency_mode,
24-
path=msg.path,
25-
rate_limiter_counters_mode=msg.rate_limiter_counters_mode,
26-
read_consistency_mode=msg.read_consistency_mode,
70+
attach_consistency_mode=ConsistencyMode.from_proto(msg.attach_consistency_mode),
71+
rate_limiter_counters_mode=RateLimiterCountersMode.from_proto(msg.rate_limiter_counters_mode),
72+
read_consistency_mode=ConsistencyMode.from_proto(msg.read_consistency_mode),
2773
self_check_period_millis=msg.self_check_period_millis,
2874
session_grace_period_millis=msg.session_grace_period_millis,
2975
)
3076

3177
def to_proto(self) -> ydb_coordination_pb2.Config:
3278
return ydb_coordination_pb2.Config(
33-
attach_consistency_mode=self.attach_consistency_mode.value,
34-
path=self.path,
35-
rate_limiter_counters_mode=self.rate_limiter_counters_mode.value,
36-
read_consistency_mode=self.read_consistency_mode.value,
79+
attach_consistency_mode=self.attach_consistency_mode.to_proto(),
80+
rate_limiter_counters_mode=self.rate_limiter_counters_mode.to_proto(),
81+
read_consistency_mode=self.read_consistency_mode.to_proto(),
3782
self_check_period_millis=self.self_check_period_millis,
3883
session_grace_period_millis=self.session_grace_period_millis,
3984
)
85+
86+
87+
@dataclass
88+
class NodeDescription:
89+
path: str
90+
config: NodeConfig
91+
92+
93+
class CoordinationClientSettings:
94+
def __init__(self):
95+
self._trace_id = None
96+
self._request_type = None
97+
self._timeout = None
98+
self._cancel_after = None
99+
self._operation_timeout = None
100+
self._compression = None
101+
self._need_rpc_auth = True
102+
self._headers = []
103+
104+
def with_trace_id(self, trace_id: str) -> "CoordinationClientSettings":
105+
self._trace_id = trace_id
106+
return self
107+
108+
def with_request_type(self, request_type: str) -> "CoordinationClientSettings":
109+
self._request_type = request_type
110+
return self
111+
112+
def with_timeout(self, timeout: float) -> "CoordinationClientSettings":
113+
self._timeout = timeout
114+
return self
115+
116+
def with_cancel_after(self, timeout: float) -> "CoordinationClientSettings":
117+
self._cancel_after = timeout
118+
return self
119+
120+
def with_operation_timeout(self, timeout: float) -> "CoordinationClientSettings":
121+
self._operation_timeout = timeout
122+
return self
123+
124+
def with_compression(self, compression) -> "CoordinationClientSettings":
125+
self._compression = compression
126+
return self
127+
128+
def with_need_rpc_auth(self, need_rpc_auth: bool) -> "CoordinationClientSettings":
129+
self._need_rpc_auth = need_rpc_auth
130+
return self
131+
132+
def with_header(self, key: str, value: str) -> "CoordinationClientSettings":
133+
self._headers.append((key, value))
134+
return self
135+
136+
def to_base_request_settings(self) -> "ydb.BaseRequestSettings":
137+
brs = ydb.BaseRequestSettings()
138+
brs.trace_id = self._trace_id
139+
brs.request_type = self._request_type
140+
brs.timeout = self._timeout
141+
brs.cancel_after = self._cancel_after
142+
brs.operation_timeout = self._operation_timeout
143+
brs.compression = self._compression
144+
brs.need_rpc_auth = self._need_rpc_auth
145+
brs.headers.extend(self._headers)
146+
return brs
147+

ydb/coordination/__init__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
from .coordination_client import CoordinationClient
22

3+
from ydb._grpc.grpcwrapper.ydb_coordination_public_types import (
4+
NodeConfig,
5+
NodeDescription,
6+
ConsistencyMode,
7+
RateLimiterCountersMode,
8+
CoordinationClientSettings,
9+
)
10+
311
__all__ = [
412
"CoordinationClient",
13+
"NodeConfig",
14+
"NodeDescription",
15+
"ConsistencyMode",
16+
"RateLimiterCountersMode",
17+
"CoordinationClientSettings",
518
]

0 commit comments

Comments
 (0)