Example #1
0
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()
Example #3
0
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()