IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 23, 2019, 2:24:01 PM (7 years ago)
Author:
tdeboer
Message:

updates to ippMonitor and czartool to handle gpc2 labels and improve czartool

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippMonitor/czartool/czarpoll.pl

    r40834 r40840  
    102102    foreach $server (@servers) {
    103103
    104         my @dates = @{$pantasks->getDates($server)};
     104        my @dates = @{$pantasks->getDates($server,'gpc1')};
    105105        if (@dates) {
    106 
    107             $czarDb->updateServerDates($server, \@dates);
     106            $czarDb->updateServerDates($server, \@dates,'gpc1');
    108107        }
    109108        else {
    110 
    111             print "WARNING: No dates to update for '$server'\n";
     109            print "WARNING: No dates to update for '$server' in gpc1\n";
     110        }
     111
     112        my @dates2 = @{$pantasks->getDates($server,'gpc2')};
     113        if (@dates2) {
     114            $czarDb->updateServerDates($server, \@dates2,'gpc2');
     115        }
     116        else {
     117            print "WARNING: No dates to update for '$server' in gpc2\n";
    112118        }
    113119    }
     
    126132
    127133    print "* Updating labels\n";
    128     # my @servers = ("stdscience", "distribution", "publishing", "update");
    129134    my @servers = ("stdscience", "distribution");
    130135
    131136    my @allLabels = ();
    132 
     137    my @allLabels2 = ();
     138    my @fields = ();
     139
     140    #first grab the labels fom the relevant pantasks
    133141    my $server = undef;
    134142    foreach $server (@servers) {
    135         my @labels = @{$pantasks->getLabels($server)};
     143        my @labels = @{$pantasks->getLabels($server,'gpc1')};
    136144        push (@allLabels, @labels);
    137     }
     145
     146        my @labels2 = @{$pantasks->getLabels($server,'gpc2')};
     147        push (@allLabels2, @labels2);
     148    }
     149
     150    ## adding extra labels from external file
     151    my $filename = 'extra_labels.dat';
     152    if (open(my $fh, '<:encoding(UTF-8)', $filename)) {
     153      my $header = <$fh>;     
     154      $header = <$fh>;     
     155      while (my $row = <$fh>) {
     156          chomp $row;
     157          @fields = split(' ', $row);
     158          if ($fields[1] eq 'gpc1') {
     159              push (@allLabels, $fields[0]);
     160          }
     161          if ($fields[1] eq 'gpc2') {
     162              push (@allLabels2, $fields[0]);
     163          }
     164      }
     165    } else {
     166      warn "No extra labels found in '$filename' $!";
     167    }
     168
     169    # Now, grab the priorities for each label
     170    my @priorities = ();
     171    my $row = undef;
     172    my $label = undef;
     173    my $priority = undef;
     174    foreach $label ( @allLabels ) {
     175        $priority = $gpc1Db->getPriority($label);
     176        push(@priorities, $priority);
     177    }
     178
     179    #also grab gpc2 priorities from the gpc2 Label table
     180    my @priorities2 = ();
     181    my $priority2 = undef;
     182    foreach $label ( @allLabels2 ) {
     183        $priority2 = $gpc2Db->getPriority($label);
     184        push(@priorities2, $priority2);
     185    }
     186
     187    #sort labels by priority
     188    my @idx = sort {$priorities[$a] <=> $priorities[$b]} 0 ..$#priorities;
     189    @allLabels = @allLabels[@idx];
     190    @priorities = @priorities[@idx];
     191
     192    my @idx2 = sort {$priorities2[$a] <=> $priorities2[$b]} 0 ..$#priorities2;
     193    @allLabels2 = @allLabels2[@idx2];
     194    @priorities2 = @priorities2[@idx2];
    138195
    139196    # store them all in stdscience:
    140197    $server = "stdscience";
    141198    if (@allLabels) {
    142         $czarDb->updateCurrentLabels($server, \@allLabels);
     199        $czarDb->updateCurrentLabels($server, \@allLabels,'gpc1', \@priorities);
    143200    } else {
    144         print "WARNING: No labels to update for '$server'\n";
    145     }
     201        print "WARNING: No labels to update for gpc1 for '$server'\n";
     202    }
     203
     204    if (@allLabels2) {
     205        $czarDb->updateCurrentLabels($server, \@allLabels2,'gpc2', \@priorities2);
     206    } else {
     207        print "WARNING: No labels to update for gpc2 for '$server'\n";
     208    }
     209    return(\@allLabels,\@allLabels2);
    146210}
    147211
     
    160224    my $running = undef;
    161225    foreach $server (@{$servers}) {
    162 
    163         $pantasks->getServerStatus($server, \$alive, \$running);
    164         $czarDb->updateServerStatus($server, $alive, $running);
    165     }
     226        $pantasks->getServerStatus($server,'gpc1', \$alive, \$running);
     227        $czarDb->updateServerStatus($server,'gpc1', $alive, $running);
     228        $pantasks->getServerStatus($server,'gpc2', \$alive, \$running);
     229        $czarDb->updateServerStatus($server,'gpc2', $alive, $running);
     230   }
    166231}
    167232
     
    182247    my $str = undef;
    183248    my $labels = undef;
     249    my $labels2 = undef;
    184250    my $updateLabels = undef;
    185251    my $row = undef;
     
    187253    my $end = undef;
    188254    my $priority = undef;
     255    my $priority2 = undef;
    189256    my $newState = undef;
    190257    my $nsStatus = undef;
     
    227294
    228295                # now cleanup tables from yesterday and optimize
    229                 print "* Performing database cleanup\n";
    230                 $czarDb->cleanupDateRange($yesterday, $yesterday, $config->getCzarCleanupInterval());
    231                 print "* Optimizing the database\n";
    232                 $czarDb->optimize();
     296                #TdB20190703: The ipp113 and ipp117 instances of czarpoll use the same stage DBs in czarDB.
     297                #Therefore, it makes no sense to run the cleanup+optimising twice
     298                #print "* Performing database cleanup\n";
     299                #$czarDb->cleanupDateRange($yesterday, $yesterday, $config->getCzarCleanupInterval());
     300                #print "* Optimizing the database\n";
     301                #$czarDb->optimize();
    233302                $lastDayDailyTasks = $yesterday;
    234303            }
     
    237306        # check nightly science status
    238307        print "* Checking nightly science status\n";
    239         if (!$pantasks->getNightlyScienceStatus(\$nsStatus)) {$nsStatus = "Unknown";}
    240         $czarDb->updateNightlyScience($nsStatus);
     308        if (!$pantasks->getNightlyScienceStatus(\$nsStatus,'gpc1')) {$nsStatus = "Unknown";}
     309        $czarDb->updateNightlyScience($nsStatus,'gpc1');
     310        if (!$pantasks->getNightlyScienceStatus(\$nsStatus,'gpc2')) {$nsStatus = "Unknown";}
     311        $czarDb->updateNightlyScience($nsStatus,'gpc2');
    241312
    242313        # check nebulous
     
    252323
    253324        # check labels
    254         updateLabels();
     325        my ($labels, $labels2) = updateLabels();
     326        my @labels = @$labels;
     327        my @labels2 = @$labels2;
    255328
    256329        # servers to check
     
    265338
    266339            # deal with stdscience labels
    267             if (!$czarDb->getCurrentLabels($thisServer, \$labels)) {next;}
    268340            my $size = @{$labels};
    269341            if($size > 0) {
    270 
    271                 # get priority
    272                 foreach $row ( @{$labels} ) {
    273                     my ($label) = @{$row};
    274                     # for now use priorities from gpc1 database
    275                     $priority = $gpc1Db->getPriority($label);
    276                     $czarDb->setLabelPriority($label, $priority);
    277                 }
    278 
    279                 updateAllStages($thisServer, $newState, $labels, $begin, $end);
     342                updateAllStages($thisServer, $newState, $labels,$labels2, $begin, $end);
    280343                if ($thisServer eq "stdscience") {
    281344                    createPlots($thisServer, $plotter1, $labels, $begin, $end);
    282                     createPlots($thisServer, $plotter2, $labels, $begin, $end);
     345                    createPlots($thisServer, $plotter2, $labels2, $begin, $end);
    283346                }
    284347            }
     
    376439    #  #  $plotter->createTimeSeries($label, undef, $begin, $end, 1, 1, 1);
    377440
    378     #    #TdB 20190411: Make the all stages plots for the nightlyscience labels only
    379441    #    if ($label =~ m/nightlyscience/) {
    380442    #      $plotter->createTimeSeries($label, undef, $begin, $end, 1, 0, 1);
     
    382444    #}
    383445
    384     $allServerLabels = "all_".$server."_labels";
    385 
    386     $plotter->createTimeSeries($allServerLabels, undef, $begin, $end, 1, 0, 1);
    387 
    388     #TdB 20190411: We are turning off these plots for the time being. They take up a lot of time and are rarely looked at. If need be, can be generated on the fly using czartool.
     446    $allServerLabels = $server."_labels";
     447
     448    $plotter->createTimeSeries($allServerLabels, undef, $begin, $end, 1, 1, 1);
     449
    389450    foreach $stage (@stages) {
    390         $plotter->createTimeSeries($allServerLabels, $stage, $begin, $end, 1, 0, 1); # TODO must be a neater way...
     451        $plotter->createTimeSeries($allServerLabels, $stage, $begin, $end, 1, 0, 0); # TODO must be a neater way...
    391452    }
    392453}
     
    398459###########################################################################
    399460sub updateAllStages {
    400     my ($labelServer, $newState, $rows, $begin, $end) = @_;
     461    my ($labelServer, $newState, $rows, $rows2, $begin, $end) = @_;
    401462
    402463    print "* Updating stage data\n";
     
    419480    foreach $stage (@stages) {
    420481        $server = $pantasks->getServerForThisStage($stage);
    421         $pantasks->getRevertStatus($stage, \$reverting);
    422         $czarDb->updateRevertStatus($stage, $reverting);
     482        $pantasks->getRevertStatus($stage,'gpc1', \$reverting);
     483        $czarDb->updateRevertStatus($stage,'gpc1', $reverting);
     484
     485        $pantasks->getRevertStatus($stage,'gpc2', \$reverting);
     486        $czarDb->updateRevertStatus($stage,'gpc2', $reverting);
    423487
    424488        print "* Checking labels for $stage stage\n";
     
    427491        if (($stage eq 'summitExp')||($stage eq 'downloadExp')||($stage eq 'newExp')||($stage eq 'rawExp')) {
    428492            ($new,$full,$faults) = $gpc1Db->countRawExposures($today,$stage);
    429             $czarDb->insertNewTimeData($stage, "all_".$labelServer."_labels", 'gpc1', $new, $full, $faults);
     493            $czarDb->insertNewTimeData($stage, $labelServer."_labels", 'gpc1', $new, $full, $faults);
    430494
    431495            ($new,$full,$faults) = $gpc2Db->countRawExposures($today,$stage);
    432             $czarDb->insertNewTimeData($stage, "all_".$labelServer."_labels", 'gpc2', $new, $full, $faults);
     496            $czarDb->insertNewTimeData($stage, $labelServer."_labels", 'gpc2', $new, $full, $faults);
    433497
    434498            next;
    435499        }
    436500
    437 
     501        #count the number of exposures under each label, and their faults
    438502        $totalNew1=$totalFaults1=$totalFull1=0;
    439         $totalNew2=$totalFaults2=$totalFull2=0;
    440503        foreach $row ( @{$rows} ) {
    441             my ($label) = @{$row};
     504            my ($label) = $row;
    442505
    443506            chomp($label);
     
    447510            $full = $gpc1Db->countExposures($label, $stage, "full");
    448511            $faults = $gpc1Db->countFaults($label, $stage, $newState);
    449             #printf("%s  %s, %s, %d, %d\n", $labelServer, $label, $stage, $new, $faults);
    450512            $totalNew1 += $new;
    451513            $totalFull1 += $full;
     
    453515
    454516            $czarDb->insertNewTimeData($stage, $label, 'gpc1', $new, $full, $faults);
    455 
     517        }
     518
     519        $totalNew2=$totalFaults2=$totalFull2=0;
     520        foreach $row ( @{$rows2} ) {
     521            my ($label) = $row;
     522
     523            chomp($label);
     524
     525            # Move this to a function and pass in the database
    456526            $new = $gpc2Db->countExposures($label, $stage, $newState);
    457527            $full = $gpc2Db->countExposures($label, $stage, "full");
    458528            $faults = $gpc2Db->countFaults($label, $stage, $newState);
    459             #printf("%s  %s, %s, %d, %d\n", $labelServer, $label, $stage, $new, $faults);
    460529            $totalNew2 += $new;
    461530            $totalFull2 += $full;
     
    465534        }
    466535
    467         $czarDb->insertNewTimeData($stage, "all_".$labelServer."_labels", 'gpc1', $totalNew1, $totalFull1, $totalFaults1);
    468         $czarDb->insertNewTimeData($stage, "all_".$labelServer."_labels", 'gpc2', $totalNew2, $totalFull2, $totalFaults2);
    469     }
    470 }
    471 
     536        $czarDb->insertNewTimeData($stage, $labelServer."_labels", 'gpc1', $totalNew1, $totalFull1, $totalFaults1);
     537        $czarDb->insertNewTimeData($stage, $labelServer."_labels", 'gpc2', $totalNew2, $totalFull2, $totalFaults2);
     538    }
     539}
     540
Note: See TracChangeset for help on using the changeset viewer.