in rdklib/util/evaluations.py [0:0]
def clean_up_old_evaluations(event, client_factory, latest_evaluations):
config_client = client_factory.build_client('config')
latest_eval_ids = []
for latest_eval in latest_evaluations:
latest_eval_ids.append(latest_eval['ComplianceResourceId'])
cleaned_evaluations = []
old_evals = []
next_token = ''
while True:
compliance_details = config_client.get_compliance_details_by_config_rule(
ConfigRuleName=event['configRuleName'],
ComplianceTypes=['COMPLIANT', 'NON_COMPLIANT'],
Limit=100,
NextToken=next_token)
old_evals.extend(compliance_details['EvaluationResults'])
next_token = compliance_details.get('NextToken', '')
if not next_token:
break
for old_eval in old_evals:
old_resource_id = old_eval['EvaluationResultIdentifier']['EvaluationResultQualifier']['ResourceId']
if old_resource_id not in latest_eval_ids:
eval = Evaluation(
ComplianceType.NOT_APPLICABLE,
old_resource_id,
resourceType=old_eval['EvaluationResultIdentifier']['EvaluationResultQualifier']['ResourceType']
)
eval.import_fields_from_periodic_event(event)
cleaned_evaluations.append(
eval.get_json()
)
return cleaned_evaluations + latest_evaluations