[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