[releng] Fix warnings on process-git-request with pkgdb groups

Kevin Fenzi kevin at fedoraproject.org
Mon Jan 5 19:03:38 UTC 2015


commit 75955f51627ff390511aabe3d01d84ca1efbf5d2
Author: Kevin Fenzi <kevin at scrye.com>
Date:   Mon Jan 5 12:03:20 2015 -0700

    Fix warnings on process-git-request with pkgdb groups

 scripts/process-git-requests/process-git-requests |   43 +++++++++++++-------
 1 files changed, 28 insertions(+), 15 deletions(-)
---
diff --git a/scripts/process-git-requests/process-git-requests b/scripts/process-git-requests/process-git-requests
index ef82af8..7b719d1 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
 


More information about the rel-eng mailing list