Changeset 6


Ignore:
Timestamp:
03/21/05 12:13:03 (19 years ago)
Author:
bastiaans
Message:

daemon/togad.py:

First attempt at XML parsing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/daemon/togad.py

    r5 r6  
    66import sys
    77
    8 class GangliaXMLHandler(ContentHandler):
     8DEBUG = 1
     9
     10class GangliaXMLHandler( ContentHandler ):
    911        """
    1012        Parse/Handle XML
    1113        """
    1214
    13         def __init__ (self, searchTerm):
    14                 self.isHostElement, self.isxReboundsElement = 0, 0;
     15        metrics = [ ]
     16
     17        #def __init__ ( self ):
     18                #self.isHostElement, self.isMetricElement, self.isGridElement, self.isClusterElement = 0, 0, 0, 0
     19                #self.isGangliaXMLElement = 0
    1520   
    16         def startElement(self, name, attrs):
     21        def startElement( self, name, attrs ):
    1722
    18                 if name == 'player':     
    19                         self.playerName = attrs.get('name',"")
    20                         self.playerAge = attrs.get('age',"")
    21                         self.playerHeight = attrs.get('height',"")
    22                 elif name == 'points':
    23                         self.isPointsElement= 1;
    24                         self.playerPoints = "";
    25                 elif name == 'rebounds':
    26                         self.isReboundsElement = 1;
    27                         self.playerRebounds = "";
     23                if name == 'ganglia_xml':
     24                        self.XMLSource = attrs.get('source',"")
     25                        self.gangliaVersion = attrs.get('version',"")
     26
     27                elif name == 'grid':
     28                        self.gridName = attrs.get('name',"")
     29
     30                elif name == 'cluster':
     31                        self.clusterName = attrs.get('name',"")
     32
     33                elif name == 'host':     
     34                        self.hostName = attrs.get('name',"")
     35                        self.hostIp = attrs.get('ip',"")
     36                        self.hostReported = attrs.get('reported',"")
     37
     38                elif name == 'metric':
     39                        myMetric = { }
     40                        myMetric['name'] = attrs.get('name',"")
     41                        myMetric['val'] = attrs.get('val',"")
     42
     43                        self.metrics.append( myMetric )
     44                        if DEBUG: print ' | | |-metric: %s:%s' %( myMetric['name'], myMetric['val'] )
     45
    2846                return
    2947
    30         def characters (self, ch):
    31                 if self.isPointsElement== 1:
    32                         self.playerPoints += ch
    33                 if self.isReboundsElement == 1:
    34                         self.playerRebounds += ch
     48        def endElement( self, name ):
     49                if name == 'ganglia_xml':
     50                        if DEBUG: print 'Found XML data: source %s version %s' %( self.XMLSource, self.gangliaVersion )
    3551
    36         def endElement(self, name):
    37                 if name == 'points':
    38                         self.isPointsElement= 0
    39                 if name == 'rebounds':
    40                         self.inPlayersContent = 0
    41                 if name == 'player' and self.searchTerm== self.playerName :
    42                         print '<h2>Statistics for player:' , self.playerName, '</h2><br>(age:', self.playerAge , 'height' , self.playerHeight , ")<br>"
    43                         print 'Match average:', self.playerPoints , 'points,' , self.playerRebounds, 'rebounds'
     52                if name == 'grid':
     53                        if DEBUG: print '`-Grid found: %s' %( self.gridName )
     54
     55                if name == 'cluster':
     56                        if DEBUG: print ' |-Cluster found: %s' %( self.clusterName )
     57
     58                if name == 'host':     
     59                        if DEBUG: print ' | |-Host found: %s - ip %s reported %s' %( self.hostName, self.hostIp, self.hostReported )
     60
     61                #if name == 'metric':
    4462
    4563class GangliaXMLGatherer:
     
    7391                        sys.exit(1)
    7492
    75                 return s.fileno()
     93                return s.makefile()
    7694
    7795                #s.send('Hello, world')
     
    85103        """
    86104
    87         myXMLGatherer = GangliaXMLGatherer( localhost, 8651 )
     105        myXMLGatherer = GangliaXMLGatherer( 'localhost', 8651 )
    88106
    89107        myParser = make_parser()   
Note: See TracChangeset for help on using the changeset viewer.