summaryrefslogtreecommitdiffstats
path: root/filter_plugins/oo_zabbix_filters.py
blob: a473993a2ffbc38446ef221d2b8fd8fdc8c902ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/python
# -*- coding: utf-8 -*-
# vim: expandtab:tabstop=4:shiftwidth=4
'''
Custom zabbix filters for use in openshift-ansible
'''

import pdb

class FilterModule(object):
    ''' Custom zabbix ansible filters '''

    @staticmethod
    def create_data(data, results, key, new_key):
        '''Take a dict, filter through results and add results['key'] to dict
        '''
        new_list = [app[key] for app in results]
        data[new_key] = new_list
        return data

    @staticmethod
    def oo_set_zbx_trigger_triggerid(item, trigger_results):
        '''Set zabbix trigger id from trigger results
        '''
        if isinstance(trigger_results, list):
            item['triggerid'] = trigger_results[0]['triggerid']
            return item

        item['triggerid'] = trigger_results['triggerids'][0]
        return item

    @staticmethod
    def oo_set_zbx_item_hostid(item, template_results):
        ''' Set zabbix host id from template results
        '''
        if isinstance(template_results, list):
            item['hostid'] = template_results[0]['templateid']
            return item

        item['hostid'] = template_results['templateids'][0]
        return item

    @staticmethod
    def oo_pdb(arg):
        ''' This pops you into a pdb instance where arg is the data passed in
            from the filter.
            Ex: "{{ hostvars | oo_pdb }}"
        '''
        pdb.set_trace()
        return arg

    @staticmethod
    def select_by_name(ans_data, data):
        ''' test
        '''
        for zabbix_item in data:
            if ans_data['name'] == zabbix_item:
                data[zabbix_item]['params']['hostid'] = ans_data['templateid']
                return data[zabbix_item]['params']
        return None

    @staticmethod
    def oo_build_zabbix_list_dict(values, string):
        ''' Build a list of dicts with string as key for each value
        '''
        rval = []
        for value in values:
            rval.append({string: value})
        return rval

    def filters(self):
        ''' returns a mapping of filters to methods '''
        return {
            "select_by_name": self.select_by_name,
            "oo_set_zbx_item_hostid": self.oo_set_zbx_item_hostid,
            "oo_set_zbx_trigger_triggerid": self.oo_set_zbx_trigger_triggerid,
            "oo_build_zabbix_list_dict": self.oo_build_zabbix_list_dict,
            "create_data": self.create_data,
        }