[PATCH] Implement fas groups in process-git-requests
Pierre-Yves Chibon
pingou at pingoured.fr
Mon Jan 5 18:45:36 UTC 2015
> From 44fd9fe553ad79a1f2ae1eb5e7043dcfbf4da3c7 Mon Sep 17 00:00:00 2001
> From: Thomas Spura <thomas.spura at gmail.com>
> Date: Mon, 15 Dec 2014 21:41:26 +0100
> Subject: [PATCH] Implement fas groups in check_owners
>
> This avoids a warning, so that groups can be processed.
>
> See:
> https://bugzilla.redhat.com/1167830
> https://bugzilla.redhat.com/1131543
> ---
> scripts/process-git-requests/process-git-requests | 43 +++++++++++++++--------
> 1 file changed, 28 insertions(+), 15 deletions(-)
>
> diff --git a/scripts/process-git-requests/process-git-requests b/scripts/process-git-requests/process-git-requests
> index 068a481..0c56adb 100755
> --- a/scripts/process-git-requests/process-git-requests
> +++ b/scripts/process-git-requests/process-git-requests
> @@ -33,7 +33,7 @@ import time
> import webbrowser
> import socket
> from configobj import ConfigObj, flatten_errors
> -from fedora.client import AccountSystem, AuthError
> +from fedora.client import AccountSystem, AuthError, AppError
> from pkgdb2client import PkgDB, PkgDBException
> from optparse import OptionParser
> from validate import Validator
> @@ -496,6 +496,31 @@ def process_no_request(bug, allcomments):
> return True
>
>
> +def check_owner(fas, owner):
> + """Check if owner is a valid FAS account or group.
> +
> + If owner is a valid FAS account, also check if owner is a packager.
> + """
> + warnings = []
> + if owner.startswith('group::'):
> + group_name = owner[7:]
> + try:
> + group = fas.group_by_name(group_name)
> + if not group_name.endswith('-sig') and not group['group_type'] == 'pkgdb':
> + warnings.append('WARNING: "%s" is not a valid FAS group.' % group_name)
> + except AppError:
> + warnings.append('WARNING: "%s" could not be found as FAS group.' % group_name)
> + else: # Check if owner is a valid user
> + person = fas.person_by_username(owner)
> + if not 'status' in person:
> + warnings.append('WARNING: "%s" is not a valid FAS account.' % i)
> + else:
> + groups = [g['name'] for g in person.approved_memberships]
> + if not 'packager' in groups:
> + warnings.append('WARNING: "%s" is not in the packager group.' % i)
> + return warnings
> +
> +
> def check_owners(fas, owner, comaintainers, cc_list):
> print "Checking owners..."
> warnings = []
> @@ -503,7 +528,7 @@ def check_owners(fas, owner, comaintainers, cc_list):
> for i in [owner] + comaintainers:
> for retry in range(1, config['pkgdb.retries'] + 1):
> try:
> - person = fas.person_by_username(i)
> + warnings.extend(check_owner(fas, i))
> except AuthError, e:
> if retry >= config['pkgdb.retries']:
> break
> @@ -513,20 +538,8 @@ def check_owners(fas, owner, comaintainers, cc_list):
> else:
> break
>
> - if not 'status' in person:
> - warnings.append('WARNING: "%s" is not a valid FAS account.' % i)
> - break
> -
> - groups = [g['name'] for g in person.approved_memberships]
> -
> - if not 'packager' in groups:
> - warnings.append('WARNING: "%s" is not in the packager group.' % i)
> -
> for i in cc_list:
> - person = fas.person_by_username(i)
> - if not 'status' in person:
> - warnings.append('WARNING: "%s" is not a valid FAS account.' % i)
> - break
> + warnings.extend(check_owner(fas, i))
>
> return warnings
This patch still needs to be merged and as people processing the requests are
still getting invalid warnings when the request includes a group.
Thanks,
Pierre
More information about the rel-eng
mailing list