diff --git a/roles/packager_alias/files/owner-email-from-pagure.py b/roles/packager_alias/files/owner-email-from-pagure.py new file mode 100644 index 0000000000..a28dfb9786 --- /dev/null +++ b/roles/packager_alias/files/owner-email-from-pagure.py @@ -0,0 +1,38 @@ +#!/usr/bin/python -tt + +""" +This script is ran as a cronjob and bastion. + +Its goal is to generate all the -owner email aliases we provide +""" + +import requests + +# TODO: Change me +pagure_url = 'http://127.0.0.1:5000' +pagure_group_url = pagure_url + '/api/0/group/{group}' +pagure_projects_url = pagure_url + '/api/0/projects' +pagure_projects = requests.get(pagure_projects_url).json()['projects'] +project_to_email = {} + +for project in pagure_projects: + users = set(project['access_users']['owner']) | \ + set(project['access_users']['admin']) | \ + set(project['access_users']['commit']) + groups = set() + for group_kind in ('admin', 'commit'): + for group in project['access_groups'][group_kind]: + groups.add(group) + + for group in groups: + group_members = requests.get( + pagure_group_url.format(group=group)).json()['members'] + users = users | set(group_members) + + # Use the @fedoraproject.org email alias instead of looking their email up + # in FAS + project_to_email[project['name']] = \ + ['{0}@fedoraproject.org'.format(user) for user in users] + +for project, emails in project_to_email.items(): + print('{0}: {1}'.format(project, ','.join(sorted(emails)))) diff --git a/roles/packager_alias/tasks/main.yml b/roles/packager_alias/tasks/main.yml index 759d8b777d..050e4c0a9c 100644 --- a/roles/packager_alias/tasks/main.yml +++ b/roles/packager_alias/tasks/main.yml @@ -1,13 +1,34 @@ --- # Email alias set-up +- name: Install the Python script to get the -owner email alias (non-staging) + copy: + src: owner-email.py + dest: /usr/local/bin/owner-email.py + owner: root + group: root + mode: 0755 + when: env != 'staging' + tags: + - install -- name: Install the script generating the -owner email alias - copy: src={{ item.file }} - dest={{ item.dest }} - owner=root group=root mode=0755 - with_items: - - { file: owner-email.py, dest: /usr/local/bin/owner-email.py } - - { file: package-owner-aliases.sh, dest: /etc/cron.hourly/package-owner-aliases.sh } +- name: Install the Python script to get the -owner email alias (staging) + copy: + src: owner-email-from-pagure.py + dest: /usr/local/bin/owner-email.py + owner: root + group: root + mode: 0755 + when: env == 'staging' + tags: + - install + +- name: Install the script to generate the -owner email alias + copy: + src: package-owner-aliases.sh + dest: /etc/cron.hourly/package-owner-aliases.sh + owner: root + group: root + mode: 0755 tags: - install