'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 }}"'

@staticmethod
def oo_cert_expiry_results_to_json(hostvars, play_hosts):

    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
