1
2
3
4
5
6
7
8
9 """
10 Agent zephir pour les services TCP
11 """
12
13 from twisted.python import log
14 from twisted.internet import defer
15 from twisted.internet.utils import getProcessOutput, getProcessValue
16
17 from zephir.monitor.agentmanager.agent import Agent
18 from zephir.monitor.agentmanager.data import HTMLData, TableData
19 from zephir.monitor.agentmanager.util import status_to_img
20 from zephir.monitor.agentmanager import status
21
22
24 h1, p1 = hp1.split(':')
25 h2, p2 = hp2.split(':')
26 result = cmp(h1, h2)
27 if result != 0:
28 return result
29 else:
30 return cmp(int(p1), int(p2))
31
32
34
35 - def __init__(self, name,
36 tcp_services,
37 **params):
38 Agent.__init__(self, name, **params)
39 self.tcp_services = tcp_services
40 self.table = TableData([
41 ('description', "Description", {'align':'left'}, None),
42 ('status', "état", {'align':'center'}, status_to_img),
43 ('stats', "Historique", {'align':'left'}, None),
44 ('host', "Hôte", {'align':'left'}, None),
45 ('port', "Port", {'align':'left'}, None),
46 ])
47 self.data = [self.table]
48
49
51 mesures = []
52 try:
53
54
55 from zephir.zephir_conf.zephir_conf import id_serveur
56 except:
57
58 id_serveur = 0
59
60 for service in self.tcp_services:
61 if self.manager.agents.has_key(service):
62 serv_agent = self.manager.agents[service]
63 if serv_agent.last_measure is not None:
64 status = serv_agent.last_measure.value['services'][0]['status']
65 description = serv_agent.last_measure.value['services'][0]['description']
66 mesures.append({ 'description': description,
67 'host': serv_agent.last_measure.value['services'][0]['host'],
68 'port': serv_agent.last_measure.value['services'][0]['port'],
69 'status': status,
70 'stats': '<img src=/agents/%s/%s/status.png alt="Historique (%s)"/>' % (id_serveur,service,service)})
71 self.measure_data[service]=[status,description]
72 else:
73 mesures.append({ 'description': service,
74 'host': '',
75 'port': '',
76 'status': '',
77 'stats': ''})
78 return {'services': mesures}
79
80
82 Agent.write_data(self)
83 if self.last_measure is not None:
84 self.table.table_data = self.last_measure.value['services']
85
86
88 """remonte une erreur si un des services est tombé"""
89 if self.last_measure is not None:
90 for service in self.last_measure.value['services']:
91 if service['status'] == 'Off':
92 return status.Error()
93 else:
94
95 return status.Unknown()
96 return status.OK()
97