1
2
3
4
5
6
7
8
9 """
10 Surveillance d'un onduleur géré par nut
11 Nécessite un test préliminaire normalement réalisé dans la conf
12 """
13
14 from zephir.monitor.agentmanager.agent import Agent
15 from zephir.monitor.agentmanager.data import HTMLData, TableData
16 from zephir.monitor.agentmanager import status
17 from twisted.internet.utils import getProcessOutput
18
20 - def __init__(self, name, monitor, **params):
21 Agent.__init__(self, name, **params)
22
23 self.monitor = monitor
24 self.status = status.OK()
25 self.table = TableData([
26 ('label', '', {'align':'center'}, None),
27 ('value', 'Valeur', {'align':'center'}, None)
28 ])
29 title = HTMLData("<h3>Surveillance de l'onduleur : <i>%s</i></h3>"%self.monitor)
30 self.data = [title, self.table]
31
33 self.status = status.OK()
34
35 res = getProcessOutput('/bin/upsc',
36 args = [self.monitor],
37 env = {'LC_ALL': 'C'})
38 res.addCallback(self.measure_process)
39 res.addErrback(self.error)
40 return res
41
43 l = []
44 for line in result.splitlines():
45 data = line.split(':')
46 if data[0].strip() == 'ups.status':
47 ups_status = data[1].strip()
48 if data[0].strip() == 'battery.charge':
49 if float(data[1].strip()) > 100:
50
51 data[1] = str(float(data[1])/10)
52 ups_charge = data[1].strip()
53 l.append({'label':data[0], 'value':data[1]})
54
55 if ups_status != 'OL':
56 if float(ups_charge) < 20:
57 self.status = status.Error("Charge batterie Faible")
58 else:
59 self.status = status.Warn("Fonctionnement sur batterie")
60 return { 'statistics' : l}
61
63 self.status = status.Error()
64 return { 'statistics' : [{'label':'Erreur', 'value':"""Echec de la connexion à l'onduleur"""}]}
65
67 Agent.write_data(self)
68 if self.last_measure is not None:
69 self.table.table_data = self.last_measure.value['statistics']
70
73