Changeset 5248


Ignore:
Timestamp:
05/05/09 14:49:17 (10 years ago)
Author:
cbyrom
Message:

Update ingest scripts for use with the OAIInfoEditor harvest
functionality - to allow config and jar file resources to be
retrieved even if not running in ingest package + allow different
harvest directory and format, compared with that of the config
file, to be specified.

Location:
TI01-discovery/branches/ingestAutomation-upgrade/OAIBatch
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery/branches/ingestAutomation-upgrade/OAIBatch/PostgresRecord.py

    r5167 r5248  
    55''' 
    66from xml.etree import cElementTree 
    7 import os, sys, logging, re 
     7import os, sys, logging, re, pkg_resources 
    88import csml.csml2Moles.molesReadWrite as MRW 
    99from ndg.common.src.models.ndgObject import ndgObject 
     
    1212from SpatioTemporalData import SpatioTemporalData 
    1313import keywordAdder 
     14 
     15SAXON_JAR_FILE = 'lib/saxon9.jar' 
    1416 
    1517class PostgresRecord: 
     
    184186        xqFile = "currentQuery" + xQueryType + ".xq"  
    185187        FileUtilities.createFile(xqFile, xquery) 
     188         
     189        # ensure the jar file is available - NB, this may be running from a different 
     190        # location - e.g. the OAIInfoEditor.lib.harvester - and this won't have the 
     191        # saxon file directly on its filesystem 
     192        jarFile = pkg_resources.resource_filename('OAIBatch', SAXON_JAR_FILE) 
    186193 
    187194        # Now do the transform 
    188195        os.putenv ('PATH', ':/usr/java/jdk1.5.0_03/bin:/usr/java/jdk1.5.0_03:/usr/java/jdk1.5.0_03/lib/tools.jar:/usr/local/WSClients/OAIBatch:/usr/local/exist-client/bin:/bin:/usr/bin:.') 
    189         xqCommand = "java -cp ./lib/saxon9.jar net.sf.saxon.Query " + xqFile + " !omit-xml-declaration=yes" 
     196        xqCommand = "java -cp %s net.sf.saxon.Query %s !omit-xml-declaration=yes" %(jarFile, xqFile) 
    190197        logging.debug("Running saxon command: " + xqCommand) 
    191198        pipe = os.popen(xqCommand + " 2>&1") 
  • TI01-discovery/branches/ingestAutomation-upgrade/OAIBatch/abstractdocumentingester.py

    r5243 r5248  
    66 As well as doing the ingest, a backup directory is created to store the created moles files. 
    77''' 
    8 import os, sys, string, getopt, logging 
     8import os, sys, string, getopt, logging, pkg_resources 
    99from time import strftime 
    1010from SchemaNameSpace import SchemaNameSpace 
     
    125125                        errors = sys.exc_info() 
    126126                        logging.error(errors) 
    127                         self._error_messages += str(errors) 
     127                        self._error_messages += str(errors[1]) 
    128128                         
    129129                        if dao: 
     
    158158                self._NDG_dataProvider = False 
    159159 
    160                 datacentre_config_filename = self._base_dir + 'datacentre_config/' + datacentre + "_config.properties" 
     160                datacentre_config_filename = 'datacentre_config/' + datacentre + "_config.properties" 
    161161                logging.info("Retrieving data from datacentre config file, " + datacentre_config_filename) 
    162                  
    163                 # Check this file exists; if not, assume an invalid datacentre has been specified 
    164                 if not os.path.isfile(datacentre_config_filename): 
     162                try: 
     163                        file = pkg_resources.resource_string('OAIBatch', datacentre_config_filename) 
     164                except IOError: 
    165165                    sys.exit("ERROR: Could not find the config file; either this doesn't exist or the datacentre " \ 
    166166                        "specified (%s) is invalid\n" %datacentre) 
    167                      
    168                 datacentre_config_file = open(datacentre_config_filename, "r") 
    169                  
    170                 for line in datacentre_config_file.readlines(): 
    171                     words  = string.split(line) 
    172                     if len(words) == 0: 
    173                         continue 
    174                     if words[0] == 'host_path': 
    175                         self._harvest_home = string.rstrip(words[1]) 
    176                     if words[0] == 'groups': 
    177                         self._datacentre_groups = words[1:] 
    178                     if words[0] == 'format': 
    179                         self._datacentre_format = words[1] 
    180                     if words[0] == 'namespace': 
    181                         self._datacentre_namespace = words[1] 
    182                     if words[0] == 'NDG_dataProvider': 
    183                         self._NDG_dataProvider = True 
    184                  
    185                 datacentre_config_file.close() 
    186                  
     167 
     168                for line in file.split('\n'): 
     169                        words = line.split() 
     170                        if len(words) == 0: 
     171                                continue 
     172                        elif words[0] == 'host_path': 
     173                                self._harvest_home = words[1].rstrip() 
     174                        elif words[0] == 'groups': 
     175                                self._datacentre_groups = words[1:] 
     176                        elif words[0] == 'format': 
     177                                self._datacentre_format = words[1] 
     178                        elif words[0] == 'namespace': 
     179                                self._datacentre_namespace = words[1] 
     180                        elif words[0] == 'NDG_dataProvider': 
     181                                self._NDG_dataProvider = True 
     182                         
    187183                if self._harvest_home == "": 
    188184                    sys.exit("Failed at getting harvested records directory stage. datacentre config file tried = %s" %datacentre_config_filename) 
  • TI01-discovery/branches/ingestAutomation-upgrade/OAIBatch/oai_document_ingester.py

    r5243 r5248  
    2323        ''' 
    2424 
    25         def processDataCentre(self, dataCentre): 
    26                  
     25        def processDataCentre(self, dataCentre, harvestDir = None, dataFormat = None): 
     26                ''' 
     27                Ingest documents from the specified data centre 
     28                @param dataCentre: data centre to ingest docs from 
     29                @keyword harvestDir: directory to get docs from - NB, this will override that 
     30                specified in the associated config file.  Typically this is used when a manual 
     31                harvest has retrieved docs to a local dir (see OAIInfoEditor.lib.harvester).  
     32                @param dataFormat: format of data to ingest.  Overrides config file settings. 
     33                @return isSuccess, outMessage: isSuccess = True if ingest completes ok 
     34                outMessage = summary of ingest process 
     35                ''' 
    2736                self._no_files_ingested = 0 
    2837                self._no_problem_files = 0 
    2938                self._error_messages = '' 
    3039                self.dataCentre = dataCentre 
    31                  
    3240                self._base_dir = os.getcwd() + "/" # this is the base dir that the script is ran from 
    3341                self._setupDataCentreDirs() 
     
    4048                 
    4149                self.getConfigDetails(dataCentre) 
     50                # override default settings with input keyword values, if set 
     51                if harvestDir: 
     52                        self._harvest_home = harvestDir 
     53                if dataFormat: 
     54                        self._datacentre_format = dataFormat 
    4255                 
    4356                # check harvest dir exists and that there are any records to harvest? 
    4457                if not os.path.exists(self._harvest_home): 
    45                         logging.info("Harvest directory for dataCentre %s (%s) could not be found - exiting" \ 
     58                        logging.error("Harvest directory for dataCentre %s (%s) could not be found - exiting" \ 
    4659                                                 %(dataCentre, self._harvest_home)) 
    4760                        return 
     
    6780                outMessage = "OAI Document ingest processing complete:" 
    6881                logging.info("oai_document_ingest processing complete:") 
     82                isSuccess = False 
    6983                if self._no_problem_files == 0: 
    7084                        logging.info("All files successfully processed - cleaning harvest directory") 
    7185                        FileUtilities.cleanDir(self._harvest_home) 
     86                        isSuccess = True 
    7287                else: 
    7388                        logging.error("Problems experienced with %s files" %self._no_problem_files) 
     
    7590                 
    7691                logging.info(self.lineSeparator) 
    77                 logging.info("INFO: Number of files processed = %s" %numfilesproc) 
    78                 outMessage += 'Number of files processed = %s' %numfilesproc 
    79                 logging.info("INFO: Number of files ingested = %s" %self._no_files_ingested) 
    80                 outMessage += 'Number of files ingestest = %s' %self._no_files_ingested 
     92                message = 'Number of files processed = %s\n' %numfilesproc 
     93                logging.info(message) 
     94                outMessage += message 
     95                message = "Number of files ingested = %s\n" %self._no_files_ingested 
     96                logging.info(message) 
     97                outMessage += message 
    8198                if self._error_messages: 
    8299                        outMessage += 'Errors: %s' %self._error_messages  
    83100                logging.info(self.lineSeparator) 
    84101                print "Script finished running." 
    85                 return outMessage 
     102                return isSuccess, outMessage 
    86103 
    87104         
Note: See TracChangeset for help on using the changeset viewer.