CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoLuminosity/LumiDB/python/cacheconfigParser.py

Go to the documentation of this file.
00001 from  xml.dom.minidom import parse,parseString,getDOMImplementation,Node
00002         
00003 class cacheconfigParser(object):
00004     def __init__(self):
00005         self.__configstr=''
00006         self.__configfile=''
00007         ###parse result
00008         self.__parameterDict={}
00009     def handleFrontierConnect(self,dom):
00010         #print 'handleFrontierConnect'
00011         nodelist=dom.getElementsByTagName('frontier-connect')[0].childNodes
00012         #print nodelist
00013         for node in nodelist:
00014             if node.nodeType!=Node.TEXT_NODE and node.nodeType!=Node.COMMENT_NODE:
00015                 tagname=node.tagName
00016                 attrs=node.attributes
00017                 for attrName in attrs.keys():
00018                     attrNode=attrs.get(attrName)
00019                     attrValue=attrNode.nodeValue
00020                     if  self.__parameterDict.has_key(tagname):
00021                         self.__parameterDict[tagname].append((attrName,attrValue))
00022                     else:
00023                         valuelist=[]
00024                         valuelist.append((attrName,attrValue))
00025                         self.__parameterDict[tagname]=valuelist
00026     def parse(self,filename):
00027         """
00028         Parse an XML file by name
00029         """
00030         dom=parse(filename)
00031         self.handleFrontierConnect(dom)
00032         dom.unlink()
00033     def parseString(self,strbuff):
00034         dom=parseString(strbuff)
00035         self.handleFrontierConnect(dom)
00036         dom.unlink()
00037     def proxylist(self):
00038         return self.__parameterDict['proxy']
00039     def serverlist(self):
00040         return self.__parameterDict['server']
00041     def parameterdict(self):
00042         return self.__parameterDict
00043 if __name__ == '__main__':
00044     mydocstr="""<frontier-connect><proxy url="https://cmst0frontier.cern.ch:3128"/><proxy url="https://cmst0frontier.cern.ch:3128"/><proxy url="https://cmst0frontier1.cern.ch:3128"/><proxy url="https://cmst0frontier2.cern.ch:3128"/><server url="https://cmsfrontier.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier1.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier2.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier3.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier4.cern.ch:8000/FrontierInt"/></frontier-connect>"""
00045     p=cacheconfigParser()
00046     p.parseString(mydocstr)
00047     print 'proxies'
00048     print p.proxylist()
00049     print 'servers'
00050     print p.serverlist()
00051     print 'parameterdict'
00052     print p.parameterdict()
00053 
00054     p.parse('/afs/cern.ch/user/x/xiezhen/w1/site-local-config.xml')
00055     print 'proxies'
00056     print p.proxylist()
00057     print 'servers'
00058     print p.serverlist()
00059     print 'parameterdict'
00060     print p.parameterdict()