1
2
3
4
5
6
7
8
9 """
10 Ressources implémentant les pages du site web de consultation des
11 agents.
12
13 Hiérarchie du site :
14
15 - C{./} : liste des clients (C{ZephirServerResource})
16
17 - C{./I{client}/} : liste des agents (C{ZephirClientResource})
18
19 - C{./I{client}/I{agent}/ : détails de l'agent (C{AgentResource})
20
21 - C{./I{client}/I{agent}/... : n'importe quel fichier dans le
22 C{public_data_dir} de l'agent
23 """
24
25 try: _
26 except NameError: _ = str
27
28 import os, dircache, socket
29 from twisted.web.resource import Resource
30 from twisted.web import error, server, static, util
31 from twisted.web.util import Redirect
32 from twisted.python import log
33
34 from Cheetah.Template import Template
35
36 from zephir.monitor.agentmanager import config as cfg
37 from zephir.monitor.agentmanager.agent import AgentData
38 from zephir.monitor.agentmanager.data import *
39 from zephir.monitor.agentmanager import agentdatamanager
40 from zephir.monitor.agentmanager.templates.AgentPageTmpl import AgentPageTmpl
41 from zephir.monitor.agentmanager.templates.ManagerPageTmpl import ManagerPageTmpl
42 from zephir.monitor.agentmanager.templates.ServerPageTmpl import ServerPageTmpl
43 from zephir.monitor.agentmanager.templates.FileDataTmpl import FileDataTmpl
44 from zephir.monitor.agentmanager.templates.RRDFileDataTmpl import RRDFileDataTmpl
45 from zephir.monitor.agentmanager.templates.ImgFileDataTmpl import ImgFileDataTmpl
46 from zephir.monitor.agentmanager.templates.HTMLDataTmpl import HTMLDataTmpl
47 from zephir.monitor.agentmanager.templates.MeasuresDataTmpl import MeasuresDataTmpl
48 from zephir.monitor.agentmanager.templates.TableDataTmpl import TableDataTmpl
49
50
51 if os.path.isfile('/etc/eole/version'):
52 mod_file = open('/etc/eole/version')
53 module = " (" + mod_file.read().split('\n')[0] + ")"
54 mod_file.close()
55 else:
56 module=""
57
58
60 """Liste de clients attachés à un serveur Zephir.
61
62 Présente la liste des répertoires de données remontés par les
63 clients.
64 """
65
70
71 - def getChild(self, client_name, request):
72 if client_name == "":
73 return self
74 elif self.manager.has_key(client_name):
75 return ZephirClientResource(self.config, self.manager[client_name], client_name)
76 else:
77 return Redirect('/sites/%s/site/' % client_name)
78
80 t = ServerPageTmpl()
81 t.static_base = self.config['static_base_url']
82 t.clients = self.manager.keys()
83 return str(t)
84
85
87 """Liste des agents d'un client Zephir."""
88
89 - def __init__(self, config, manager, client_name):
95
96 - def getChild(self, agent_name, request):
97 if agent_name == "":
98 return self
99 elif self.manager.has_key(agent_name):
100 return AgentResource(self.config, self.manager, agent_name, self.client_name)
101 else:
102 return error.NoResource(_("No such agent"))
103
105 t = ManagerPageTmpl()
106 t.static_base = self.config['static_base_url']
107 t.host = self.client_name
108 t.show_clients = self.show_clients
109 if module.startswith(" (zephir") and str(self.client_name) != '0':
110
111 t.description = "Zephir - serveur %s" % self.client_name
112 else:
113
114
115 t.description = socket.gethostname().capitalize() + module
116
117 t.manager = self.manager
118 return str(t)
119
120
122 """Présentation des données mesurées par un agent."""
123
124 - def __init__(self, config, agent_manager, agent_name, client_name):
131
133 agent = self.agent_manager[self.agent_name]
134 path = os.path.join(cfg.agent_data_dir(self.config, self.agent_manager.client_name, self.agent_name),
135 name)
136 if name == "":
137 return self
138 else:
139 return static.File(path)
140
141
142
166
167
168
169 DATA_TO_TEMPLATE_MAPPING = {
170 FileData: FileDataTmpl,
171 RRDFileData: RRDFileDataTmpl,
172 ImgFileData: ImgFileDataTmpl,
173 HTMLData: HTMLDataTmpl,
174 MeasuresData: MeasuresDataTmpl,
175 TableData: TableDataTmpl,
176 }
177
182
183
184
185
186
187
188
189
190