[Yum-devel] [PATCH] yum/yumRepo does not uses URLGrabber provided by yum extension
Zdenek Pavlas
zpavlas at redhat.com
Thu Sep 8 07:31:36 UTC 2011
Hi!
> + def _createDefaultGrabber(**kwargs):
> + ug = self._getgrab()
You may as well use self.grab directly.
> + if ug == nil:
> + return URLGrabber(kwargs)
> + return ug
None instead of 'nil', perhaps?
But _getgrab() may never return that.
> def _getMetalink(self):
> ...
> + ug = _createDefaultGrabber(bandwidth = self.bandwidth,
Are you sure this does not trigger an infinite recursion?
_getMetalink() => _createDefaultGrabber() => _getgrab()
=> _setupGrab() => self.urls => _geturls() => _baseurlSetup()
=> self.metalink_data => _getMetalink()
grabber self.grab is mirrors-aware, so you can't use it
to fetch the mirror list itself. There's a self.grabfunc
that does not use mirror lists (and is one of the many
write-only attributes in yum), but _setupGrab() sets both
at the same time so can't use it either.
That's likely why getMetalink() instantiates it's own grabber.
What's the issue with that? Does the yum-s3 plugin replace
self._grab with a custom grabber? Does it so before
_getMetalink(), so it should use the one that's there already?
It seems likely, because otherwise it'd fail.
Then it'd probably make sense to do something like:
ug = self._grab
if not ug:
# no grabber yet, make our own
ugopts = self._default_grabopts()
ug = URLGrabber(..., **ugopts)
try:
ug.urlgrab(...)
bye,
Zdenek
More information about the Yum-devel
mailing list