Merge ~axino/charm-telegraf/+git/telegraf-charm:redis_relation into ~telegraf-charmers/charm-telegraf:master

Proposed by Junien F
Status: Merged
Approved by: Jamon Camisso
Approved revision: 6a09b9a4f9bd595f8d7bf82a4fd82eb1939e1fbc
Merged at revision: e6cc90d9da7f3b406b2799592a57300843da2f78
Proposed branch: ~axino/charm-telegraf/+git/telegraf-charm:redis_relation
Merge into: ~telegraf-charmers/charm-telegraf:master
Diff against target: 136 lines (+60/-19)
3 files modified
layer.yaml (+5/-4)
metadata.yaml (+18/-15)
reactive/telegraf.py (+37/-0)
Reviewer Review Type Date Requested Status
Telegraf Charmers Pending
Review via email: mp+359622@code.launchpad.net

Commit message

add redis relation

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
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision e6cc90d9da7f3b406b2799592a57300843da2f78

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/layer.yaml b/layer.yaml
2index 7af7077..7c1b2bd 100644
3--- a/layer.yaml
4+++ b/layer.yaml
5@@ -15,20 +15,21 @@
6 # along with this program. If not, see <http://www.gnu.org/licenses/>.
7
8 includes:
9- - layer:basic
10 - layer:apt
11+ - layer:basic
12 - layer:ntpmon
13 - layer:promreg-client
14 - interface:elasticsearch
15+ - interface:http
16 - interface:influxdb-api
17+ - interface:juju-info
18 - interface:memcache
19 - interface:mongodb
20- - interface:pgsql
21 - interface:mysql-root
22- - interface:juju-info
23- - interface:http
24+ - interface:pgsql
25 - interface:prometheus-rules
26 - interface:rabbitmq
27+ - interface:redis
28 options:
29 basic:
30 use_venv: true
31diff --git a/metadata.yaml b/metadata.yaml
32index 93ad11f..912f6f5 100644
33--- a/metadata.yaml
34+++ b/metadata.yaml
35@@ -36,35 +36,38 @@ series:
36 - bionic
37 subordinate: true
38 requires:
39- mysql:
40- interface: mysql-root
41- postgresql:
42- interface: pgsql
43- mongodb:
44- interface: mongodb
45+ amqp:
46+ interface: rabbitmq
47 scope: container
48- memcached:
49- interface: memcache
50+ apache:
51+ interface: apache-website
52 scope: container
53 elasticsearch:
54 interface: elasticsearch
55 scope: container
56+ exec:
57+ interface: telegraf-exec
58+ scope: container
59 haproxy:
60 interface: statistics
61 scope: container
62- apache:
63- interface: apache-website
64- scope: container
65 influxdb-api:
66 interface: influxdb-api
67 juju-info:
68 interface: juju-info
69 scope: container
70- exec:
71- interface: telegraf-exec
72+ memcached:
73+ interface: memcache
74 scope: container
75- amqp:
76- interface: rabbitmq
77+ mongodb:
78+ interface: mongodb
79+ scope: container
80+ mysql:
81+ interface: mysql-root
82+ postgresql:
83+ interface: pgsql
84+ redis:
85+ interface: redis
86 scope: container
87 provides:
88 prometheus-client:
89diff --git a/reactive/telegraf.py b/reactive/telegraf.py
90index afcf181..a4cae51 100644
91--- a/reactive/telegraf.py
92+++ b/reactive/telegraf.py
93@@ -588,6 +588,43 @@ def apache_input(apache):
94 set_state('telegraf.needs_reload')
95
96
97+@when('endpoint.redis.available')
98+def add_redis_input(redis):
99+ template = """
100+[[inputs.redis]]
101+ servers = ["tcp://{{ host }}:{{ port }}"]
102+ # Until https://github.com/influxdata/telegraf/issues/5036 is fixed
103+ fielddrop = ["aof_last_bgrewrite_status","aof_last_write_status","maxmemory_policy","rdb_last_bgsave_status","used_memory_dataset_perc","used_memory_peak_perc"]
104+"""
105+ config_path = '{}/{}.conf'.format(get_configs_dir(), 'redis')
106+
107+ rels = hookenv.relations_of_type('redis')
108+ if len(rels) != 1:
109+ hookenv.log("Unexpected number of units in the redis relation."
110+ "Expected 1, got {}".format(len(rels)), "WARNING")
111+
112+ ctxt = {}
113+ ctxt["host"] = rels[0]['host'].strip('"')
114+ ctxt["port"] = rels[0]['port']
115+ input_config = render_template(template, ctxt) + \
116+ render_extra_options("inputs", "redis")
117+ hookenv.log("Updating {} plugin config file".format('redis'))
118+ host.write_file(config_path, input_config.encode('utf-8'))
119+ set_state('plugins.redis.configured')
120+ set_state('telegraf.needs_reload')
121+
122+
123+@when_not('endpoint.redis.available')
124+@when('plugins.redis.configured')
125+def remove_redis_input():
126+ config_path = '{}/{}.conf'.format(get_configs_dir(), 'redis')
127+
128+ if os.path.exists(config_path):
129+ os.unlink(config_path)
130+ remove_state('plugins.redis.configured')
131+ set_state('telegraf.needs_reload')
132+
133+
134 @when('exec.available')
135 def exec_input(exec_rel):
136 template = """

Subscribers

People subscribed via source and target branches

to all changes: