IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 21, 2010, 2:45:13 PM (16 years ago)
Author:
eugene
Message:

merge changes from trunk

File:
1 edited

Legend:

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

    r29124 r29515  
    1010use ippToPsps::IppToPspsDb;
    1111use ippToPsps::Datastore;
    12 use ippToPsps::BatchManager;
     12use ippToPsps::Batch;
    1313
    1414my $singleBatch = undef;
     
    1919my $product = undef;
    2020my $filePath = undef;
     21my $removeUnprocessed = undef;
    2122
    2223
     
    2728        'product|p=s' => \$product,
    2829        'location|l=s' => \$filePath,
     30        'remove|r' => \$removeUnprocessed,
    2931        'verbose|v' => \$verbose,
    3032        'save_temps|s' => \$save_temps
     
    3234
    3335if (!defined $product) {
    34     print "* OPTIONAL: a datastore product name        -p <name>\n";
     36    print "* OPTIONAL: a datastore product name            -p <name>\n";
    3537}
    3638if (!defined $singleBatch) {
    37     print "* OPTIONAL: a single batch                  -b <batchNum>        (default = none)\n";
     39    print "* OPTIONAL: a single batch                      -b <batchNum>        (default = none)\n";
    3840}
    3941if (!defined $fromTime) {
    4042    $fromTime = "2010-01-01";
    41     print "* OPTIONAL: from time                       -f <dateTime>        (default = $fromTime)\n";
     43    print "* OPTIONAL: from time                           -f <dateTime>        (default = $fromTime)\n";
    4244}
    4345if (!defined $toTime) {
    4446    $toTime = "2099-12-31";
    45     print "* OPTIONAL: to time                         -t <dateTime>        (default = $toTime)\n";
     47    print "* OPTIONAL: to time                             -t <dateTime>        (default = $toTime)\n";
    4648}
    4749if (!defined $filePath) {
    4850    print "* OPTIONAL: location for files to be deleted    -l <path>\n";
    4951}
     52if (!defined $removeUnprocessed) {
     53    $removeUnprocessed = 0;
     54    print "* OPTIONAL: remove unprocessed files            -r                   (default = $removeUnprocessed)\n";
     55}
    5056if (!defined $verbose) {
    5157    $verbose = 0;
    52     print "* OPTIONAL: run in verbose mode             -v                   (default = $verbose)\n";
     58    print "* OPTIONAL: run in verbose mode                 -v                   (default = $verbose)\n";
    5359}
    5460if (!defined $save_temps) {
    5561    $save_temps = 0;
    56     print "* OPTIONAL: keep temp files                 -t                   (default = $save_temps)\n";
     62    print "* OPTIONAL: keep temp files                     -t                   (default = $save_temps)\n";
    5763}
    5864
     
    6066my $datastore = new ippToPsps::Datastore($product, 0, 0);
    6167my $ippToPspsDb = new ippToPsps::IppToPspsDb("ippToPsps", "ippdb01", "ipp", "ipp", $verbose, $save_temps);
    62 my $batchManager = new ippToPsps::BatchManager($ippToPspsDb, $filePath, $verbose, $save_temps);
    6368my $odmUrl = "http://web01.psps.ifa.hawaii.edu/a01/OdmWebService/OdmWebService.asmx/GetBatchStatus";
    6469my $ua = LWP::UserAgent->new;
     
    8590
    8691    print "\n";
    87     printf("+----------------------+--------------+--------------+----------------+---------------+---------+----------+\n");
    88     printf("|      Timestamp       |    Batch     |  Exposure ID | Loaded to ODM? | Merge worthy? | Merged? | Deleted? |\n");
    89     printf("+----------------------+--------------+--------------+----------------+---------------+---------+----------+\n");
     92    printf("+----------------------+--------------+--------------+----------------+--------------+--------------+---------+----------+\n");
     93    printf("|      Timestamp       |    Batch     |  Exposure ID | Loaded to ODM? | Load failed? |Merge worthy? | Merged? | Deleted? |\n");
     94    printf("+----------------------+--------------+--------------+----------------+--------------+--------------+---------+----------+\n");
    9095
    9196    # loop round batches
     
    95100    my $numRemovedFromDatastore = 0;
    96101    my $numDeleted = 0;
     102    my $newMerged = 0;
    97103    foreach $batch ( @{$batches} ) {
    98         my ($timestamp, $expId, $batchId, $surveyType, $deleted, $dvoDb, $processed, $onDatastore, $loadedToOdm, $mergeWorthy, $merged) =  @{$batch};
    99 
    100         if (!$processed) {next;}
     104        my ($timestamp,
     105                $type,
     106                $expId,
     107                $batchId,
     108                $surveyType,
     109                $deleted,
     110                $dvoDb,
     111                $processed,
     112                $onDatastore,
     113                $loadedToOdm,
     114                $loadFailed,
     115                $mergeWorthy,
     116                $merged) = @{$batch};
     117
     118        if (!$onDatastore) {next;}
     119
     120        my $batch = ippToPsps::Batch->existing(
     121                undef,
     122                undef,
     123                $batchId,
     124                $ippToPspsDb,
     125                $filePath,
     126                $verbose,
     127                $save_temps);
     128
     129        if (!$processed) {
     130
     131            if ($removeUnprocessed && defined $filePath) {
     132
     133                if ($batch->deleteDir()) {$numDeleted++;}
     134            }
     135            next;
     136        }
    101137
    102138        $numBatchesToCheck++;
    103139
    104         my $batchName = $batchManager->getBatchName($batchId);
    105 
    106140        # if not merged then update by polling ODM for status
    107         if (!$merged) {
    108 
    109             if (checkODM($batchName, \$loadedToOdm, \$mergeWorthy, \$merged)) {$numChecked++;}
     141        if (!$merged && !$loadFailed) {
     142
     143            if (checkODM($batch->getName(), \$loadedToOdm, \$loadFailed, \$mergeWorthy, \$merged)) {
     144               
     145                $numChecked++;
     146                if ($merged) {$newMerged++;}
     147            }
     148            else {next;}
    110149        }
    111150
    112151        # delete from datastore
    113         if (defined $product && !$deleted && $loadedToOdm && $mergeWorthy) {
    114 
    115             $deleted = $datastore->remove($batchName);
     152        if (defined $product && !$deleted && $loadedToOdm && ($mergeWorthy || $loadFailed)) {
     153
     154
     155            $deleted = $datastore->remove($batch->getName());
    116156            if ($deleted) {
    117157                $ippToPspsDb->setBatchAsDeleted($batchId, $expId);
     
    122162        if (defined $filePath && $merged && $deleted) {
    123163
    124             if($batchManager->deleteBatch($batchId)) {$numDeleted++;}
     164            if($batch->deleteFile($batchId)) {$numDeleted++;}
    125165        }
    126166
    127167        # update database
    128         $ippToPspsDb->updateODMStatus($batchId, $expId, $loadedToOdm, $mergeWorthy, $merged, $deleted);
    129         printf( "| %18s  | %11s  | %10d   |    %6s      |    %6s    | %6s  |  %5s   |\n",
     168        $ippToPspsDb->updateODMStatus($batchId, $expId, $loadedToOdm, $loadFailed, $mergeWorthy, $merged, $deleted);
     169        printf( "| %18s  | %11s  | %10d   |    %6s      |    %6s    |   %6s    | %6s  |  %5s   |\n",
    130170                $timestamp,
    131                 $batchName,
     171                $batch->getName(),
    132172                $expId,
    133173                $loadedToOdm ? "yes" : "no",
     174                $loadFailed ? "yes" : "no",
    134175                $mergeWorthy ? "yes" : "no",
    135176                $merged ? "yes" : "no",
     
    137178    }
    138179
    139     printf("+----------------------+--------------+--------------+----------------+---------------+---------+----------+\n");
    140 
     180    printf("+----------------------+--------------+--------------+----------------+--------------+--------------+---------+----------+\n");
    141181    printf( "* Successfully checked %d batch%s out of %d\n", $numChecked, ($numChecked==1) ? "" : "es", $numBatchesToCheck);
     182    printf( "* %d newly merged batches\n", $newMerged);
    142183    printf( "* Successfully removed %d batch%s from the datastore\n", $numRemovedFromDatastore, ($numRemovedFromDatastore==1) ? "" : "es");
    143184    printf( "* Successfully deleted %d batch%s from local file system\n", $numDeleted, ($numDeleted==1) ? "" : "es");
     
    151192########################################################################################
    152193sub checkODM {
    153     my ($batchName, $loadedToOdm, $mergeWorthy, $merged) = @_;
     194    my ($batchName, $loadedToOdm, $loadFailed, $mergeWorthy, $merged) = @_;
    154195
    155196    my $statusFilter = "*";
     
    171212
    172213    my ($tempFile, $tempName) = tempfile( "/tmp/ippToPsps_odmXml.XXXX", UNLINK => !$save_temps);
     214    #print $response->content. "\n";
    173215    print $tempFile $response->content;
    174216    close($tempFile);
    175217
    176218    ${$loadedToOdm} = 0;
     219    ${$loadFailed} = 0;
    177220    ${$mergeWorthy} = 0;
    178221    ${$merged} = 0;
    179222
    180     parseXml($tempName, $loadedToOdm, $mergeWorthy, $merged);
     223    parseXml($tempName, $loadedToOdm, $loadFailed, $mergeWorthy, $merged);
     224
     225    unlink($tempFile);
    181226
    182227    return 1;
    183228}
    184229
    185 ######################################################################################y
     230########################################################################################
    186231#
    187232# Parses ODM XML
     
    189234########################################################################################
    190235sub parseXml {
    191     my ($xmlFile, $loadedToOdm, $mergeWorthy, $merged) = @_;
     236    my ($xmlFile, $loadedToOdm, $loadFailed, $mergeWorthy, $merged) = @_;
    192237
    193238    my $parser = XML::LibXML->new;
     
    195240    my $xc = XML::LibXML::XPathContext->new($doc);
    196241    $xc->registerNs('ArrayOfOdmBatchState', 'PanSTARRS.Services.OdmWebService');
    197     my $result = $xc->findvalue('//ArrayOfOdmBatchState:Message');
     242    my $result = $xc->findvalue('//ArrayOfOdmBatchState:BatchState');
     243
     244    if ($result =~ m/failed/) {
     245        ${$loadFailed} = 1;
     246        ${$loadedToOdm} = 1;
     247    return;
     248    }
     249
     250    $result = $xc->findvalue('//ArrayOfOdmBatchState:Message');
    198251    ${$loadedToOdm} = 0;
    199252    ${$mergeWorthy} = 0;
Note: See TracChangeset for help on using the changeset viewer.