• Aucun résultat trouvé

6 Personnalisation du serveur à l'aide de Creole

6.3. Les dictionnaires Creole

6.3.4. Contraintes

Variables, familles et séparateurs

<variables>

  <family name='general'>

     <variable   name='numero_etab'   type='string'   description="Identifiant  de l'établissement (exemple UAI)" />

     <variable   name='libelle_etab'   type='string'   description="Nom   de  l'établissement" />

     <variable   name='activer_log_distant'   type='oui/non'  description="Gestion des logs centralisés" >

     <separator   name='numero_etab' 

never_hidden='True'>Etablissement</separator>

  </separators>

</variables>

6.3.4.Contraintes

Des fonctions (contraintes) peuvent être utilisée pour grouper/tester/remplir/conditionner des variables.

L'ensemble des contraintes d'un dictionnaire se place à l'intérieur d'un nœud XML

<constraints></constraints>.

Lien entre variables : <group>

Il est possible de lier des variables sous la forme d'une relation maître-esclave(s).

La variable maître doit obligatoirement être multi-valuée (multi='True').

Elle se définit dans l'attribut master.

Les variables esclaves sont définies entre les balises <slave>.

Les variables esclaves deviennent automatiquement multi-valuées.

A

Renseigne automatiquement (par le calcul) une valeur par défaut à une variable.

Remarque

Les fonctions utilisées doivent être définies dans le fichier eosfunc.py ou ajoutées dans les fonctions personnalisées (voir ci-dessous).

Contrairement aux variables "auto", le calcul des valeurs n'est réalisé que la première fois.

Une fois les valeurs enregistrées, elles ne sont plus modifiées.

Dans certains cas (exemple : changement de d'adresse IP), il est nécessaire d'aller modifier plusieurs valeurs "à la main".

Calcul automatique non modifiable : <auto>

Renseigne automatiquement (par le calcul) la valeur d'une variable.

Cette valeur ne peut pas être modifiée par l'utilisateur à la différence des fonctions de calcul automatique (peut être utile pour calculer l'IP d'un serveur en DHCP).

A

Remarque

Les fonctions utilisées doivent être définies dans le fichier eosfunc.py ou ajoutées dans les fonctions personnalisées (voir ci-dessous).

Validation et/ou liste de choix : <check>

La valeur renseignée pour une variable est validée par une fonction.

Les principales fonctions utilisées sont :

valid_enum : la valeur doit être choisie dans la liste proposée ;

valid_entier : la valeur est un nombre entier ;

valid_regexp : la valeur doit être conforme à une expression régulière ;

valid_differ : la valeur doit être différente d'une valeur donnée ;

obligatoire : la valeur ne peut pas être vide (ce test progressivement abandonné au profit de l'attribut de variable : mandatory) ;

Validation d'un nombre entier

<check name='valid_entier' target='nombre'>

  <param name='min'>0</param>

  <param name='max'>50</param>

</check>

La valeur doit être un entier compris entre 0 et 50.

A

Liste de choix ouverte

<check name="valid_enum" target="lettre">

    <param>['a','b','c']</param>

    <param name="checkval">False</param>

</check>

Les choix proposés à l'utilisateur sont a, b ou c mais la ligne <param  name="checkval">False</param> va l'autoriser à renseigner la valeur de son choix (ex : si il renseigne la valeur d, cela ne provoquera pas d'erreur).

Contrainte entre variables : <condition>

Les conditions permettent cacher, activer un template et/ou activer un service suite à un ensemble de conditions définies dans une fonction.

Il n'est pas possible de tester plusieurs variables dans une condition.

Ceci peut être contourné en ajoutant une variable automatique intermédiaire sur laquelle on applique la fonction calc_multi_condition.

Description des fonctions

A

Les contraintes fill, auto, check et condition permettent d'appeler une ou des fonction(s) de la librairie eosfunc.py.

Elles sont construites de la manière suivante :

● l'attribut name de la contraintes correspond au nom de la fonction (dans eosfunc.py) ;

● l'attribut target correspond à la variable concernée par la contrainte ;

● l'attribut param correspond aux paramètres passés à la fonction.

Attributs de la balise <param>

Si elle n'a pas d'attribut name, il s'agit d'un paramètre positionnel ; Si elle possède un attribut name, il s'agit d'un paramètre nommé.

Si il y a un attribut type :

eole : le paramètre est la valeur d'une variable du dictionnaire.

Si il y a un attribut optional='True' : ce paramètre est ignoré si la variable n'existe pas ;

container : le paramètre est le dictionnaire décrivant le conteneur indiqué ;

python : le paramètre est le retour du code python indiqué ;

● l'attribut optional='True' : indique que le paramètre sera ignoré si une exception se produit à l'évaluation ;

● l'attribut hidden='False' : indique que le paramètre sera ignoré si la variable cible est cachée.

Remarque

L'usage de l'attribut optional est réservé aux fonctions de type condition

Si une variable référencée par un paramètre n'existe pas et que optional='True' n'est pas positionné, Creole renvoie une erreur au chargement du dictionnaire.

Dans le cas d'un paramètre de type python, il est possible d'accéder aux fonctions du module eosfunc de Creole (eosfunc.<nom_fontion>).

Il faut également penser que lors de la saisie de configuration sur Zéphir, ce code sera exécuté sur le serveur Zéphir.

Ajout de fonctions personnalisées

Il est possible d'ajouter des librairies de fonctions personnalisées dans le répertoire /usr/share/creole/funcs.

Les librairies doivent posséder l'extension .py et contenir des fonctions python.

A

Exemple

Si vous devez importez des librairies python dans un fichier de fonctions personnalisées, ne les importez pas en début de fichier. Les imports doivent être faits dans la fonction de calcul elle-même.

Il est possible d'afficher de l'aide dans l'interface (affichée au survol du libellé de la variable).

L'ensemble des aides d'un dictionnaire est dans la balise <help>.

Documents relatifs