Merge lp:~bloodearnest/charms/trusty/logstash-forwarder/trunk into lp:~canonical-is-sa/charms/trusty/logstash-forwarder/trunk

Proposed by Simon Davy
Status: Merged
Merged at revision: 18
Proposed branch: lp:~bloodearnest/charms/trusty/logstash-forwarder/trunk
Merge into: lp:~canonical-is-sa/charms/trusty/logstash-forwarder/trunk
Diff against target: 112 lines (+44/-11)
2 files modified
hooks/hooks.py (+28/-9)
hooks/test_hooks.py (+16/-2)
To merge this branch: bzr merge lp:~bloodearnest/charms/trusty/logstash-forwarder/trunk
Reviewer Review Type Date Requested Status
Canonical IS SAs Pending
Review via email: mp+320433@code.launchpad.net

Commit message

Follow up on previous branch, use the remote unit name for juju fields

Description of the change

Follow up on previous branch, use the remote unit name for juju fields

To post a comment you must log in.
18. By Chris Stratford

[bloodearnest,r=chriss] use the remote unit name for juju fields

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'hooks/hooks.py'
2--- hooks/hooks.py 2017-03-07 10:46:24 +0000
3+++ hooks/hooks.py 2017-03-20 22:19:41 +0000
4@@ -14,9 +14,9 @@
5 import socket
6 sys.path.insert(0, os.path.join(os.environ['CHARM_DIR'], 'lib'))
7 from charmhelpers.core.hookenv import (
8- Hooks, log, charm_dir, relations_of_type, local_unit, service_name
9+ Hooks, log, charm_dir, relations_of_type
10 )
11-from charmhelpers.core import host
12+from charmhelpers.core import host, hookenv
13 from charmhelpers.core.host import mkdir, service_start, service_stop, service_restart
14 from charmhelpers.core.services import RelationContext
15 from charmhelpers.fetch import apt_install, apt_update, add_source
16@@ -120,23 +120,40 @@
17 })
18 config["files"] = files
19
20- default_fields = {
21- 'hostname': socket.gethostname(),
22- 'juju_unit': local_unit().replace('/', '-'),
23- 'juju_service': service_name(),
24- }
25+ default_fields = {'hostname': socket.gethostname()}
26 model = os.environ.get('JUJU_MODEL_NAME', os.environ.get('JUJU_ENV_NAME'))
27 if model:
28 default_fields['juju_model'] = model
29
30+ units = []
31+ relations = hookenv.relations()
32+ if relations['logs']:
33+ units = [u for u in relations['logs'].values()[0]
34+ if u != hookenv.local_unit()]
35+
36+ if not units:
37+ units = [u for u in relations['juju-info'].values()[0]
38+ if u != hookenv.local_unit()]
39+
40+ units = [u for u in units if u != hookenv.local_unit()]
41+
42+ if units:
43+ unit = units[0]
44+ default_fields['juju_unit'] = unit.replace('/', '-')
45+ default_fields['juju_service'] = unit.split('/')[0]
46+
47+ for file in config["files"]:
48+ for default, value in default_fields.items():
49+ file["fields"].setdefault(default, value)
50+
51 if logs_relation_data is not None:
52 for path, rel_fields in logs_relation_data.items():
53 fields = default_fields.copy()
54 fields.update(rel_fields)
55 config["files"].append({"paths": [path], "fields": fields})
56
57- host.write_file(conf.configFile(),
58- json.dumps(config, sort_keys=True, indent=4))
59+ host.write_file(
60+ conf.configFile(), json.dumps(config, sort_keys=True, indent=4))
61
62
63 def writeEtcHosts():
64@@ -251,6 +268,8 @@
65 @hooks.hook('logs-relation-changed')
66 @hooks.hook('logs-relation-departed')
67 @hooks.hook('logs-relation-broken')
68+@hooks.hook("juju-info-relation-joined")
69+@hooks.hook("juju-info-relation-departed")
70 def logs_relation_hooks():
71 log('logs relation')
72 writeConfig()
73
74=== added symlink 'hooks/juju-info-relation-changed'
75=== target is u'hooks.py'
76=== added symlink 'hooks/juju-info-relation-departed'
77=== target is u'hooks.py'
78=== modified file 'hooks/test_hooks.py'
79--- hooks/test_hooks.py 2017-03-07 10:46:24 +0000
80+++ hooks/test_hooks.py 2017-03-20 22:19:41 +0000
81@@ -87,6 +87,20 @@
82 self.mock_gethostname = self.patch(mock.patch('socket.gethostname'))
83 self.mock_gethostname.return_value = 'HOSTNAME'
84
85+ self.mrelations = self.patch(
86+ mock.patch.object(hookenv, 'relations')
87+ )
88+
89+ self.relations = {
90+ 'logs': {
91+ 'baz': {
92+ 'logstash-forwarder/0': {},
93+ 'remote/0': {},
94+ }
95+ }
96+ }
97+ self.mrelations.return_value = self.relations
98+
99 def test_logs_hooks(self):
100 conf_path = hookenv.config("config_dir") + "/logstash_forwarder.conf"
101 host.write_file.reset_mock()
102@@ -96,8 +110,8 @@
103 conf = json.loads(host.write_file.call_args[0][1])
104 self.assertEqual("file1", conf["files"][0]["paths"][0])
105 expected_fields = {
106- u'juju_service': u'logstash-forwarder',
107- u'juju_unit': u'logstash-forwarder-0',
108+ u'juju_service': u'remote',
109+ u'juju_unit': u'remote-0',
110 u'juju_model': u'test-model',
111 u'hostname': u'HOSTNAME',
112 u'type': u'type1',

Subscribers

People subscribed via source and target branches

to all changes: