Changeset 7857 for TI01-discovery-Ingest


Ignore:
Timestamp:
28/01/11 12:58:28 (8 years ago)
Author:
sdonegan
Message:

Updated to take data centre configuration settings from dpws db when a dpws activated ingest is started

Location:
TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/Metadata_document_ingester.py

    r7725 r7857  
    5454 
    5555                #extract relevant directories etc from processing config gile 
    56                  
    57                  
     56                                 
    5857                #self.processingDict = self.getProcessingConfig('oai_document_ingester.config') 
    5958                if configFileName is None: 
     
    128127                #os.putenv('PATH', 'C:\\opt\\cygwin\\bin') 
    129128                 
    130                 self.getConfigDetails(dataCentre) 
     129                if dpwsProvID: 
     130                        self.getConfigDetails(dataCentre,dpwsID = dpwsProvID) 
     131                else: 
     132                        self.getConfigDetails(dataCentre,dpwsID = None) 
    131133                 
    132134                 
     
    160162                                sqlFolderCmd = "select get_metadata_dir(%s);" %self.ingestProcessID 
    161163                                tempDPWSmetadataFolder = self.pgc_IngestLog.runSQLCommand(sqlFolderCmd)[0][0] 
    162                          
     164                                 
    163165                                if tempDPWSmetadataFolder is not None: 
    164166                                        logging.info("Temporary metadata folder to be used by DPWS ingest is %s " %tempDPWSmetadataFolder) 
  • TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/abstractdocumentingester.py

    r7759 r7857  
    184184                #get the converted ISO into a local var 
    185185                try: 
    186                         logging.info("Extracting converted ISO file into variable for input into original format in transformed docs table") 
     186                        logging.info("Extracting converted ISO file into variable for input into original format in transformed docs table")                     
    187187                        self.isoXML = file(filename).read() 
    188188                        self.originalXMLdoc = self.isoXML 
     
    203203                        #record whats bout to be ingested - if a problem this, error should already have been kicked out 
    204204                        mappingIndex = self.isoDataModel.findTheListData(self.isoDataModel.datasetID)                                    
    205                         self.recordAttemptToIngestDiscoveryID = self.isoDataModel.datasetID[mappingIndex][0] 
    206                          
     205                        self.recordAttemptToIngestDiscoveryID = self.isoDataModel.datasetID[mappingIndex][0]                     
    207206                         
    208207                        if self.isoDataModel.validDoc is True:                   
    209                                  
    210                                  
     208                                                                 
    211209                                #record whats attempting to be ingested  
    212210                                record = PostgresRecord(filename, self._NDG_dataProvider,self._datacentre_groups, self._datacentre_namespace, 
     
    269267         
    270268        def getProcessingConfig(self,configFilePath): 
    271                  
    272                 ''' 
    273                 Fed up with messing about with hardcoded directory paths.   
    274                 This method to get relevant values out of the oai_document_ingester.config file 
    275                  
    276                 Returns a dictionary of values with keys: 
    277                  
    278                 #directory in which the code resides 
    279                 code_directory /home/badc/buildouts/oai_document_ingester/ingestAutomation-upgrade/OAIBatch/ 
    280  
    281                 #base directory in which metadata is extracted to and converted to 
    282                 base_directory /home/badc/discovery_docs/ingestDocs/ 
    283  
    284                 #directory in which to write reports to 
    285                 reporting_directory /home/badc/discovery_docs/ingestDocs/data/ 
    286  
    287                 #path to the passwords file 
    288                 passwords_file /home/badc/buildouts/oai_document_ingester/ingestAutomation-upgrade/OAIBatch/passwords.txt 
    289  
    290                 #datacentre config file directory path 
    291                 datcentre_configs /home/badc/buildouts/oai_document_ingester/ingestAutomation-upgrade/OAIBatch/datacentre_config/ 
    292                 ''' 
    293                  
    294                 # Check this file exists; if not, assume an invalid datacentre has been specified 
    295                  
     269 
     270                # Check this file exists; if not, assume an invalid datacentre has been specified                
    296271                if not os.path.isfile(configFilePath): 
    297272                    sys.exit("ERROR: Could not find the processing config file") 
     
    394369         
    395370         
    396         def getConfigDetails(self, datacentre): 
     371        def getConfigDetails(self, datacentre, dpwsID = None): 
     372                ''' 
     373                Determine whether config details are to be picked up from local config file (for backwards compatibility) 
     374                or from the DPWS db and set the config params as appropriate 
     375                @param datacentre: datacentre to use when looking up config file 
     376                @param dpwsFormat: value extracted from dpws db for data format 
     377                @param dpwsConfig: resultset containing info from dpws provider_common table             
     378                '''              
     379                if dpwsID is not None: 
     380                        self.getConfigDetailsFromDPWS(dpwsID) 
     381                else: 
     382                        self.getConfigDetailsFromFile(datacentre) 
     383                         
     384                 
     385        def getConfigDetailsFromDPWS(self,dpwsID): 
     386                ''' 
     387                Get the harvested records directory and groups for this datacentre from the  
     388                datacentre specific DPWS db based on the id.  The harvested records directory depends on the  
     389                datacentres OAI base url, the set and format. These have to be know up-front. 
     390                The groups denote which 'portal groups' they belong to - for limiting searches to  
     391                say NERC-only datacentres records. 
     392                Groups are added to the intermediate MOLES when it is created. 
     393                @param datacentre: datacentre to use when looking up config file  
     394                ''' 
     395                 
     396                #to start with just use a simple sql cmd until new db is ready and sql function installed                
     397                self._DPWS_ID = str(dpwsID) 
     398                 
     399                #relic to keep rest of ingester data model happy 
     400                self._datacentre_groups = "" 
     401                 
     402                if self._DPWS_ID == "": 
     403                        #sys.exit("No DPWS ID entered for this provider!") 
     404                        raise ValueError("No DPWS ID entered for this provider!") 
     405                                 
     406                #now set the relevant variables          
     407                self._datacentre_format = "" 
     408                try: 
     409                        #need to also get format held in a different table 
     410                        sqlCmd = "select format from oai_provider where common_id = '%s';" %self._DPWS_ID                
     411                        self._datacentre_format = self.pgc_IngestLog.runSQLCommand(sqlCmd)[0][0] 
     412                        logging.info("format being harvested: " + self._datacentre_format)               
     413                         
     414                except: 
     415                        msg = "Could not extract metadata format from DPWS DB!" 
     416                        logging.error(msg) 
     417                        raise ValueError(msg) 
     418                         
     419                self._datacentre_namespace = "" 
     420                self._NDG_dataProvider = False 
     421                self._PublishToCSW = False 
     422                self._AggregateDir = "" 
     423                 
     424                try: 
     425                        sqlCmd = "select csw_publish_dir,ndg_data_provider,name,data_marker,csw_publish from provider_common where id='%s';" %self._DPWS_ID 
     426                        configDetails = self.pgc_IngestLog.runSQLCommand(sqlCmd) 
     427                         
     428                        self._datacentre_namespace = configDetails[0][3] 
     429                        logging.info("datacentre namespace: " + self._datacentre_namespace)              
     430                         
     431                        if configDetails[0][1] == 'True': 
     432                                self._NDG_dataProvider = True 
     433                                logging.info("Datacentre classified as an NDG data provider") 
     434                        else: 
     435                                logging.info("Datacentre is not classified as an NDG data provider")             
     436                                 
     437                        if configDetails[0][4] == 'True': 
     438                                self._PublishToCSW = True 
     439                                self._AggregateDir = configDetails[0][0] 
     440                         
     441                except: 
     442                        msg = "Could not extract configuration details from DPWS DB for provide id %s!" %self._DPWS_ID 
     443                        logging.error(msg) 
     444                        raise ValueError(msg) 
     445                                 
     446                logging.info(self.lineSeparator) 
     447                         
     448                 
     449        def getConfigDetailsFromFile (self, datacentre): 
    397450                ''' 
    398451                Get the harvested records directory and groups for this datacentre from the  
Note: See TracChangeset for help on using the changeset viewer.