Changeset 42 for trunk/daemon/togad.py


Ignore:
Timestamp:
04/05/05 14:30:58 (18 years ago)
Author:
bastiaans
Message:

daemon/togad.py:

Added functions for gathering all 'last_update' values of existing .rrds

  • This is done 1 time, at startup, for each cluster
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/daemon/togad.py

    r41 r42  
    7575                return self.perform( 'update', '"' + filename + '"', args )
    7676
     77        def grabLastUpdate( self, filename ):
     78
     79                last_update = 0
     80
     81                for line in os.popen( self.binary + ' info "' + filename + '"' ).readlines():
     82
     83                        if line.find( 'last_update') != -1:
     84
     85                                last_update = line.split( ' = ' )[1]
     86
     87                if last_update:
     88                        return last_update
     89                else:
     90                        return 0
     91
    7792        def perform( self, action, filename, args ):
    7893
     
    334349                #
    335350                #STORE_INTERVAL = random.randint( 60, 180 )
    336                 STORE_INTERVAL = 40
     351                STORE_INTERVAL = 180
    337352
    338353                storethread = threading.Thread( None, self.storeThread, 'storemetricthread' )
     
    478493                self.slot = threading.Lock()
    479494                self.rrdm = RRDMutator()
     495                self.gatherLastUpdates()
     496
     497        def gatherLastUpdates( self ):
     498                "Populate the lastStored list, containing timestamps of all last updates"
     499
     500                cluster_dir = '%s/%s' %( check_dir(ARCHIVE_PATH), self.cluster )
     501
     502                hosts = [ ]
     503
     504                if os.path.exists( cluster_dir ):
     505
     506                        for root, dirs, files in os.walk( cluster_dir ):
     507
     508                                for dir in dirs:
     509
     510                                        valid_dir = 1
     511
     512                                        for letter in dir:
     513                                                if letter not in string.digits:
     514                                                        valid_dir = 0
     515
     516                                        if valid_dir:
     517                                                host = root.split( '/' )[-1]
     518                                                hosts.append( host )
     519
     520                for host in hosts:
     521
     522                        last_serial = self.getLastRrdTimeSerial( host )
     523                        if last_serial:
     524
     525                                metric_dir = cluster_dir + '/' + host + '/' + last_serial
     526                                if os.path.exists( metric_dir ):
     527
     528                                        for root, dirs, files in os.walk( metric_dir ):
     529
     530                                                for file in files:
     531
     532                                                        metricname = file.split( '.rrd' )[0]
     533
     534                                                        if not self.lastStored.has_key( host ):
     535
     536                                                                self.lastStored[ host ] = { }
     537
     538                                                        self.lastStored[ host ][ metricname ] = self.rrdm.grabLastUpdate( metric_dir + '/' + file )
    480539
    481540        def getClusterName( self ):
     
    525584                        #
    526585                        if len( self.myMetrics[ host ][ metricname ] ) > 0:
    527                                 metric = self.myMetrics[ host ][ metricname ].pop()
     586                                metric = self.myMetrics[ host ][ metricname ].pop( 0 )
    528587
    529588                        self.slot.release()
Note: See TracChangeset for help on using the changeset viewer.