forked from influxdata/influxdb-client-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlabels_api.py
96 lines (72 loc) · 2.94 KB
/
labels_api.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
"""Labels are a way to add visual metadata to dashboards, tasks, and other items in the InfluxDB UI."""
from typing import List, Dict, Union
from influxdb_client import LabelsService, LabelCreateRequest, Label, LabelUpdate
class LabelsApi(object):
"""Implementation for '/api/v2/labels' endpoint."""
def __init__(self, influxdb_client):
"""Initialize defaults."""
self._influxdb_client = influxdb_client
self._service = LabelsService(influxdb_client.api_client)
def create_label(self, name: str, org_id: str, properties: Dict[str, str] = None) -> Label:
"""
Create a new label.
:param name: label name
:param org_id: organization id
:param properties: optional label properties
:return: created label
"""
label_request = LabelCreateRequest(org_id=org_id, name=name, properties=properties)
return self._service.post_labels(label_create_request=label_request).label
def update_label(self, label: Label):
"""
Update an existing label name and properties.
:param label: label
:return: the updated label
"""
label_update = LabelUpdate()
label_update.properties = label.properties
label_update.name = label.name
return self._service.patch_labels_id(label_id=label.id, label_update=label_update).label
def delete_label(self, label: Union[str, Label]):
"""
Delete the label.
:param label: label id or Label
"""
label_id = None
if isinstance(label, str):
label_id = label
if isinstance(label, Label):
label_id = label.id
return self._service.delete_labels_id(label_id=label_id)
def clone_label(self, cloned_name: str, label: Label) -> Label:
"""
Create the new instance of the label as a copy existing label.
:param cloned_name: new label name
:param label: existing label
:return: clonned Label
"""
cloned_properties = None
if label.properties is not None:
cloned_properties = label.properties.copy()
return self.create_label(name=cloned_name, properties=cloned_properties, org_id=label.org_id)
def find_labels(self, **kwargs) -> List['Label']:
"""
Get all available labels.
:key str org_id: The organization ID.
:return: labels
"""
return self._service.get_labels(**kwargs).labels
def find_label_by_id(self, label_id: str):
"""
Retrieve the label by id.
:param label_id:
:return: Label
"""
return self._service.get_labels_id(label_id=label_id).label
def find_label_by_org(self, org_id) -> List['Label']:
"""
Get the list of all labels for given organization.
:param org_id: organization id
:return: list of labels
"""
return self._service.get_labels(org_id=org_id).labels