presentation tiramisu
This commit is contained in:
parent
2b8d1c1c70
commit
e6de4dd459
4 changed files with 46 additions and 89 deletions
|
@ -1,3 +1,20 @@
|
||||||
|
\begin{frame}
|
||||||
|
\frametitle{Comparaison entre le noyau de Créole et Tiramisu}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \emph{Tiramisu} a pour objectif de
|
||||||
|
\begin{itemize}
|
||||||
|
\item remplacer le noyau \emph{Creole} (\texttt{EoleDict}) de manière transparente ;
|
||||||
|
\item résoudre les problèmes inhérents à \texttt{CreoleServ} ;
|
||||||
|
\end{itemize}
|
||||||
|
\item au niveau du code, il y a enfin une vraie séparation du c\oe ur et du fonctionnel ;
|
||||||
|
\item valide le type \emph{et la structure}, l'ajout de types est aisé.
|
||||||
|
\item \emph{Creole} : \texttt{EoleDict, EoleVars} $ \Leftrightarrow $ \texttt{Config, Option}\\
|
||||||
|
cf \texttt{tiramisu/doc/build/pydoc/index.html}
|
||||||
|
\item intégré à \texttt{gen\_config}, \texttt{cheetah}, \texttt{DTD Creole}, syntaxe \texttt{Creole} \dots
|
||||||
|
\item \texttt{eole-report/D02CoherenceVariables.pdf}
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\frametitle{Gestionnaire de configuration existants}
|
\frametitle{Gestionnaire de configuration existants}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
@ -8,27 +25,9 @@
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\frametitle{Comparaison entre le noyau de Créole et Tiramisu}
|
\frametitle{Un "vrai" serveur de config}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \emph{Creole} : \texttt{EoleDict, EoleVars} $ \Leftrightarrow $ \texttt{Config, Option} \\
|
\item un serveur de données de configuration ;
|
||||||
cf \texttt{tiramisu/doc/build/pydoc/index.html}
|
|
||||||
\item \emph{Creole} : \texttt{cfgparser.py + typeeole.py} $ \Rightarrow 2500 $ lignes ;
|
|
||||||
\item \emph{Tiramisu} : \texttt{config.py + option.py} $ \Rightarrow 800 $ lignes ;
|
|
||||||
\item Et en plus :
|
|
||||||
\begin{itemize}
|
|
||||||
\item compatible \texttt{gen\_config}, \texttt{cheetah}, \texttt{templates} \dots
|
|
||||||
\item \emph{Tiramisu} valide le type \emph{et} la structure, et l'ajout de types est aisé.
|
|
||||||
\item remplace le noyau \emph{Creole} $ \Rightarrow $ \texttt{doc/build/config.html}
|
|
||||||
\item et \texttt{creole serv} (cf diapo suivante)
|
|
||||||
\end{itemize}
|
|
||||||
\item \texttt{eole-report/D02CoherenceVariables.pdf}
|
|
||||||
\end{itemize}
|
|
||||||
\end{frame}
|
|
||||||
|
|
||||||
\begin{frame}
|
|
||||||
\frametitle{Un vrai serveur de config}
|
|
||||||
\begin{itemize}
|
|
||||||
\item serveur de données de configuration ;
|
|
||||||
\item $1^{ere}$ méthode : exportation (snapshot) d'un état de la config $ \Rightarrow $ Créole ;
|
\item $1^{ere}$ méthode : exportation (snapshot) d'un état de la config $ \Rightarrow $ Créole ;
|
||||||
\item $2^{eme}$ méthode : JIT (just in time) calculation, une modification
|
\item $2^{eme}$ méthode : JIT (just in time) calculation, une modification
|
||||||
de l'état de la configuration est possible \emph{pendant} la manipulation et l'utilisation de la conf $ \Rightarrow $ Tiramisu.
|
de l'état de la configuration est possible \emph{pendant} la manipulation et l'utilisation de la conf $ \Rightarrow $ Tiramisu.
|
||||||
|
@ -39,7 +38,8 @@ de l'état de la configuration est possible \emph{pendant} la manipulation et l'
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\frametitle{Qu'est-ce qu'un gestionnaire de conf moderne ?}
|
\frametitle{Qu'est-ce qu'un gestionnaire de conf moderne ?}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item c'est un \emph{dictionnaire} de données ;
|
\item c'est une organisation arborescente des données (les données sont imbriquées) ;
|
||||||
|
\item c'est un accès facile aux données (typiquement une interface de type \emph{dictionnaire}) ;
|
||||||
\item clefs-valeurs, mais quelles valeurs exactement ? $ \Rightarrow $ calcul JIT (just in time) ;
|
\item clefs-valeurs, mais quelles valeurs exactement ? $ \Rightarrow $ calcul JIT (just in time) ;
|
||||||
\item \texttt{eole-report/D01AccesVariables.pdf}
|
\item \texttt{eole-report/D01AccesVariables.pdf}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
@ -48,12 +48,22 @@ de l'état de la configuration est possible \emph{pendant} la manipulation et l'
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\frametitle{Définition d'un gestionnaire de configuration}
|
\frametitle{Définition d'un gestionnaire de configuration}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item les families, groups, master \dots~ ce sont des espaces de nommages ;
|
\item les families, groups, master \dots~ ce sont des \emph{schémas} de données (\texttt{OptionDescription}) ;
|
||||||
\item c'est la configuration qui est responsable de l'accès aux valeurs ;
|
\item c'est la configuration (\texttt{Config}) qui est responsable de l'accès aux valeurs ;
|
||||||
\item une configuration aisément manipulable ;
|
\item la configuration est aisément manipulable, et a un point d'entrée unique ;
|
||||||
\item un point d'entrée unique.
|
\item l'accès aux valeurs des \texttt{Options} de configuration ne peut se faire \emph{que} depuis la conf racine.
|
||||||
\item \texttt{eole-report/D01AccesVariables.pdf}
|
\item \texttt{eole-report/D01AccesVariables.pdf}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}
|
||||||
|
\frametitle{Organisation en espace de nommage}
|
||||||
|
\begin{itemize}
|
||||||
|
\item dans \emph{tiramisu} l'accent est mis sur l'organisation arborescente des données ;
|
||||||
|
\item la validation des options de configuration se fait par l'appartenance aux groupes (families, master/slaves \dots) ;
|
||||||
|
\item l'organisation en groupes est unifiée par l'espace de nommage ;
|
||||||
|
\item \texttt{eole-report/D03ReglesEtats.pdf}
|
||||||
|
\item lisibilité d'une config : \texttt{tiramisu/report/build/index.html} rapport html d'une config
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,12 @@
|
||||||
\begin{frame}
|
|
||||||
\frametitle{Organisation en espace de nommage}
|
|
||||||
\begin{itemize}
|
|
||||||
\item dans \emph{tiramisu} l'accent est mis sur l'organisation arborescente des données ;
|
|
||||||
\item la validation des options de configuration se fait par l'appartenance aux groupes (families, master/slaves \dots) ;
|
|
||||||
\item l'organisation en groupes est unifiée par l'espace de nommage ;
|
|
||||||
\item \texttt{eole-report/D03ReglesEtats.pdf}
|
|
||||||
\item lisibilité d'une config : \texttt{tiramisu/report/build/index.html} rapport html d'une config
|
|
||||||
\end{itemize}
|
|
||||||
\end{frame}
|
|
||||||
|
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\frametitle{Etats de la configuration}
|
\frametitle{Etats ("status") de la configuration}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item système d'états de la configuration par droits d'accès
|
\item système d'états de la configuration par \emph{droits d'accès} ;
|
||||||
\item \texttt{read write}, \texttt{read only};
|
\item \texttt{read write}, \texttt{read only} ;
|
||||||
\item correspond à \texttt{freeze}, \texttt{hidden}, \texttt{disabled} \dots ;
|
\item correspond à \texttt{freeze}, \texttt{hidden}, \texttt{disabled} \dots ;
|
||||||
\item \texttt{doc/status.html}
|
\item \texttt{doc/status.html} ;
|
||||||
\item \texttt{eole-report/D03ReglesEtats.pdf}
|
\item \texttt{eole-report/D03ReglesEtats.pdf} ;
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
@ -39,7 +29,7 @@ réalisable par les techniques de \emph{Model Checking} ;
|
||||||
\item soit on a besoin de ne connaître que l'ensemble des états, pas leurs liens $\Rightarrow$ espace d'états ;
|
\item soit on a besoin de ne connaître que l'ensemble des états, pas leurs liens $\Rightarrow$ espace d'états ;
|
||||||
\item soit on a besoin de connaître toutes les relations $\Rightarrow$ graphe d'accessibilité ;
|
\item soit on a besoin de connaître toutes les relations $\Rightarrow$ graphe d'accessibilité ;
|
||||||
\item la configuration est modélisable en une structure de \emph{Kripe} ;
|
\item la configuration est modélisable en une structure de \emph{Kripe} ;
|
||||||
\item déjà le parsing de la conf est facile \texttt{tiramisu/report/build/index.html}
|
\item déjà le parsing de la conf est facile, la preuve : \texttt{tiramisu/report/build/index.html}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
@ -47,9 +37,9 @@ réalisable par les techniques de \emph{Model Checking} ;
|
||||||
\frametitle{un peu de mathématiques (suite) CreoleLint}
|
\frametitle{un peu de mathématiques (suite) CreoleLint}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item exemple : $ P = 3 \wedge Q = 1 \triangleleft \langle P = 1 \hookleftarrow Q = 0 \rangle$
|
\item exemple : $ P = 3 \wedge Q = 1 \triangleleft \langle P = 1 \hookleftarrow Q = 0 \rangle$
|
||||||
\item la propriété dans aucun état on a $P = 3$ et $Q = 1$ est-elle vraie ?
|
\item la propriété \og dans aucun état on a $P = 3$ et $Q = 1$ \fg~ est-elle vraie ?
|
||||||
Pour vérifier cette propriété, on a besoin de connaître l'espace d'états ;
|
Pour vérifier cette propriété, on a besoin de connaître l'espace d'états ;
|
||||||
\item la propriété : chaque chemin débutant dans un état accessible $P=1$ passe par un état où $Q=3$ et $P=2$
|
\item la propriété \og chaque chemin débutant dans un état accessible $P=1$ passe par un état où $Q=3$ et $P=2$ \fg~
|
||||||
est-elle vraie ? Cela demande de connaître le graphe d'accessibilité ;
|
est-elle vraie ? Cela demande de connaître le graphe d'accessibilité ;
|
||||||
\item les structures de \emph{Kripe} sont des machines à états étiquetées par les valuations de toutes les variables propositionnelles ;
|
\item les structures de \emph{Kripe} sont des machines à états étiquetées par les valuations de toutes les variables propositionnelles ;
|
||||||
\item une compliation statique devient possible dans \emph{CreoleLint} \dots
|
\item une compliation statique devient possible dans \emph{CreoleLint} \dots
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
Tiramisu
|
|
||||||
==========
|
|
||||||
|
|
||||||
Gestionnaire de configuration existants
|
|
||||||
----------------------------------------
|
|
||||||
|
|
||||||
- Victor : serveur de conf, **mais** en somme les modifs sont faites
|
|
||||||
en live et on revient en arrière si la conf n'est pas cohérente
|
|
||||||
(un `parse_dico()` avec un `SCM` derrière)
|
|
||||||
|
|
||||||
- puppet, cfgengine
|
|
||||||
|
|
||||||
- il y a **tous** les concepts de base de Créole, ce qui ne veut pas dire
|
|
||||||
que tout ce qu'on veut est implémenté (cf -> les variables automatiques)
|
|
||||||
|
|
||||||
|
|
||||||
Comparaison entre le noyau de Créole et Tiramisu
|
|
||||||
----------------------------------------------------
|
|
||||||
|
|
||||||
- Avec Créole il est compliqué d'ajouter un type à cause de la métaclasse ;
|
|
||||||
- Créole valide le type mais pas la structure (fait trop confiance au XML) ;
|
|
||||||
|
|
||||||
un peu de mathématique
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
- soit on a besoin de ne connaître que l'ensemble des états, par leurs liens
|
|
||||||
- soit on a besoin de connaître les relations
|
|
||||||
|
|
||||||
- il suffit de coder un générateur de machines à états pour pouvoir
|
|
||||||
- faire des prédictions sur les configuration possibles
|
|
||||||
|
|
||||||
------
|
|
||||||
|
|
||||||
documents de présentation
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
- `doc/build` : doc technique (et api epydoc)
|
|
||||||
- `doc/eole-report/presentation` : diaporama
|
|
||||||
- `doc/eole-report/eolreport` : diff pdf entre creole ~ tiramisu
|
|
||||||
- `tiramisu/report/` : rapport autmatique sur une config
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,10 +34,10 @@ These configuration statuses corresponds to specific global attributes :
|
||||||
To enable read only status, call :api:`config.Config.cfgimpl_read_only()`
|
To enable read only status, call :api:`config.Config.cfgimpl_read_only()`
|
||||||
|
|
||||||
.. csv-table:: **Configuration's statuses summary**
|
.. csv-table:: **Configuration's statuses summary**
|
||||||
:header: " ", "Hidden", "Disabled"
|
:header: " ", "Hidden", "Disabled", "Mandatory"
|
||||||
|
|
||||||
"read only status", `False`, `True`
|
"read only status", `False`, `True`, `True`
|
||||||
"read-write status", `True`, `False`
|
"read-write status", `True`, `False`, `False`
|
||||||
|
|
||||||
Freezing a configuration
|
Freezing a configuration
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
Loading…
Reference in a new issue