Changeset 38

Show
Ignore:
Timestamp:
10/08/06 06:08:28 (7 years ago)
Author:
max
Message:

Combined $grabbers and $postprocessors into $components to cut down
on redundant code.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • shepherd

    r36 r38  
    2323# 0.2.7   : Changed online file structure 
    2424# 0.2.8   : Integrated reconciler 
     25# 
     26#   have a type, and query_grabbers() and query_postprocessors() returning 
     27#   lists of each for easy iteration. 
    2528 
    2629BEGIN { *CORE::GLOBAL::die = \&my_die; } 
     
    5558chdir($CWD); 
    5659 
    57 my $GRABBER_DIR = "$CWD/grabbers"; 
    58 my $POSTPROCESSOR_DIR = "$CWD/postprocessors"; 
    5960my $ARCHIVE_DIR = "$CWD/archive"; 
    6061 
     
    112113my $debug = 1; 
    113114my $recdebug = 0; 
    114 my $grabbers = { }; 
     115my $components = { }; 
    115116my $gscore; 
    116 my $preferred; # obsolete but may still exist in shepherd.conf 
    117117my $region; 
    118118my $channels; 
     
    122122 
    123123# postprocessing 
    124 my $postprocessors = { }; 
    125124my $title_translation_table = { }; 
    126125my $langs = [ 'en' ]; 
     
    132131my $insufficient_grabber_data = 0; 
    133132 
     133# OBSOLETE: will be removed 
     134my $grabbers; 
     135my $postprocessors; 
     136my $preferred; 
     137 
    134138# --------------------------------------------------------------------------- 
    135139# --- Setup 
     
    253257        $used_grabbers++; 
    254258 
    255         $grabbers->{$grabber}->{lastdata} = time; 
    256         $grabbers->{$grabber}->{laststatus} = "unknown"; 
     259        $components->{$grabber}->{lastdata} = time; 
     260        $components->{$grabber}->{laststatus} = "unknown"; 
    257261 
    258262        printf "\nSHEPHERD: Using grabber: (%d) %s\n", $used_grabbers, $grabber; 
    259263 
    260         my $output = "$GRABBER_DIR/$grabber/output.xmltv"; 
    261  
    262         my $comm = "$GRABBER_DIR/$grabber/$grabber " . 
     264        my $output = "$CWD/grabbers/$grabber/output.xmltv"; 
     265 
     266        my $comm = "$CWD/grabbers/$grabber/$grabber " . 
    263267                   "--region $region " . 
    264268                   "--channels_file $channels_file " . 
     
    277281        } else { 
    278282            print "SHEPHERD: Excuting command: $comm\n"; 
    279             chdir "$GRABBER_DIR/$grabber/"; 
     283            chdir "$CWD/grabbers/$grabber/"; 
    280284            system($comm); 
    281285            chdir $CWD; 
     
    284288        # soak up the data we just collected 
    285289        &soak_up_data($grabber, $output, "grabber"); 
    286         $grabbers->{$grabber}->{laststatus} = $plugin_data->{$grabber}->{laststatus}; 
     290        $components->{$grabber}->{laststatus} = $plugin_data->{$grabber}->{laststatus}; 
    287291 
    288292        # check to see if we have all the data we want 
     
    311315    unless (defined $gscore) 
    312316    { 
    313         foreach (keys %$grabbers) 
     317        foreach (query_grabbers()) 
    314318        { 
    315             unless ($grabbers->{$_}->{disabled}) 
     319            unless ($components->{$_}->{disabled}) 
    316320            { 
    317321                $gscore->{$_} = 0; 
     
    375379#           print "$grabber vs $ch:$day: " . ($result ? "OK" : "no") . "\n"; 
    376380        } 
    377         $niceness = $grabbers->{$grabber}->{config}->{niceness}; 
     381        $niceness = $components->{$grabber}->{config}->{niceness}; 
    378382        unless ($niceness) 
    379383        { 
     
    382386            $niceness = 5; 
    383387        } 
    384         $granularity = $grabbers->{$grabber}->{config}->{granularity}; 
     388        $granularity = $components->{$grabber}->{config}->{granularity}; 
    385389        unless (defined $granularity) 
    386390        { 
     
    406410    my ($grabber, $ch) = @_; 
    407411 
    408     my $channels_supported = $grabbers->{$grabber}->{config}->{channels}; 
     412    my $channels_supported = $components->{$grabber}->{config}->{channels}; 
    409413    unless (defined $channels_supported) 
    410414    { 
     
    430434    my ($grabber, $day) = @_; 
    431435 
    432     my $days_supported = $grabbers->{$grabber}->{config}->{max_days}; 
     436    my $days_supported = $components->{$grabber}->{config}->{max_days}; 
    433437    unless ($days_supported) 
    434438    { 
     
    674678 
    675679    printf "Preference for whose data we prefer as follows:\n"; 
    676     foreach my $proggy (sort { $grabbers->{$a}->{order} <=> $grabbers->{$b}->{order} } keys %$grabbers) { 
    677         if ((!$grabbers->{$proggy}->{disabled}) && ($plugin_data->{$proggy}) && ($plugin_data->{$proggy}->{valid})) { 
     680    foreach my $proggy (sort { $components->{$a}->{order} <=> $components->{$b}->{order} } query_grabbers()) { 
     681        if ((!$components->{$proggy}->{disabled}) && ($plugin_data->{$proggy}) && ($plugin_data->{$proggy}->{valid})) { 
    678682            $grabber_order[$num_grabbers] = $proggy; 
    679683            my $orig_prog = $plugin_data->{$proggy}->{xmltv}->[3]; 
     
    10451049    printf "\nPostprocessing stage:\n"; 
    10461050 
    1047     foreach my $postprocessor (sort { $postprocessors->{$a} <=> $postprocessors->{$b} } keys %$postprocessors) { 
    1048         next if ($postprocessors->{$postprocessor}->{disabled}); 
    1049  
    1050         $postprocessors->{$postprocessor}->{lastdata} = time; 
    1051         $postprocessors->{$postprocessor}->{laststatus} = "unknown"; 
     1051    foreach my $postprocessor (sort { $components->{$a} <=> $components->{$b} } query_postprocessors()) { 
     1052        next if ($components->{$postprocessor}->{disabled}); 
     1053 
     1054        $components->{$postprocessor}->{lastdata} = time; 
     1055        $components->{$postprocessor}->{laststatus} = "unknown"; 
    10521056 
    10531057        printf "\nSHEPHERD: Using postprocessor: %s\n",$postprocessor; 
    10541058 
    1055         my $output = "$POSTPROCESSOR_DIR/$postprocessor/output.xmltv"; 
    1056         my $comm = "$POSTPROCESSOR_DIR/$postprocessor/$postprocessor " . 
     1059        my $output = "$CWD/postprocessors/$postprocessor/output.xmltv"; 
     1060        my $comm = "$CWD/postprocessors/$postprocessor/$postprocessor " . 
    10571061                   "--region $region " . 
    10581062                   "--channels_file $channels_file " . 
     
    10651069        print "SHEPHERD: Excuting command: $comm\n"; 
    10661070 
    1067         chdir "$POSTPROCESSOR_DIR/$postprocessor/"; 
     1071        chdir "$CWD/postprocessors/$postprocessor/"; 
    10681072        system($comm); 
    10691073        chdir $CWD; 
     
    10871091        $need_more_data = &analyze_plugin_data($postprocessor_ok_threshold_percent, "POSTPROCESSOR"); 
    10881092 
    1089         $postprocessors->{$postprocessor}->{laststatus} = $plugin_data->{$postprocessor}->{laststatus}; 
     1093        $components->{$postprocessor}->{laststatus} = $plugin_data->{$postprocessor}->{laststatus}; 
    10901094 
    10911095        if (($need_more_data) && (!$insufficient_grabber_data)) { 
     
    10931097            printf "SHEPHERD: XML data from postprocessor %s rejected, using XML from previous stage\n",$postprocessor; 
    10941098 
    1095             if (defined $postprocessors->{$postprocessor}->{conescutive_failures}) { 
    1096                 $postprocessors->{$postprocessor}->{conescutive_failures}++; 
     1099            if (defined $components->{$postprocessor}->{conescutive_failures}) { 
     1100                $components->{$postprocessor}->{conescutive_failures}++; 
    10971101            } else { 
    1098                 $postprocessors->{$postprocessor}->{conescutive_failures} = 1; 
     1102                $components->{$postprocessor}->{conescutive_failures} = 1; 
    10991103            } 
    11001104            printf "SHEPHERD: Postprocessor \"%s\" has now failed %d times in a row.  %d more and it will be automatically disabled.\n", 
    11011105                $postprocessor, 
    1102                 $postprocessors->{$postprocessor}->{conescutive_failures}, 
    1103                 ($postprocessor_disable_failure_threshold - $postprocessors->{$postprocessor}->{conescutive_failures}); 
    1104  
    1105             if ($postprocessors->{$postprocessor}->{conescutive_failures} >= $postprocessor_disable_failure_threshold) { 
     1106                $components->{$postprocessor}->{conescutive_failures}, 
     1107                ($postprocessor_disable_failure_threshold - $components->{$postprocessor}->{conescutive_failures}); 
     1108 
     1109            if ($components->{$postprocessor}->{conescutive_failures} >= $postprocessor_disable_failure_threshold) { 
    11061110                printf "SHEPHERD: Disabling Postprocessor \"%s\".\n",$postprocessor; 
    1107                 $postprocessors->{$postprocessor}->{disabled} = 1; 
     1111                $components->{$postprocessor}->{disabled} = 1; 
    11081112            } 
    11091113        } else { 
     
    11111115            printf "SHEPHERD: accepting output from postprocessor %s, feeding it into next stage\n",$postprocessor; 
    11121116            $input_postprocess_file = $output; 
    1113             delete $postprocessors->{$postprocessor}->{conescutive_failures} if (defined $postprocessors->{$postprocessor}->{conescutive_failures}); 
     1117            delete $components->{$postprocessor}->{conescutive_failures} if (defined $components->{$postprocessor}->{conescutive_failures}); 
    11141118        } 
    11151119    } 
     
    11641168    return if (!$data); 
    11651169 
    1166     my %glist = %$grabbers; 
    1167     my %plist = %$postprocessors; 
     1170    my %clist = %$components; 
    11681171    while ($data =~ /(.*):(.*):(.*)/g) 
    11691172    { 
    11701173        my ($proggy, $latestversion, $progtype) = ($1,$2,$3); 
    11711174        update_component($proggy, $latestversion, $progtype); 
    1172         delete $glist{$proggy} if ($progtype eq "grabber"); 
    1173         delete $plist{$proggy} if ($progtype eq "postprocessor"); 
    1174     } 
    1175  
    1176     # work out what grabbers disappeared (if any) 
    1177     foreach (keys %glist) { 
    1178         unless ($grabbers->{$_}->{disabled}) { 
    1179             print "\nDeleted grabber: $_.\n"; 
    1180             disable($_,"grabber"); 
     1175        delete $clist{$proggy}; 
     1176    } 
     1177 
     1178    # work out what components disappeared (if any) 
     1179    foreach (keys %clist) { 
     1180        unless ($components->{$_}->{disabled}) { 
     1181            print "\nDeleted component: $_.\n"; 
     1182            disable($_); 
    11811183            $made_changes = 1; 
    11821184        } 
    11831185    } 
    11841186 
    1185     # work out what postprocessors disappeared (if any) 
    1186     foreach (keys %plist) { 
    1187         unless ($postprocessors->{$_}->{disabled}) { 
    1188             print "\nDeleted Postprocessor: $_.\n"; 
    1189             disable($_,"postprocessor"); 
    1190             $made_changes = 1; 
    1191         } 
    1192     } 
    11931187} 
    11941188 
     
    11981192 
    11991193    # handle new installs.. 
    1200     if (($proggy eq $progname) && ($progtype eq "shepherd")) { 
    1201         # shepherd itself.. 
     1194    if ($progtype eq "shepherd") { 
    12021195        if(! -e "$CWD/$progname") { 
    12031196            print "Missing: $CWD/$progname\n"; 
     
    12051198            return; 
    12061199        } 
    1207     } elsif ($progtype eq "grabber") { 
    1208         if (!defined $grabbers->{$proggy} or ! -e "$GRABBER_DIR/$proggy/$proggy") { 
    1209             print "New grabber: $proggy.\n"; 
     1200    } else { 
     1201        if (!defined $components->{$proggy} or ! -e ($progtype . "s/$proggy/$proggy")) { 
     1202            print "New $progtype: $proggy.\n"; 
    12101203            install($proggy, $latestversion, $progtype); 
    12111204            return; 
    12121205        } 
    1213         print "Warning: grabber $proggy disabled by config file.\n" if ($grabbers->{$proggy}->{disabled}); 
    1214     } elsif ($progtype eq "postprocessor") { 
    1215         if (!defined $postprocessors->{$proggy} or ! -e "$POSTPROCESSOR_DIR/$proggy/$proggy") { 
    1216             print "New postprocessor: $proggy.\n"; 
    1217             install($proggy, $latestversion, $progtype); 
    1218             return; 
    1219         } 
    1220         print "Warning: postprocessor $proggy disabled by config file.\n" if ($postprocessors->{$proggy}->{disabled}); 
     1206        if ($components->{$proggy}->{disabled}) { 
     1207            print "Warning: grabber $proggy disabled by config file.\n"; 
     1208        } 
    12211209    } 
    12221210 
    12231211    # upgrade/downgrades 
    12241212    my $ver; 
    1225     if ($progtype eq "grabber") { 
    1226         $ver = ($proggy eq $progname ? $version : $grabbers->{$proggy}->{ver}); 
    1227     } elsif ($progtype eq "postprocessor") { 
    1228         $ver = ($proggy eq $progname ? $version : $postprocessors->{$proggy}->{ver}); 
    1229     } elsif (($proggy eq $progname) && ($progtype eq "shepherd")) { 
     1213    if ($progtype eq "shepherd") { 
    12301214        $ver = $version; 
    1231     } else { 
    1232         print "Warning: unknown type of programme: prog '$proggy' progtype '$progtype' not installed.\n"; 
    1233         return; 
    1234     } 
     1215    } 
     1216    else { 
     1217        $ver = $components->{$proggy}->{ver}; 
     1218    }  
    12351219 
    12361220    my $result = versioncmp($ver, $latestversion); 
     
    12601244    my $ver = "unknown"; 
    12611245 
    1262     if (($proggy eq $progname) && ($progtype eq "shepherd")) { 
     1246    if ($progtype eq "shepherd") { 
    12631247        $ver = $version; 
    1264     } elsif ($progtype eq "grabber") { 
    1265         $rdir = "grabbers"; 
    1266         $ldir = "$GRABBER_DIR/$proggy"; 
    1267         $ver = $grabbers->{$proggy}->{ver} if ((defined $grabbers->{$proggy}) && $grabbers->{$proggy}->{ver}); 
    1268         -d $GRABBER_DIR or mkdir $GRABBER_DIR or die "Cannot create directory $GRABBER_DIR: $!"; 
    1269     } elsif ($progtype eq "postprocessor") { 
    1270         $rdir = "postprocessors"; 
    1271         $ldir = "$POSTPROCESSOR_DIR/$proggy"; 
    1272         $ver = $postprocessors->{$proggy}->{ver} if ((defined $postprocessors->{$proggy}) && $postprocessors->{$proggy}->{ver}); 
    1273         -d $POSTPROCESSOR_DIR or mkdir $POSTPROCESSOR_DIR or die "Cannot create directory $POSTPROCESSOR_DIR: $!"; 
    12741248    } else { 
    1275         print "Warning: unknown type of programme: prog '$proggy' progtype '$progtype' not installed.\n"; 
    1276         return; 
     1249        $rdir = $progtype . "s"; 
     1250        $ldir = "$CWD/$progtype" . "s/$proggy"; 
     1251        $ver = $components->{$proggy}->{ver} if ((defined $components->{$proggy}) && $components->{$proggy}->{ver}); 
     1252        -d ("$CWD/$progtype" . "s") or mkdir ("$CWD/$progtype" . "s") or die "Cannot create directory $CWD/$progtype" . "s: $!"; 
    12771253    } 
    12781254    -d $ldir or mkdir $ldir or die "Cannot create directory $ldir: $!"; 
     
    13041280 
    13051281    # if the update was for shepherd itself, restart it 
    1306     if (($proggy eq $progname) && ($progtype eq "shepherd")) { 
     1282    if ($progtype eq "shepherd") { 
    13071283        print "\n*** Restarting ***\n\n"; 
    13081284        exec("$ldir/$proggy"); 
     
    13131289    my $result = test_proggy($ldir,"$ldir/$proggy"); 
    13141290 
    1315     if ($progtype eq "grabber") { 
    1316         $grabbers->{$proggy}->{ver} = $latestversion; 
    1317         $grabbers->{$proggy}->{ready} = $result; 
    1318         $grabbers->{$proggy}->{laststatus} = sprintf "updated to %s on %s", $latestversion, (strftime "%a%d%b%y",localtime(time)); 
    1319     } elsif ($progtype eq "postprocessor") { 
    1320         $postprocessors->{$proggy}->{ver} = $latestversion; 
    1321         $postprocessors->{$proggy}->{ready} = $result; 
    1322         $postprocessors->{$proggy}->{laststatus} = sprintf "updated to %s on %s", $latestversion, (strftime "%a%d%b%y",localtime(time)); 
    1323     } 
     1291    $components->{$proggy}->{ver} = $latestversion; 
     1292    $components->{$proggy}->{ready} = $result; 
     1293    $components->{$proggy}->{laststatus} = sprintf "updated to %s on %s", $latestversion, (strftime "%a%d%b%y",localtime(time)); 
    13241294 
    13251295    $made_changes = 1; 
     
    13471317 
    13481318    # confirm it exists first 
    1349     if ((!$grabbers->{$proggy}) && (!$postprocessors->{$proggy})) { 
    1350         printf "No such grabber/postprocessor: \"%s\".\n",$proggy; 
     1319    if (!$components->{$proggy}) { 
     1320        printf "No such component: \"%s\".\n",$proggy; 
    13511321        return; 
    13521322    } 
    13531323    print "Enabling $proggy.\n"; 
    13541324 
    1355     if ($grabbers->{$proggy}) { 
    1356         delete $grabbers->{$proggy}->{disabled}; 
    1357         $grabbers->{$proggy}->{laststatus} = sprintf "enabled on %s, not run yet",(strftime "%a%d%b%y", localtime(time)); 
    1358     } elsif ($postprocessors->{$proggy}) { 
    1359         delete $postprocessors->{$proggy}->{disabled}; 
    1360         $postprocessors->{$proggy}->{laststatus} = sprintf "enabled on %s, not run yet",(strftime "%a%d%b%y", localtime(time)); 
    1361     } 
     1325    delete $components->{$proggy}->{disabled}; 
     1326    $components->{$proggy}->{laststatus} = sprintf "enabled on %s, not run yet",(strftime "%a%d%b%y", localtime(time)); 
    13621327    $made_changes = 1; 
    13631328} 
     
    13681333 
    13691334    # confirm it exists first 
    1370     if ((!$grabbers->{$proggy}) && (!$postprocessors->{$proggy})) { 
    1371         printf "No such grabber/postprocessor: \"%s\".\n",$proggy; 
     1335    if (!$components->{$proggy}) { 
     1336        printf "No such component: \"%s\".\n",$proggy; 
    13721337        return; 
    13731338    } 
    13741339    print "Disabling $proggy.\n"; 
    13751340 
    1376     if ($grabbers->{$proggy}) { 
    1377         $grabbers->{$proggy}->{disabled} = 1; 
    1378         $grabbers->{$proggy}->{laststatus} = sprintf "manually disabled on %s",(strftime "%a%d%b%y", localtime(time)); 
    1379     } elsif ($postprocessors->{$proggy}) { 
    1380         $postprocessors->{$proggy}->{disabled} = 1; 
    1381         $postprocessors->{$proggy}->{laststatus} = sprintf "manually disabled on %s",(strftime "%a%d%b%y", localtime(time)); 
    1382     } 
     1341    $components->{$proggy}->{disabled} = 1; 
     1342    $components->{$proggy}->{laststatus} = sprintf "manually disabled on %s",(strftime "%a%d%b%y", localtime(time)); 
    13831343    $made_changes = 1; 
    13841344} 
     
    13901350 
    13911351    # reset current order to zero 
    1392     foreach my $proggy (keys %$grabbers) { 
    1393         $grabbers->{$proggy}->{order} = 0; 
     1352    foreach my $proggy (query_grabbers()) { 
     1353        $components->{$proggy}->{order} = 0; 
    13941354    } 
    13951355 
     
    13981358    if ($pref_order) { 
    13991359        foreach my $proggy (split(/,/,$pref_order)) { 
    1400             if (defined $grabbers->{$proggy}) { 
    1401                 $grabbers->{$proggy}->{order} = $order_num; 
     1360            if (defined $components->{$proggy} and $components->{$proggy}->{type} eq 'grabber') { 
     1361                $components->{$proggy}->{order} = $order_num; 
    14021362                $order_num++; 
    14031363            } 
     
    14061366 
    14071367    # set order of any grabbers not specified in a random manner 
    1408     foreach my $proggy (sort keys %$grabbers) { 
    1409         if ((!defined $grabbers->{$proggy}->{order}) || ($grabbers->{$proggy}->{order} == 0)) { 
    1410             $grabbers->{$proggy}->{order} = $order_num+int(rand(1000)); 
     1368    foreach my $proggy (sort query_grabbers()) { 
     1369        if ((!defined $components->{$proggy}->{order}) || ($components->{$proggy}->{order} == 0)) { 
     1370            $components->{$proggy}->{order} = $order_num+int(rand(1000)); 
    14111371        } 
    14121372    } 
     
    14151375    print "Grabber order set as follows:\n" unless $quiet; 
    14161376    $order_num = 0; 
    1417     foreach my $proggy (sort { $grabbers->{$a}->{order} <=> $grabbers->{$b}->{order} } keys %$grabbers) { 
     1377    foreach my $proggy (sort { $components->{$a}->{order} <=> $components->{$b}->{order} } query_grabbers()) { 
    14181378        $order_num++; 
    1419         $grabbers->{$proggy}->{order} = $order_num; 
    1420         printf " #%d. %s%s\n",$grabbers->{$proggy}->{order},$proggy,($grabbers->{$proggy}->{disabled} ? " [disabled]" : "") unless $quiet; 
     1379        $components->{$proggy}->{order} = $order_num; 
     1380        printf " #%d. %s%s\n",$components->{$proggy}->{order},$proggy,($components->{$proggy}->{disabled} ? " [disabled]" : "") unless $quiet; 
    14211381    } 
    14221382 
     
    14271387{ 
    14281388    my $result; 
    1429     foreach my $proggy (keys %$grabbers) { 
    1430         $result = test_proggy("$GRABBER_DIR/$proggy","$GRABBER_DIR/$proggy/$proggy"); 
    1431         printf "Grabber %s: %s\n",$proggy,($result ? "OK" : "Failed"); 
    1432         if (!$result ne !$grabbers->{$proggy}->{ready}) { 
    1433             $grabbers->{$proggy}->{ready} = $result; 
     1389    foreach my $proggy (keys %$components) { 
     1390        my $progtype = $components->{$proggy}->{type}; 
     1391        $result = test_proggy("$CWD/$progtype" . "s/$proggy", "$CWD/$progtype" . "s/$proggy/$proggy"); 
     1392        printf "%s %s: %s\n",ucfirst($progtype), $proggy,($result ? "OK" : "Failed"); 
     1393        if (!$result ne !$components->{$proggy}->{ready}) { 
     1394            $components->{$proggy}->{ready} = $result; 
    14341395            $made_changes = 1; 
    14351396        } 
    14361397    } 
    1437  
    1438     foreach my $proggy (keys %$postprocessors) { 
    1439         $result = test_proggy("$POSTPROCESSOR_DIR/$proggy","$POSTPROCESSOR_DIR/$proggy/$proggy"); 
    1440         printf "Postprocessor %s: %s\n",$proggy,($result ? "OK" : "Failed"); 
    1441         if (!$result ne !$postprocessors->{$proggy}->{ready}) { 
    1442             $postprocessors->{$proggy}->{ready} = $result; 
    1443             $made_changes = 1; 
    1444         } 
    1445     } 
     1398} 
     1399# ----------------------------------------- 
     1400# Subs: Utilities 
     1401# ----------------------------------------- 
     1402# 
     1403 
     1404sub query_grabbers 
     1405{ 
     1406    return query_component_type('grabber'); 
     1407} 
     1408 
     1409sub query_postprocessors 
     1410{ 
     1411    return query_component_type('postprocessor'); 
     1412} 
     1413 
     1414sub query_component_type 
     1415{ 
     1416    my $progtype = shift; 
     1417 
     1418    my @ret = (); 
     1419    foreach (keys %$components) 
     1420    { 
     1421        push (@ret, $_) if ($components->{$_}->{type} eq $progtype); 
     1422    } 
     1423    return @ret; 
    14461424} 
    14471425 
     
    14541432    read_file($config_file, 'configuration'); 
    14551433 
     1434    # TEMPORARY! Convert old $grabbers/$postprocessors config file to 
     1435    # new $components format. 
     1436    if (defined $grabbers or defined $postprocessors) 
     1437    { 
     1438        foreach (keys %$grabbers) { 
     1439            $grabbers->{$_}->{type} = 'grabber'; 
     1440        } 
     1441        foreach (keys %$postprocessors) { 
     1442            $postprocessors->{$_}->{type} = 'postprocessor'; 
     1443        } 
     1444        $components = { %$grabbers, %$postprocessors }; 
     1445        $grabbers = undef; 
     1446        $postprocessors = undef; 
     1447    } 
     1448 
     1449 
    14561450    # if we are updating from a previous rev of shepherd.conf we may not 
    14571451    # have any 'order' fields set .. check here 
    14581452    my $found_order = 1; 
    1459     foreach (keys %$grabbers) 
    1460     { 
    1461         $found_order = 0 if (!defined $grabbers->{$_}->{order}); 
     1453    foreach (query_grabbers()) 
     1454    { 
     1455        $found_order = 0 if (!defined $components->{$_}->{order}); 
    14621456    } 
    14631457    if (($found_order == 0) && (!$opt->{setorder})) 
     
    15111505    open(CONF, ">$config_file") or die "cannot write to $config_file: $!"; 
    15121506    print CONF Data::Dumper->Dump( 
    1513         [$region,  $pref_order,  $mirror_site,  $grabbers,  $postprocessors, $title_translation_table  ], 
    1514         ["region", "pref_order", "mirror_site", "grabbers", "postprocessors", "title_translation_table" ]); 
     1507        [$region,  $pref_order,  $mirror_site,  $components, $title_translation_table  ], 
     1508        ["region", "pref_order", "mirror_site", "components", "title_translation_table" ]); 
    15151509    close CONF; 
    15161510    print "\nUpdated configuration file $config_file.\n" if ($debug); 
     
    17061700    print " Grabber           Version Enabled Ready Last Run   Status\n" . 
    17071701          " ----------------- ------- ------- ----- ---------- ---------------------------\n"; 
    1708     foreach (sort { $grabbers->{$a}->{order} <=> $grabbers->{$b}->{order} } keys %$grabbers) { 
    1709         my $h = $grabbers->{$_}; 
     1702    foreach (sort { $components->{$a}->{order} <=> $components->{$b}->{order} } query_grabbers()) { 
     1703        my $h = $components->{$_}; 
    17101704        printf  " %-16s %8s %4s %6s  %11s %s\n", 
    17111705                "$h->{order}. $_", 
     
    17201714    print " Postprocessor     Version Enabled Ready Last Run   Status\n" . 
    17211715          " ----------------- ------- ------- ----- ---------- ---------------------------\n"; 
    1722     foreach (sort { $postprocessors->{$a} <=> $postprocessors->{$b} } keys %$postprocessors) { 
    1723         my $h = $postprocessors->{$_}; 
     1716    foreach (sort { $components->{$a} <=> $components->{$b} } query_postprocessors()) { 
     1717        my $h = $components->{$_}; 
    17241718        printf  " %-16s %8s %4s %6s  %11s %s\n", 
    17251719                $_,