Files
qdrant-client/qdrant_client/http/api/service_api.py
2023-07-08 16:11:33 +04:00

183 lines
5.1 KiB
Python

# flake8: noqa E501
from typing import TYPE_CHECKING, Any, Dict, Set, Union
from qdrant_client.http.models import *
from qdrant_client.http.models import models as m
SetIntStr = Set[Union[int, str]]
DictIntStrAny = Dict[Union[int, str], Any]
file = None
def jsonable_encoder(
obj: Any,
include: Union[SetIntStr, DictIntStrAny] = None,
exclude=None,
by_alias: bool = True,
skip_defaults: bool = None,
exclude_unset: bool = False,
):
if hasattr(obj, "dict"):
return obj.dict(
include=include,
exclude=exclude,
by_alias=by_alias,
exclude_unset=bool(exclude_unset or skip_defaults),
)
return obj
if TYPE_CHECKING:
from qdrant_client.http.api_client import ApiClient
class _ServiceApi:
def __init__(self, api_client: "Union[ApiClient, AsyncApiClient]"):
self.api_client = api_client
def _build_for_get_locks(
self,
):
"""
Get lock options. If write is locked, all write operations and collection creation are forbidden
"""
return self.api_client.request(
type_=m.InlineResponse2001,
method="GET",
url="/locks",
)
def _build_for_metrics(
self,
anonymize: bool = None,
):
"""
Collect metrics data including app info, collections info, cluster info and statistics
"""
query_params = {}
if anonymize is not None:
query_params["anonymize"] = str(anonymize).lower()
return self.api_client.request(
type_=str,
method="GET",
url="/metrics",
params=query_params,
)
def _build_for_post_locks(
self,
locks_option: m.LocksOption = None,
):
"""
Set lock options. If write is locked, all write operations and collection creation are forbidden. Returns previous lock options
"""
body = jsonable_encoder(locks_option)
return self.api_client.request(type_=m.InlineResponse2001, method="POST", url="/locks", json=body)
def _build_for_telemetry(
self,
anonymize: bool = None,
):
"""
Collect telemetry data including app info, system info, collections info, cluster info, configs and statistics
"""
query_params = {}
if anonymize is not None:
query_params["anonymize"] = str(anonymize).lower()
return self.api_client.request(
type_=m.InlineResponse200,
method="GET",
url="/telemetry",
params=query_params,
)
class AsyncServiceApi(_ServiceApi):
async def get_locks(
self,
) -> m.InlineResponse2001:
"""
Get lock options. If write is locked, all write operations and collection creation are forbidden
"""
return await self._build_for_get_locks()
async def metrics(
self,
anonymize: bool = None,
) -> str:
"""
Collect metrics data including app info, collections info, cluster info and statistics
"""
return await self._build_for_metrics(
anonymize=anonymize,
)
async def post_locks(
self,
locks_option: m.LocksOption = None,
) -> m.InlineResponse2001:
"""
Set lock options. If write is locked, all write operations and collection creation are forbidden. Returns previous lock options
"""
return await self._build_for_post_locks(
locks_option=locks_option,
)
async def telemetry(
self,
anonymize: bool = None,
) -> m.InlineResponse200:
"""
Collect telemetry data including app info, system info, collections info, cluster info, configs and statistics
"""
return await self._build_for_telemetry(
anonymize=anonymize,
)
class SyncServiceApi(_ServiceApi):
def get_locks(
self,
) -> m.InlineResponse2001:
"""
Get lock options. If write is locked, all write operations and collection creation are forbidden
"""
return self._build_for_get_locks()
def metrics(
self,
anonymize: bool = None,
) -> str:
"""
Collect metrics data including app info, collections info, cluster info and statistics
"""
return self._build_for_metrics(
anonymize=anonymize,
)
def post_locks(
self,
locks_option: m.LocksOption = None,
) -> m.InlineResponse2001:
"""
Set lock options. If write is locked, all write operations and collection creation are forbidden. Returns previous lock options
"""
return self._build_for_post_locks(
locks_option=locks_option,
)
def telemetry(
self,
anonymize: bool = None,
) -> m.InlineResponse200:
"""
Collect telemetry data including app info, system info, collections info, cluster info, configs and statistics
"""
return self._build_for_telemetry(
anonymize=anonymize,
)