diff options
author | Hedayat Vatankhah <hedayat.fwd@gmail.com> | 2012-06-27 23:50:44 +0430 |
---|---|---|
committer | Hedayat Vatankhah <hedayat.fwd@gmail.com> | 2012-06-27 23:50:44 +0430 |
commit | f835c99f4bffe6a843e65d6045f9ced03470767c (patch) | |
tree | 8e856cb9f3f63ae9c62e4f8ec9801199e45088d6 /yum-fast-downloader.py | |
parent | 1bafa46f6d661307810d1a96806ad1f0827199cd (diff) | |
download | yum-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.py | 65 |
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 |