Changeset 375


Ignore:
Timestamp:
06/13/07 15:54:25 (14 years ago)
Author:
bastiaans
Message:

jobarchived/jobarchived.py:

  • backwards compatible for rrdtool pipes, use rrdtool module automaticly if available
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/jobarchived/jobarchived.py

    r372 r375  
    104104        cfg.read( filename )
    105105
    106         global DEBUG_LEVEL, USE_SYSLOG, SYSLOG_LEVEL, SYSLOG_FACILITY, GMETAD_CONF, ARCHIVE_XMLSOURCE, ARCHIVE_DATASOURCES, ARCHIVE_PATH, ARCHIVE_HOURS_PER_RRD, ARCHIVE_EXCLUDE_METRICS, JOB_SQL_DBASE, DAEMONIZE, RRDTOOL, JOB_TIMEOUT
     106        global DEBUG_LEVEL, USE_SYSLOG, SYSLOG_LEVEL, SYSLOG_FACILITY, GMETAD_CONF, ARCHIVE_XMLSOURCE, ARCHIVE_DATASOURCES, ARCHIVE_PATH, ARCHIVE_HOURS_PER_RRD, ARCHIVE_EXCLUDE_METRICS, JOB_SQL_DBASE, DAEMONIZE, RRDTOOL, JOB_TIMEOUT, MODRRDTOOL
    107107
    108108        ARCHIVE_PATH            = cfg.get( 'DEFAULT', 'ARCHIVE_PATH' )
     
    115115
    116116        SYSLOG_LEVEL            = cfg.getint( 'DEFAULT', 'SYSLOG_LEVEL' )
     117
     118        MODRRDTOOL              = False
     119
     120        try:
     121                import rrdtool
     122
     123                MODRRDTOOL              = True
     124
     125        except ImportError:
     126
     127                MODRRDTOOL              = False
     128
     129                debug_msg( 0, "ERROR: py-rrdtool import FAILED: failing back to DEPRECATED use of rrdtool binary. This will slow down jobmond significantly!" )
    117130
    118131        try:
     
    445458                """Create a new rrd with args"""
    446459
    447                 #return self.perform( 'create', '"' + filename + '"', args )
    448                 return self.perform( 'create', filename, args )
     460                global MODRRDTOOL
     461
     462                if MODRRDTOOL:
     463                        return self.perform( 'create', filename, args )
     464                else:
     465                        return self.perform( 'create', '"' + filename + '"', args )
    449466
    450467        def update( self, filename, args ):
    451468                """Update a rrd with args"""
    452469
    453                 #return self.perform( 'update', '"' + filename + '"', args )
    454                 return self.perform( 'update', filename, args )
     470                global MODRRDTOOL
     471
     472                if MODRRDTOOL:
     473                        return self.perform( 'update', filename, args )
     474                else:
     475                        return self.perform( 'update', '"' + filename + '"', args )
    455476
    456477        def grabLastUpdate( self, filename ):
    457478                """Determine the last update time of filename rrd"""
    458479
     480                global MODRRDTOOL
     481
    459482                last_update = 0
    460483
    461                 debug_msg( 8, 'rrdtool.info( ' + filename + ' )' )
    462 
    463                 rrd_header      = { }
    464 
    465                 try:
    466                         rrd_header      = rrdtool.info( filename )
    467                 except rrdtool.error, msg:
    468                         debug_msg( 8, str( msg ) )
    469 
    470                 if rrd_header.has_key( 'last_update' ):
    471                         return last_update
     484                if MODRRDTOOL:
     485
     486                        debug_msg( 8, 'rrdtool.info( ' + filename + ' )' )
     487
     488                        rrd_header      = { }
     489
     490                        try:
     491                                rrd_header      = rrdtool.info( filename )
     492                        except rrdtool.error, msg:
     493                                debug_msg( 8, str( msg ) )
     494
     495                        if rrd_header.has_key( 'last_update' ):
     496                                return last_update
     497                        else:
     498                                return 0
     499
    472500                else:
    473                         return 0
     501                        debug_msg( 8, self.binary + ' info ' + filename )
     502
     503                        my_pipe         = os.popen( self.binary + ' info "' + filename + '"' )
     504
     505                        for line in my_pipe.readlines():
     506
     507                                if line.find( 'last_update') != -1:
     508
     509                                        last_update = line.split( ' = ' )[1]
     510
     511                        if my_pipe:
     512
     513                                my_pipe.close()
     514
     515                        if last_update:
     516                                return last_update
     517                        else:
     518                                return 0
     519
    474520
    475521        def perform( self, action, filename, args ):
    476522                """Perform action on rrd filename with args"""
     523
     524                global MODRRDTOOL
    477525
    478526                arg_string = None
     
    490538                                arg_string = arg_string + ' ' + arg
    491539
    492                 debug_msg( 8, 'rrdtool.' + action + "( " + filename + ' ' + arg_string + ")" )
    493 
    494                 try:
    495                         debug_msg( 8, "filename '" + str(filename) + "' type "+ str(type(filename)) + " args " + str( args ) )
    496 
    497                         if action == 'create':
    498 
    499                                 rrdtool.create( str( filename ), *args )
    500 
    501                         elif action == 'update':
    502 
    503                                 rrdtool.update( str( filename ), *args )
    504 
    505                 except rrdtool.error, msg:
    506 
    507                         error_msg = str( msg )
    508                         debug_msg( 8, error_msg )
    509                         return 1
     540                if MODRRDTOOL:
     541
     542                        debug_msg( 8, 'rrdtool.' + action + "( " + filename + ' ' + arg_string + ")" )
     543
     544                        try:
     545                                debug_msg( 8, "filename '" + str(filename) + "' type "+ str(type(filename)) + " args " + str( args ) )
     546
     547                                if action == 'create':
     548
     549                                        rrdtool.create( str( filename ), *args )
     550
     551                                elif action == 'update':
     552
     553                                        rrdtool.update( str( filename ), *args )
     554
     555                        except rrdtool.error, msg:
     556
     557                                error_msg = str( msg )
     558                                debug_msg( 8, error_msg )
     559                                return 1
     560
     561                else:
     562
     563                        debug_msg( 8, self.binary + ' ' + action + ' ' + filename + ' ' + arg_string  )
     564
     565                        cmd     = os.popen( self.binary + ' ' + action + ' ' + filename + ' ' + arg_string )
     566                        lines   = cmd.readlines()
     567
     568                        cmd.close()
     569
     570                        for line in lines:
     571
     572                                if line.find( 'ERROR' ) != -1:
     573
     574                                        error_msg = string.join( line.split( ' ' )[1:] )
     575                                        debug_msg( 8, error_msg )
     576                                        return 1
    510577
    511578                return 0
     
    17251792        """Program startup"""
    17261793
     1794        global DAEMONIZE, USE_SYSLOG
     1795
    17271796        if not processArgs( sys.argv[1:] ):
    17281797                sys.exit( 1 )
Note: See TracChangeset for help on using the changeset viewer.