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