- Timestamp:
- Oct 21, 2010, 2:45:13 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20100823/ippToPsps/perl/checkOdmStatus.pl
r29124 r29515 10 10 use ippToPsps::IppToPspsDb; 11 11 use ippToPsps::Datastore; 12 use ippToPsps::Batch Manager;12 use ippToPsps::Batch; 13 13 14 14 my $singleBatch = undef; … … 19 19 my $product = undef; 20 20 my $filePath = undef; 21 my $removeUnprocessed = undef; 21 22 22 23 … … 27 28 'product|p=s' => \$product, 28 29 'location|l=s' => \$filePath, 30 'remove|r' => \$removeUnprocessed, 29 31 'verbose|v' => \$verbose, 30 32 'save_temps|s' => \$save_temps … … 32 34 33 35 if (!defined $product) { 34 print "* OPTIONAL: a datastore product name -p <name>\n";36 print "* OPTIONAL: a datastore product name -p <name>\n"; 35 37 } 36 38 if (!defined $singleBatch) { 37 print "* OPTIONAL: a single batch -b <batchNum> (default = none)\n";39 print "* OPTIONAL: a single batch -b <batchNum> (default = none)\n"; 38 40 } 39 41 if (!defined $fromTime) { 40 42 $fromTime = "2010-01-01"; 41 print "* OPTIONAL: from time -f <dateTime> (default = $fromTime)\n";43 print "* OPTIONAL: from time -f <dateTime> (default = $fromTime)\n"; 42 44 } 43 45 if (!defined $toTime) { 44 46 $toTime = "2099-12-31"; 45 print "* OPTIONAL: to time -t <dateTime> (default = $toTime)\n";47 print "* OPTIONAL: to time -t <dateTime> (default = $toTime)\n"; 46 48 } 47 49 if (!defined $filePath) { 48 50 print "* OPTIONAL: location for files to be deleted -l <path>\n"; 49 51 } 52 if (!defined $removeUnprocessed) { 53 $removeUnprocessed = 0; 54 print "* OPTIONAL: remove unprocessed files -r (default = $removeUnprocessed)\n"; 55 } 50 56 if (!defined $verbose) { 51 57 $verbose = 0; 52 print "* OPTIONAL: run in verbose mode -v (default = $verbose)\n";58 print "* OPTIONAL: run in verbose mode -v (default = $verbose)\n"; 53 59 } 54 60 if (!defined $save_temps) { 55 61 $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"; 57 63 } 58 64 … … 60 66 my $datastore = new ippToPsps::Datastore($product, 0, 0); 61 67 my $ippToPspsDb = new ippToPsps::IppToPspsDb("ippToPsps", "ippdb01", "ipp", "ipp", $verbose, $save_temps); 62 my $batchManager = new ippToPsps::BatchManager($ippToPspsDb, $filePath, $verbose, $save_temps);63 68 my $odmUrl = "http://web01.psps.ifa.hawaii.edu/a01/OdmWebService/OdmWebService.asmx/GetBatchStatus"; 64 69 my $ua = LWP::UserAgent->new; … … 85 90 86 91 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"); 90 95 91 96 # loop round batches … … 95 100 my $numRemovedFromDatastore = 0; 96 101 my $numDeleted = 0; 102 my $newMerged = 0; 97 103 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 } 101 137 102 138 $numBatchesToCheck++; 103 139 104 my $batchName = $batchManager->getBatchName($batchId);105 106 140 # 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;} 110 149 } 111 150 112 151 # 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()); 116 156 if ($deleted) { 117 157 $ippToPspsDb->setBatchAsDeleted($batchId, $expId); … … 122 162 if (defined $filePath && $merged && $deleted) { 123 163 124 if($batch Manager->deleteBatch($batchId)) {$numDeleted++;}164 if($batch->deleteFile($batchId)) {$numDeleted++;} 125 165 } 126 166 127 167 # 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", 130 170 $timestamp, 131 $batch Name,171 $batch->getName(), 132 172 $expId, 133 173 $loadedToOdm ? "yes" : "no", 174 $loadFailed ? "yes" : "no", 134 175 $mergeWorthy ? "yes" : "no", 135 176 $merged ? "yes" : "no", … … 137 178 } 138 179 139 printf("+----------------------+--------------+--------------+----------------+---------------+---------+----------+\n"); 140 180 printf("+----------------------+--------------+--------------+----------------+--------------+--------------+---------+----------+\n"); 141 181 printf( "* Successfully checked %d batch%s out of %d\n", $numChecked, ($numChecked==1) ? "" : "es", $numBatchesToCheck); 182 printf( "* %d newly merged batches\n", $newMerged); 142 183 printf( "* Successfully removed %d batch%s from the datastore\n", $numRemovedFromDatastore, ($numRemovedFromDatastore==1) ? "" : "es"); 143 184 printf( "* Successfully deleted %d batch%s from local file system\n", $numDeleted, ($numDeleted==1) ? "" : "es"); … … 151 192 ######################################################################################## 152 193 sub checkODM { 153 my ($batchName, $loadedToOdm, $ mergeWorthy, $merged) = @_;194 my ($batchName, $loadedToOdm, $loadFailed, $mergeWorthy, $merged) = @_; 154 195 155 196 my $statusFilter = "*"; … … 171 212 172 213 my ($tempFile, $tempName) = tempfile( "/tmp/ippToPsps_odmXml.XXXX", UNLINK => !$save_temps); 214 #print $response->content. "\n"; 173 215 print $tempFile $response->content; 174 216 close($tempFile); 175 217 176 218 ${$loadedToOdm} = 0; 219 ${$loadFailed} = 0; 177 220 ${$mergeWorthy} = 0; 178 221 ${$merged} = 0; 179 222 180 parseXml($tempName, $loadedToOdm, $mergeWorthy, $merged); 223 parseXml($tempName, $loadedToOdm, $loadFailed, $mergeWorthy, $merged); 224 225 unlink($tempFile); 181 226 182 227 return 1; 183 228 } 184 229 185 ###################################################################################### y230 ######################################################################################## 186 231 # 187 232 # Parses ODM XML … … 189 234 ######################################################################################## 190 235 sub parseXml { 191 my ($xmlFile, $loadedToOdm, $ mergeWorthy, $merged) = @_;236 my ($xmlFile, $loadedToOdm, $loadFailed, $mergeWorthy, $merged) = @_; 192 237 193 238 my $parser = XML::LibXML->new; … … 195 240 my $xc = XML::LibXML::XPathContext->new($doc); 196 241 $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'); 198 251 ${$loadedToOdm} = 0; 199 252 ${$mergeWorthy} = 0;
Note:
See TracChangeset
for help on using the changeset viewer.
