[Dev OpenGP] [95] Report and bugged figure.

[ Thread Index | Date Index | More opengp.tuxfamily.org/development Archives ]


Revision: 95
Author:   alband85
Date:     2009-03-25 18:44:35 +0100 (Wed, 25 Mar 2009)

Log Message:
-----------
Report and bugged figure.

Modified Paths:
--------------
    externals/Com/Rapport/figures/uml/class.mp
    externals/Com/Rapport/tex/rapport.tex


Modified: externals/Com/Rapport/figures/uml/class.mp
===================================================================
--- externals/Com/Rapport/figures/uml/class.mp	2009-03-25 17:10:31 UTC (rev 94)
+++ externals/Com/Rapport/figures/uml/class.mp	2009-03-25 17:44:35 UTC (rev 95)
@@ -2,83 +2,158 @@
 
 beginfig(1);
 	iClass.foreColor := (1, 1, 1);
-  
-  Class.Plugin("Plugin")
-  	("-__metaclass__")
-  	("-__init__(dn:string)",
-  	 "+static getPluginFromName(plugin:string)",
-  	 "+getName()",
-  	 "+installConf()",
-  	 "+help(cmd)",
-  	 "+runCommand(argv:string[])",
-  	 "+update()",
-  	 "+cancel()",
-  	 "+pullFile(file:string, fullTree:bool)",
-  	 "+pushFile(file:string, content:string)"
-  	);
   	
   	Class.OgpCore("OgpCore")
-  		("-instance:OgpCore")
   		(
+			"-instance:OgpCore"
+		)
+  		(
   			"+getInstance():OgpCore",
-  			"-OgpCore( uri, [dn:string], [passwd:string], [certs:string[]]):OgpCore",
-  			"+createOU(dn:string, [description:string])",
-  			"+deleteDN(dn:string)",
-  			"-add(dn:string, attrs:string[][])",
-  			"-delete(dn:string)",
-  			"+createMachine(dn:string, others:string[][])",
-  			"+merge(parent:string, child:string)",
-  			"+xml2conf(xml:string, xslt:string)",
-  			"+pullPluginConf(dn:string, pluginName:string, [fullTree:bool])",
-  			"+pushPluginConf(dn:string, conf:string)"
+  			"-OgpCore(uri, [dn:str], [passwd:str], [certs:str[]]):OgpCore",
+  			"+createOU(dn:str, [description:str], [others:dict]):None",
+			"+createMachine(dn:str, passwd:str, [description:str], [others:dict]):None",
+  			"+deleteDN(dn:str, [fullTree:bool]):None",
+			"+pullAttributes(dn:str, attrs:list):dict",
+			"+pushDescription(dn:str,description:str):None",
+			"+pushPasswd(dn:str,passwd:str):None",
+			"+pullPluginConf(dn:str,pluginName:str,[fullTree:bool]):OgpElement",
+			"+pushPluginConf(dn:str,pluginConf:OgpElement):None",
+			"+pullSOAs(dn:str):dict",
+			"+getRequiredPlugins(dn:str):list",
+  			"-add(dn:str, attrs:list[list]):None",
+			"-modify(dn:str,mods:list[tuple]):None",
+  			"-delete(dn:str):None",
+			"-pullConf(dn:str):None",
+			"-pullSOA(dn:str):None"
   		);
   		
   	Class.OgpLDAPConsts("OgpLDAPConsts")
 		(
-			"OBJECTCLASS_OU:string",
-			"OBJECTCLASS_MACHINE:string",
-			"ATTR_DESCRIPTION:string",
-			"ATTR_CONFIG:string",
-			"ATTR_SAMACCOUNTNAME:string",
-			"ATTR_OBJECTSID:string",
-			"ATTR_OGPSOA:string",
-			"ATTR_MACHINECERTIFICATE:string",
-			"VALUE_CONFIG:string",
-			"VALUE_SAMACCOUNTNAME:string",
-			"VALUE_OBJECTSID:string",
-			"VALUE_OGPSOA:string"
+			"OBJECTCLASS_OU:str",
+			"OBJECTCLASS_MACHINE:str",
+			"ATTR_DESCRIPTION:str",
+			"ATTR_CONFIG:str",
+			"ATTR_SAMACCOUNTNAME:str",
+			"ATTR_OBJECTSID:str",
+			"ATTR_OGPSOA:str",
+			"ATTR_MACHINECERTIFICATE:str",
+			"ATTR_USERPASSWORD:str",
+			"VALUE_CONFIG:str",
+			"VALUE_SAMACCOUNTNAME:str",
+			"VALUE_OBJECTSID:str",
+			"VALUE_OGPSOA:str"
 		)
 		();
 
 	Class.OgpElement("OgpElement (Element)")
 		()
-		(
-			"-setattr(item:string, value:string):void",
+		(	
+			"-getRealAttrib():???",
 			"+attributes:dict",
 			"-getAttributes():dict",
+			"-getBlocking():bool",
+			"-setBlocking(blocking:bool):None",
 			"+blocking:bool",
-			"-getBlocking():bool",
-			"-setBlocking(blocking:bool):void",
-			"+delElements():void",
+			"+delElements():None",
 			"-checkUnicity(elt:OgpElement):bool",
-			"+append(newChild:OgpElement):void",
-			"+insert(index:int, newChild:OgpElement):void",
-			"+extend(elements:OgpElement[]):void",
-			"+set(name:string, value:string)",
-			"+merge(peer:OgpElement):void",
-			"-reorderIds(peer:OgpElement):void",
-			"+toString():string"
+			"+append(newChild:OgpElement):None",
+			"+insert(index:int, newChild:OgpElement):None",
+			"+extend(elements:OgpElement[]):None",
+			"+set(name:str, value:str)",
+			"+merge(peer:OgpElement):None",
+			"-reorder_ids(peer:OgpElement):None",
+			"+toString([xsl:str],[params:dict]):str",
+			"-processXsl(xsl:str,params:dict):str",
+			"+static makePlugin(fileNames:list):OgpElement",
+			"+static makeFile(name:str):OgpElement"
 		);
-  	leftToRight(100)(Plugin, OgpCore);
+
+	Class.OgpXmlError("OgpXmlError (Exception)")
+		()
+		();
+
+	Class.OgpElementClassLookup("OgpElementClassLookup (PythonElementClassLookup)")
+		()
+		();
+
+	Class.OgpXmlConsts("OgpXmlConsts")
+		(
+			"+ATTR_BLOCK:str",
+   			"+ATTR_ID:str",
+   			"+ATTR_PLUGIN_NAME:str",
+			"+ATTR_FILE_NAME:str",
+			"+TAG_OGP:str",
+			"+TAG_UID:str",
+			"+TAG_GID:str",
+			"+TAG_SECURITY:str",
+			"+TAG_CONF:str",
+			"+TAG_FILE:str",
+			"+TAG_FILES:str",
+			"+TAG_PLUGIN:str",
+			"+TAGS_OWN:str",
+			"+TAGS_MOD:str"
+		)
+		();
+
+	Class.Plugin("Plugin")
+		(
+			"+name:str",
+			"+files:list",
+			"+parentDn:str",
+			"+currentConf:OgpElement",
+			"+dn:str",
+			"+core:OgpCore",
+			"-registeredPlugins:dict"
+		)
+		(
+			"+Plugin(dn:str):Plugin",
+			"+static getPluginFromName(name:str):Plugin",
+			"+static registerPlugin(pluginClass:Plugin):None",
+			"+static getRegisteredPlugins():dict",
+			"+update():None",
+			"+cancel():None",
+			"+chown(fileName:str,[uid:int],[gid:int],[blocking:bool]):None",
+			"+chmod(fileName:str,rights:dict,[blocking:bool]):None",
+			"-getFile(fileName:str)",
+			"+setSecurityAttributes(fileName:str,filePath:str)",
+			"+abstract installConf():None",
+			"+abstract help([cmdName:str]):dict",
+			"+abstract runCommand(cmdName:str,argv:dict):None",
+			"+pullFile(file:str,fullTree:bool):object",
+			"+pushFile(file:str,content:object,[blocking:bool])"
+		);
+
+	Class.OgpPluginError("OgpPluginError (Exception)")
+		()
+		();
+	Class.Omitted("omitted")
+		()
+		();
+
+  	leftToRight(50)(OgpLDAPConsts, OgpCore);
+
+	leftToRight(50)(Omitted, Plugin);
+	leftToRight(50)(OgpPluginError, Plugin);
+	topToBottom(50)(OgpPluginError, Plugin);
+
 	topToBottom(50)(Plugin, OgpElement);
 
-	Package.Core("ogp.core")(OgpCore);
-	Package.Etree("ogp.etree")(OgpElement);
-	Package.Plugins("ogp.plugins")(Plugin);
+	Package.Core("ogp.core")(OgpCore, OgpLDAPConsts);
+	Package.Etree("ogp.etree")(OgpElement,OgpXmlConsts, OgpElementClassLookup, OgpXmlError);
+	Package.Plugins("ogp.plugins")(Plugin, OgpPluginError, Omitted);
 	
 	drawObjects(Core, Etree, Plugins);
-  	drawObjects(Plugin,OgpCore,OgpElement);
-  	clink(aggregationUni)(Plugin, OgpCore);
+  	drawObjects(OgpCore, OgpLDAPConsts);
+	drawObjects(OgpElement,OgpXmlConsts, OgpElementClassLookup, OgpXmlError);
+	drawObjects(Plugin, OgpPluginError, Omitted);
+  	clink(aggregationUni)(OgpCore, Plugin);
+	clink(aggregationUni)(Omitted, Plugin);
+	clink(aggregationUni)(OgpPluginError, Plugin);
+	clink(aggregationUni)(OgpElement, Plugin);
+	clink(aggregationUni)(OgpXmlError, OgpElement);
+	clink(aggregationUni)(OgpElementClassLookup, OgpElement);
+	clink(aggregationUni)(OgpXmlConsts, OgpElement);
+	clink(aggregationUni)(OgpLDAPConsts, OgpCore);
 
 endfig;
 

Modified: externals/Com/Rapport/tex/rapport.tex
===================================================================
--- externals/Com/Rapport/tex/rapport.tex	2009-03-25 17:10:31 UTC (rev 94)
+++ externals/Com/Rapport/tex/rapport.tex	2009-03-25 17:44:35 UTC (rev 95)
@@ -1,4 +1,4 @@
-\documentclass[a4paper,11pt,oneside,draft]{report}
+\documentclass[a4paper,11pt,oneside]{report}
 \usepackage[utf8]{inputenc}
 \usepackage{amsfonts, amsmath, amsthm}
 \usepackage[a4paper]{geometry}
@@ -192,7 +192,6 @@
 La description des situations de vie associées à ce diagramme est donnée dans le tableau \ref{tab:situationsdevie} page \pageref{tab:situationsdevie}. 
 
 \section{Situations de vie}
-%TODO: compléter tableau situations de vie
 \begin{minipage}{.95\textwidth}
 \begin{center}
   \captionof{table}{\caption{Situations de vie}\label{tab:situationsdevie}}
@@ -228,8 +227,8 @@
 		     & F(2-3) \\ \hline
 			FC\ref{itm:mep}.4 
 		     & Assurer la compatibilité du client pour une majorité de configurations logicielles (bibliothèques, interpréteurs...)
-		     & TODO
-		     & TODO
+		     & Environnement logiciel
+		     & ---
 		     & F(5) \\ \hline
 			FC\ref{itm:mep}.5 
 		     & Suivre la politique de sécurité en vigueur
@@ -239,7 +238,7 @@
 			FC\ref{itm:mep}.6 
 		     & Être scalable
 		     & \begin{itemize}\item Stockage de la configuration \item Authentification clients\end{itemize}
-		     & TODO
+		     & Dépendants de l'environnement
 		     & F(2) \\ \hline
 		  \end{tabular}
 		\end{small}
@@ -462,8 +461,15 @@
 \begin{verbatim}
 	svn co svn+ssh://<USER>@svn.tuxfamily.org/svnroot/opengp/opengp
 \end{verbatim}
-L'obtention d'un répertoire particulier est possible en précisant le nom de ce répertoire dans l'arborescence en argument supplémentaire de la commande ci-dessus. De plus amples informations concernant les commandes SVN sont données en annexe \ref{chapter:svn} (page \pageref{chapter:svn}). 
 
+Il est également possible d'extraire le dépôt de manière anonyme : 
+\begin{verbatim}
+	svn co svn://svn.tuxfamily.org/svnroot/opengp/opengp
+\end{verbatim}
+Dans ce cas, le dépôt est en lecture seule : il n'est pas possible d'y envoyer des modifications. 
+
+L'obtention d'un répertoire particulier est possible en précisant le nom de ce réper\-toire dans l'arborescence en argument supplémentaire de la commande ci-dessus. De plus amples informations concernant les commandes SVN sont données en annexe \ref{chapter:svn} (page \pageref{chapter:svn}). 
+
 \section{Arborescence}
 La figure \ref{fig:arboProjet} (page \pageref{fig:arboProjet}) présente l'arborescence du répertoire de travail (seuls les répertoires sont représentés). 
 
@@ -499,30 +505,34 @@
 \chapter{Plugins}
 \section{Enregistrement des plugins}
 %TODO: scan des modules Python dans un répertoire donné et enregistrement
-Les plugins sont stockés sous forme de modules Python dans le répertoire \texttt{ogp/lib/plugins}. 
+Les plugins sont stockés sous forme de modules Python dans le répertoire \url{./ogp/lib/plugins}. 
 
 \section{Initialisation d'un plugin}
-%TODO
 
 Un plugin est initialisé par le \emph{distinguished name} d'une OU. Il récupère ensuite la configuration depuis l'annuaire en deux partie : 
 \begin{itemize}
-	\item la première est récupérée récursivement de l'OU parente à la racine de l'annuaire (partie non modifiable par le plugin) ;
-	\item la seconde ne correspond qu'à l'OU donnée (modifiable par le plugin). 
+	\item la première est récupérée récursivement de l'OU parente à la racine de l'annuaire (partie non modifiable par le plugin) à la volée (on ne stocke que le DN de l'OU parente et la configuration associée est extraite en cas de besoin) ;
+	\item la seconde ne correspond qu'à l'OU donnée (modifiable par le plugin) et est stockée dans la variable \texttt{currentConf}. 
 \end{itemize}
-Ce mécanisme est schématisé par la figure \ref{fig:initPluginConf} (page \pageref{fig:initPluginConf}). 
+Ce mécanisme est schématisé par la figure \ref{fig:initPluginConf} (page \pageref{fig:initPluginConf}). D'après ce schéma :
+\begin{itemize}
+	\item on stocke la configuration de $M_1$ dans \texttt{currentConf} ;
+	\item on stocke \url{ou=OU3,ou=OU1,ou=OU0} dans \texttt{parrentDN} ;
+	\item la configuration des parents n'est récupérée et fusionnée que lors de l'appel d'une méthode avec l'attribut \texttt{fullTree}.
+\end{itemize}
 
+
 \begin{figure}[ht!]
 	\centering
-	%TODO: figure
-	%\includegraphics[x]{x}
+	\includegraphics[]{../figures/misc/arbre-conf-inherit}
 	\caption{Configuration récupérée à l'initialisation d'un plugin}\label{fig:initPluginConf}
 \end{figure}
 
 
 \chapter{Déploiement}
-% Bibliothèques
-% Installation du démon
-% Droits ?
+%TODO: Bibliothèques
+%TODO: Installation du démon
+%TODO: Droits ?
 % ...
 
 \addcontentsline{toc}{chapter}{Table des figures}


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/