Merge ~xavpaice/charm-telegraf:bug/1919937-digest into charm-telegraf:master

Proposed by Xav Paice
Status: Merged
Approved by: James Troup
Approved revision: 10bb6ee2d825033f410386ca9edb001e688099d0
Merged at revision: 86e4ac2f59661b3c40d2d9f351bf98446dbad738
Proposed branch: ~xavpaice/charm-telegraf:bug/1919937-digest
Merge into: charm-telegraf:master
Diff against target: 53 lines (+7/-1)
2 files modified
src/reactive/telegraf.py (+4/-1)
src/tests/unit/test_telegraf.py (+3/-0)
Reviewer Review Type Date Requested Status
Canonical IS Reviewers Pending
BootStack Reviewers Pending
Review via email: mp+400008@code.launchpad.net

Commit message

add dashboard digest to dashboard request

Adds a digest key to the dashboard dict, so that the Grafana charm can detect when the dashboard has been updated.

To post a comment you must log in.
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

This merge proposal is being monitored by mergebot. Change the status to Approved to merge.

Revision history for this message
James Troup (elmo) wrote :

LGTM

Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision 86e4ac2f59661b3c40d2d9f351bf98446dbad738

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/reactive/telegraf.py b/src/reactive/telegraf.py
2index c5406ba..4c06424 100644
3--- a/src/reactive/telegraf.py
4+++ b/src/reactive/telegraf.py
5@@ -16,6 +16,7 @@
6
7 import base64
8 import binascii
9+import hashlib
10 import io
11 import ipaddress
12 import json
13@@ -1488,14 +1489,16 @@ def prometheus_client_departed():
14 @when(
15 "plugins.prometheus-client.configured",
16 "endpoint.dashboards.joined",
17- "leadership.is_leader"
18+ "leadership.is_leader",
19 )
20 @when_not("grafana.configured")
21 def register_grafana_dashboard():
22 grafana = endpoint_from_flag("endpoint.dashboards.joined")
23 hookenv.log("Loading grafana dashboard", level=hookenv.DEBUG)
24 dashboard = _load_grafana_dashboard()
25+ digest = hashlib.md5(dashboard.encode("utf8")).hexdigest()
26 dashboard_dict = json.loads(dashboard)
27+ dashboard_dict["digest"] = digest
28 hookenv.log(
29 "Rendered dashboard dict:\n{}".format(dashboard_dict), level=hookenv.DEBUG
30 )
31diff --git a/src/tests/unit/test_telegraf.py b/src/tests/unit/test_telegraf.py
32index a82a337..1f9372f 100644
33--- a/src/tests/unit/test_telegraf.py
34+++ b/src/tests/unit/test_telegraf.py
35@@ -1450,8 +1450,10 @@ class TestGrafanaDashboard:
36 @patch("reactive.telegraf.hookenv")
37 @patch("reactive.telegraf.set_flag")
38 @patch("reactive.telegraf.json")
39+ @patch("hashlib.md5")
40 def test_register_grafana_dashboard(
41 self,
42+ mock_md5,
43 mock_json,
44 mock_set_flag,
45 mock_hookenv,
46@@ -1471,6 +1473,7 @@ class TestGrafanaDashboard:
47 mock_dashboard_dict = MagicMock()
48 mock_rendered_content = MagicMock()
49
50+ mock_md5.return_value = MagicMock()
51 mock_endpoint_from_flag.return_value = mock_grafana
52 mock_hookenv.config.return_value = fake_config
53 mock_json.loads.return_value = mock_dashboard_dict

Subscribers

People subscribed via source and target branches

to all changes: