IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 7, 2010, 9:16:10 AM (16 years ago)
Author:
eugene
Message:

updates from trunk

Location:
branches/eam_branches/ipp-20100823
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20100823

  • branches/eam_branches/ipp-20100823/ippToPsps/perl/checkOdmStatus.pl

    r28954 r29124  
    1010use ippToPsps::IppToPspsDb;
    1111use ippToPsps::Datastore;
     12use ippToPsps::BatchManager;
    1213
    1314my $singleBatch = undef;
     
    1718my $toTime = undef;
    1819my $product = undef;
     20my $filePath = undef;
    1921
    2022
     
    2426        'to|t=s' => \$toTime,
    2527        'product|p=s' => \$product,
     28        'location|l=s' => \$filePath,
    2629        'verbose|v' => \$verbose,
    2730        'save_temps|s' => \$save_temps
     
    3235}
    3336if (!defined $singleBatch) {
    34     print "* OPTIONAL: a single batch                  -b                   (default = none)\n";
     37    print "* OPTIONAL: a single batch                  -b <batchNum>        (default = none)\n";
    3538}
    3639if (!defined $fromTime) {
    3740    $fromTime = "2010-01-01";
    38     print "* OPTIONAL: from time                       -f                   (default = $fromTime)\n";
     41    print "* OPTIONAL: from time                       -f <dateTime>        (default = $fromTime)\n";
    3942}
    4043if (!defined $toTime) {
    4144    $toTime = "2099-12-31";
    42     print "* OPTIONAL: to time                         -t                   (default = $toTime)\n";
     45    print "* OPTIONAL: to time                         -t <dateTime>        (default = $toTime)\n";
     46}
     47if (!defined $filePath) {
     48    print "* OPTIONAL: location for files to be deleted    -l <path>\n";
    4349}
    4450if (!defined $verbose) {
     
    5460my $datastore = new ippToPsps::Datastore($product, 0, 0);
    5561my $ippToPspsDb = new ippToPsps::IppToPspsDb("ippToPsps", "ippdb01", "ipp", "ipp", $verbose, $save_temps);
     62my $batchManager = new ippToPsps::BatchManager($ippToPspsDb, $filePath, $verbose, $save_temps);
    5663my $odmUrl = "http://web01.psps.ifa.hawaii.edu/a01/OdmWebService/OdmWebService.asmx/GetBatchStatus";
    5764my $ua = LWP::UserAgent->new;
     
    7279    my $numOfBatches;
    7380
    74     if (defined $singleBatch ) { $numOfBatches = $ippToPspsDb->getSingleBatch($singleBatch, \$batches);}
    75     else { $numOfBatches = $ippToPspsDb->getBatchList(\$batches, $fromTime, $toTime);}
     81    if (defined $singleBatch ) { $numOfBatches = $ippToPspsDb->getBatch($singleBatch, \$batches);}
     82    else { $numOfBatches = $ippToPspsDb->getBatches(\$batches, $fromTime, $toTime);}
    7683
    7784    if ($numOfBatches < 1) {return 0;}
     
    8491    # loop round batches
    8592    my $batch;
     93    my $numBatchesToCheck = 0;
    8694    my $numChecked = 0;
     95    my $numRemovedFromDatastore = 0;
     96    my $numDeleted = 0;
    8797    foreach $batch ( @{$batches} ) {
    88         my ($timestamp, $expId, $batchId, $surveyType, $deleted) =  @{$batch};
    89 
    90         if (checkBatch($timestamp, $expId, $batchId, $surveyType, $deleted)) {$numChecked++;}
    91 
     98        my ($timestamp, $expId, $batchId, $surveyType, $deleted, $dvoDb, $processed, $onDatastore, $loadedToOdm, $mergeWorthy, $merged) =  @{$batch};
     99
     100        if (!$processed) {next;}
     101
     102        $numBatchesToCheck++;
     103
     104        my $batchName = $batchManager->getBatchName($batchId);
     105
     106        # if not merged then update by polling ODM for status
     107        if (!$merged) {
     108
     109            if (checkODM($batchName, \$loadedToOdm, \$mergeWorthy, \$merged)) {$numChecked++;}
     110        }
     111
     112        # delete from datastore
     113        if (defined $product && !$deleted && $loadedToOdm && $mergeWorthy) {
     114
     115            $deleted = $datastore->remove($batchName);
     116            if ($deleted) {
     117                $ippToPspsDb->setBatchAsDeleted($batchId, $expId);
     118                $numRemovedFromDatastore++;
     119            }
     120        }
     121        # if merged and already removed from datastore then delete files
     122        if (defined $filePath && $merged && $deleted) {
     123
     124            if($batchManager->deleteBatch($batchId)) {$numDeleted++;}
     125        }
     126
     127        # update database
     128        $ippToPspsDb->updateODMStatus($batchId, $expId, $loadedToOdm, $mergeWorthy, $merged, $deleted);
     129        printf( "| %18s  | %11s  | %10d   |    %6s      |    %6s     | %6s  |  %5s   |\n",
     130                $timestamp,
     131                $batchName,
     132                $expId,
     133                $loadedToOdm ? "yes" : "no",
     134                $mergeWorthy ? "yes" : "no",
     135                $merged ? "yes" : "no",
     136                $deleted ? "yes" : "no");
    92137    }
     138
    93139    printf("+----------------------+--------------+--------------+----------------+---------------+---------+----------+\n");
    94140
    95     printf( "* Successfully checked %d batch%s out of %d\n", $numChecked, ($numChecked==1) ? "" : "es", $numOfBatches);
    96 
    97 }
    98 
    99 ######################################################################################y
     141    printf( "* Successfully checked %d batch%s out of %d\n", $numChecked, ($numChecked==1) ? "" : "es", $numBatchesToCheck);
     142    printf( "* Successfully removed %d batch%s from the datastore\n", $numRemovedFromDatastore, ($numRemovedFromDatastore==1) ? "" : "es");
     143    printf( "* Successfully deleted %d batch%s from local file system\n", $numDeleted, ($numDeleted==1) ? "" : "es");
     144
     145}
     146
     147########################################################################################
    100148#
    101149# Check a single batch
    102150#
    103151########################################################################################
    104 sub checkBatch {
    105     my ($timestamp, $expId, $batchId, $surveyType, $deleted) = @_;
    106 
    107 
    108     my $batchFilter = sprintf("B%08d", $batchId);
     152sub checkODM {
     153    my ($batchName, $loadedToOdm, $mergeWorthy, $merged) = @_;
     154
    109155    my $statusFilter = "*";
    110156
    111157    my $response = $ua->post($odmUrl,
    112             [batchNameFilter => $batchFilter,
     158            [batchNameFilter => "%".$batchName,
    113159            statusFilter => $statusFilter,
    114160            fromFilter => "2010-01-01",
     
    119165    if ($response->code != 200) {
    120166
    121         print "Problem connecting to web service for '$batchFilter', HTTP response status: ".$response->status_line."\n";
    122         return;
     167        print "Problem connecting to web service for '$batchName', HTTP response status: ".$response->status_line."\n";
     168        return 0;
    123169    }
    124170    #        print( "HTTP response status: ".$response->content."\n" );
     
    128174    close($tempFile);
    129175
    130     my $loadedToOdm = 0;
    131     my $mergeWorthy = 0;
    132     my $mergeCompleted = 0;
    133 
    134     parseXml($tempName, \$loadedToOdm, \$mergeWorthy, \$mergeCompleted);
    135 
    136     # delete from datastore
    137     if(defined $product) {
    138    
    139         if (!$deleted && $loadedToOdm && $mergeWorthy) {
    140        
    141             $deleted = $datastore->remove($batchFilter);
    142             if ($deleted) {
    143                 $ippToPspsDb->setBatchAsDeleted($batchId, $expId);
    144             }
    145         }
    146     }
    147    
    148     printf( "| %18s  | %11s  | %10d   |    %6s      |    %6s     | %6s  |  %5s   |\n",
    149             $timestamp,
    150             $batchFilter,
    151             $expId,
    152             $loadedToOdm ? "yes" : "no",
    153             $mergeWorthy ? "yes" : "no",
    154             $mergeCompleted ? "yes" : "no",
    155             $deleted ? "yes" : "no");
    156 
    157     $ippToPspsDb->updateODMStatus($batchId, $expId, $loadedToOdm, $mergeWorthy, $mergeCompleted, $deleted);
    158 
     176    ${$loadedToOdm} = 0;
     177    ${$mergeWorthy} = 0;
     178    ${$merged} = 0;
     179
     180    parseXml($tempName, $loadedToOdm, $mergeWorthy, $merged);
     181
     182    return 1;
    159183}
    160184
     
    165189########################################################################################
    166190sub parseXml {
    167     my ($xmlFile, $loadedToOdm, $mergeWorthy, $mergeCompleted) = @_;
     191    my ($xmlFile, $loadedToOdm, $mergeWorthy, $merged) = @_;
    168192
    169193    my $parser = XML::LibXML->new;
     
    174198    ${$loadedToOdm} = 0;
    175199    ${$mergeWorthy} = 0;
    176     ${$mergeCompleted} = 0;
     200    ${$merged} = 0;
    177201
    178202    if ($result =~ m/LoadStarted/) { ${$loadedToOdm} = 1;}
    179203    if ($result =~ m/MergeWorthy/) { ${$loadedToOdm} = 1; ${$mergeWorthy} = 1;}
    180     if ($result =~ m/Merge[1-9]Completed/) { ${$loadedToOdm} = 1; ${$mergeWorthy} = 1; ${$mergeCompleted} = 1;}
    181 }
    182 
     204    if ($result =~ m/Merge[1-9]Completed/) { ${$loadedToOdm} = 1; ${$mergeWorthy} = 1; ${$merged} = 1;}
     205}
     206
Note: See TracChangeset for help on using the changeset viewer.