Package Ganga :: Package Core :: Package MonitoringComponent :: Module Monitoring
[hide private]
[frames] | no frames]

Source Code for Module Ganga.Core.MonitoringComponent.Monitoring

  1  # Setup logging --------------- 
  2  import Ganga.Utility.logging 
  3  log = Ganga.Utility.logging.getLogger() 
  4   
  5   
6 -class MonitoringClient( object ):
7 - def __init__( self, monitoringService, serviceName = 'Main' ):
8 self.__MC = {} 9 self.subscribe( serviceName, monitoringService )
10
11 - def subscribe( self, serviceName, monitoringService ):
12 if self.isSubscribed( serviceName ): 13 log.debug( "The %s service already exists. Please unsubscribe first." % serviceName ) 14 return False 15 else: 16 log.debug( "Subscribing to the %s service." % serviceName ) 17 try: 18 self.__MC[ serviceName ] = monitoringService 19 except Exception, msg: 20 log.debug( msg ) 21 return False 22 return True
23
24 - def unsubscribe( self, serviceName = 'Main' ):
25 if self.isSubscribed( serviceName ): 26 del self.__MC[ serviceName ] 27 return True 28 return False
29
30 - def isSubscribed( self, serviceName = 'Main' ):
31 _s = serviceName in self.__MC 32 if not _s: 33 log.debug( "Service %s does not exist." % serviceName ) 34 return _s
35
36 - def allStop( self ):
37 for service in self.__MC.keys(): 38 self.__MC[ service ].stop()
39
40 - def stop( self, serviceName = 'Main' ):
41 """Stops the disconnects from server and stops monitoring mechanism is required.""" 42 if self.isSubscribed( serviceName ): 43 self.__MC[ serviceName ].stop()
44
45 - def pause( self, enableMonitoring = False, serviceName = 'Main' ):
46 if self.isSubscribed( serviceName ): 47 if enableMonitoring: 48 self.__MC[ serviceName ].enableMonitoring() 49 else: 50 self.__MC[ serviceName ].disableMonitoring()
51
52 - def update( self, serviceName = 'Main' ):
53 self.__MC[ serviceName ].updateJobs()
54
55 - def combinedUpdate( self ):
56 for service in self.__MC: 57 self.update( serviceName = service )
58
59 - def _getRegistry( self, serviceName = 'Main' ):
60 return self.__MC[ serviceName ].registry
61
62 - def _getUpdateJobStatusFunction( self, serviceName = 'Main' ):
63 return self.__MC[ serviceName ].updateJobStatus
64
65 - def makeUpdateJobStatusFunction( self, func, serviceName = 'Main' ):
66 return self.__MC[ serviceName ].makeUpdateJobStatusFunction( func )
67 68 # Client callback functions 69
70 - def bindClientFunction( self, func, hookFunc, serviceName = 'Main' ):
71 if self.isSubscribed( serviceName ): 72 self.__MC[ serviceName ].setClientCallback( func, hookFunc )
73
74 - def unbindClientFunction( self, func, serviceName = 'Main' ):
75 if self.isSubscribed( serviceName ): 76 try: 77 self.__MC[ serviceName ].removeClientCallback( func ) 78 except Exception, msg: 79 log.debug( "unbindClientFunction() failed on %s: %s." % ( serviceName, msg ) )
80 81 # Monitoring loop hook functions 82
83 - def bindMLFunction( self, hookFunc, argDict, enabled = True, serviceName = 'Main' ):
84 if self.isSubscribed( serviceName ): 85 self.__MC[ serviceName ].setCallbackHook( hookFunc, argDict, enabled )
86
87 - def unbindMLFunction( self, hookFunc, serviceName = 'Main' ):
88 if self.isSubscribed( serviceName ): 89 try: 90 self.__MC[ serviceName ].removeCallbackHook( hookFunc ) 91 except Exception, msg: 92 log.debug( "unbindClientFunction() failed on %s: %s." % ( serviceName, msg ) )
93 94 # Monitor filters. NOT IN USE YET. 95
96 - def addFilter( self, mcFilterName, mcFilter, serviceName = 'Main' ):
97 if self.isSubscribed( serviceName ): 98 self.__MC[ serviceName ].addFilter( mcFilterName, mcFilter )
99
100 - def removeFilter( self, mcFilterName, serviceName = 'Main' ):
101 if self.isSubscribed( serviceName ): 102 self.__MC[ serviceName ].removeFilter( mcFilterName )
103
104 - def enableFilter( self, mcFilterName, enabled, serviceName = 'Main' ):
105 if self.isSubscribed( serviceName ): 106 self.__MC[ serviceName ].enableFilter( mcFilterName, enabled )
107 108 # set attribute value on service 109 # def setMCAttribute( self, attributeName, attributeValue, serviceName = 'Main' ): 110 # if self.isSubscribed( serviceName ) and attributeName in [ 'gridProxy' ]: 111 # setattr( self.__MC[ serviceName ], attributeName, attributeValue ) 112
113 - def getMCAttribute( self, attributeName, serviceName = 'Main' ):
114 if self.isSubscribed( serviceName ): # and attributeName in [ 'gridProxy' ]: 115 return getattr( self.__MC[ serviceName ], attributeName )
116