def clean_up_old_evaluations()

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