42 lines
1.7 KiB
Python
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)
|