from DIRAC.Core.Utilities.CFG import CFG DIRAC.gLogger.initialize('test_gConfig', '/testSectionDebug') testconfig = '%s/DIRAC/ConfigurationSystem/test/test.cfg' % DIRAC.rootPath dumpconfig = '%s/DIRAC/ConfigurationSystem/test/dump.cfg' % DIRAC.rootPath cfg1 = CFG() cfg1.loadFromFile(testconfig) fd = file(testconfig) cfg1String = fd.read() fd.close() cfg2 = CFG() cfg2.loadFromBuffer(cfg1.serialize()) cfg3 = cfg1.mergeWith(cfg2) testList = [{ 'method': DIRAC.gConfig.loadFile, 'arguments': (testconfig, ), 'output': { 'OK': True, 'Value': '' } }, { 'method': DIRAC.gConfig.dumpLocalCFGToFile, 'arguments': (dumpconfig, ), 'output': { 'OK': True,
def convertSites(): global csapi gLogger.notice('Converting Computing services') # Collect site info infoDict = {} result = gConfig.getSections('/Resources/Sites') print result if not result['OK']: return result domains = result['Value'] for domain in domains: gLogger.notice('Analyzing domain %s' % domain) result = gConfig.getSections('/Resources/Sites/%s' % domain) if not result['OK']: return result sites = result['Value'] for site in sites: result = getSiteName(site) if not result['OK']: gLogger.error('Invalid site name %s' % site) continue siteName = result['Value'] country = result['Country'] print "AT >>> siteName, country", siteName, country gLogger.notice('Analyzing site %s' % siteName) result = gConfig.getOptionsDict('/Resources/Sites/%s/%s' % (domain, site)) if not result['OK']: return result siteDict = result['Value'] siteDict['Country'] = country if 'Name' in siteDict: siteDict['GOCName'] = siteDict['Name'] del siteDict['Name'] if "CE" in siteDict: del siteDict['CE'] if 'SE' in siteDict: del siteDict['SE'] infoDict.setdefault(siteName, siteDict) infoDict[siteName].setdefault('Domain', []) infoDict[siteName]['Domain'].append(domain) if 'VO' in siteDict: communities = List.fromChar(siteDict['VO']) infoDict[siteName]['VO'] = communities result = gConfig.getSections('/Resources/Sites/%s/%s/CEs' % (domain, site)) if not result['OK']: if 'does not exist' in result['Message']: continue return result ces = result['Value'] for ce in ces: result = gConfig.getOptionsDict( '/Resources/Sites/%s/%s/CEs/%s' % (domain, site, ce)) if not result['OK']: return result ceDict = result['Value'] ceName = ce.split('.')[0] if not 'Host' in ceDict: ceDict['Host'] = ce if not "SubmissionMode" in ceDict or ceDict[ 'SubmissionMode'].lower() != "direct": ceDict['SubmissionMode'] = 'gLite' infoDict[siteName].setdefault('Computing', {}) infoDict[siteName]['Computing'][ceName] = ceDict if 'VO' in ceDict: communities = List.fromChar(ceDict['VO']) infoDict[siteName]['Computing'][ceName]['VO'] = communities del ceDict['VO'] result = gConfig.getSections( '/Resources/Sites/%s/%s/CEs/%s/Queues' % (domain, site, ce)) if not result['OK']: if 'does not exist' in result['Message']: continue return result queues = result['Value'] for queue in queues: result = gConfig.getOptionsDict( '/Resources/Sites/%s/%s/CEs/%s/Queues/%s' % (domain, site, ce, queue)) if not result['OK']: return result queueDict = result['Value'] infoDict[siteName]['Computing'][ceName].setdefault( 'Queues', {}) infoDict[siteName]['Computing'][ceName]['Queues'][ queue] = queueDict if 'VO' in queueDict: communities = List.fromChar(queueDict['VO']) infoDict[siteName]['Computing'][ceName]['Queues'][ queue]['VO'] = communities del queueDict['VO'] cfg = CFG() cfg.loadFromDict(infoDict[siteName]) print "AT >>> siteName, cfg", siteName, cfg.serialize() csapi.mergeCFGUnderSection( '%s/Sites/%s' % (RESOURCES_NEW_SECTION, siteName), cfg) csapi.sortSection('%s/Sites/%s/Computing' % (RESOURCES_NEW_SECTION, siteName)) for domain in domains: csapi.createSection('%s/Domains/%s' % (RESOURCES_NEW_SECTION, domain)) csapi.sortSection('%s/Sites' % RESOURCES_NEW_SECTION) return S_OK()
from DIRAC.Core.Utilities.CFG import CFG DIRAC.gLogger.initialize('test_gConfig','/testSectionDebug') testconfig = '%s/DIRAC/ConfigurationSystem/test/test.cfg' % DIRAC.rootPath dumpconfig = '%s/DIRAC/ConfigurationSystem/test/dump.cfg' % DIRAC.rootPath cfg1 = CFG() cfg1.loadFromFile( testconfig ) fd = file( testconfig ) cfg1String = fd.read() fd.close() cfg2 = CFG() cfg2.loadFromBuffer( cfg1.serialize() ) cfg3 = cfg1.mergeWith( cfg2 ) testList = [{ 'method' : DIRAC.gConfig.loadFile, 'arguments' : ( testconfig, ), 'output' : {'OK': True, 'Value': ''} }, { 'method' : DIRAC.gConfig.dumpLocalCFGToFile, 'arguments' : ( dumpconfig, ), 'output' : {'OK': True, 'Value': ''} }, { 'method' : cfg1.serialize, 'arguments' : ( ), 'output' : cfg1String },
def convertSites(): global csapi gLogger.notice( 'Converting Computing services' ) # Collect site info infoDict = {} result = gConfig.getSections( '/Resources/Sites' ) print result if not result['OK']: return result domains = result['Value'] for domain in domains: gLogger.notice( 'Analyzing domain %s' % domain ) result = gConfig.getSections( '/Resources/Sites/%s' % domain ) if not result['OK']: return result sites = result['Value'] for site in sites: result = getSiteName( site ) if not result['OK']: gLogger.error( 'Invalid site name %s' % site ) continue siteName = result['Value'] country = result['Country'] print "AT >>> siteName, country", siteName, country gLogger.notice( 'Analyzing site %s' % siteName ) result = gConfig.getOptionsDict( '/Resources/Sites/%s/%s' % (domain,site) ) if not result['OK']: return result siteDict = result['Value'] siteDict['Country'] = country if 'Name' in siteDict: siteDict['GOCName'] = siteDict['Name'] del siteDict['Name'] if "CE" in siteDict: del siteDict['CE'] if 'SE' in siteDict: del siteDict['SE'] infoDict.setdefault( siteName, siteDict ) infoDict[siteName].setdefault( 'Domain', [] ) infoDict[siteName]['Domain'].append( domain ) if 'VO' in siteDict: communities = List.fromChar( siteDict['VO'] ) infoDict[siteName]['VO'] = communities result = gConfig.getSections('/Resources/Sites/%s/%s/CEs' % (domain,site)) if not result['OK']: if 'does not exist' in result['Message']: continue return result ces = result['Value'] for ce in ces: result = gConfig.getOptionsDict( '/Resources/Sites/%s/%s/CEs/%s' % (domain,site,ce) ) if not result['OK']: return result ceDict = result['Value'] ceName = ce.split('.')[0] if not 'Host' in ceDict: ceDict['Host'] = ce if not "SubmissionMode" in ceDict or ceDict['SubmissionMode'].lower() != "direct": ceDict['SubmissionMode'] = 'gLite' infoDict[siteName].setdefault( 'Computing', {} ) infoDict[siteName]['Computing'][ceName] = ceDict if 'VO' in ceDict: communities = List.fromChar( ceDict['VO'] ) infoDict[siteName]['Computing'][ceName]['VO'] = communities del ceDict['VO'] result = gConfig.getSections('/Resources/Sites/%s/%s/CEs/%s/Queues' % (domain,site,ce)) if not result['OK']: if 'does not exist' in result['Message']: continue return result queues = result['Value'] for queue in queues: result = gConfig.getOptionsDict( '/Resources/Sites/%s/%s/CEs/%s/Queues/%s' % (domain,site,ce,queue) ) if not result['OK']: return result queueDict = result['Value'] infoDict[siteName]['Computing'][ceName].setdefault( 'Queues', {} ) infoDict[siteName]['Computing'][ceName]['Queues'][queue] = queueDict if 'VO' in queueDict: communities = List.fromChar( queueDict['VO'] ) infoDict[siteName]['Computing'][ceName]['Queues'][queue]['VO'] = communities del queueDict['VO'] cfg = CFG() cfg.loadFromDict( infoDict[siteName] ) print "AT >>> siteName, cfg", siteName, cfg.serialize() csapi.mergeCFGUnderSection( '%s/Sites/%s' % (RESOURCES_NEW_SECTION,siteName), cfg) csapi.sortSection( '%s/Sites/%s/Computing' % (RESOURCES_NEW_SECTION,siteName) ) for domain in domains: csapi.createSection( '%s/Domains/%s' % (RESOURCES_NEW_SECTION,domain) ) csapi.sortSection( '%s/Sites' % RESOURCES_NEW_SECTION ) return S_OK()