extras-repoclosure PackageOwners.py,1.12,1.13
Michael Schwendt (mschwendt)
fedora-extras-commits at redhat.com
Wed Aug 29 20:48:12 UTC 2007
Author: mschwendt
Update of /cvs/fedora/extras-repoclosure
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv3481
Modified Files:
PackageOwners.py
Log Message:
Apply https authentication patch from Todd Zullinger and make the repoid another arg
Index: PackageOwners.py
===================================================================
RCS file: /cvs/fedora/extras-repoclosure/PackageOwners.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- PackageOwners.py 21 Aug 2007 00:21:47 -0000 1.12
+++ PackageOwners.py 29 Aug 2007 20:48:10 -0000 1.13
@@ -20,7 +20,19 @@
import os, sys, time
import shutil
import tempfile
-import urllib
+from urllib import FancyURLopener
+
+
+class AccountsURLopener(FancyURLopener):
+ """Subclass of urllib.FancyURLopener to allow passing http basic auth info"""
+ def __init__(self, username, password):
+ FancyURLopener.__init__(self)
+ self.username = username
+ self.password = password
+
+ def prompt_user_passwd(self, host, realm):
+ return (self.username, self.password)
+
class PackageOwners:
"""interface to Fedora package owners list (and Fedora Extras owners/owners.list file)"""
@@ -30,21 +42,26 @@
self.how = 'unknown'
- def FromURL(self, retries=3, retrysecs=300, url='https://admin.fedoraproject.org/pkgdb/acls/bugzilla?tg_format=plain',pkgdb=True):
+ def FromURL(self, retries=3, retrysecs=300, url='https://admin.fedoraproject.org/pkgdb/acls/bugzilla?tg_format=plain',
+ pkgdb=True, repoid='Fedora', username=None, password=None):
# old url='http://cvs.fedora.redhat.com/viewcvs/*checkout*/owners/owners.list?root=extras'
if pkgdb:
self.how = 'pkgdb'
else:
self.how = 'url'
self.url = url
+ self.repoid = repoid
self.retries = retries
self.retrysecs = retrysecs
+ self.username = username
+ self.password = password
return self._refresh()
-
-
- def FromCVS(self, retries=3, retrysecs=300, command='LC_ALL=C CVS_RSH=ssh cvs -f -d :pserver:anonymous at cvs.fedora.redhat.com:/cvs/extras co owners', workdir=''):
+
+
+ def FromCVS(self, retries=3, retrysecs=300, command='LC_ALL=C CVS_RSH=ssh cvs -f -d :pserver:anonymous at cvs.fedora.redhat.com:/cvs/extras co owners', workdir='',repoid='Fedora'):
self.how = 'cvs'
self.command = command
+ self.repoid = repoid
self.retries = retries
self.retrysecs = retrysecs
self.workdir = workdir
@@ -56,7 +73,7 @@
def __getitem__(self,rpmname):
"""return e-mail address from initialowner field"""
return self.GetOwner(rpmname)
-
+
def GetOwner(self,rpmname):
"""return e-mail address from initialowner field"""
@@ -95,7 +112,7 @@
if len(self.cwdstack):
os.chdir( self.cwdstack.pop() )
-
+
def _refresh(self):
self.dict = {} # map package name to email address, dict[name]
return self._download()
@@ -107,6 +124,10 @@
continue
try:
(repo,pkgname,summary,emails,qacontact,cc) = line.rstrip().split('|')
+ # The PkgDb includes repo's other than Fedora (Fedora EPEL,
+ # Fedora OLPC, and Red Hat Linux, for example). Skip them.
+ if repo != self.repoid:
+ continue
def fixaddr(a):
# Old Fedora CVS owners.list contains e-mail addresses.
# PkgDb plain output contains usernames only.
@@ -115,7 +136,7 @@
if not self.usermap.has_key(a):
return a
return self.usermap[a]
-
+
addrs = []
mailto = '' # primary pkg owner
if len(emails):
@@ -195,8 +216,12 @@
if count != 0:
time.sleep(self.retrysecs)
try:
- f = urllib.urlopen(url)
+ opener = AccountsURLopener(self.username, self.password)
+ f = opener.open(url)
rc = 0
+ if 'www-authenticate' in f.headers:
+ rc = 1
+ strerr = 'Authentication is required to access %s' % url
break
except IOError, (_err, _strerr):
rc = 1
@@ -210,7 +235,7 @@
f.close()
return l
-
+
def _downloadfromurl(self):
self._parse(self._getlinesfromurl(self.url))
return True
More information about the fedora-extras-commits
mailing list