af6f19f467cb931b2df4ba09e6d85e410cb288c4
[tiramisu.git] / doc / eole-report / eolreport / D01AccesVariables.txt
1 .. default-role:: literal
2
3 .. include:: inc/preambule.txt
4
5 Accès aux variables 
6 ====================
7
8 Protocole d'accès aux valeurs
9 -------------------------------
10
11 **Créole**
12
13 - Si la variable n'a pas été déclarée, une erreur est levée
14 - 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 `["",""]`,
15 - 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,
16 - 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.
17
18 **tiramisu**
19
20 - Si la variable n'a pas été déclarée, une erreur est levée
21 - 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`,
22 - 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,
23 - 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.
24
25 la différence tient au fait de la valeur nulle (`None`) qui a été mal définie 
26 dès le début dans `Créole`.
27
28 Accès Créole par "dictionnaire"
29 --------------------------------
30
31 La définition est dans le `XML`
32
33 ::
34
35     <family name="general">
36
37     <variable name="adresse_ip_eth0">
38
39 Le dictionnaire est chargé dans un `EoleDict()`
40
41 ::
42
43     from creole.cfgparser import EoleDict
44     eoldict = EoleDict(...)
45
46 Un export dans un dictionnaire est necessaire pour manipuler les données
47
48 ::
49
50     from creole.parsedico import parse_dico
51
52     flatdict = parse_dico(eoldict)
53
54     assert dico['ip'] == '10.10.1.11'
55
56
57 le resultat de l'accès aux données vient de `typeole.EoleVar('ip').get_value()`
58
59
60 Accès `tiramisu` par espace de nommage
61 ----------------------------------------
62
63
64 - espaces de nommages ;
65 - c'est la configuration qui est responsable de l'accès aux valeurs ;
66 - une configuration par accès direct (pas d'export) ;
67 - un point d'entrée unique aisément manipulable grâce aux espaces de nommage.
68
69 ::
70
71     from tiramisu.config import Config
72     from tiramisu.option import OptionDescription
73     subdescr = OptionDescription("creole", [IPOption('ip')])
74     descr = OptionDescription("creole", [subdescr])
75     config = Config(descr)
76     assert config.creole.general.ip == '10.10.1.11'
77
78 Les valeurs sont dépendantes **de la configuration** et donc la responsabilité 
79 des valeurs dépend de la configuration et pas de la variable elle-même.
80
81
82