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

Source Code for Module zephir.monitor.lanceur

  1  #!/usr/bin/env python 
  2  # -*- coding: UTF-8 -*- 
  3  ########################################################################### 
  4  # Eole NG - 2007   
  5  # Copyright Pole de Competence Eole  (Ministere Education - Academie Dijon) 
  6  # Licence CeCill  cf /root/LicenceEole.txt 
  7  # eole@ac-dijon.fr  
  8  #   
  9  # lanceur.py 
 10  #   
 11  # chargement et lancement des agents zephir (deprecated) 
 12  #        
 13  ########################################################################### 
 14  import os,random 
 15  from twisted.internet import utils, reactor 
 16   
 17  from zephir.monitor.config import Config 
 18   
 19  from zephir.monitor import website 
 20  try: 
 21      import zephir.zephir_conf.zephir_conf as conf_zeph 
 22      from zephir.lib_zephir import zephir_proxy, convert 
 23  except: 
 24      # serveur non enregistré sur zephir 
 25      pass 
 26   
27 -class Agent:
28 """Appelle un agent 29 """
30 - def __init__(self, name, delay):
31 self.name = name 32 self.xml_filename = Config().get_xml_name(self.name) 33 self.delay = delay 34 # activation de l'agent 35 self._run_agent()
36
37 - def _run_agent(self):
38 try: 39 adresse_zephir = conf_zeph.adresse_zephir 40 except: 41 # serveur non enregistré sur zephir 42 pass 43 else: 44 retour=os.system(Config().get_agent_script(self.name)) 45 46 reactor.callLater(self.delay, self._run_agent)
47
48 - def change_delay(self, delay):
49 """Modifie en live le nouveau délai 50 """ 51 self.delay = delay
52
53 -class Lanceur:
54 """Récupère la liste des agents et Créée les objets agent correspondant 55 """
56 - def __init__(self):
57 fh = open('/etc/eole/version','r') 58 version = fh.read() 59 fh.close() 60 # on garde seulement le nom du module 61 module = version[:version.index('-')] 62 # on utilise le fichier correspondant au module 63 os.system('cd %s;cp %s.cfg agents.cfg' % ('/usr/share/zephir/monitor',module)) 64 self.agent_list = Config().get_agent_list()
65
66 - def create(self):
67 """Création effective des instances d'agents 68 """ 69 for agent in self.agent_list: 70 Agent(agent, Config().get_agent_time(agent))
71
72 - def run_website(self):
73 """Lancement de la génération du site web 74 et envoi à zephir 75 """ 76 # lancement toutes les X minutes (défini dans la conf zephir) 77 conf_ok = 1 78 # timeout par défaut 79 timeout = 600 80 try: 81 reload(conf_zeph) 82 adresse_zephir = conf_zeph.adresse_zephir 83 # vérification sur zephir du délai de connexion 84 timeout = convert(zephir_proxy.serveurs.get_timeout(conf_zeph.id_serveur)[1]) 85 except: 86 conf_ok = 0 87 88 reactor.callLater(timeout, self.run_website) 89 if conf_ok == 1: 90 # creation du site 91 web = website.Site() 92 # création de l'archive pour uucp 93 web.send_zephir()
94 95 if __name__ == "__main__": 96 lance = Lanceur() 97 lance.create() 98 # on attend entre 1 et x minutes pour le premier lancement 99 # (x= delai demandé enrtre chaque connexion) 100 try: 101 timeout = convert(zephir_proxy.serveurs.get_timeout(conf_zeph.id_serveur)[1]) 102 except: 103 # timeout non enregistré 104 timeout = 600 105 delay = random.randrange(60,timeout) 106 reactor.callLater(delay, lance.run_website) 107 reactor.run() 108