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)