83 lines
2.6 KiB
Plaintext
83 lines
2.6 KiB
Plaintext
|
.. default-role:: literal
|
||
|
|
||
|
.. include:: inc/preambule.txt
|
||
|
|
||
|
Accès aux variables
|
||
|
====================
|
||
|
|
||
|
Protocole d'accès aux valeurs
|
||
|
-------------------------------
|
||
|
|
||
|
**Créole**
|
||
|
|
||
|
- Si la variable n'a pas été déclarée, une erreur est levée
|
||
|
- Si la variable a été déclarée, mais qu'aucune valeur n'a été définie, (ni valeur affectée, ni valeur par défaut) la valeur retournée est `[]` ou `""` ou `[""]` ou `["",""]`,
|
||
|
- Si la variable a été déclarée et qu'une valeur par défaut a été définie, la valeur retournée et la valeur par défaut,
|
||
|
- Si la variable a été déclarée et qu'une valeur a été définie, la valeur retournée est la valeur de la variable.
|
||
|
|
||
|
**tiramisu**
|
||
|
|
||
|
- Si la variable n'a pas été déclarée, une erreur est levée
|
||
|
- Si la variable a été déclarée, mais qu'aucune valeur n'a été définie, (ni valeur affectée, ni valeur par défaut) la valeur retournée est `None`,
|
||
|
- Si la variable a été déclarée et qu'une valeur par défaut a été définie, la valeur retournée et la valeur par défaut,
|
||
|
- Si la variable a été déclarée et qu'une valeur a été définie, la valeur retournée est la valeur de la variable.
|
||
|
|
||
|
la différence tient au fait de la valeur nulle (`None`) qui a été mal définie
|
||
|
dès le début dans `Créole`.
|
||
|
|
||
|
Accès Créole par "dictionnaire"
|
||
|
--------------------------------
|
||
|
|
||
|
La définition est dans le `XML`
|
||
|
|
||
|
::
|
||
|
|
||
|
<family name="general">
|
||
|
|
||
|
<variable name="adresse_ip_eth0">
|
||
|
|
||
|
Le dictionnaire est chargé dans un `EoleDict()`
|
||
|
|
||
|
::
|
||
|
|
||
|
from creole.cfgparser import EoleDict
|
||
|
eoldict = EoleDict(...)
|
||
|
|
||
|
Un export dans un dictionnaire est necessaire pour manipuler les données
|
||
|
|
||
|
::
|
||
|
|
||
|
from creole.parsedico import parse_dico
|
||
|
|
||
|
flatdict = parse_dico(eoldict)
|
||
|
|
||
|
assert dico['ip'] == '10.10.1.11'
|
||
|
|
||
|
|
||
|
le resultat de l'accès aux données vient de `typeole.EoleVar('ip').get_value()`
|
||
|
|
||
|
|
||
|
Accès `tiramisu` par espace de nommage
|
||
|
----------------------------------------
|
||
|
|
||
|
|
||
|
- espaces de nommages ;
|
||
|
- c'est la configuration qui est responsable de l'accès aux valeurs ;
|
||
|
- une configuration par accès direct (pas d'export) ;
|
||
|
- un point d'entrée unique aisément manipulable grâce aux espaces de nommage.
|
||
|
|
||
|
::
|
||
|
|
||
|
from tiramisu.config import Config
|
||
|
from tiramisu.option import OptionDescription
|
||
|
subdescr = OptionDescription("creole", [IPOption('ip')])
|
||
|
descr = OptionDescription("creole", [subdescr])
|
||
|
config = Config(descr)
|
||
|
assert config.creole.general.ip == '10.10.1.11'
|
||
|
|
||
|
Les valeurs sont dépendantes **de la configuration** et donc la responsabilité
|
||
|
des valeurs dépend de la configuration et pas de la variable elle-même.
|
||
|
|
||
|
|
||
|
|