Changeset 6476


Ignore:
Timestamp:
03/02/10 11:39:37 (9 years ago)
Author:
sdonegan
Message:

Updating to configured version from head revision

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery-OaiInfoEditor/trunk/v3n_NDG3_basic/TI01-Discovery-OAIInfoEditor_basic/oai_info_editor/lib/harvester.py

    r5539 r6476  
    44 @author: C Byrom, Tessella Feb 2009 
    55''' 
    6 import logging, commands, os, sys 
     6import logging, commands, os, sys,string 
    77from oai_info_editor.model.repositoryinfo import RepositoryInfo 
    88from oai_info_editor.dal.providerinfodao import * 
     
    1919    ''' 
    2020     
    21     def __init__ (self, harvester, providerName, harvestDir, format): 
     21    def __init__ (self, harvester, providerName, harvestDir, format, configurationFile): 
    2222        ''' 
    2323        Constructor for setting up thread for asynchronous ingest of docs 
     
    2828        ''' 
    2929        logging.info("Setting up thread to ingest data for datacentre, '%s'" %providerName) 
     30         
    3031        Thread.__init__(self) 
    3132        self.harvester = harvester 
     
    3334        self.harvestDir = harvestDir 
    3435        self.format = format 
     36        self.processingConf = configurationFile 
    3537        logging.info("- finished setting up thread") 
    36  
     38                 
    3739       
    3840    def run(self): 
    3941        logging.info("Running thread to ingest datacentre docs") 
     42         
    4043        isSuccess, ingestMessage = self.harvester.ingestDocuments(self.providerName,  
    4144                                                                  self.harvestDir, 
    42                                                                   self.format) 
     45                                                                  self.format, self.processingConf) 
    4346        logging.info("- finished ingesting data") 
    4447        if self.harvester.userEmail: 
     
    7477        OAI info editor data.  NB, the settings in configFile override the outDir keyword 
    7578        ''' 
     79         
    7680        logging.debug("Initialising Harvester object") 
    7781        self.mailServer = mailServer 
    78         self.outDir = outDir 
     82        #self.outDir = outDir 
    7983        self.proxyHost = proxyHost 
    8084        self.proxyPort = proxyPort 
    8185        self.cf = None 
     86         
     87        self.oaiProcessingConfigFile = configFile 
     88         
    8289        if configFile: 
     90                 
     91                self.processingDict = self.getProcessingConfig(configFile) 
     92                 
     93                self.outDir = self.processingDict['base_directory'] 
     94                logging.info("Will harvest data to: " + self.outDir) 
     95         
     96        else: 
     97                logging.warn("Problem extracting location to harvest data to..") 
     98                self.outDir = '.' #temp fudge 
     99                 
     100                ''' 
    83101            self.cf = myConfig(configFile) 
    84102            outDir = self.cf.get('DATA_STORE', 'harvestDir') 
    85103            if outDir: 
    86104                self.outDir = outDir 
     105            ''' 
     106         
     107        #get the location of the oai_document_ingester.config file so can properly run this 
     108                #ddd = self.cf.get('DATA_STORE', 'oaiConfigFile') 
     109 
     110         
    87111 
    88112        self.dao = None # data access object for retrieving all providers info 
     
    90114 
    91115        logging.info("ProviderInfoDAO initialised") 
     116         
     117         
     118    def getProcessingConfig(self,configFilePath): 
     119                 
     120                ''' 
     121                Fed up with messing about with hardcoded directory paths.   
     122                This method to get relevant values out of the oai_document_ingester.config file 
     123                 
     124                Returns a dictionary of values with keys: 
     125                 
     126                #directory in which the code resides 
     127                code_directory /home/badc/buildouts/oai_document_ingester/ingestAutomation-upgrade/OAIBatch/ 
     128 
     129                #base directory in which metadata is extracted to and converted to 
     130                base_directory /home/badc/discovery_docs/ingestDocs/ 
     131 
     132                #directory in which to write reports to 
     133                reporting_directory /home/badc/discovery_docs/ingestDocs/data/ 
     134 
     135                #path to the passwords file 
     136                passwords_file /home/badc/buildouts/oai_document_ingester/ingestAutomation-upgrade/OAIBatch/passwords.txt 
     137 
     138                #datacentre config file directory path 
     139                datcentre_configs /home/badc/buildouts/oai_document_ingester/ingestAutomation-upgrade/OAIBatch/datacentre_config/ 
     140                ''' 
     141                 
     142                # Check this file exists; if not, assume an invalid datacentre has been specified 
     143                 
     144                if not os.path.isfile(configFilePath): 
     145                    sys.exit("ERROR: Could not find the processing config file") 
     146                     
     147                processingConfig = {} 
     148                     
     149                processing_config_file = open(configFilePath, "r") 
     150                 
     151                for line in processing_config_file.readlines(): 
     152                        words  = string.split(line) 
     153                        if len(words) == 0: 
     154                                continue 
     155                        elif words[0] == 'code_directory': 
     156                                processingConfig['code_directory'] = words[1]                                                            
     157                        elif words[0] == 'base_directory': 
     158                                processingConfig['base_directory'] = words[1] 
     159                        elif words[0] == 'reporting_directory': 
     160                                processingConfig['reporting_directory'] = words[1] 
     161                        elif words[0] == 'passwords_file': 
     162                                processingConfig['passwords_file'] = words[1] 
     163                        elif words[0] == 'datcentre_configs': 
     164                                processingConfig['datcentre_configs'] = words[1]         
     165                        elif words[0] == 'NDG_redirect_URL': 
     166                                processingConfig['NDG_redirect_URL'] = words[1] 
     167                        elif words[0] == 'ingestConfig': 
     168                                processingConfig['ingestConfig'] = words[1] 
     169                                                                                                         
     170                return processingConfig 
     171         
    92172     
    93173         
     
    103183        outMessage = summary of harvest outcome, harvestDir = directory docs harvested to  
    104184        ''' 
     185         
     186         
     187                         
    105188        logging.info("Running data harvest") 
    106189         
     
    177260 
    178261 
    179     def ingestDocuments(self, providerName, harvestDir, dataFormat): 
     262    def ingestDocuments(self, providerName, harvestDir, dataFormat, processingConfig): 
    180263        ''' 
    181264        Ingest harvested documents into the discovery service 
     
    187270        ''' 
    188271        logging.debug("Running ingest of documents") 
     272         
     273         
     274         
    189275        if not self.ingester: 
    190276            self.ingester = oai_document_ingester() 
     
    192278        try: 
    193279            logging.info("Harvest dir= " + harvestDir + "  data format= " + dataFormat) 
     280             
    194281            isSuccess, result = self.ingester.processDataCentre(providerName,  
    195282                                                                harvestDir = harvestDir, 
    196                                                                 dataFormat = dataFormat) 
     283                                                                dataFormat = dataFormat, 
     284                                                                configFileName = processingConfig) 
    197285        except Exception, e: 
    198286            isSuccess = False 
     
    220308        logging.debug("Running harvest then ingest") 
    221309        self.userEmail = userEmail 
     310         
    222311        isSuccess, outMessage, harvestDir = self.harvestRepository(repositoryInfo, outDir = outDir) 
     312         
    223313        if isSuccess: 
    224314            ingestMessage = "" 
     
    227317                logging.debug("- running ingest asynchronously") 
    228318                thread = IngestThread(self, providerName, harvestDir,  
    229                                                   repositoryInfo.dataFormat) 
     319                                                  repositoryInfo.dataFormat, self.oaiProcessingConfigFile) 
    230320                thread.start() 
    231321                ingestMessage += "  Document ingest is now running" 
Note: See TracChangeset for help on using the changeset viewer.