Changeset 664


Ignore:
Timestamp:
09/04/12 14:49:23 (12 years ago)
Author:
ramonb
Message:
  • fixed XDR protocol for gmetric 3.1+
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/jobmond/jobmond.py

    r663 r664  
    963963                del self.jobs[ id ]
    964964
    965 #
    966 # Gmetric by Nick Galbreath - nickg(a.t)modp(d.o.t)com
    967 # Version 1.0 - 21-April2-2007
    968 # http://code.google.com/p/embeddedgmetric/
    969 #
    970 # Modified by: Ramon Bastiaans
    971 # For the Job Monarch Project, see: https://subtrac.sara.nl/oss/jobmonarch/
    972 #
    973 # added: DEFAULT_TYPE for Gmetric's
    974 # added: checkHostProtocol to determine if target is multicast or not
    975 # changed: allow default for Gmetric constructor
    976 # changed: allow defaults for all send() values except dmax
    977 #
    978 
    979965GMETRIC_DEFAULT_TYPE    = 'string'
    980966GMETRIC_DEFAULT_HOST    = '127.0.0.1'
     
    995981
    996982        self.prot       = self.checkHostProtocol( host )
    997         self.msg        = xdrlib.Packer()
     983        self.data_msg   = xdrlib.Packer()
     984        self.meta_msg   = xdrlib.Packer()
    998985        self.socket     = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
    999986
     
    10351022            typestr     = GMETRIC_DEFAULT_TYPE
    10361023
    1037         msg             = self.makexdr( name, value, typestr, units, self.slopestr, self.tmax, dmax )
    1038 
    1039         return self.socket.sendto( msg, self.hostport )
    1040 
    1041     def makexdr( self, name, value, typestr, unitstr, slopestr, tmax, dmax ):
     1024        (meta_msg, data_msg) = self.makexdr( name, value, typestr, units, self.slopestr, self.tmax, dmax )
     1025
     1026        meta_rt = self.socket.sendto( meta_msg, self.hostport )
     1027        data_rt = self.socket.sendto( data_msg, self.hostport )
     1028
     1029        return ( meta_rt, data_rt )
     1030
     1031    def makexdr( self, name, value, typestr, unitstr, slopestr, tmax, dmax, group=None, spoof=None ):
     1032
     1033        hostname = "unset"
    10421034
    10431035        if slopestr not in self.slope:
     
    10531045            raise ValueError( "Name must be non-empty" )
    10541046
    1055         self.msg.reset()
    1056         self.msg.pack_int( 0 )
    1057         self.msg.pack_string( typestr )
    1058         self.msg.pack_string( name )
    1059         self.msg.pack_string( str( value ) )
    1060         self.msg.pack_string( unitstr )
    1061         self.msg.pack_int( self.slope[ slopestr ] )
    1062         self.msg.pack_uint( int( tmax ) )
    1063         self.msg.pack_uint( int( dmax ) )
    1064 
    1065         return self.msg.get_buffer()
     1047        self.meta_msg.reset()
     1048        self.meta_msg.pack_int( 128 )
     1049
     1050        if not spoof:
     1051            self.meta_msg.pack_string( hostname )
     1052        else:
     1053            self.meta_msg.pack_string( spoof )
     1054
     1055        self.meta_msg.pack_string( name )
     1056
     1057        if not spoof:
     1058            self.meta_msg.pack_int( 0 )
     1059        else:
     1060            self.meta_msg.pack_int( 1 )
     1061           
     1062        self.meta_msg.pack_string( typestr )
     1063        self.meta_msg.pack_string( name )
     1064        self.meta_msg.pack_string( unitstr )
     1065        self.meta_msg.pack_int( self.slope[ slopestr ] )
     1066        self.meta_msg.pack_uint( int( tmax ) )
     1067        self.meta_msg.pack_uint( int( dmax ) )
     1068
     1069        if not group:
     1070            self.meta_msg.pack_int( 0 )
     1071        else:
     1072            self.meta_msg.pack_int( 1 )
     1073            self.meta_msg.pack_string( "GROUP" )
     1074            self.meta_msg.pack_string( group )
     1075
     1076        self.data_msg.reset()
     1077        self.data_msg.pack_int( 128+5 )
     1078
     1079        if not spoof:
     1080            self.data_msg.pack_string( hostname )
     1081        else:
     1082            self.data_msg.pack_string( spoof )
     1083
     1084        self.data_msg.pack_string( name )
     1085
     1086        if not spoof:
     1087            self.data_msg.pack_int( 0 )
     1088        else:
     1089            self.data_msg.pack_int( 1 )
     1090
     1091        self.data_msg.pack_string( "%s" )
     1092        self.data_msg.pack_string( str( value ) )
     1093
     1094        return ( self.meta_msg.get_buffer(), self.data_msg.get_buffer() )
    10661095
    10671096def printTime( ):
Note: See TracChangeset for help on using the changeset viewer.