summaryrefslogtreecommitdiffstats
path: root/yum-fast-downloader.py
diff options
context:
space:
mode:
authorHedayat Vatankhah <hedayat.fwd@gmail.com>2012-06-27 23:50:44 +0430
committerHedayat Vatankhah <hedayat.fwd@gmail.com>2012-06-27 23:50:44 +0430
commitf835c99f4bffe6a843e65d6045f9ced03470767c (patch)
tree8e856cb9f3f63ae9c62e4f8ec9801199e45088d6 /yum-fast-downloader.py
parent1bafa46f6d661307810d1a96806ad1f0827199cd (diff)
downloadyum-fast-downloader-f835c99f4bffe6a843e65d6045f9ced03470767c.tar.gz
yum-fast-downloader-f835c99f4bffe6a843e65d6045f9ced03470767c.tar.xz
yum-fast-downloader-f835c99f4bffe6a843e65d6045f9ced03470767c.zip
Updated for new urlgrabber options
Diffstat (limited to 'yum-fast-downloader.py')
-rw-r--r--yum-fast-downloader.py65
1 files changed, 53 insertions, 12 deletions
diff --git a/yum-fast-downloader.py b/yum-fast-downloader.py
index 49e9918..c469dab 100644
--- a/yum-fast-downloader.py
+++ b/yum-fast-downloader.py
@@ -109,10 +109,9 @@ def downloadQueuedFiles(inputFileName):
"{0} exited with exit code: {1}".format(downloader_app, ret))
# Hooks!
-
# Written looking at yum's _retrieveMD implementation. Most parts have
# beed directly grabbed from that.
-def myRetrieveMD(self, mdtype, retrieve_can_fail=False):
+def myRetrieveMD(self, mdtype, retrieve_can_fail=False, **kwargs):
""" replace's yum's default _retrieveMD function to use a downloader """
# calls original function on return to make sure that everything is OK
thisdata = self.repoXML.getData(mdtype)
@@ -122,22 +121,64 @@ def myRetrieveMD(self, mdtype, retrieve_can_fail=False):
local = self.cachedir + '/' + fname
if self.retrieved.get(mdtype):
- # got it, move along
- return originalRetrieveMD(self, mdtype, retrieve_can_fail)
+ # got it, move along #maybe "local"
+ return originalRetrieveMD(self, mdtype, retrieve_can_fail, **kwargs)
if self.cache == 1:
- return originalRetrieveMD(self, mdtype, retrieve_can_fail)
+ if os.path.exists(local):
+ try:
+ self.checkMD(local, mdtype)
+ except URLGrabError, e:
+ raise Errors.RepoError, \
+ "Caching enabled and local cache: %s does not match checksum" % local
+ else:
+ return originalRetrieveMD(self, mdtype, retrieve_can_fail, **kwargs)
+
+ else: # ain't there - raise
+ raise Errors.RepoError, \
+ "Caching enabled but no local cache of %s from %s" % (local,
+ self)
if (os.path.exists(local) or
self._preload_md_from_system_cache(os.path.basename(local))):
if self._checkMD(local, mdtype, check_can_fail=True):
- return originalRetrieveMD(self, mdtype, retrieve_can_fail)
-
- if thisdata.size and os.path.exists(local):
- if os.stat(local).st_size >= int(thisdata.size):
- yum.misc.unlink_f(local)
- downloadFile(self.urls, remote, local, self.proxy_dict)
- return originalRetrieveMD(self, mdtype, retrieve_can_fail)
+ self.retrieved[mdtype] = 1
+ # it's the same return the local one
+ return originalRetrieveMD(self, mdtype, retrieve_can_fail, **kwargs)
+
+ try:
+ def checkfunc(obj):
+ self.checkMD(obj, mdtype)
+ self.retrieved[mdtype] = 1
+ text = "%s/%s" % (self.id, mdtype)
+ if thisdata.size is None:
+ reget = None
+ else:
+ reget = 'simple'
+ if os.path.exists(local):
+ if os.stat(local).st_size >= int(thisdata.size):
+ misc.unlink_f(local)
+ downloadFile(self.urls, remote, local, self.proxy_dict)
+# local = self._getFile(relative=remote,
+# local=local,
+# copy_local=1,
+# reget=reget,
+# checkfunc=checkfunc,
+# text=text,
+# cache=self.http_caching == 'all',
+# size=thisdata.size,
+# **kwargs)
+ except Errors.RepoError:
+ if retrieve_can_fail:
+ return None
+ raise
+ except URLGrabError, e:
+ if retrieve_can_fail:
+ return None
+ raise Errors.RepoError, \
+ "Could not retrieve %s matching remote checksum from %s" % (local, self)
+ else:
+ return originalRetrieveMD(self, mdtype, retrieve_can_fail, **kwargs)
def postconfig_hook(conduit):
global downloader_app