La plupart des échanges de fichiers entre zephir et les serveurs clients se fait au travers du protocole UUCP (Taylor-UUCP : Uucp ), encapsulé dans un tunnel SSH. Le principe est le suivant:
mise en attente d'une commande à exécuter sur le serveur client.
si il y a des fichier à transférer au serveur:
- création d'une archive contenant les fichiers à envoyer.
- calcul et stockage de la somme md5 de l'archive
préparation du transfert par uucp (le fichier est mis en file d'attente)
connexion UUCP du client (à intervalle régulier):
Les fichier en attente sont transférés automatiquement
Les commande en attente sont exécutées sur le client:
- si le transfert est de zephir vers le serveur (ex. configuration du serveur): la commande vérifie la somme md5 auprès de zephir à travers appel xmlrpc, décompresse l'archive, et met en place les fichiers sur le serveur
- si le transfert est du serveur vers zephir (ex. sauvegarde de la configuration): elle va créer une archive des données à transférer et calculer sa somme md5. Puis elle va lancer immédiatement une nouvelle connexion UUCP vers zephir pour envoyer l'archive. Une fois le fichier transferé, le serveur apelle sur zephir une fonction XML-RPC en lui passant le résultat du md5. La fonction apellée va alors vérifier l'archive, la décompresser et la mettre en place (coté zephir).
Comme vu dans le paragraphe précédent, zephir peut demander l'exécution de commandes sur les serveurs.
les commandes actuellement disponibles sont les suivantes:
- configure (mise en place de la configuration du client)
- reconfigure (lance la reconfiguration du serveur)
- maj_auto (lance la procédure Maj-Auto)
- maj_client (met à jour zephir-client si une version plus récente est présente sur zephir)
- save_files (sauvegarde de la configuration du client sur zephir)
- call (lance la connexion UUCP à zephir avec remontée des statistiques)
- del_lock (permet de supprimer les verrous mis en place en cas d'échec d'une fonction zephir)
Note
les fonctions call et del_lock ne sont pas apellées par zephir. call est apellée par le script cron-zephir.sh, lancé toutes les 10 minutes par cron. del_lock peut être apellée manuellement par l'administrateur du serveur.
Les fonctions disponibles peuvent être définies de 2 façons différentes:
- comme une fonction python définie dans le fichier /usr/share/eole/zephir/zephir_client.py
- comme un script exécutable portant pour nom commande.zephir et situé dans /usr/share/eole/zephir
L'appel à ces fonctions se fait en demandant l'exécution par uucp du script zephir_client.
ex : mise en attente de la commande 'reconfigure' sur le serveur 1 (établissement 0210001A) depuis zephir
/usr/bin/uux2 -r '0210001A-1!zephir_client reconfigure'Note
une librairie python créant une interface sur UUCP a été développée sur zephir (voir le paragraphe outils divers du backend). Par exemple, l'appel précédent dans l'application zephir est fait ainsi:
from zephir.backend.uucp_utils import uucp_pool, UUCPError try: res = uucp_pool.add_cmd("0210001A-1","zephir_client reconfigure") except UUCPError,e: return 0, u("Erreur UUCP %s" % str(e))