1
2
3 from zephir.monitor.agentmanager.agent import Agent
4 from zephir.monitor.agentmanager.data import TableData, HTMLData
5 from zephir.monitor.agentmanager.util import status_to_img
6 from zephir.monitor.agentmanager import status
7 from zephir.monitor.agentmanager.util import log
8 from pyeole.debsums import EoleDebsumsReport
9 from pyeole.debsums import NoEoleDebsumsReportError
10 from pyeole.debsums import EoleDebsumsReportParseError
11
12 import os
13
14 REPORT_FILE = '/var/log/eole-debsums/report.log'
15 LXC_ROOTDIR = '/opt/lxc'
16
18 - def __init__(self, name, agents, **params):
19 Agent.__init__(self, name, **params)
20
21 self.agents = agents
22
23 try:
24
25 from zephir.zephir_conf.zephir_conf import id_serveur
26 self.id_serveur = id_serveur
27 except:
28
29 self.id_serveur = 0
30
31 self.status = status.OK()
32
33 self.table = TableData([
34 ('container', 'Conteneur', {'align':'center'}, None),
35 ('status', 'État', {'align':'center'}, status_to_img),
36 ('files', 'Nombre de fichiers modifiés', {'align':'center'}, None),
37 ])
38 title = HTMLData("<h3>Surveillance des sommes MD5 des paquets :</h3>")
39 self.data = [ title, self.table ]
40
48
50 Agent.write_data(self)
51 if self.last_measure is not None:
52 self.table.table_data = self.last_measure.value[self.name]
53
55 """Renvoi le status courant s’il est définie ou status.Unknown()"""
56 if self.last_measure is not None:
57 return status.OK()
58 else:
59 log.msg("{0} : pas de dernière mesure disponible.".format(self.name))
60 return status.Unknown()
61
72
75
76
78 - def __init__(self, name, container, **params):
79 Agent.__init__(self, name, **params)
80 self.container = container
81 if container == 'root':
82 self.report_file = REPORT_FILE
83 else:
84
85 self.report_file = os.path.join(LXC_ROOTDIR, container, 'rootfs' + REPORT_FILE)
86
87 self.status = status.Unknown()
88
89 self.table = TableData([
90 ('package', 'Paquet', {'align':'left'}, None),
91 ('file', 'Fichier', {'align':'left'}, None),
92 ])
93 title = HTMLData("<h3>Surveillance des MD5 des paquets :</h3>")
94
95 self.data = [ title, self.table ]
96
98 measure=[]
99 self.status = status.OK()
100 try:
101 report = EoleDebsumsReport(filename=self.report_file)
102 for pkg in report:
103 for filename in report[pkg]:
104 measure.append({'package': pkg, 'file': filename})
105 except NoEoleDebsumsReportError, e:
106 self.status = status.Unknown()
107 except EoleDebsumsReportParseError, e:
108 log.msg("{0}: {1}".format(self.name, e))
109
110
111
112
113
114
115
116 return {self.name : measure}
117
119 Agent.write_data(self)
120 if self.last_measure is not None:
121 self.table.table_data = self.last_measure.value[self.name]
122
124 """Renvoi le status courant s’il est définie ou status.Unknown()"""
125 if self.last_measure is not None:
126 return self.status
127 else:
128 log.msg("%s : pas de dernière mesure disponible." % self.name)
129 return status.Unknown()
130