[Devel] Select fastest mirror capability for vztempl-dl

Sergey Bronnikov sergeyb at openvz.org
Wed Dec 23 05:12:34 PST 2015


Hi, Pavel

it is indeed good idea to choose nearest openvz mirror automatically.
But from my point of view it is better to implement it as a patch
for vztmpl-dl instead of separate script.

Kir, what is your opinion?

Sergey

> Hello, folks!
> 
> I have developed some code in context https://bugs.openvz.org/browse/OVZ-6641
> 
> All code you could find below:
> 
> #!/usr/bin/perl
> 
> use strict;
> use warnings;
> 
> ### Author pavel.odintsov at gmail.com
> 
> #
> # This script will fight all lags related to mirror.openvz.org when
> downloading templates with vztmpl-dl
> # We select fastest mirror and use it instead default (it's definitely
> connected to Internet with 56.6k dial-up modem)
> #
> 
> # Install fastest mirror plugin
> #`yum install yum-plugin-fastestmirror`;
> # Build cache for it
> #`yum makecache`;
> 
> my $architecture = `uname -m`;
> chomp $architecture;
> 
> my @openvz_mirrors = `cat
> /var/cache/yum/$architecture/6/openvz-utils/mirrorlist.txt`;
> chomp @openvz_mirrors;
> 
> my @mirrors_with_time = `cat /var/cache/yum/$architecture/6/timedhosts.txt`;
> chomp @mirrors_with_time;
> 
> my $mirror_time_hash = {};
> for my $line (@mirrors_with_time) {
>     my @data = split /\s/, $line;
> 
>     $mirror_time_hash-> { $data[0] } = $data[1];
> }
> 
> sub get_latency {
>     my $mirror = shift;
> 
>     if ($mirror =~ m#//(.*?)/#) {
>         my $short_mirror_name = $1;
>         return $mirror_time_hash->{$short_mirror_name};
>     } else {
>         return 9999999;
>     }
> }
> 
> my @fastestst_openvz_mirrors = sort { get_latency($a) <=>
> get_latency($b) } @openvz_mirrors;
> my $fastest_mirror = $fastestst_openvz_mirrors[0];
> 
> print "Fastest mirror is: $fastest_mirror with latency " .
> get_latency($fastest_mirror) . "\n";
> 
> my $url_for_download_conf = $fastest_mirror;
> $url_for_download_conf =~ s#/current/$#/template/precreated#;
> 
> # Fastest mirror is: http://mirror.logol.ru/openvz/current/ with
> latency 0.0241508483887
> open my $fl, ">>", "/etc/vz/download.conf" or die "Can't open file for
> writing\n";
> print {$fl} qq(\nTMPL_REPO_PREFIX="$url_for_download_conf"\n);
> close $fl;
> 
> --
> Sincerely yours, Pavel Odintsov


More information about the Devel mailing list