Use the max_connection attribute from metalink parser
when building MirrorGroup arguments, so it's available
to the parallel download scheduller.
---
yum/metalink.py | 2 +-
yum/yumRepo.py | 12 +++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/yum/metalink.py b/yum/metalink.py
index aaa4f25..90b0053 100755
--- a/yum/metalink.py
+++ b/yum/metalink.py
@@ -248,7 +248,7 @@ class MetaLinkRepoMD:
# of mirror baseurls. Joy of reusing other people's stds. :)
if not url.endswith("/repodata/repomd.xml"):
continue
- yield url[:-len("/repodata/repomd.xml")]
+ yield url[:-len("/repodata/repomd.xml")], mirror.max_connections
def __str__(self):
ret = str(self.repomd)
diff --git a/yum/yumRepo.py b/yum/yumRepo.py
index 91b7dde..1181fae 100644
--- a/yum/yumRepo.py
+++ b/yum/yumRepo.py
@@ -287,6 +287,7 @@ class YumRepository(Repository, config.RepoConf):
self._grabfunc = None
self._grab = None
+ self._max_connections = {}
def __cmp__(self, other):
""" Sort yum repos. by cost, and then by alphanumeric on their id. """
@@ -491,7 +492,11 @@ class YumRepository(Repository, config.RepoConf):
reget='simple',
**ugopts)
- self._grab = mgclass(self._grabfunc, self.urls,
+ def max_con(url):
+ con = self._max_connections.get(url)
+ if con: url = { 'mirror': misc.to_utf8(url), 'max_connections':
con }
+ return url
+ self._grab = mgclass(self._grabfunc, map(max_con, self.urls),
failure_callback=self.mirror_failure_obj)
def _default_grabopts(self, cache=True):
@@ -675,7 +680,7 @@ class YumRepository(Repository, config.RepoConf):
def _replace_and_check_url(self, url_list):
goodurls = []
skipped = None
- for url in url_list:
+ for url, con in url_list:
# obvious bogons get ignored b/c, we could get more interesting
checks but <shrug>
if url in ['', None]:
continue
@@ -692,6 +697,7 @@ class YumRepository(Repository, config.RepoConf):
skipped = url
continue
else:
+ self._max_connections[url] = con
goodurls.append(url)
if skipped is not None:
@@ -1698,7 +1704,7 @@ Insufficient space in download directory %s
continue
mirror = line.rstrip() # no more trailing \n's
mirror = mirror.replace('$ARCH', '$BASEARCH')
- returnlist.append(mirror)
+ returnlist.append((mirror, None))
return (returnlist, content)
--
1.7.4.4
_______________________________________________
Yum-devel mailing list
[email protected]
http://lists.baseurl.org/mailman/listinfo/yum-devel