~ubuntuone-pqm-team/charms/trusty/logstash-forwarder/trunk

« back to all changes in this revision

Viewing changes to hooks/hooks.py

  • Committer: Simon Davy
  • Date: 2017-03-06 11:50:52 UTC
  • Revision ID: simon.davy@canonical.com-20170306115052-xn8jnzovwga97d7x
support adding additional fields in the relation data

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
import json
11
11
import base64
12
12
import shutil
 
13
import collections
13
14
sys.path.insert(0, os.path.join(os.environ['CHARM_DIR'], 'lib'))
14
15
from charmhelpers.core.hookenv import Hooks, log, charm_dir, relations_of_type
15
16
from charmhelpers.core import host
117
118
            config["files"] = files
118
119
 
119
120
    if logs_relation_data is not None:
120
 
        for typ, fil in logs_relation_data:
121
 
            config["files"].append({"paths": [fil], "fields": {"type": typ}})
 
121
        for path, fields in logs_relation_data.items():
 
122
            config["files"].append({"paths": [path], "fields": fields})
122
123
 
123
124
    host.write_file(conf.configFile(),
124
125
        json.dumps(config, sort_keys=True, indent=4))
252
253
        'types' not in logs_relation_data[0] or
253
254
        'files' not in logs_relation_data[0]):
254
255
        return None
255
 
    types = logs_relation_data[0]['types'].split()
256
 
    files = logs_relation_data[0]['files'].split()
257
 
    return zip(types, files)
 
256
 
 
257
    reldata = {k: v.split() for k, v in logs_relation_data[0].items()}
 
258
    paths = reldata.pop('files')
 
259
    types = reldata.pop('types')
 
260
    config = collections.OrderedDict()
 
261
    for i, (path, type_) in enumerate(zip(paths, types)):
 
262
        fields = {k: v[i] for k, v in reldata.items() if i < len(v)}
 
263
        fields['type'] = type_
 
264
        config[path] = fields
 
265
 
 
266
    return config
258
267
 
259
268
 
260
269
class LogsRelation(RelationContext):