48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
# Copyright (c) 2017 Ansible Tower by Red Hat
|
|
# All Rights Reserved.
|
|
|
|
|
|
# Old Insights API -> New API
|
|
#
|
|
# last_check_in is missing entirely, is now provided by a different endpoint
|
|
# reports[] -> []
|
|
# reports[].rule.{description,summary} -> [].rule.{description,summary}
|
|
# reports[].rule.category -> [].rule.category.name
|
|
# reports[].rule.severity (str) -> [].rule.total_risk (int)
|
|
|
|
# reports[].rule.{ansible,ansible_fix} appears to be unused
|
|
# reports[].maintenance_actions[] missing entirely, is now provided
|
|
# by a different Insights endpoint
|
|
|
|
|
|
def filter_insights_api_response(platform_info, reports, remediations):
|
|
severity_mapping = {
|
|
1: 'INFO',
|
|
2: 'WARN',
|
|
3: 'ERROR',
|
|
4: 'CRITICAL'
|
|
}
|
|
|
|
new_json = {
|
|
'platform_id': platform_info['id'],
|
|
'last_check_in': platform_info.get('updated'),
|
|
'reports': [],
|
|
}
|
|
for rep in reports:
|
|
new_report = {
|
|
'rule': {},
|
|
'maintenance_actions': remediations
|
|
}
|
|
rule = rep.get('rule') or {}
|
|
for k in ['description', 'summary']:
|
|
if k in rule:
|
|
new_report['rule'][k] = rule[k]
|
|
if 'category' in rule:
|
|
new_report['rule']['category'] = rule['category']['name']
|
|
if rule.get('total_risk') in severity_mapping:
|
|
new_report['rule']['severity'] = severity_mapping[rule['total_risk']]
|
|
|
|
new_json['reports'].append(new_report)
|
|
|
|
return new_json
|