blob: a2bc9ecdb4c7afb46852e67aaa57e3cc11f86413 (
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
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Custom filters for use in openshift-ansible
"""
# Disabling too-many-public-methods, since filter methods are necessarily
# public
# pylint: disable=too-many-public-methods
class FilterModule(object):
""" Custom ansible filters """
@staticmethod
def oo_cert_expiry_results_to_json(hostvars, play_hosts):
"""Takes results (`hostvars`) from the openshift_cert_expiry role
check and serializes them into proper machine-readable JSON
output. This filter parameter **MUST** be the playbook `hostvars`
variable. The `play_hosts` parameter is so we know what to loop over
when we're extrating the values.
Returns:
Results are collected into two top-level keys under the `json_results`
dict:
* `json_results.data` [dict] - Each individual host check result, keys are hostnames
* `json_results.summary` [dict] - Summary of number of `warning` and `expired`
certificates
Example playbook usage:
- name: Generate expiration results JSON
become: no
run_once: yes
delegate_to: localhost
when: openshift_certificate_expiry_save_json_results|bool
copy:
content: "{{ hostvars|oo_cert_expiry_results_to_json() }}"
dest: "{{ openshift_certificate_expiry_json_results_path }}"
"""
json_result = {
'data': {},
'summary': {},
}
for host in play_hosts:
json_result['data'][host] = hostvars[host]['check_results']['check_results']
total_warnings = sum([hostvars[h]['check_results']['summary']['warning'] for h in play_hosts])
total_expired = sum([hostvars[h]['check_results']['summary']['expired'] for h in play_hosts])
total_ok = sum([hostvars[h]['check_results']['summary']['ok'] for h in play_hosts])
total_total = sum([hostvars[h]['check_results']['summary']['total'] for h in play_hosts])
json_result['summary']['warning'] = total_warnings
json_result['summary']['expired'] = total_expired
json_result['summary']['ok'] = total_ok
json_result['summary']['total'] = total_total
return json_result
def filters(self):
""" returns a mapping of filters to methods """
return {
"oo_cert_expiry_results_to_json": self.oo_cert_expiry_results_to_json,
}
|