Merge ~npochet/charm-telegraf:add-socket-port into ~telegraf-charmers/charm-telegraf:master

Proposed by Nicolas Pochet
Status: Merged
Approved by: Jeremy Lounder
Approved revision: 53d9aca66d26ba0e40a1d234f0483c7d8c042efc
Merged at revision: e58f7f408e8287cefb53288811e4e79d194241b6
Proposed branch: ~npochet/charm-telegraf:add-socket-port
Merge into: ~telegraf-charmers/charm-telegraf:master
Diff against target: 85 lines (+38/-2)
4 files modified
config.yaml (+6/-0)
reactive/telegraf.py (+11/-0)
templates/socket_listener.tmpl (+1/-2)
unit_tests/test_telegraf.py (+20/-0)
Reviewer Review Type Date Requested Status
Jeremy Lounder (community) +1 Approve
Telegraf Charmers Pending
Review via email: mp+367405@code.launchpad.net

Commit message

Add socket_listener_port config option

* Add socket_listener_port as a config option
* Add unit tests
* Fixes LP:1817406

Description of the change

Add socket_listener_port config option

* Add socket_listener_port as a config option
* Add unit tests
* Fixes LP:1817406

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
Jeremy Lounder (jldev) wrote :

lgtm

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

Change successfully merged at revision e58f7f408e8287cefb53288811e4e79d194241b6

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/config.yaml b/config.yaml
2index 8fe2608..898a46e 100644
3--- a/config.yaml
4+++ b/config.yaml
5@@ -154,3 +154,9 @@ options:
6 Percent of idle CPU at which to generate a Prometheus alert. Default
7 10%, i.e. alert if the CPU has less than 10% CPU running idle therefore
8 90% used by us+sy+wa+st.
9+ socket_listener_port:
10+ default: "8094"
11+ type: string
12+ description: |
13+ If set, the input socket_listener will listen on the specified port.
14+ The default option is to listen to 8094.
15diff --git a/reactive/telegraf.py b/reactive/telegraf.py
16index db3b75f..4ad854c 100644
17--- a/reactive/telegraf.py
18+++ b/reactive/telegraf.py
19@@ -236,6 +236,14 @@ def get_prometheus_port():
20 return int(config.get('prometheus_output_port'))
21
22
23+def get_socket_listener_port():
24+ config = hookenv.config()
25+ if not config.get('socket_listener_port', False):
26+ return 8094
27+ else:
28+ return int(config.get('socket_listener_port'))
29+
30+
31 def render_socket_listener_config(context):
32 # Remove deprecated config file
33 old_config_path = '{}/tcp_listener.conf'.format(get_configs_dir())
34@@ -302,6 +310,9 @@ def configure_telegraf():
35 check_prometheus_port("prometheus_output", get_prometheus_port())
36 context['extra_options'] = get_extra_options()
37
38+ if get_socket_listener_port():
39+ context["socket_listener_port"] = get_socket_listener_port()
40+
41 render_socket_listener_config(context=context)
42 hookenv.log("Updating main config file")
43 render(source='telegraf.conf.tmpl', templates_dir=get_templates_dir(),
44diff --git a/templates/socket_listener.tmpl b/templates/socket_listener.tmpl
45index 8d83e27..41ee2a9 100644
46--- a/templates/socket_listener.tmpl
47+++ b/templates/socket_listener.tmpl
48@@ -1,5 +1,4 @@
49 # Enable socket listener on loopback interface
50 # Generic socket listener capable of handling multiple socket types.
51 [[inputs.socket_listener]]
52- # FIXME: allow configuration
53- service_address = "tcp://127.0.0.1:8094"
54+ service_address = "tcp://127.0.0.1:{{ socket_listener_port }}"
55diff --git a/unit_tests/test_telegraf.py b/unit_tests/test_telegraf.py
56index bab5c31..78e2ff8 100644
57--- a/unit_tests/test_telegraf.py
58+++ b/unit_tests/test_telegraf.py
59@@ -842,6 +842,26 @@ def test_upgrade_charm(mocker):
60 assert clear_flag.call_count == 4
61
62
63+def test_get_socket_listener_port(monkeypatch, config):
64+ config['socket_listener_port'] = ''
65+ assert telegraf.get_socket_listener_port() == 8094
66+ config['socket_listener_port'] = '9090'
67+ assert telegraf.get_socket_listener_port() == 9090
68+
69+
70+def test_socket_listener_config(monkeypatch, config):
71+ open_ports = set()
72+ monkeypatch.setattr(telegraf.hookenv, 'open_port',
73+ lambda p: open_ports.add(p))
74+ monkeypatch.setattr(telegraf.hookenv, 'close_port',
75+ lambda p: open_ports.remove(p))
76+ config['prometheus_output_port'] = 'default'
77+ telegraf.configure_telegraf()
78+ expected = 'service_address = "tcp://127.0.0.1:8094"'
79+ config_file = base_dir().join('telegraf.d', 'socket_listener.conf')
80+ assert expected in config_file.read()
81+
82+
83 class TestGetHostnameLabel(unittest.TestCase):
84 @patch('reactive.telegraf.get_remote_unit_name')
85 @patch('charmhelpers.core.hookenv.config')

Subscribers

People subscribed via source and target branches

to all changes: