From 0a836bf6af20cb8d1050d96de4e0cd9992996bf2 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Thu, 19 Dec 2013 15:56:55 +0000 Subject: [PATCH] Cronjob for awarding the mirror badge. --- .../files/cron/award-mirror-badge | 62 +++++++++++++++++++ .../files/cron/award-mirror-badge.cron | 1 + .../files/cron/cron-badges-logrotate | 6 ++ roles/badges-backend/tasks/main.yml | 1 + 4 files changed, 70 insertions(+) create mode 100755 roles/badges-backend/files/cron/award-mirror-badge create mode 100644 roles/badges-backend/files/cron/award-mirror-badge.cron diff --git a/roles/badges-backend/files/cron/award-mirror-badge b/roles/badges-backend/files/cron/award-mirror-badge new file mode 100755 index 0000000000..47bc1354d7 --- /dev/null +++ b/roles/badges-backend/files/cron/award-mirror-badge @@ -0,0 +1,62 @@ +#!/usr/bin/env python + +import __main__ +# This is going to require sqlalchemy 0.8 sooner than later. +__main__.__requires__ = __requires__ = ["tahrir-api", "sqlalchemy>=0.7"] +import pkg_resources +pkg_resources.require(__requires__) + +import time + +from tahrir_api.dbapi import TahrirDatabase +import transaction + +import logging +log = logging.getLogger() +logging.basicConfig() + +import fedmsg +import fedmsg.config + +fm_config = fedmsg.config.load_config() +fm_config['cert_prefix'] = 'fedbadges' +fm_config['name'] = 'relay_inbound' +fm_config['active'] = True +fedmsg.init(**fm_config) + +import fedbadges.utils + + +def main(): + url = 'https://admin.fedoraproject.org/mirrormanager/mirroradmins' + response = requests.get(url) + usernames = response.text.split() + + badge = tahrir.get_badge(badge_id='mirror,-mirror-on-the-wall') + if not badge: + raise ValueError("badge does not exist") + + for username in usernames: + email = username + "@fedoraproject.org" + if tahrir.assertion_exists(badge.id, email): + print email, "already has", badge.id, "skipping." + continue + + time.sleep(1) + print "awarding", badge.id, "to", email + try: + transaction.begin() + tahrir.add_assertion(badge.id, email, None) + transaction.commit() + except Exception as e: + transaction.abort() + print "Failure:", e + + +if __name__ == '__main__': + uri = fm_config['badges_global']['database_uri'] + tahrir = TahrirDatabase( + uri, + notification_callback=fedbadges.utils.notification_callback, + ) + main() diff --git a/roles/badges-backend/files/cron/award-mirror-badge.cron b/roles/badges-backend/files/cron/award-mirror-badge.cron new file mode 100644 index 0000000000..505fd766ec --- /dev/null +++ b/roles/badges-backend/files/cron/award-mirror-badge.cron @@ -0,0 +1 @@ +20 */2 * * * fedmsg /usr/share/badges/cronjobs/award-mirror-badge >> /var/log/fedmsg/cron-award-mirror-badge.log 2>&1 diff --git a/roles/badges-backend/files/cron/cron-badges-logrotate b/roles/badges-backend/files/cron/cron-badges-logrotate index eac3d29ead..06bcc0bb01 100644 --- a/roles/badges-backend/files/cron/cron-badges-logrotate +++ b/roles/badges-backend/files/cron/cron-badges-logrotate @@ -10,6 +10,12 @@ rotate 4 weekly } +/var/log/fedmsg/cron-award-mirror-badge.log { + missingok + notifempty + rotate 4 + weekly +} /var/log/fedmsg/cron-award-oldschool-badges.log { missingok notifempty diff --git a/roles/badges-backend/tasks/main.yml b/roles/badges-backend/tasks/main.yml index 8a0532c5df..2167b8ae49 100644 --- a/roles/badges-backend/tasks/main.yml +++ b/roles/badges-backend/tasks/main.yml @@ -108,6 +108,7 @@ - award-oldschool-badges - award-libravatar-badge - award-flock-paparazzi-badge + - award-mirror-badge tags: - config - cron