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
diff --git a/src/reactive/telegraf.py b/src/reactive/telegraf.py
index c5406ba..4c06424 100644
--- a/src/reactive/telegraf.py
+++ b/src/reactive/telegraf.py
@@ -16,6 +16,7 @@
1616
17import base6417import base64
18import binascii18import binascii
19import hashlib
19import io20import io
20import ipaddress21import ipaddress
21import json22import json
@@ -1488,14 +1489,16 @@ def prometheus_client_departed():
1488@when(1489@when(
1489 "plugins.prometheus-client.configured",1490 "plugins.prometheus-client.configured",
1490 "endpoint.dashboards.joined",1491 "endpoint.dashboards.joined",
1491 "leadership.is_leader"1492 "leadership.is_leader",
1492)1493)
1493@when_not("grafana.configured")1494@when_not("grafana.configured")
1494def register_grafana_dashboard():1495def register_grafana_dashboard():
1495 grafana = endpoint_from_flag("endpoint.dashboards.joined")1496 grafana = endpoint_from_flag("endpoint.dashboards.joined")
1496 hookenv.log("Loading grafana dashboard", level=hookenv.DEBUG)1497 hookenv.log("Loading grafana dashboard", level=hookenv.DEBUG)
1497 dashboard = _load_grafana_dashboard()1498 dashboard = _load_grafana_dashboard()
1499 digest = hashlib.md5(dashboard.encode("utf8")).hexdigest()
1498 dashboard_dict = json.loads(dashboard)1500 dashboard_dict = json.loads(dashboard)
1501 dashboard_dict["digest"] = digest
1499 hookenv.log(1502 hookenv.log(
1500 "Rendered dashboard dict:\n{}".format(dashboard_dict), level=hookenv.DEBUG1503 "Rendered dashboard dict:\n{}".format(dashboard_dict), level=hookenv.DEBUG
1501 )1504 )
diff --git a/src/tests/unit/test_telegraf.py b/src/tests/unit/test_telegraf.py
index a82a337..1f9372f 100644
--- a/src/tests/unit/test_telegraf.py
+++ b/src/tests/unit/test_telegraf.py
@@ -1450,8 +1450,10 @@ class TestGrafanaDashboard:
1450 @patch("reactive.telegraf.hookenv")1450 @patch("reactive.telegraf.hookenv")
1451 @patch("reactive.telegraf.set_flag")1451 @patch("reactive.telegraf.set_flag")
1452 @patch("reactive.telegraf.json")1452 @patch("reactive.telegraf.json")
1453 @patch("hashlib.md5")
1453 def test_register_grafana_dashboard(1454 def test_register_grafana_dashboard(
1454 self,1455 self,
1456 mock_md5,
1455 mock_json,1457 mock_json,
1456 mock_set_flag,1458 mock_set_flag,
1457 mock_hookenv,1459 mock_hookenv,
@@ -1471,6 +1473,7 @@ class TestGrafanaDashboard:
1471 mock_dashboard_dict = MagicMock()1473 mock_dashboard_dict = MagicMock()
1472 mock_rendered_content = MagicMock()1474 mock_rendered_content = MagicMock()
14731475
1476 mock_md5.return_value = MagicMock()
1474 mock_endpoint_from_flag.return_value = mock_grafana1477 mock_endpoint_from_flag.return_value = mock_grafana
1475 mock_hookenv.config.return_value = fake_config1478 mock_hookenv.config.return_value = fake_config
1476 mock_json.loads.return_value = mock_dashboard_dict1479 mock_json.loads.return_value = mock_dashboard_dict

Subscribers

People subscribed via source and target branches

to all changes: