Single Entry ReWrite Code - foo.rpm

Matt Domsch Matt_Domsch at dell.com
Fri Feb 23 04:04:40 UTC 2007


On Thu, Feb 22, 2007 at 02:23:57PM -0700, Jonathan Steffan wrote:
>    Team,
> 
>        I've been working on getting jigdo usable for Fedora Unity. In the
>    process, I needed a way to have a single url to access rpms on public
>    mirrors.

Mirrormanager has code to do this right now if you want it.  (Granted,
it's not in use yet, but soon...).  The URLs underneath /pub/.... on
the mirrormanager URL provide the list of up-to-date mirrors that have
that content.  Right now it's all directory-based, but could easily be
extended to be file-based.  By that I mean:

http://admin.fedora.redhat.com/mirrormanager/pub/fedora/linux/core/6/i386/iso/

will return the list of mirrors containing the content of
pub/fedora/linux/core/6/i386/iso/
that's up-to-date.

> Assume the requested file is foo.rpm What I have done so far is
>    setup a rewrite map that does the following:
> 
>      * Pull the mirrorlist while preserving the requesting IP as
>        X-Fowarded-For (for geoIP)
>      * Parse the mirrorlist
>      * Random loop the mirrorlist and request the HEAD for foo.rpm from a
>        given mirror, if not 404 continue

Is the code for this piece available?  Does it use keepalives? :-)
The keepalives are what tried to hack into the mirrormanager crawler
earlie this week.  (urlgrabber's keepalive.py is close to what I need,
but I need it to do HEADs not GETs, so I was overriding various parts
and it got messy in a hurry).

>      * Redirect the request for foo.rpm to a public mirror (using 302) that
>        has verified it has the file
> 
>    Things I plan on doing:
> 
>      * Cache results (assuming no DB backend, do RAM caching based on
>        session; IP, remote mirror, etc)
>      * Maybe rate public mirrors based on:
> 
>           * Number of missing files (404)
>           * Latency (granted this is from the rewrite server)
>           * Bitrate test (ran every hour or something, also from the rewrite
>             server)
> 
>      * Setup a database that can be prepopulated with this data, potentially
>        using data from mirrormanager

:-)

> 
>    If needed, round robin would help keep things going.. or even just use
>    pound (or something else) between two machines.
> 
>    Any thoughts? I'd like to have Fedora Project to provide this feature. If
>    not, I will be setting it up anyways.
> 
>    Jonathan Steffan
>    daMaestro

if mirrormanager can provide what you need, I'm sure open to
contributions (ideas and/or patches).

Thanks,
Matt

-- 
Matt Domsch
Software Architect
Dell Linux Solutions linux.dell.com & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com




More information about the Fedora-infrastructure-list mailing list