Exemplo n.º 1
0
def purge_rule_enforcements(logger, timestamp):
    """
    :param timestamp: Rule enforcement instances older than this timestamp will be deleted.
    :type timestamp: ``datetime.datetime
    """
    if not timestamp:
        raise ValueError("Specify a valid timestamp to purge.")

    logger.info("Purging rule enforcements older than timestamp: %s" %
                timestamp.strftime("%Y-%m-%dT%H:%M:%S.%fZ"))

    query_filters = {"enforced_at__lt": isotime.parse(timestamp)}

    try:
        deleted_count = RuleEnforcement.delete_by_query(**query_filters)
    except InvalidQueryError as e:
        msg = ("Bad query (%s) used to delete rule enforcements: %s"
               "Please contact support." % (
                   query_filters,
                   six.text_type(e),
               ))
        raise InvalidQueryError(msg)
    except:
        logger.exception(
            "Deleting rule enforcements using query_filters %s failed.",
            query_filters)
    else:
        logger.info("Deleted %s rule enforcement objects" % (deleted_count))

    # Print stats
    logger.info(
        "All rule enforcement models older than timestamp %s were deleted.",
        timestamp)