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
=== modified file 'hooks/hooks.py'
--- hooks/hooks.py 2017-03-07 10:46:24 +0000
+++ hooks/hooks.py 2017-03-20 22:19:41 +0000
@@ -14,9 +14,9 @@
14import socket14import socket
15sys.path.insert(0, os.path.join(os.environ['CHARM_DIR'], 'lib'))15sys.path.insert(0, os.path.join(os.environ['CHARM_DIR'], 'lib'))
16from charmhelpers.core.hookenv import (16from charmhelpers.core.hookenv import (
17 Hooks, log, charm_dir, relations_of_type, local_unit, service_name17 Hooks, log, charm_dir, relations_of_type
18)18)
19from charmhelpers.core import host19from charmhelpers.core import host, hookenv
20from charmhelpers.core.host import mkdir, service_start, service_stop, service_restart20from charmhelpers.core.host import mkdir, service_start, service_stop, service_restart
21from charmhelpers.core.services import RelationContext21from charmhelpers.core.services import RelationContext
22from charmhelpers.fetch import apt_install, apt_update, add_source22from charmhelpers.fetch import apt_install, apt_update, add_source
@@ -120,23 +120,40 @@
120 })120 })
121 config["files"] = files121 config["files"] = files
122122
123 default_fields = {123 default_fields = {'hostname': socket.gethostname()}
124 'hostname': socket.gethostname(),
125 'juju_unit': local_unit().replace('/', '-'),
126 'juju_service': service_name(),
127 }
128 model = os.environ.get('JUJU_MODEL_NAME', os.environ.get('JUJU_ENV_NAME'))124 model = os.environ.get('JUJU_MODEL_NAME', os.environ.get('JUJU_ENV_NAME'))
129 if model:125 if model:
130 default_fields['juju_model'] = model126 default_fields['juju_model'] = model
131127
128 units = []
129 relations = hookenv.relations()
130 if relations['logs']:
131 units = [u for u in relations['logs'].values()[0]
132 if u != hookenv.local_unit()]
133
134 if not units:
135 units = [u for u in relations['juju-info'].values()[0]
136 if u != hookenv.local_unit()]
137
138 units = [u for u in units if u != hookenv.local_unit()]
139
140 if units:
141 unit = units[0]
142 default_fields['juju_unit'] = unit.replace('/', '-')
143 default_fields['juju_service'] = unit.split('/')[0]
144
145 for file in config["files"]:
146 for default, value in default_fields.items():
147 file["fields"].setdefault(default, value)
148
132 if logs_relation_data is not None:149 if logs_relation_data is not None:
133 for path, rel_fields in logs_relation_data.items():150 for path, rel_fields in logs_relation_data.items():
134 fields = default_fields.copy()151 fields = default_fields.copy()
135 fields.update(rel_fields)152 fields.update(rel_fields)
136 config["files"].append({"paths": [path], "fields": fields})153 config["files"].append({"paths": [path], "fields": fields})
137154
138 host.write_file(conf.configFile(),155 host.write_file(
139 json.dumps(config, sort_keys=True, indent=4))156 conf.configFile(), json.dumps(config, sort_keys=True, indent=4))
140157
141158
142def writeEtcHosts():159def writeEtcHosts():
@@ -251,6 +268,8 @@
251@hooks.hook('logs-relation-changed')268@hooks.hook('logs-relation-changed')
252@hooks.hook('logs-relation-departed')269@hooks.hook('logs-relation-departed')
253@hooks.hook('logs-relation-broken')270@hooks.hook('logs-relation-broken')
271@hooks.hook("juju-info-relation-joined")
272@hooks.hook("juju-info-relation-departed")
254def logs_relation_hooks():273def logs_relation_hooks():
255 log('logs relation')274 log('logs relation')
256 writeConfig()275 writeConfig()
257276
=== added symlink 'hooks/juju-info-relation-changed'
=== target is u'hooks.py'
=== added symlink 'hooks/juju-info-relation-departed'
=== target is u'hooks.py'
=== modified file 'hooks/test_hooks.py'
--- hooks/test_hooks.py 2017-03-07 10:46:24 +0000
+++ hooks/test_hooks.py 2017-03-20 22:19:41 +0000
@@ -87,6 +87,20 @@
87 self.mock_gethostname = self.patch(mock.patch('socket.gethostname'))87 self.mock_gethostname = self.patch(mock.patch('socket.gethostname'))
88 self.mock_gethostname.return_value = 'HOSTNAME'88 self.mock_gethostname.return_value = 'HOSTNAME'
8989
90 self.mrelations = self.patch(
91 mock.patch.object(hookenv, 'relations')
92 )
93
94 self.relations = {
95 'logs': {
96 'baz': {
97 'logstash-forwarder/0': {},
98 'remote/0': {},
99 }
100 }
101 }
102 self.mrelations.return_value = self.relations
103
90 def test_logs_hooks(self):104 def test_logs_hooks(self):
91 conf_path = hookenv.config("config_dir") + "/logstash_forwarder.conf"105 conf_path = hookenv.config("config_dir") + "/logstash_forwarder.conf"
92 host.write_file.reset_mock()106 host.write_file.reset_mock()
@@ -96,8 +110,8 @@
96 conf = json.loads(host.write_file.call_args[0][1])110 conf = json.loads(host.write_file.call_args[0][1])
97 self.assertEqual("file1", conf["files"][0]["paths"][0])111 self.assertEqual("file1", conf["files"][0]["paths"][0])
98 expected_fields = {112 expected_fields = {
99 u'juju_service': u'logstash-forwarder',113 u'juju_service': u'remote',
100 u'juju_unit': u'logstash-forwarder-0',114 u'juju_unit': u'remote-0',
101 u'juju_model': u'test-model',115 u'juju_model': u'test-model',
102 u'hostname': u'HOSTNAME',116 u'hostname': u'HOSTNAME',
103 u'type': u'type1',117 u'type': u'type1',

Subscribers

People subscribed via source and target branches

to all changes: