Skip to content

Commit 690ae38

Browse files
chintalamotl
authored andcommitted
Correct dashboard search endpoint, fixes #174. Incidentally add util to accept and format list-type params.
1 parent c73ef6d commit 690ae38

File tree

3 files changed

+49
-24
lines changed

3 files changed

+49
-24
lines changed
Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from grafana_client.util import format_param_value
2+
13
from ..base import Base
24

35

@@ -12,7 +14,9 @@ async def search_dashboards(
1214
tag=None,
1315
type_=None,
1416
dashboard_ids=None,
17+
dashboard_uids=None,
1518
folder_ids=None,
19+
folder_uids=None,
1620
starred=None,
1721
limit=None,
1822
):
@@ -22,36 +26,41 @@ async def search_dashboards(
2226
:param tag:
2327
:param type_:
2428
:param dashboard_ids:
29+
:param dashboard_uids:
2530
:param folder_ids:
31+
:param folder_uids:
2632
:param starred:
2733
:param limit:
2834
:return:
2935
"""
3036
list_dashboard_path = "/search"
31-
params = []
37+
params = {}
3238

3339
if query:
34-
params.append("query=%s" % query)
40+
params["query"] = query
3541

3642
if tag:
37-
params.append("tag=%s" % tag)
43+
params["tag"] = format_param_value(tag)
3844

3945
if type_:
40-
params.append("type=%s" % type_)
46+
params["type"] = type_
4147

4248
if dashboard_ids:
43-
params.append("dashboardIds=%s" % dashboard_ids)
49+
params["dashboardIds"] = format_param_value(dashboard_ids)
50+
51+
if dashboard_uids:
52+
params["dashboardUIDs"] = format_param_value(dashboard_uids)
4453

4554
if folder_ids:
46-
params.append("folderIds=%s" % folder_ids)
55+
params["folderIds"] = format_param_value(folder_ids)
56+
57+
if folder_uids:
58+
params["folderUIDs"] = format_param_value(folder_uids)
4759

4860
if starred:
49-
params.append("starred=%s" % starred)
61+
params["starred"] = starred
5062

5163
if limit:
52-
params.append("limit=%s" % limit)
53-
54-
list_dashboard_path += "?"
55-
list_dashboard_path += "&".join(params)
64+
params["limit"] = limit
5665

57-
return await self.client.GET(list_dashboard_path)
66+
return await self.client.GET(list_dashboard_path, params=params)

grafana_client/elements/search.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from grafana_client.util import format_param_value
2+
13
from .base import Base
24

35

@@ -12,7 +14,9 @@ def search_dashboards(
1214
tag=None,
1315
type_=None,
1416
dashboard_ids=None,
17+
dashboard_uids=None,
1518
folder_ids=None,
19+
folder_uids=None,
1620
starred=None,
1721
limit=None,
1822
):
@@ -22,36 +26,41 @@ def search_dashboards(
2226
:param tag:
2327
:param type_:
2428
:param dashboard_ids:
29+
:param dashboard_uids:
2530
:param folder_ids:
31+
:param folder_uids:
2632
:param starred:
2733
:param limit:
2834
:return:
2935
"""
3036
list_dashboard_path = "/search"
31-
params = []
37+
params = {}
3238

3339
if query:
34-
params.append("query=%s" % query)
40+
params["query"] = query
3541

3642
if tag:
37-
params.append("tag=%s" % tag)
43+
params["tag"] = format_param_value(tag)
3844

3945
if type_:
40-
params.append("type=%s" % type_)
46+
params["type"] = type_
4147

4248
if dashboard_ids:
43-
params.append("dashboardIds=%s" % dashboard_ids)
49+
params["dashboardIds"] = format_param_value(dashboard_ids)
50+
51+
if dashboard_uids:
52+
params["dashboardUIDs"] = format_param_value(dashboard_uids)
4453

4554
if folder_ids:
46-
params.append("folderIds=%s" % folder_ids)
55+
params["folderIds"] = format_param_value(folder_ids)
56+
57+
if folder_uids:
58+
params["folderUIDs"] = format_param_value(folder_uids)
4759

4860
if starred:
49-
params.append("starred=%s" % starred)
61+
params["starred"] = starred
5062

5163
if limit:
52-
params.append("limit=%s" % limit)
53-
54-
list_dashboard_path += "?"
55-
list_dashboard_path += "&".join(params)
64+
params["limit"] = limit
5665

57-
return self.client.GET(list_dashboard_path)
66+
return self.client.GET(list_dashboard_path, params=params)

grafana_client/util.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,10 @@ def as_bool(value: str) -> bool:
3939
return _STR_BOOLEAN_MAPPING[value.lower()]
4040
except KeyError:
4141
raise ValueError(f"invalid truth value {value}")
42+
43+
44+
def format_param_value(maybe_list):
45+
if isinstance(maybe_list, list):
46+
return ",".join([str(x) for x in maybe_list])
47+
else:
48+
return maybe_list

0 commit comments

Comments
 (0)