return iso path
[pxelator] / lib / PXElator / upstream.pm
index a8b84f1..3c39b0c 100644 (file)
@@ -6,11 +6,14 @@ use autodie;
 
 use Data::Dump qw/dump/;
 use LWP::Simple qw/mirror RC_NOT_MODIFIED/;
-use Storable;
 use server;
+use once;
 
 sub mirror_file {
        my ( $url, $file ) = @_;
+
+       return unless once::first_time $file;
+
        warn "mirror_file $url -> $file\n";
        mirror( $url, $file )
                == RC_NOT_MODIFIED
@@ -19,20 +22,9 @@ sub mirror_file {
                ;
 }
 
-my $once_path = '/tmp/pxelator.once';
-our $just_once = retrieve $once_path if -e $once_path;
-sub first_time {
-       my $what = shift;
-       return if $just_once->{$what}++;
-       store $just_once, $once_path;
-       return 1;
-}
-
 sub iso {
        my $url = shift;
 
-       return if ! first_time($url);
-
        my $name = (caller(1))[3];
        $name =~ s{config::}{} || die "caller isn't package config !";
 
@@ -41,7 +33,7 @@ sub iso {
        my $dir = "$server::base_dir/iso";
        mkdir $dir unless -e $dir;
 
-       my $file = $1 if $url =~ m{/([^/]+\.iso$)}i;
+       my $file = $1 if $url =~ m{/([^/]+\.iso)}i;
        die "can't find iso file in $url" unless $file;
 
        my $iso = "$dir/$file";
@@ -55,6 +47,7 @@ sub iso {
        mkdir $mnt unless -d $mnt;
 
        system("mount -t iso9660 | grep $name/iso || sudo mount $iso $mnt -o loop -t iso9660 -v") == 0;
+       return $iso;
 }
 
 sub files {
@@ -75,7 +68,7 @@ sub files {
 
        foreach my $file ( @files ) {
                mirror_file( "$url/$file", "$path/$file" )
-                       if ! -e "$path/$file" || first_time( "$url/$file" );
+                       if ! -e "$path/$file" || once::first_time( "$url/$file" );
        }
 }