def executeServerRequest(socket, parsedMessage): if (parsedMessage['command'] == 'get_latest_config'): socket.send('config:def') elif (parsedMessage['command'] == 'get_latest_values'): logging.debug( 'Received request from the leader for the latest values.') latestValues = monitor.getLatestValues() socket.send( json.dumps({ 'response': 'latest_values', 'observerName': config.getLocalConfigValue('observerName'), 'data': latestValues })) elif (parsedMessage['command'] == 'set_leader'): collector.leader = parsedMessage['leader'] socket.send(json.dumps({'response': 'leader_set'})) elif (parsedMessage['command'] == 'set_status'): status.statusData = parsedMessage['data'] socket.send(json.dumps({'response': 'status_set'})) elif (parsedMessage['command'] == 'set_last_analysis'): collector.lastAnalysisTime = time.time() - parsedMessage['duration'] socket.send(json.dumps({'response': 'last_analysis_set'}))
def countTargetsByStatus(): numbers = {'online': 0, 'unstable': 0, 'offline': 0} for data in monitor.getLatestValues().values(): numbers[data['status']] = numbers[data['status']] + 1 return numbers
def status(self): statusNumbers = countTargetsByStatus() return template.renderTemplate( 'pages/index.html', statusNumbers=statusNumbers, observerConnections=collector.getConnectionStatistics(), targets=config.getSharedConfigValue('targets'), latestValues=monitor.getLatestValues())
def analyzeTargets(): collector.lastData = {} observers = config.getSharedConfigValue('observers') startTime = time.time() for name, observerData in observers.items(): if (name == config.getLocalConfigValue('observerName')): collector.lastData[name] = monitor.getLatestValues() elif (name in collector.connections): connection = collector.connections[name] connection.send(json.dumps({'command': 'get_latest_values'})) waitForData = True complete = False counter = 0 while (waitForData): if (len(collector.lastData) == len(observers)): logging.debug('Got all data responses from observers.') complete = True waitForData = False time.sleep(0.2) counter = counter + 1 if (counter > 50): logging.error( 'Not all observers sent their latest usage data. Process will continue without the data.' ) waitForData = False logging.debug('Group the data to start the analysis.') dataByTarget = groupDataByTarget() logging.debug('Analyze the grouped data.') analyzeData(dataByTarget) switchLeader(startTime)
def status(self): return { 'lastCheck': monitor.lastCheck, 'nextCheck': monitor.nextCheck, 'status': monitor.getLatestValues() }