.. 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:: :: 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 :: toto 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