#!/usr/bin/python -t # # Create an /etc/gitolog/conf/getolog.conf file with acls for dist-git # # Takes no arguments! # import fedora.client import sys import grp if __name__ == '__main__': # Get the users in various groups TRUSTED = grp.getgrnam('cvsadmin')[3] SPARC = grp.getgrnam('fedora-sparc')[3] IA64 = grp.getgrnam('fedora-ia64')[3] S390 = grp.getgrnam('fedora-s390')[3] PROVEN = grp.getgrnam('provenpackager')[3] ACTIVE = ['EL-4', 'EL-5', 'F-11', 'F-12', 'devel'] # Read the ACL information from the packageDB pkgdb = fedora.client.PackageDB() acls = pkgdb.get_vcs_acls() # Get a list of all the packages pkglist = acls.keys() pkglist.sort() # sanity check if len(pkglist) < 2500: sys.exit(1) # print out our user groups print '@admins = %s' % ' '.join(TRUSTED) print '@provenpackager = %s' % ' '.join(PROVEN) print '@fedora-sparc = %s' % ' '.join(SPARC) print '@fedora-ia64 = %s' % ' '.join(IA64) print '@fedora-s390 = %s' % ' '.join(S390) print # print out all our packages as a group print '@pkgs = rpms/%s' % ' rpms/'.join(pkglist) print # print our default permissions print 'repo @pkgs' print ' RW = @admins @fedora-sparc @fedora-ia64 @fedora-s390' for pkg in pkglist: branchAcls = {} # Check whether we need to set separate per branch acls buffer = [] # Buffer the output per package # Examine each branch in the package branches = acls[pkg].keys() branches.sort() for branch in branches: if not branch in ACTIVE: continue if 'packager' in acls[pkg][branch]['commit']['groups']: # If the packager group is defined, everyone has access if branch == 'devel': branch = 'master' buffer.append(' RW %s = @all' % (branch)) branchAcls.setdefault('@all', []).append((pkg, branch)) else: # Extract the owners committers = [] owners = acls[pkg][branch]['commit']['people'] owners.sort() for owner in owners: committers.append(owner) if 'provenpackager' in acls[pkg][branch]['commit']['groups']: committers.append('@provenpackager') # Print the committers to the acl for this package-branch committers = ' '.join(committers) if branch == 'devel': branch = 'master' buffer.append(' RW %s = %s' % (branch, committers)) branchAcls.setdefault(committers, []).append((pkg, branch)) print print 'repo rpms/%s' % pkg if len(branchAcls.keys()) == 1: acl = branchAcls.keys()[0] print ' RW = %s' % acl else: print '\n'.join(buffer) print ' R = @all' sys.exit(0)