Skip to content

Commit 3dc6791

Browse files
committed
Expose YDB monitoring API
1 parent 2d1ff8d commit 3dc6791

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

ydb/_apis.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
ydb_operation_v1_pb2_grpc,
1212
ydb_topic_v1_pb2_grpc,
1313
ydb_query_v1_pb2_grpc,
14+
ydb_monitoring_v1_pb2_grpc,
1415
)
1516

1617
from ._grpc.v4.protos import (
@@ -22,6 +23,7 @@
2223
ydb_operation_pb2,
2324
ydb_common_pb2,
2425
ydb_query_pb2,
26+
ydb_monitoring_pb2,
2527
)
2628

2729
else:
@@ -33,6 +35,7 @@
3335
ydb_operation_v1_pb2_grpc,
3436
ydb_topic_v1_pb2_grpc,
3537
ydb_query_v1_pb2_grpc,
38+
ydb_monitoring_v1_pb2_grpc,
3639
)
3740

3841
from ._grpc.common.protos import (
@@ -44,6 +47,7 @@
4447
ydb_operation_pb2,
4548
ydb_common_pb2,
4649
ydb_query_pb2,
50+
ydb_monitoring_pb2,
4751
)
4852

4953

@@ -56,6 +60,7 @@
5660
ydb_discovery = ydb_discovery_pb2
5761
ydb_operation = ydb_operation_pb2
5862
ydb_query = ydb_query_pb2
63+
ydb_monitoring = ydb_monitoring_pb2
5964

6065

6166
class CmsService(object):
@@ -134,3 +139,9 @@ class QueryService(object):
134139
ExecuteQuery = "ExecuteQuery"
135140
ExecuteScript = "ExecuteScript"
136141
FetchScriptResults = "FetchScriptResults"
142+
143+
144+
class MonitoringService(object):
145+
Stub = ydb_monitoring_v1_pb2_grpc.MonitoringServiceStub
146+
147+
SelfCheck = "SelfCheck"

ydb/monitoring.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# -*- coding: utf-8 -*-
2+
import abc
3+
import enum
4+
from abc import abstractmethod
5+
from . import issues, operation, settings as settings_impl, _apis
6+
7+
8+
class SelfCheckSettings(settings_impl.BaseRequestSettings):
9+
pass
10+
11+
12+
def _self_check_request_factory(return_verbose_status=None, minimum_status=None, maximum_level=None):
13+
request = _apis.ydb_monitoring.SelfCheckRequest()
14+
if return_verbose_status is not None:
15+
request.return_verbose_status = return_verbose_status
16+
if minimum_status is not None:
17+
request.minimum_status = minimum_status
18+
if maximum_level is not None:
19+
request.maximum_level = maximum_level
20+
return request
21+
22+
23+
def _wrap_self_check_response(rpc_state, response):
24+
issues._process_response(response.operation)
25+
message = _apis.ydb_monitoring.SelfCheckResult()
26+
response.operation.result.Unpack(message)
27+
return message
28+
29+
30+
class IMonitoringClient(abc.ABC):
31+
@abstractmethod
32+
def __init__(self, driver):
33+
pass
34+
35+
@abstractmethod
36+
def self_check(self, return_verbose_status=None, minimum_status=None, maximum_level=None, settings=None):
37+
pass
38+
39+
40+
class BaseMonitoringClient(IMonitoringClient):
41+
__slots__ = ("_driver",)
42+
43+
def __init__(self, driver):
44+
self._driver = driver
45+
46+
def self_check(self, return_verbose_status=None, minimum_status=None, maximum_level=None, settings=None):
47+
return self._driver(
48+
_self_check_request_factory(return_verbose_status, minimum_status, maximum_level),
49+
_apis.MonitoringService.Stub,
50+
_apis.MonitoringService.SelfCheck,
51+
_wrap_self_check_response,
52+
settings,
53+
)
54+
55+
56+
class MonitoringClient(BaseMonitoringClient):
57+
def async_self_check(self, return_verbose_status=None, minimum_status=None, maximum_level=None, settings=None):
58+
return self._driver.future(
59+
_self_check_request_factory(return_verbose_status, minimum_status, maximum_level),
60+
_apis.MonitoringService.Stub,
61+
_apis.MonitoringService.SelfCheck,
62+
_wrap_self_check_response,
63+
settings,
64+
)

0 commit comments

Comments
 (0)