zephir.monitor.config

Package zephir :: Package monitor :: Module config |
[frames] | no frames]

# Source Code for Module zephir.monitor.config

      1  # -*- coding: UTF-8 -*-
      2  ###########################################################################
      3  # Eole NG - 2007
      4  # Copyright Pole de Competence Eole  (Ministere Education - Academie Dijon)
      5  # Licence CeCill  cf /root/LicenceEole.txt
      6  # eole@ac-dijon.fr
      7  #
      8  # config.py
      9  #
     10  # fichier de configuration pour les agents zephir (deprecated)
     11  #
     12  ###########################################################################
     13  """
     14  Lis le fichier de configuration des agents et en propose des accès adéquats
     15  """
     16  import os
     17
     18  PATH_ZEPHIR = "./toto"
     19
     20  from utils import readfile
     21
     22  import xmlite
     23
     24  ROOT_DIR = "."
     25
     26  XML_DIR = ROOT_DIR + os.sep + "xml"
     27
     28  HTML_DIR = ROOT_DIR + os.sep + "htm"
     29
     30  AGENT_DIR = ROOT_DIR + os.sep + "agent"
     31
     32  SITE_DIR = ROOT_DIR + os.sep + "site"
     33
     34  URL_DIR = "."
     35
     36 -class Config:
     37      """
     38      Extrait les données du fichier de config
     39      """
     40 -    def __init__(self, file= "agents.cfg"):
     41          self.file = file
     42          self.dict_agent = self._get_agents()
     43
     44 -    def _get_agents(self):
     45          """Récupère la liste des agents depuis un fichier
     46          { agent_name : (
     47          0 : script_name,
     48          1 : temps,
     49          2 : group,
     50          3 : group_description ) }
     51          """
     52          # récupération de la liste des agents
     53          d = {}
     54          fh = open(self.file,"r")
     55          l = fh.read().split("\n")
     56          fh.close()
     57          for ligne in l :
     58              if not (ligne.startswith("#")  or ligne == "\n" or ligne == "") :
     59                  agent, script, temps , group, title = ligne.split(";")
     60                  d[str(agent)] = (str(script), int(temps), str(group), str(title))
     61          return d
     62
     63 -    def get_agent_list(self):
     64          """Récupère la liste totale de tous les agents
     65          """
     66          return self.dict_agent.keys()
     67
     68 -    def get_agent_group(self, group):
     69          """Récupère la liste des agents d'un groupe
     70          """
     71          l = []
     72          for agent in self.dict_agent.keys():
     73              if self.dict_agent[agent][2] == group:
     74                  l.append(agent)
     75          return l
     76
     77 -    def get_agent_desc(self, agent):
     78          """Rapatrie l'attribut descripton de l'objet à partir du xml généré par l'agent.
     79          """
     80          xml_filename = self.get_xml_name(agent)
     81          # conversion du xml en liste
     82          l = xmlite.load(xml_filename)
     83          # dictionnaire des attributs de la balise agent
     84          attrs = l[1][1]
     85          return attrs['description']
     86
     87 -    def get_agent_script(self, agent_name):
     88          """Nom du script de l'agent
     89          """
     90          return AGENT_DIR + os.sep + self.dict_agent[agent_name][0]
     91
     92 -    def get_xml_name(self, agent_name):
     93          """Nom xml de l'agent
     94          """
     95          return XML_DIR + os.sep + agent_name + ".xml"
     96
     97 -    def get_html_name(self, name):
     98          """Nom long de la page html pour une sortie d'un agent
     99          """
    100          return HTML_DIR + os.sep + name + ".htm"
    101
    102 -    def get_html_site(self, group_name):
    103          """Nom long de la page html d'un groupe
    104          """
    105          return SITE_DIR + os.sep + group_name + ".htm"
    106
    107 -    def get_html_relative_name(self, group_name):
    108          """Nom court de la page html d'un groupe (pour les urls)
    109          """
    110          return URL_DIR + os.sep + group_name + ".htm"
    111
    112 -    def get_agent_time(self, agent_name):
    113          """Intervalle de shedule d'un agent
    114          """
    115          return self.dict_agent[agent_name][1]
    116
    117 -    def get_group_list(self):
    118          """Collecte les noms des groupes
    119          """
    120          agents = self.dict_agent
    121          # collecte les noms des groupes d'agents
    122          groups = []
    123          for agent in agents.keys():
    124              groups.append(agents[agent][2])
    125          # elimine les doublons dans la liste
    126          group_list = []
    127          for group in groups:
    128              if not group in group_list:
    129                  group_list.append(group)
    130          return group_list
    131
    132 -    def get_group_desc(self, group_name):
    133          """Récupère la description d'un groupe d'agents à partir du fichier cfg
    134          """
    135          agents = self.dict_agent
    136
    137          for agent in agents.keys():
    138              if agents[agent][2] == group_name:
    139                  return agents[agent][3]
    140
    141  # tests
    142
    143  if __name__ == "__main__" :
    144      cfg = Config()
    145  ##     print cfg.get_group_list()
    146      print cfg.get_agent_desc("mem")
    147  ##     print cfg.get_agent_group("systeme")
    148