Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions ydb/_apis.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
ydb_operation_v1_pb2_grpc,
ydb_topic_v1_pb2_grpc,
ydb_query_v1_pb2_grpc,
ydb_monitoring_v1_pb2_grpc,
)

from ._grpc.v4.protos import (
Expand All @@ -22,6 +23,7 @@
ydb_operation_pb2,
ydb_common_pb2,
ydb_query_pb2,
ydb_monitoring_pb2,
)

else:
Expand All @@ -33,6 +35,7 @@
ydb_operation_v1_pb2_grpc,
ydb_topic_v1_pb2_grpc,
ydb_query_v1_pb2_grpc,
ydb_monitoring_v1_pb2_grpc,
)

from ._grpc.common.protos import (
Expand All @@ -44,6 +47,7 @@
ydb_operation_pb2,
ydb_common_pb2,
ydb_query_pb2,
ydb_monitoring_pb2,
)


Expand All @@ -56,6 +60,7 @@
ydb_discovery = ydb_discovery_pb2
ydb_operation = ydb_operation_pb2
ydb_query = ydb_query_pb2
ydb_monitoring = ydb_monitoring_pb2


class CmsService(object):
Expand Down Expand Up @@ -134,3 +139,9 @@ class QueryService(object):
ExecuteQuery = "ExecuteQuery"
ExecuteScript = "ExecuteScript"
FetchScriptResults = "FetchScriptResults"


class MonitoringService(object):
Stub = ydb_monitoring_v1_pb2_grpc.MonitoringServiceStub

SelfCheck = "SelfCheck"
64 changes: 64 additions & 0 deletions ydb/monitoring.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# -*- coding: utf-8 -*-
import abc
import enum
from abc import abstractmethod
from . import issues, operation, settings as settings_impl, _apis


class SelfCheckSettings(settings_impl.BaseRequestSettings):
pass


def _self_check_request_factory(return_verbose_status=None, minimum_status=None, maximum_level=None):
request = _apis.ydb_monitoring.SelfCheckRequest()
if return_verbose_status is not None:
request.return_verbose_status = return_verbose_status
if minimum_status is not None:
request.minimum_status = minimum_status
if maximum_level is not None:
request.maximum_level = maximum_level
return request


def _wrap_self_check_response(rpc_state, response):
issues._process_response(response.operation)
message = _apis.ydb_monitoring.SelfCheckResult()
response.operation.result.Unpack(message)
return message


class IMonitoringClient(abc.ABC):
@abstractmethod
def __init__(self, driver):
pass

@abstractmethod
def self_check(self, return_verbose_status=None, minimum_status=None, maximum_level=None, settings=None):
pass


class BaseMonitoringClient(IMonitoringClient):
__slots__ = ("_driver",)

def __init__(self, driver):
self._driver = driver

def self_check(self, return_verbose_status=None, minimum_status=None, maximum_level=None, settings=None):
return self._driver(
_self_check_request_factory(return_verbose_status, minimum_status, maximum_level),
_apis.MonitoringService.Stub,
_apis.MonitoringService.SelfCheck,
_wrap_self_check_response,
settings,
)


class MonitoringClient(BaseMonitoringClient):
def async_self_check(self, return_verbose_status=None, minimum_status=None, maximum_level=None, settings=None):
return self._driver.future(
_self_check_request_factory(return_verbose_status, minimum_status, maximum_level),
_apis.MonitoringService.Stub,
_apis.MonitoringService.SelfCheck,
_wrap_self_check_response,
settings,
)
Loading