110 lines
2.3 KiB
Text
110 lines
2.3 KiB
Text
|
.. default-role:: literal
|
||
|
|
||
|
.. include:: inc/preambule.txt
|
||
|
|
||
|
Cohérence des valeurs des variables
|
||
|
====================================
|
||
|
|
||
|
type des variables
|
||
|
-------------------
|
||
|
|
||
|
**Créole**
|
||
|
|
||
|
pas d'unicité du type abstrait : `Multivar`, `CreoleVar` et `TypedVar`
|
||
|
|
||
|
- `String`
|
||
|
- `Ip`
|
||
|
- `Netmask`
|
||
|
- `Number`
|
||
|
- `Boolean`
|
||
|
- `OuiNon`
|
||
|
|
||
|
**tiramisu**
|
||
|
|
||
|
unicité du type abstrait : `Option()`
|
||
|
|
||
|
pas de nouveau type multivalué, mais un attribut des types existants::
|
||
|
|
||
|
>>> from option import BoolOption
|
||
|
>>> boolopt = BoolOption('bool', 'description de bool', multi=True)
|
||
|
|
||
|
tous les types Créole, plus
|
||
|
|
||
|
- `SymlinkOption`
|
||
|
- `CheckOption` qui permet de définir les "oui/non", "On/Off"
|
||
|
|
||
|
Validations suivant l'organisation en familles
|
||
|
-----------------------------------------------
|
||
|
|
||
|
**Créole**
|
||
|
|
||
|
**Organisation par accumulation de références sur des dictionnaires (`EoleDict`)**
|
||
|
|
||
|
On peut charger un EoleDict avec des variables qui pointent vers des families
|
||
|
qui n'existent pas, aucune validation n'est faite (confiance absolument faite au
|
||
|
moment du chargemzent du XML)
|
||
|
|
||
|
exemple, dans l'espace de nommage racine::
|
||
|
|
||
|
<variables>
|
||
|
<variable name="adresse_ip_eth0">
|
||
|
|
||
|
|
||
|
::
|
||
|
|
||
|
from creole.parsedico import parse_dico
|
||
|
flatdict = parse_dico(eoldict)
|
||
|
dico['adresse_ip_eth0']
|
||
|
KeyError: 'adresse_ip_eth0'
|
||
|
|
||
|
**Tiramisu**
|
||
|
|
||
|
**Organisation par arborescence.**
|
||
|
|
||
|
Un espace de nommage doit systématiquement être défini, la variable n'est
|
||
|
accessible **que** par un path.
|
||
|
|
||
|
|
||
|
Variables présentes deux fois
|
||
|
-------------------------------
|
||
|
|
||
|
- Créole : pas de validation possible
|
||
|
- tiramisu : comportement règlable (on autorise l'unicité ou pas)
|
||
|
|
||
|
- dans Créole les valeurs sont **fausses** (c'est la dernière variable qui qui gagne)
|
||
|
|
||
|
Il faut faire confiance au XML
|
||
|
|
||
|
::
|
||
|
|
||
|
<family name="general">
|
||
|
<variable name="adresse_ip_eth0">
|
||
|
<valeur>toto
|
||
|
|
||
|
|
||
|
<family name="services">
|
||
|
<variable name="adresse_ip_eth0">
|
||
|
<valeur>tutu
|
||
|
|
||
|
|
||
|
dans `gen_config` la valeur retenue est::
|
||
|
|
||
|
general/adresse_ip_eth0 -> tutu
|
||
|
services/adresse_ip_eth0 -> tutu
|
||
|
|
||
|
dans `parsedico`, la variable est écrasée::
|
||
|
|
||
|
>>> from creole.parsedico import parse_dico
|
||
|
>>> d = parse_dico()
|
||
|
>>> d['adresse_ip_eth0']
|
||
|
tutu
|
||
|
|
||
|
dans tiramisu::
|
||
|
|
||
|
>>> config.general.adresse_ip_eth0
|
||
|
toto
|
||
|
>>> config.services.adresse_ip_eth0
|
||
|
tutu
|
||
|
|
||
|
|