[yum-cvs] yum/yum config.py, 1.72.2.1, 1.72.2.2 repos.py, 1.83, 1.83.2.1
Seth Vidal
skvidal at login.linux.duke.edu
Mon Nov 7 00:50:10 UTC 2005
Update of /home/groups/yum/cvs/yum/yum
In directory login:/tmp/cvs-serv10912/yum
Modified Files:
Tag: yum-2_4_X
config.py repos.py
Log Message:
backport repomd.xml cookie caching mechanism from HEAD
Index: config.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/config.py,v
retrieving revision 1.72.2.1
retrieving revision 1.72.2.2
diff -u -r1.72.2.1 -r1.72.2.2
--- config.py 7 Nov 2005 00:26:52 -0000 1.72.2.1
+++ config.py 7 Nov 2005 00:50:07 -0000 1.72.2.2
@@ -200,7 +200,8 @@
optionints = [('debuglevel', 2),
('errorlevel', 2),
('retries', 10),
- ('recent', 7)]
+ ('recent', 7),
+ ('metadata_expire', 28800]
#defaults -either get them or set them
@@ -514,6 +515,7 @@
thisrepo.set('includepkgs', includelist)
thisrepo.set('basecachedir', yumconfig.getConfigOption('cachedir'))
+ thisrepo.set('metadata_expire', yumconfig.getConfigOption('metadata_expire'))
return thisrepo
Index: repos.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/repos.py,v
retrieving revision 1.83
retrieving revision 1.83.2.1
diff -u -r1.83 -r1.83.2.1
--- repos.py 8 Aug 2005 14:57:05 -0000 1.83
+++ repos.py 7 Nov 2005 00:50:07 -0000 1.83.2.1
@@ -340,6 +340,7 @@
self.proxy_username = None
self.proxy = None
self.proxy_dict = {}
+ self.metadata_cookie_fn = 'cachecookie'
# throw in some stubs for things that will be set by the config class
self.basecachedir = ""
@@ -504,6 +505,9 @@
self.set('pkgdir', pkgdir)
self.set('hdrdir', hdrdir)
+ cookie = self.cachedir + '/' + self.metadata_cookie_fn
+ self.set('metadata_cookie', cookie)
+
for dir in [self.cachedir, self.hdrdir, self.pkgdir]:
if self.cache == 0:
if os.path.exists(dir) and os.path.isdir(dir):
@@ -623,7 +627,34 @@
return result
-
+
+ def metadataCurrent(self):
+ """Check if there is a metadata_cookie and check its age. If the
+ age of the cookie is less than metadata_expire time then return true
+ else return False"""
+
+ val = False
+ if os.path.exists(self.metadata_cookie):
+ cookie_info = os.stat(self.metadata_cookie)
+ if cookie_info[8] + self.metadata_expire > time.time():
+ val = True
+
+ return val
+
+
+ def setMetadataCookie(self):
+ """if possible, set touch the metadata_cookie file"""
+
+ check = self.metadata_cookie
+ if not os.path.exists(self.metadata_cookie):
+ check = self.cachedir
+
+ if os.access(check, os.W_OK):
+ fo = open(self.metadata_cookie, 'w+')
+ fo.close()
+ del fo
+
+
def getRepoXML(self, text=None):
"""retrieve/check/read in repomd.xml from the repository"""
@@ -632,7 +663,7 @@
if self.repoXML is not None:
return
- if self.cache == 1:
+ if self.cache or self.metadataCurrent():
if not os.path.exists(local):
raise Errors.RepoError, 'Cannot find repomd.xml file for %s' % (self)
else:
@@ -650,7 +681,9 @@
except URLGrabError, e:
raise Errors.RepoError, 'Error downloading file %s: %s' % (local, e)
-
+ # if we have a 'fresh' repomd.xml then update the cookie
+ self.setMetadataCookie()
+
try:
self.repoXML = repoMDObject.RepoMD(self.id, result)
except mdErrors.RepoMDError, e:
More information about the Yum-cvs-commits
mailing list