oncall-engine/engine/apps/labels/client.py
2023-11-06 17:08:55 +08:00

42 lines
1.7 KiB
Python

import typing
from urllib.parse import urljoin
from apps.grafana_plugin.helpers.client import APIClient
if typing.TYPE_CHECKING:
from apps.labels.utils import LabelKeyData, LabelsKeysData, LabelUpdateParam
class LabelsAPIClient(APIClient):
LABELS_API_URL = "/api/plugins/grafana-labels-app/resources/v1/labels/"
def __init__(self, api_url: str, api_token: str) -> None:
super().__init__(api_url, api_token)
self.api_url = urljoin(api_url, self.LABELS_API_URL)
def create_label(self, label_data: "LabelUpdateParam") -> typing.Tuple[typing.Optional["LabelKeyData"], dict]:
return self.api_post("", label_data)
def get_keys(self) -> typing.Tuple[typing.Optional["LabelsKeysData"], dict]:
return self.api_get("keys")
def get_values(self, key_id: str) -> typing.Tuple[typing.Optional["LabelKeyData"], dict]:
return self.api_get(f"id/{key_id}")
def get_value(self, key_id: str, value_id: str) -> typing.Tuple[typing.Optional["LabelKeyData"], dict]:
return self.api_get(f"id/{key_id}/values/{value_id}")
def add_value(
self, key_id: str, label_data: "LabelUpdateParam"
) -> typing.Tuple[typing.Optional["LabelKeyData"], dict]:
return self.api_post(f"id/{key_id}/values", label_data)
def rename_key(
self, key_id: str, label_data: "LabelUpdateParam"
) -> typing.Tuple[typing.Optional["LabelKeyData"], dict]:
return self.api_put(f"id/{key_id}", label_data)
def rename_value(
self, key_id: str, value_id: str, label_data: "LabelUpdateParam"
) -> typing.Tuple[typing.Optional["LabelKeyData"], dict]:
return self.api_put(f"id/{key_id}/values/{value_id}", label_data)