def createCatalog(self, catalogName, useProxy=False): """ Create a file catalog object from its name and CS description """ catalogPath = getCatalogPath(catalogName) catalogType = gConfig.getValue(catalogPath + '/CatalogType', catalogName) catalogURL = gConfig.getValue(catalogPath + '/CatalogURL', "DataManagement/" + catalogType) optionsDict = {} result = gConfig.getOptionsDict(catalogPath) if result['OK']: optionsDict = result['Value'] if useProxy: result = self.__getCatalogClass(catalogType) if not result['OK']: return result catalogClass = result['Value'] methods = catalogClass.getInterfaceMethods() catalog = FileCatalogProxyClient(catalogName) catalog.setInterfaceMethods(methods) return S_OK(catalog) return self.__createCatalog(catalogName, catalogType, catalogURL, optionsDict)
def createCatalog(self, catalogName, useProxy=False, vo=None, catalogConfig={}): """ Create a file catalog object from its name and CS description """ if useProxy: catalog = FileCatalogProxyClient(catalogName) return S_OK(catalog) # get the CS description first catConfig = catalogConfig if not catConfig: if not vo: result = getVOfromProxyGroup() if not result['OK']: return result vo = result['Value'] reHelper = Resources(vo=vo) result = reHelper.getCatalogOptionsDict(catalogName) if not result['OK']: return result catConfig = result['Value'] catalogType = catConfig.get('CatalogType', catalogName) catalogURL = catConfig.get('CatalogURL', '') self.log.verbose('Creating %s client' % catalogName) objectLoader = ObjectLoader() result = objectLoader.loadObject( 'Resources.Catalog.%sClient' % catalogType, catalogType + 'Client') if not result['OK']: gLogger.error('Failed to load catalog object: %s' % result['Message']) return result catalogClass = result['Value'] try: if catalogType in ['LcgFileCatalogCombined', 'LcgFileCatalog']: # The LFC special case infoSys = catConfig.get('LcgGfalInfosys', '') host = catConfig.get('MasterHost', '') catalog = catalogClass(infoSys, host) else: if catalogURL: catalog = catalogClass(url=catalogURL) else: catalog = catalogClass() self.log.debug('Loaded module %sClient' % catalogType) return S_OK(catalog) except Exception, x: errStr = "Failed to instantiate %s()" % (catalogType) gLogger.exception(errStr, lException=x) return S_ERROR(errStr)
def createCatalog(self, catalogName, useProxy=False, vo=None, catalogConfig={}): """ Create a file catalog object from its name and CS description """ if useProxy: catalog = FileCatalogProxyClient(catalogName) return S_OK(catalog) # get the CS description first catConfig = catalogConfig if not catConfig: if not vo: result = getVOfromProxyGroup() if not result['OK']: return result vo = result['Value'] reHelper = Resources(vo=vo) result = reHelper.getCatalogOptionsDict(catalogName) if not result['OK']: return result catConfig = result['Value'] catalogType = catConfig.get('CatalogType', catalogName) catalogURL = catConfig.get('CatalogURL', '') self.log.verbose('Creating %s client' % catalogName) moduleRootPaths = getInstalledExtensions() for moduleRootPath in moduleRootPaths: gLogger.verbose("Trying to load from root path %s" % moduleRootPath) #moduleFile = os.path.join( rootPath, moduleRootPath, "Resources", "Catalog", "%sClient.py" % catalogType ) #gLogger.verbose( "Looking for file %s" % moduleFile ) #if not os.path.isfile( moduleFile ): # continue try: # This enforces the convention that the plug in must be named after the file catalog moduleName = "%sClient" % (catalogType) catalogModule = __import__( '%s.Resources.Catalog.%s' % (moduleRootPath, moduleName), globals(), locals(), [moduleName]) except ImportError, x: if "No module" in str(x): gLogger.debug('Catalog module %s not found in %s' % (catalogType, moduleRootPath)) else: errStr = "Failed attempt to import %s from the path %s: %s" % ( catalogType, moduleRootPath, x) gLogger.error(errStr) continue except Exception, x: errStr = "Failed attempt to import %s from the path %s: %s" % ( catalogType, moduleRootPath, x) gLogger.error(errStr) continue
def createCatalog( self, catalogName, useProxy = False ): """ Create a file catalog object from its name and CS description """ catalogPath = getCatalogPath( catalogName ) catalogType = gConfig.getValue( catalogPath + '/CatalogType', catalogName ) catalogURL = gConfig.getValue( catalogPath + '/CatalogURL', "DataManagement/" + catalogType ) optionsDict = {} result = gConfig.getOptionsDict( catalogPath ) if result['OK']: optionsDict = result['Value'] if useProxy: result = self.__getCatalogClass( catalogType ) if not result['OK']: return result catalogClass = result['Value'] methods = catalogClass.getInterfaceMethods() catalog = FileCatalogProxyClient( catalogName ) catalog.setInterfaceMethods( methods ) return S_OK( catalog ) return self.__createCatalog( catalogName, catalogType, catalogURL, optionsDict )
def createCatalog(self, catalogName, useProxy=False): """ Create a file catalog object from its name and CS description """ if useProxy: catalog = FileCatalogProxyClient(catalogName) return S_OK(catalog) # get the CS description first catalogPath = getCatalogPath(catalogName) catalogType = gConfig.getValue(catalogPath + '/CatalogType', catalogName) catalogURL = gConfig.getValue(catalogPath + '/CatalogURL', "DataManagement/" + catalogType) self.log.debug('Creating %s client' % catalogName) objectLoader = ObjectLoader.ObjectLoader() result = objectLoader.loadObject( 'Resources.Catalog.%sClient' % catalogType, catalogType + 'Client') if not result['OK']: gLogger.error('Failed to load catalog object: %s' % result['Message']) return result catalogClass = result['Value'] try: # FIXME: is it really needed? This is the factory, can't this be moved out? if catalogType in ['LcgFileCatalogCombined', 'LcgFileCatalog']: # The LFC special case infoSys = gConfig.getValue(catalogPath + '/LcgGfalInfosys', '') host = gConfig.getValue(catalogPath + '/MasterHost', '') catalog = catalogClass(infoSys, host) else: if catalogURL: catalog = catalogClass(url=catalogURL) else: catalog = catalogClass() self.log.debug('Loaded module %sClient' % catalogType) return S_OK(catalog) except Exception, x: errStr = "Failed to instantiate %s()" % (catalogType) gLogger.exception(errStr, lException=x) return S_ERROR(errStr)