Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ exclude_lines =
raise NotImplementedError

# Don't complain if non-runnable code isn't run:
if __name__ == .__main__.:
if __name__ == .__main__.:
45 changes: 31 additions & 14 deletions src/grafana_api/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def create_or_update_dashboard(
else:
logging.info("You successfully deployed the dashboard.")
else:
logging.info(
logging.error(
"There is no dashboard_path or dashboard_json or message defined."
)
raise ValueError
Expand Down Expand Up @@ -87,10 +87,10 @@ def delete_dashboard_by_name_and_path(
else:
logging.info("You successfully destroyed the dashboard.")
else:
logging.info("Nothing to delete. There is no dashboard available.")
logging.error("Nothing to delete. There is no dashboard available.")
raise ValueError
else:
logging.info("There is no dashboard_name or dashboard_path defined.")
logging.error("There is no dashboard_name or dashboard_path defined.")
raise ValueError

def get_dashboard_by_uid(self, uid: str) -> dict:
Expand All @@ -111,7 +111,7 @@ def get_dashboard_by_uid(self, uid: str) -> dict:
else:
return api_call
else:
logging.info("There is no dashboard uid defined.")
logging.error("There is no dashboard uid defined.")
raise ValueError

def get_dashboard_home(self) -> dict:
Expand Down Expand Up @@ -155,15 +155,32 @@ def get_dashboard_uid_and_id_by_name_and_folder(
).get_folder_id_by_dashboard_path(dashboard_path)

search_query: str = f"{APIEndpoints.SEARCH.value}?folderIds={folder_id}&query={dashboard_name}"
print(search_query)
dashboard_meta: list = Utils(self.grafana_api_model).call_the_api(
search_query
)

return dict(
{"uid": dashboard_meta[0]["uid"], "id": dashboard_meta[0]["id"]}
)
for dashboard_meta_object in dashboard_meta:
if dashboard_meta_object.get("title") is not None:
if dashboard_meta_object.get("title") == dashboard_name:
if (
dashboard_meta_object.get("uid") is not None
and dashboard_meta_object.get("id") is not None
):
return dict(
{
"uid": dashboard_meta_object.get("uid"),
"id": dashboard_meta_object.get("id"),
}
)
else:
logging.error("There is no uid or id defined.")
raise ValueError
else:
logging.error("There is no title defined.")
raise ValueError
else:
logging.info("There is no dashboard_name or dashboard_path defined.")
logging.error("There is no dashboard_name or dashboard_path defined.")
raise ValueError

def get_dashboard_permissions(self, id: int) -> list:
Expand All @@ -184,7 +201,7 @@ def get_dashboard_permissions(self, id: int) -> list:
else:
return api_call
else:
logging.info("There is no dashboard uid defined.")
logging.error("There is no dashboard uid defined.")
raise ValueError

def update_dashboard_permissions(self, id: int, permission_json: dict):
Expand All @@ -209,7 +226,7 @@ def update_dashboard_permissions(self, id: int, permission_json: dict):
else:
logging.info("You successfully modified the dashboard permissions.")
else:
logging.info("There is no dashboard uid or permission json defined.")
logging.error("There is no dashboard uid or permission json defined.")
raise ValueError

def get_dashboard_versions(self, id: int) -> list:
Expand All @@ -230,7 +247,7 @@ def get_dashboard_versions(self, id: int) -> list:
else:
return api_call
else:
logging.info("There is no dashboard uid defined.")
logging.error("There is no dashboard uid defined.")
raise ValueError

def get_dashboard_version(self, id: int, version_id: int) -> dict:
Expand All @@ -253,7 +270,7 @@ def get_dashboard_version(self, id: int, version_id: int) -> dict:
else:
return api_call
else:
logging.info("There is no dashboard uid or version_id defined.")
logging.error("There is no dashboard uid or version_id defined.")
raise ValueError

def restore_dashboard_version(self, id: int, version: dict):
Expand Down Expand Up @@ -325,12 +342,12 @@ def calculate_dashboard_diff(
else:
return api_call.text
else:
logging.info(
logging.error(
"There is no dashboard_uid_and_version_base or dashboard_uid_and_version_new defined."
)
raise ValueError
else:
logging.info(
logging.error(
f"The diff_type: {diff_type.lower()} is not valid. Please specify a valid value."
)
raise ValueError
19 changes: 11 additions & 8 deletions src/grafana_api/folder.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def get_folder_by_uid(self, uid: str) -> dict:
else:
return api_call
else:
logging.info("There is no dashboard uid defined.")
logging.error("There is no dashboard uid defined.")
raise ValueError

def get_folder_by_id(self, id: int) -> dict:
Expand All @@ -67,7 +67,7 @@ def get_folder_by_id(self, id: int) -> dict:
else:
return api_call
else:
logging.info("There is no folder id defined.")
logging.error("There is no folder id defined.")
raise ValueError

def create_folder(self, title: str, uid: str = None) -> dict:
Expand Down Expand Up @@ -98,7 +98,7 @@ def create_folder(self, title: str, uid: str = None) -> dict:
else:
return api_call
else:
logging.info("There is no folder uid or title defined.")
logging.error("There is no folder uid or title defined.")
raise ValueError

def update_folder(
Expand Down Expand Up @@ -140,7 +140,7 @@ def update_folder(
else:
return api_call
else:
logging.info("There is no folder title or version defined.")
logging.error("There is no folder title or version defined.")
raise ValueError

def delete_folder(self, uid: str):
Expand All @@ -163,7 +163,7 @@ def delete_folder(self, uid: str):
else:
logging.info("You successfully destroyed the folder.")
else:
logging.info("There is no folder uid defined.")
logging.error("There is no folder uid defined.")
raise ValueError

def get_folder_permissions(self, uid: str) -> list:
Expand All @@ -186,7 +186,7 @@ def get_folder_permissions(self, uid: str) -> list:
else:
return api_call
else:
logging.info("There is no folder uid defined.")
logging.error("There is no folder uid defined.")
raise ValueError

def update_folder_permissions(self, uid: str, permission_json: dict):
Expand All @@ -211,12 +211,15 @@ def update_folder_permissions(self, uid: str, permission_json: dict):
else:
logging.info("You successfully modified the folder permissions.")
else:
logging.info("There is no folder uid or permission json defined.")
logging.error("There is no folder uid or permission json defined.")
raise ValueError

def get_folder_id_by_dashboard_path(self, dashboard_path: str) -> int:
"""The method includes a functionality to extract the folder id specified inside model dashboard path"""

if dashboard_path.lower() == "general":
return 0

if len(dashboard_path) != 0:
folders: list = self.get_all_folder_ids_and_names()
folder_id: int = 0
Expand All @@ -233,7 +236,7 @@ def get_folder_id_by_dashboard_path(self, dashboard_path: str) -> int:

return folder_id
else:
logging.info("There is no dashboard_path defined.")
logging.error("There is no dashboard_path defined.")
raise ValueError

def get_all_folder_ids_and_names(self) -> list:
Expand Down
58 changes: 30 additions & 28 deletions tests/integrationtest/resources/dashboard.json
Original file line number Diff line number Diff line change
@@ -1,30 +1,32 @@
{
"id": null,
"uid": "tests",
"title": "Test",
"tags": [],
"style": "dark",
"timezone": "browser",
"editable": true,
"hideControls": false,
"graphTooltip": 1,
"panels": [],
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"time_options": [],
"refresh_intervals": []
},
"templating": {
"list": []
},
"annotations": {
"list": []
},
"refresh": "5s",
"schemaVersion": 17,
"version": 0,
"links": []
"dashboard": {
"id": null,
"uid": "tests",
"title": "Test",
"tags": [],
"style": "dark",
"timezone": "browser",
"editable": true,
"hideControls": false,
"graphTooltip": 1,
"panels": [],
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"time_options": [],
"refresh_intervals": []
},
"templating": {
"list": []
},
"annotations": {
"list": []
},
"refresh": "5s",
"schemaVersion": 17,
"version": 0,
"links": []
}
}
45 changes: 10 additions & 35 deletions tests/integrationtest/resources/dashboard_expected_result.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
"list": []
},
"editable": true,
"graphTooltip": 1,
"hideControls": false,
"id": 104,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 152,
"links": [],
"liveNow": false,
"panels": [],
"refresh": "5s",
"schemaVersion": 17,
"schemaVersion": 34,
"style": "dark",
"tags": [],
"templating": {
Expand All @@ -20,36 +20,11 @@
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [],
"time_options": []
},
"timezone": "browser",
"timepicker": {},
"timezone": "",
"title": "Test 1",
"uid": "tests1",
"version": 1
},
"meta": {
"canAdmin": true,
"canEdit": true,
"canSave": true,
"canStar": true,
"created": "2022-01-15T20:46:44+01:00",
"createdBy": "Anonymous",
"expires": "0001-01-01T00:00:00Z",
"folderId": 72,
"folderTitle": "Github Integrationtest",
"folderUid": "6U_QdWJnz",
"folderUrl": "/dashboards/f/6U_QdWJnz/github-integrationtest",
"hasAcl": false,
"isFolder": false,
"provisioned": false,
"provisionedExternalId": "",
"slug": "test-1",
"type": "db",
"updated": "2022-01-15T20:46:44+01:00",
"updatedBy": "Anonymous",
"url": "/d/tests1/test-1",
"version": 1
"uid": "test1",
"version": 3,
"weekStart": ""
}
}
Loading