zephir.monitor.agent.agent

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

# Source Code for Module zephir.monitor.agent.agent

      1  # -*- coding: UTF-8 -*-
      2
      3  """
      4  Classe parente d'un agent python
      5  """
      6
      7  import time, os
      8  from zephir.monitor.utils import createfile
      9  from zephir.monitor.config import Config
     10
     11
     12 -class Agent:
     13 -    def __init__(self):
     14          """
     15          - append_mode : 0 par défaut mode écrasement (pas d'ajout à la suite par le scheduler)
     16          - xml_filename : sortie xml
     17          - hml_filename : sortie html
     18          - satus : etat de l'agent (up|down)
     19          """
     20          cfg = Config()
     21          self.append_mode = 0
     22          self.date = time.strftime("%d/%m/%Y", time.localtime())
     23          self.xml_filename = cfg.get_xml_name(self.name)
     24          self.html_filename = cfg.get_html_name(self.name)
     25          self.status = "1"
     26          self.contenu_xml=""
     27          self.contenu_html=""
     28
     29      # template de la sortie XML
     30      XML = """
     31  <agent nom="%s" date="%s" description="%s" status="%s">
     32  %s
     33  </agent>
     34  """
     35
     36      # template de la sortie HTML
     37      HTML = """
     38  <div class="titlediv">
     39  <h1 class="newstitle">
     40  %s
     41  </h1>
     42  <a name="%s"/>
     43  </div>
     44  <div class="bodydiv">
     45  %s
     46  </div>
     47  """
     48
     49 -    def first_time(self):
     50          """Permet un comportement différent de write_xml
     51          suivant la valeur du mode ajout
     52          """
     53          if os.path.isfile(self.xml_filename):
     54              return False
     55          else:
     56              return True
     57
     58 -    def set_status(self, status):
     59          """Fixe l'état de l'agent (up ou down)
     60          """
     61          if status == "1" or status == "0":
     62              self.status = status
     63          else :
     64              raise Exception, "statut errone"
     65
     66 -    def write_xml(self):
     67          """Ecriture du xml dans un fichier
     68          """
     69          test_first = False
     70
     71          if self.first_time():
     72              test_first = True
     73
     74          if not self.append_mode:
     75              fh = open(self.xml_filename, "w")
     76          else:
     77              fh = open(self.xml_filename, "a")
     78
     79          if test_first or not self.append_mode:
     80              fh.write("""<?xml version="1.0" encoding="%s"?>\n""" % config.charset)
     81
     82          fh.write( self.XML % (self.name,self.date,self.description,self.status,self.contenu_xml) )
     83          fh.close()
     84
     85 -    def write_html(self):
     86          """Ecriture du html dans un fichier
     87          """
     88          createfile( self.html_filename, self.HTML % (self.description,self.name,self.contenu_html) )
     89
     90 -    def __str__(self):
     91          return """<Agent : %s>""" % self.name
     92
     93
     94 -class MicroAgent:
     95 -    def __init__(self):
     96          """
     97          - satus : etat du micro-agent (up|down)
     98          """
     99          self.status = "1"
    100          self.contenu_xml=""
    101          self.contenu_html=""
    102
    103 -    def set_status(self, status):
    104          """Fixe l'état de l'agent (up ou down)
    105          """
    106          if status == "1" or status == "0":
    107              self.status = status
    108          else :
    109              raise Exception, "statut errone"
    110
    111 -    def _status_to_diode(self):
    112          """Retourne la balise image en fonction de l'état
    113          """
    114          if self.status=="1" :
    115              image="./images/b_vert.png"
    116          else:
    117              image="./images/b_rouge.png"
    118          return "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src=\""+image+"\">"
    119
    120 -    def dump_xml(self):
    121          """sortie en xml
    122          """
    123          XML_DATA = """<variable name="%s" value="%s"/>"""
    124          self.contenu_xml=XML_DATA % (self.name, self.status)
    125
    126 -    def dump_html(self):
    127          """sortie en html
    128          """
    129          HTML_DATA = """<tr><td>%s&nbsp;</td><td>%s</td></tr>"""
    130          self.contenu_html=HTML_DATA % (self.description, self._status_to_diode())
    131
    132  if __name__ == "__main__":
    133      pass
    134