From 6cd39efb851709f9e4414fa56060311c1591516e Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Mon, 12 Oct 2015 13:44:22 -0400 Subject: [PATCH] Add a cleanup_authtokens management command We also will now clean these up during cleanup_deleted --- .../management/commands/cleanup_authtokens.py | 38 +++++++++++++++++++ .../management/commands/cleanup_deleted.py | 7 ++++ 2 files changed, 45 insertions(+) create mode 100644 awx/main/management/commands/cleanup_authtokens.py diff --git a/awx/main/management/commands/cleanup_authtokens.py b/awx/main/management/commands/cleanup_authtokens.py new file mode 100644 index 0000000000..a7f8fe6bdf --- /dev/null +++ b/awx/main/management/commands/cleanup_authtokens.py @@ -0,0 +1,38 @@ +# Copyright (c) 2015 Ansible, Inc. +# All Rights Reserved. + +# Python +import datetime +import logging +from optparse import make_option + +# Django +from django.db import transaction +from django.core.management.base import BaseCommand +from django.utils.timezone import now + +# AWX +from awx.main.models import * # noqa + +class Command(BaseCommand): + ''' + Management command to cleanup expired auth tokens + ''' + + help = 'Cleanup expired auth tokens.' + + def init_logging(self): + log_levels = dict(enumerate([logging.ERROR, logging.INFO, + logging.DEBUG, 0])) + self.logger = logging.getLogger('awx.main.commands.cleanup_authtokens') + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter('%(message)s')) + self.logger.addHandler(handler) + self.logger.propagate = False + + @transaction.atomic + def handle(self, *args, **options): + self.init_logging() + tokens_removed = AuthToken.objects.filter(expires__lt=now()) + self.logger.log(99, "Removing %d expired auth tokens" % tokens_removed.count()) + tokens_removed.delete() diff --git a/awx/main/management/commands/cleanup_deleted.py b/awx/main/management/commands/cleanup_deleted.py index 74b6c68106..b6fd5360e5 100644 --- a/awx/main/management/commands/cleanup_deleted.py +++ b/awx/main/management/commands/cleanup_deleted.py @@ -118,3 +118,10 @@ class Command(BaseCommand): self.logger.log(99, "Removed %d items", n_deleted_items) else: self.logger.log(99, "Would have removed %d items", n_deleted_items) + + tokens_removed = AuthToken.objects.filter(expires__lt=now()) + if not self.dry_run: + self.logger.log(99, "Removed %d expired auth tokens" % tokens_removed.count()) + tokens_removed.delete() + else: + self.logger.log(99, "Would have removed %d expired auth tokens" % tokens_removed.count())