1
2
3
4
5
6
7
8
9
10
11
12
13
14 import os
15
16 from twisted.persisted import dirdbm
17
18 from zephir.config import PATH_ZEPHIR
19 from zephir.monitor import xmlite
20
22 """Concerne les informations de type *tableau de bord* de tous les agents sur un serveur
23 """
25 self.id_serveur = id_serveur
26 xml_dir = PATH_ZEPHIR + 'sites/' + str(self.id_serveur) + "/xml/"
27 list_xml = os.listdir(xml_dir)
28 self.xml_name_list = []
29 for fic in list_xml:
30 if fic.endswith('.xml'):
31 self.xml_name_list .append(xml_dir+fic)
32
33
34 self.shelf = self._make_dirdbm()
35
36
37 self._serveur_pickle()
38
39
41 """Construis l'arborescence dirdbm pour le serveur
42 si elle n'existe pas encore
43 """
44 self.dirdbm_path = PATH_ZEPHIR + "sites/" + str(self.id_serveur) + "/dirdbm"
45 if os.path.isdir(self.dirdbm_path):
46 pass
47 else :
48 os.makedirs(self.dirdbm_path)
49
50 return dirdbm.Shelf(self.dirdbm_path)
51
52
54 """Récupère les attributs de la balise agent
55 """
56 l = xmlite.load(xml_name)
57
58 attrs = l[1][1]
59
60 return attrs['nom'], attrs['description'], attrs['status'], attrs['date']
61
63 """Récupère les informations de type tableau de bord pour un serveur
64 """
65 l = []
66 for xml_name in self.xml_name_list:
67 l.append(self.get_agent_info(xml_name))
68
69 return l
70
72 """Persistence d'un serveur dans une arborescence dirDBM
73 """
74 for l in self.get_serveur():
75 self.shelf[l[0]] = (l[1], l[2], l[3])
76
77
79 """Statut d'un serveur et récupération des informations
80 # FIXME
81 """
87
89 """Les informations pour le tableau de bord
90 """
91 d = {}
92 for agent_name in self.shelf.keys():
93 d[agent_name] = self.shelf[agent_name]
94
95 return d
96
98 """Un statut pour le serveur dans son ensemble
99 """
100 for l in self.data.values():
101 if int(l[1]) == 0:
102 return 0
103 return 1
104
106 """etat d'un agent particulier
107 """
108 return self.data
109
110
111 if __name__ == "__main__":
112
113
114 pass
115