From 6715f6ce193487686854eae05235c3652fc36458 Mon Sep 17 00:00:00 2001 From: Sayan Chowdhury Date: Thu, 17 May 2018 20:59:03 +0530 Subject: [PATCH] badges: Add a GDPR SAR script for Badges Signed-off-by: Sayan Chowdhury --- .../badges-backend01.phx2.fedoraproject.org | 5 + inventory/inventory | 1 + .../backend/files/get-sar-person-details | 91 +++++++++++++++++++ roles/badges/backend/tasks/main.yml | 13 ++- 4 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 roles/badges/backend/files/get-sar-person-details diff --git a/inventory/host_vars/badges-backend01.phx2.fedoraproject.org b/inventory/host_vars/badges-backend01.phx2.fedoraproject.org index b0ecaf2cd5..9185d9a6b9 100644 --- a/inventory/host_vars/badges-backend01.phx2.fedoraproject.org +++ b/inventory/host_vars/badges-backend01.phx2.fedoraproject.org @@ -8,3 +8,8 @@ volgroup: /dev/vg_guests eth0_ip: 10.5.126.100 vmhost: virthost19.phx2.fedoraproject.org datacenter: phx2 + +# GDPR SAR variables +sar_script: /usr/local/bin/get-sar-person-details +sar_script_user: fedmsg +sar_output_file: badges.json diff --git a/inventory/inventory b/inventory/inventory index dca138d707..190c26ad75 100644 --- a/inventory/inventory +++ b/inventory/inventory @@ -40,6 +40,7 @@ retrace01.qa.fedoraproject.org retrace02.qa.fedoraproject.org [sar] +badges-backend01.phx2.fedoraproject.org bodhi-backend02.phx2.fedoraproject.org mailman01.phx2.fedoraproject.org diff --git a/roles/badges/backend/files/get-sar-person-details b/roles/badges/backend/files/get-sar-person-details new file mode 100644 index 0000000000..2d9f4cf4bf --- /dev/null +++ b/roles/badges/backend/files/get-sar-person-details @@ -0,0 +1,91 @@ +#!/usr/bin/env python +""" This is a CLI script for getting all the details of a person +""" + +import __main__ +__main__.__requires__ = __requires__ = ["tahrir-api", "sqlalchemy>=0.7"] +import pkg_resources +pkg_resources.require(__requires__) + +import argparse +import json +import os +import sys + +from tahrir_api.dbapi import TahrirDatabase + +import fedmsg +import fedmsg.config + +import fedbadges.utils + + +def parse_args(): + parser = argparse.ArgumentParser(__doc__) + parser.add_argument('--person', default=None, help="A person FAS username") + args = parser.parser_args() + return args + + +def initialize(): + fm_config = fedmsg.config.load_config() + fm_config['cert_prefix'] = 'fedbadges' + fm_config['name'] = 'relay_inbound' + fm_config['active'] = True + fedmsg.init(**fm_config) + uri = fm_config['badges_global']['database_uri'] + tahrir = TahrirDatabase( + uri, + notification_callback=fedbadges.utils.notification_callback, + ) + return tahrir + + +def main(tahrir, nickname): + payload = {} + person = tahrir.get_person(nickname=nickname) + + if not person: + print 'No such person %r' % nickname + sys.exit(1) + + payload = { + 'id': person.id, + 'nickname': nickname, + 'email': person.email, + 'website': person.website, + 'bio': person.bio, + 'created_on': person.created_on, + 'last_login': person.last_login, + 'opt_out': person.opt_out, + 'rank': person.rank, + 'assertions': [] + } + + assertions = tahrir.get_assertions_by_email(person.email) + + if assertions: + assertion_list = [] + for assertion in assertions: + assertion_list.append({ + 'badge_id': assertion.badge_id, + 'issued_on': assertion.issued_on + }) + + payload['assertions'] = assertion_list + + print json.dumps(payload) + + +if __name__ == '__main__': + args = parse_args() + if not args.person: + nickname = os.environ['BADGE_USER'] + if nickname is None: + print "You must specify a person id." + sys.exit(1) + else: + nickname = args.person + + tahrir = initialize() + main(tahrir, nickname) diff --git a/roles/badges/backend/tasks/main.yml b/roles/badges/backend/tasks/main.yml index da555d0a59..3bb6f60e93 100644 --- a/roles/badges/backend/tasks/main.yml +++ b/roles/badges/backend/tasks/main.yml @@ -169,4 +169,15 @@ - badges - badges/backend - +- name: copy get-sar-person-details + copy: > + src=get-sar-person-details + dest=/usr/local/bin/get-sar-person-details + owner=fedmsg + group=fedmsg + mode=700 + tags: + - scripts + - badges + - badges/backend + - sar