diff --git a/Rapport%20projet/LogoUEVE.png b/Rapport%20projet/LogoUEVE.png new file mode 100644 index 0000000..18c04c0 Binary files /dev/null and b/Rapport%20projet/LogoUEVE.png differ diff --git a/Rapport%20projet/arborescence_fichiers_IHM.jpg b/Rapport%20projet/arborescence_fichiers_IHM.jpg new file mode 100644 index 0000000..36bb659 Binary files /dev/null and b/Rapport%20projet/arborescence_fichiers_IHM.jpg differ diff --git a/Rapport%20projet/check_etatnoeud.png b/Rapport%20projet/check_etatnoeud.png new file mode 100644 index 0000000..72cb466 Binary files /dev/null and b/Rapport%20projet/check_etatnoeud.png differ diff --git a/Rapport%20projet/clustershell_yaml.png b/Rapport%20projet/clustershell_yaml.png new file mode 100644 index 0000000..661300d Binary files /dev/null and b/Rapport%20projet/clustershell_yaml.png differ diff --git a/Rapport%20projet/configuration_IHM_photo.png b/Rapport%20projet/configuration_IHM_photo.png new file mode 100644 index 0000000..8666645 Binary files /dev/null and b/Rapport%20projet/configuration_IHM_photo.png differ diff --git a/Rapport%20projet/confirmation_yaml.png b/Rapport%20projet/confirmation_yaml.png new file mode 100644 index 0000000..5e84397 Binary files /dev/null and b/Rapport%20projet/confirmation_yaml.png differ diff --git a/Rapport%20projet/controle_yaml.png b/Rapport%20projet/controle_yaml.png new file mode 100644 index 0000000..b212c47 Binary files /dev/null and b/Rapport%20projet/controle_yaml.png differ diff --git a/Rapport%20projet/conversion_ui_py.jpg b/Rapport%20projet/conversion_ui_py.jpg new file mode 100644 index 0000000..20a95aa Binary files /dev/null and b/Rapport%20projet/conversion_ui_py.jpg differ diff --git a/Rapport%20projet/def_lancer.png b/Rapport%20projet/def_lancer.png new file mode 100644 index 0000000..6f08344 Binary files /dev/null and b/Rapport%20projet/def_lancer.png differ diff --git a/Rapport%20projet/difference_importer_openfile.png b/Rapport%20projet/difference_importer_openfile.png new file mode 100644 index 0000000..4800204 Binary files /dev/null and b/Rapport%20projet/difference_importer_openfile.png differ diff --git a/Rapport%20projet/engrenage.jpg b/Rapport%20projet/engrenage.jpg new file mode 100644 index 0000000..5d23a1b Binary files /dev/null and b/Rapport%20projet/engrenage.jpg differ diff --git a/Rapport%20projet/example1_yaml.png b/Rapport%20projet/example1_yaml.png new file mode 100644 index 0000000..32423fc Binary files /dev/null and b/Rapport%20projet/example1_yaml.png differ diff --git a/Rapport%20projet/example2_yaml.png b/Rapport%20projet/example2_yaml.png new file mode 100644 index 0000000..52de5ce Binary files /dev/null and b/Rapport%20projet/example2_yaml.png differ diff --git a/Rapport%20projet/execution_yaml.png b/Rapport%20projet/execution_yaml.png new file mode 100644 index 0000000..abfddb7 Binary files /dev/null and b/Rapport%20projet/execution_yaml.png differ diff --git a/Rapport%20projet/exemple_affichage_console.png b/Rapport%20projet/exemple_affichage_console.png new file mode 100644 index 0000000..6253176 Binary files /dev/null and b/Rapport%20projet/exemple_affichage_console.png differ diff --git a/Rapport%20projet/exemple_config_service.png b/Rapport%20projet/exemple_config_service.png new file mode 100644 index 0000000..28174c6 Binary files /dev/null and b/Rapport%20projet/exemple_config_service.png differ diff --git a/Rapport%20projet/exemple_signal_slot.png b/Rapport%20projet/exemple_signal_slot.png new file mode 100644 index 0000000..559d077 Binary files /dev/null and b/Rapport%20projet/exemple_signal_slot.png differ diff --git a/Rapport%20projet/fen_etat_noeud.png b/Rapport%20projet/fen_etat_noeud.png new file mode 100644 index 0000000..908d937 Binary files /dev/null and b/Rapport%20projet/fen_etat_noeud.png differ diff --git a/Rapport%20projet/fenetre_principale.png b/Rapport%20projet/fenetre_principale.png new file mode 100644 index 0000000..5f4a979 Binary files /dev/null and b/Rapport%20projet/fenetre_principale.png differ diff --git a/Rapport%20projet/from_clustershell.png b/Rapport%20projet/from_clustershell.png new file mode 100644 index 0000000..66432fe Binary files /dev/null and b/Rapport%20projet/from_clustershell.png differ diff --git a/Rapport%20projet/import_yaml.png b/Rapport%20projet/import_yaml.png new file mode 100644 index 0000000..b2fbc97 Binary files /dev/null and b/Rapport%20projet/import_yaml.png differ diff --git a/Rapport%20projet/initialisation_fenetre.jpg b/Rapport%20projet/initialisation_fenetre.jpg new file mode 100644 index 0000000..127faf3 Binary files /dev/null and b/Rapport%20projet/initialisation_fenetre.jpg differ diff --git a/Rapport%20projet/logo_fichier_python.png b/Rapport%20projet/logo_fichier_python.png new file mode 100644 index 0000000..0db9284 Binary files /dev/null and b/Rapport%20projet/logo_fichier_python.png differ diff --git a/Rapport%20projet/messagebox.png b/Rapport%20projet/messagebox.png new file mode 100644 index 0000000..c94b93e Binary files /dev/null and b/Rapport%20projet/messagebox.png differ diff --git a/Rapport%20projet/photo_ui.png b/Rapport%20projet/photo_ui.png new file mode 100644 index 0000000..4294aae Binary files /dev/null and b/Rapport%20projet/photo_ui.png differ diff --git a/Rapport%20projet/rapport.aux b/Rapport%20projet/rapport.aux new file mode 100644 index 0000000..b2902b1 --- /dev/null +++ b/Rapport%20projet/rapport.aux @@ -0,0 +1,96 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\catcode `:\active +\catcode `;\active +\catcode `!\active +\catcode `?\active +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\bibstyle{alpha} +\select@language{french} +\@writefile{toc}{\select@language{french}} +\@writefile{lof}{\select@language{french}} +\@writefile{lot}{\select@language{french}} +\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{3}{section.1}} +\newlabel{sec:section1}{{1}{3}{Introduction}{section.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Objectif}{3}{subsection.1.1}} +\newlabel{sub:1.1}{{1.1}{3}{Objectif}{subsection.1.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Projet}{3}{subsection.1.2}} +\newlabel{sub:1.2}{{1.2}{3}{Projet}{subsection.1.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2}ClusterShell}{4}{section.2}} +\newlabel{sec:section2}{{2}{4}{ClusterShell}{section.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Pr\IeC {\'e}sentation}{4}{subsection.2.1}} +\newlabel{sub:2.1}{{2.1}{4}{Présentation}{subsection.2.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Commandes CLI}{4}{subsection.2.2}} +\newlabel{sub:2.2}{{2.2}{4}{Commandes CLI}{subsection.2.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}API Python}{4}{subsection.2.3}} +\newlabel{sub:2.3}{{2.3}{4}{API Python}{subsection.2.3}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Import}}{4}{figure.1}} +\@writefile{toc}{\contentsline {section}{\numberline {3}Script gestion des services}{5}{section.3}} +\newlabel{sec:section3}{{3}{5}{Script gestion des services}{section.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Pr\IeC {\'e}sentation}{5}{subsection.3.1}} +\newlabel{sub:3.1}{{3.1}{5}{Présentation}{subsection.3.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Fonctionnement}{5}{subsection.3.2}} +\newlabel{sub:3.2}{{3.2}{5}{Fonctionnement}{subsection.3.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Script Simple}}{5}{figure.2}} +\@writefile{toc}{\contentsline {section}{\numberline {4}Script avec fichier de configuration}{6}{section.4}} +\newlabel{sec:section4}{{4}{6}{Script avec fichier de configuration}{section.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Pr\IeC {\'e}sentation}{6}{subsection.4.1}} +\newlabel{sub:4.1}{{4.1}{6}{Présentation}{subsection.4.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}YAML}{6}{subsection.4.2}} +\newlabel{sub:4.2}{{4.2}{6}{YAML}{subsection.4.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}Pr\IeC {\'e}sentation}{6}{subsubsection.4.2.1}} +\newlabel{subsub:4.2.1}{{4.2.1}{6}{Présentation}{subsubsection.4.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}Fichier de configuration .YAML}{6}{subsubsection.4.2.2}} +\newlabel{subsub:4.2.2}{{4.2.2}{6}{Fichier de configuration .YAML}{subsubsection.4.2.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Installation}{7}{subsection.4.3}} +\newlabel{sub:4.3}{{4.3}{7}{Installation}{subsection.4.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Script}{7}{subsection.4.4}} +\newlabel{sub:4.4}{{4.4}{7}{Script}{subsection.4.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Affichage}{8}{subsection.4.5}} +\newlabel{sub:4.5}{{4.5}{8}{Affichage}{subsection.4.5}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces example1.yaml}}{8}{figure.3}} +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces ex\IeC {\'e}cution du script}}{8}{figure.4}} +\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Confirmation}}{8}{figure.5}} +\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Output de l'ex\IeC {\'e}cution example1.yaml}}{9}{figure.6}} +\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces example2.yaml}}{9}{figure.7}} +\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Output de l'ex\IeC {\'e}cution example2.yaml}}{9}{figure.8}} +\@writefile{toc}{\contentsline {section}{\numberline {5}Cr\IeC {\'e}ation d'une IHM}{10}{section.5}} +\newlabel{sec:section5}{{5}{10}{Création d'une IHM}{section.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Qt Creator et PyQt}{10}{subsection.5.1}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1}La conversion ui > py}{10}{subsubsection.5.1.1}} +\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Conversion ui - py}}{10}{figure.9}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.2}Les classes d'interfaces graphique}{10}{subsubsection.5.1.2}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.3}Les signaux et les slots}{10}{subsubsection.5.1.3}} +\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Les signaux et slots}}{11}{figure.10}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.4}Le programme principal}{11}{subsubsection.5.1.4}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.5}Arborescence des fichiers}{11}{subsubsection.5.1.5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Configuration des services}{12}{subsection.5.2}} +\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces S\IeC {\'e}quences de t\IeC {\^a}ches \IeC {\`a} ex\IeC {\'e}cuter}}{13}{figure.11}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Visualisation des r\IeC {\'e}sultats}{13}{subsection.5.3}} +\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Exemple de r\IeC {\'e}sultat d'ex\IeC {\'e}cution}}{14}{figure.12}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1}Affichage des r\IeC {\'e}sultats}{14}{subsubsection.5.3.1}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2}D\IeC {\'e}tail de l'ex\IeC {\'e}cution}{14}{subsubsection.5.3.2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}V\IeC {\'e}rification de l'\IeC {\'e}tat des noeuds}{15}{subsection.5.4}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1}Test des noeuds via la barre de saisie}{16}{subsubsection.5.4.1}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.2}Test des noeuds via un fichier}{17}{subsubsection.5.4.2}} +\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces Fonctions de configuration vs Fonctions de v\IeC {\'e}rification de noeuds}}{17}{figure.13}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Mise en place des r\IeC {\'e}sultats d'ex\IeC {\'e}cution dans des logs}{17}{subsection.5.5}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Sources}{17}{section.6}} +\newlabel{sec:section6}{{6}{17}{Sources}{section.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}R\IeC {\'e}f\IeC {\'e}rences}{17}{subsection.6.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Annexes}{17}{subsection.6.2}} diff --git a/Rapport%20projet/rapport.dvi b/Rapport%20projet/rapport.dvi new file mode 100644 index 0000000..7e31643 Binary files /dev/null and b/Rapport%20projet/rapport.dvi differ diff --git a/Rapport%20projet/rapport.log b/Rapport%20projet/rapport.log new file mode 100644 index 0000000..4bb98f4 --- /dev/null +++ b/Rapport%20projet/rapport.log @@ -0,0 +1,1193 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.17 (MiKTeX 2.9) (preloaded format=pdflatex 2016.9.24) 5 NOV 2016 06:28 +entering extended mode +**./rapport.tex +(rapport.tex +LaTeX2e <2016/03/31> patch level 3 +Babel <3.9r> and hyphenation patterns for 75 language(s) loaded. +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\base\article.cls" +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\base\size11.clo" +File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) ("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\babel\babel.st +y" +Package: babel 2016/04/23 3.9r The Babel package + +************************************* +* Local config file bblopts.cfg used +* +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\arabi\bblopts.cfg" +File: bblopts.cfg 2005/09/08 v0.1 add Arabic and Farsi to "declared" options of + babel +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\babel-french\frenc +hb.ldf" +Language: frenchb 2016/05/14 v3.2c French support from the babel system + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\babel\babel.def" +File: babel.def 2016/04/23 3.9r Babel common definitions +\babel@savecnt=\count87 +\U@D=\dimen103 +) +\l@acadian = a dialect from \language\l@french +\l@canadien = a dialect from \language\l@french +\FB@nonchar=\count88 +\FBcolonskip=\skip43 +\FBthinskip=\skip44 +Package babel Info: Making : an active character on input line 365. +Package babel Info: Making ; an active character on input line 366. +Package babel Info: Making ! an active character on input line 367. +Package babel Info: Making ? an active character on input line 368. +\FBguillskip=\skip45 +\FBguill@level=\count89 +\FB@everypar=\toks14 +\FB@Mht=\dimen104 +\std@mcc=\count90 +\dec@mcc=\count91 +\listindentFB=\skip46 +\labelwidthFB=\skip47 +\leftmarginFB=\skip48 +\parindentFFN=\dimen105 +\FBfnindent=\skip49 +)) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\carlisle\scalefnt. +sty") +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\graphics\keyval.st +y" +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks15 +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\base\inputenc.sty" +Package: inputenc 2015/03/17 v1.2c Input encoding file +\inpenc@prehook=\toks16 +\inpenc@posthook=\toks17 +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\base\utf8.def" +File: utf8.def 2016/02/28 v1.1s UTF-8 support for inputenc +Now handling font encoding OML ... +... no UTF-8 mapping file for font encoding OML +Now handling font encoding T1 ... +... processing UTF-8 mapping file for font encoding T1 + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\base\t1enc.dfu" +File: t1enc.dfu 2016/02/28 v1.1s UTF-8 support for inputenc + defining Unicode char U+00A0 (decimal 160) + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00AB (decimal 171) + defining Unicode char U+00AD (decimal 173) + defining Unicode char U+00BB (decimal 187) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C0 (decimal 192) + defining Unicode char U+00C1 (decimal 193) + defining Unicode char U+00C2 (decimal 194) + defining Unicode char U+00C3 (decimal 195) + defining Unicode char U+00C4 (decimal 196) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00C7 (decimal 199) + defining Unicode char U+00C8 (decimal 200) + defining Unicode char U+00C9 (decimal 201) + defining Unicode char U+00CA (decimal 202) + defining Unicode char U+00CB (decimal 203) + defining Unicode char U+00CC (decimal 204) + defining Unicode char U+00CD (decimal 205) + defining Unicode char U+00CE (decimal 206) + defining Unicode char U+00CF (decimal 207) + defining Unicode char U+00D0 (decimal 208) + defining Unicode char U+00D1 (decimal 209) + defining Unicode char U+00D2 (decimal 210) + defining Unicode char U+00D3 (decimal 211) + defining Unicode char U+00D4 (decimal 212) + defining Unicode char U+00D5 (decimal 213) + defining Unicode char U+00D6 (decimal 214) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00D9 (decimal 217) + defining Unicode char U+00DA (decimal 218) + defining Unicode char U+00DB (decimal 219) + defining Unicode char U+00DC (decimal 220) + defining Unicode char U+00DD (decimal 221) + defining Unicode char U+00DE (decimal 222) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E0 (decimal 224) + defining Unicode char U+00E1 (decimal 225) + defining Unicode char U+00E2 (decimal 226) + defining Unicode char U+00E3 (decimal 227) + defining Unicode char U+00E4 (decimal 228) + defining Unicode char U+00E5 (decimal 229) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00E7 (decimal 231) + defining Unicode char U+00E8 (decimal 232) + defining Unicode char U+00E9 (decimal 233) + defining Unicode char U+00EA (decimal 234) + defining Unicode char U+00EB (decimal 235) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F0 (decimal 240) + defining Unicode char U+00F1 (decimal 241) + defining Unicode char U+00F2 (decimal 242) + defining Unicode char U+00F3 (decimal 243) + defining Unicode char U+00F4 (decimal 244) + defining Unicode char U+00F5 (decimal 245) + defining Unicode char U+00F6 (decimal 246) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+00F9 (decimal 249) + defining Unicode char U+00FA (decimal 250) + defining Unicode char U+00FB (decimal 251) + defining Unicode char U+00FC (decimal 252) + defining Unicode char U+00FD (decimal 253) + defining Unicode char U+00FE (decimal 254) + defining Unicode char U+00FF (decimal 255) + defining Unicode char U+0100 (decimal 256) + defining Unicode char U+0101 (decimal 257) + defining Unicode char U+0102 (decimal 258) + defining Unicode char U+0103 (decimal 259) + defining Unicode char U+0104 (decimal 260) + defining Unicode char U+0105 (decimal 261) + defining Unicode char U+0106 (decimal 262) + defining Unicode char U+0107 (decimal 263) + defining Unicode char U+0108 (decimal 264) + defining Unicode char U+0109 (decimal 265) + defining Unicode char U+010A (decimal 266) + defining Unicode char U+010B (decimal 267) + defining Unicode char U+010C (decimal 268) + defining Unicode char U+010D (decimal 269) + defining Unicode char U+010E (decimal 270) + defining Unicode char U+010F (decimal 271) + defining Unicode char U+0110 (decimal 272) + defining Unicode char U+0111 (decimal 273) + defining Unicode char U+0112 (decimal 274) + defining Unicode char U+0113 (decimal 275) + defining Unicode char U+0114 (decimal 276) + defining Unicode char U+0115 (decimal 277) + defining Unicode char U+0116 (decimal 278) + defining Unicode char U+0117 (decimal 279) + defining Unicode char U+0118 (decimal 280) + defining Unicode char U+0119 (decimal 281) + defining Unicode char U+011A (decimal 282) + defining Unicode char U+011B (decimal 283) + defining Unicode char U+011C (decimal 284) + defining Unicode char U+011D (decimal 285) + defining Unicode char U+011E (decimal 286) + defining Unicode char U+011F (decimal 287) + defining Unicode char U+0120 (decimal 288) + defining Unicode char U+0121 (decimal 289) + defining Unicode char U+0122 (decimal 290) + defining Unicode char U+0123 (decimal 291) + defining Unicode char U+0124 (decimal 292) + defining Unicode char U+0125 (decimal 293) + defining Unicode char U+0128 (decimal 296) + defining Unicode char U+0129 (decimal 297) + defining Unicode char U+012A (decimal 298) + defining Unicode char U+012B (decimal 299) + defining Unicode char U+012C (decimal 300) + defining Unicode char U+012D (decimal 301) + defining Unicode char U+012E (decimal 302) + defining Unicode char U+012F (decimal 303) + defining Unicode char U+0130 (decimal 304) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0132 (decimal 306) + defining Unicode char U+0133 (decimal 307) + defining Unicode char U+0134 (decimal 308) + defining Unicode char U+0135 (decimal 309) + defining Unicode char U+0136 (decimal 310) + defining Unicode char U+0137 (decimal 311) + defining Unicode char U+0139 (decimal 313) + defining Unicode char U+013A (decimal 314) + defining Unicode char U+013B (decimal 315) + defining Unicode char U+013C (decimal 316) + defining Unicode char U+013D (decimal 317) + defining Unicode char U+013E (decimal 318) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0143 (decimal 323) + defining Unicode char U+0144 (decimal 324) + defining Unicode char U+0145 (decimal 325) + defining Unicode char U+0146 (decimal 326) + defining Unicode char U+0147 (decimal 327) + defining Unicode char U+0148 (decimal 328) + defining Unicode char U+014A (decimal 330) + defining Unicode char U+014B (decimal 331) + defining Unicode char U+014C (decimal 332) + defining Unicode char U+014D (decimal 333) + defining Unicode char U+014E (decimal 334) + defining Unicode char U+014F (decimal 335) + defining Unicode char U+0150 (decimal 336) + defining Unicode char U+0151 (decimal 337) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+0154 (decimal 340) + defining Unicode char U+0155 (decimal 341) + defining Unicode char U+0156 (decimal 342) + defining Unicode char U+0157 (decimal 343) + defining Unicode char U+0158 (decimal 344) + defining Unicode char U+0159 (decimal 345) + defining Unicode char U+015A (decimal 346) + defining Unicode char U+015B (decimal 347) + defining Unicode char U+015C (decimal 348) + defining Unicode char U+015D (decimal 349) + defining Unicode char U+015E (decimal 350) + defining Unicode char U+015F (decimal 351) + defining Unicode char U+0160 (decimal 352) + defining Unicode char U+0161 (decimal 353) + defining Unicode char U+0162 (decimal 354) + defining Unicode char U+0163 (decimal 355) + defining Unicode char U+0164 (decimal 356) + defining Unicode char U+0165 (decimal 357) + defining Unicode char U+0168 (decimal 360) + defining Unicode char U+0169 (decimal 361) + defining Unicode char U+016A (decimal 362) + defining Unicode char U+016B (decimal 363) + defining Unicode char U+016C (decimal 364) + defining Unicode char U+016D (decimal 365) + defining Unicode char U+016E (decimal 366) + defining Unicode char U+016F (decimal 367) + defining Unicode char U+0170 (decimal 368) + defining Unicode char U+0171 (decimal 369) + defining Unicode char U+0172 (decimal 370) + defining Unicode char U+0173 (decimal 371) + defining Unicode char U+0174 (decimal 372) + defining Unicode char U+0175 (decimal 373) + defining Unicode char U+0176 (decimal 374) + defining Unicode char U+0177 (decimal 375) + defining Unicode char U+0178 (decimal 376) + defining Unicode char U+0179 (decimal 377) + defining Unicode char U+017A (decimal 378) + defining Unicode char U+017B (decimal 379) + defining Unicode char U+017C (decimal 380) + defining Unicode char U+017D (decimal 381) + defining Unicode char U+017E (decimal 382) + defining Unicode char U+01CD (decimal 461) + defining Unicode char U+01CE (decimal 462) + defining Unicode char U+01CF (decimal 463) + defining Unicode char U+01D0 (decimal 464) + defining Unicode char U+01D1 (decimal 465) + defining Unicode char U+01D2 (decimal 466) + defining Unicode char U+01D3 (decimal 467) + defining Unicode char U+01D4 (decimal 468) + defining Unicode char U+01E2 (decimal 482) + defining Unicode char U+01E3 (decimal 483) + defining Unicode char U+01E6 (decimal 486) + defining Unicode char U+01E7 (decimal 487) + defining Unicode char U+01E8 (decimal 488) + defining Unicode char U+01E9 (decimal 489) + defining Unicode char U+01EA (decimal 490) + defining Unicode char U+01EB (decimal 491) + defining Unicode char U+01F0 (decimal 496) + defining Unicode char U+01F4 (decimal 500) + defining Unicode char U+01F5 (decimal 501) + defining Unicode char U+0218 (decimal 536) + defining Unicode char U+0219 (decimal 537) + defining Unicode char U+021A (decimal 538) + defining Unicode char U+021B (decimal 539) + defining Unicode char U+1E02 (decimal 7682) + defining Unicode char U+1E03 (decimal 7683) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2010 (decimal 8208) + defining Unicode char U+2011 (decimal 8209) + defining Unicode char U+2012 (decimal 8210) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2015 (decimal 8213) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201A (decimal 8218) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) + defining Unicode char U+201E (decimal 8222) + defining Unicode char U+2030 (decimal 8240) + defining Unicode char U+2031 (decimal 8241) + defining Unicode char U+2039 (decimal 8249) + defining Unicode char U+203A (decimal 8250) + defining Unicode char U+2423 (decimal 9251) +) +Now handling font encoding OT1 ... +... processing UTF-8 mapping file for font encoding OT1 + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\base\ot1enc.dfu" +File: ot1enc.dfu 2016/02/28 v1.1s UTF-8 support for inputenc + defining Unicode char U+00A0 (decimal 160) + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00AD (decimal 173) + defining Unicode char U+00B8 (decimal 184) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+0174 (decimal 372) + defining Unicode char U+0175 (decimal 373) + defining Unicode char U+0176 (decimal 374) + defining Unicode char U+0177 (decimal 375) + defining Unicode char U+0218 (decimal 536) + defining Unicode char U+0219 (decimal 537) + defining Unicode char U+021A (decimal 538) + defining Unicode char U+021B (decimal 539) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) +) +Now handling font encoding OMS ... +... processing UTF-8 mapping file for font encoding OMS + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\base\omsenc.dfu" +File: omsenc.dfu 2016/02/28 v1.1s UTF-8 support for inputenc + defining Unicode char U+00A7 (decimal 167) + defining Unicode char U+00B6 (decimal 182) + defining Unicode char U+00B7 (decimal 183) + defining Unicode char U+2020 (decimal 8224) + defining Unicode char U+2021 (decimal 8225) + defining Unicode char U+2022 (decimal 8226) +) +Now handling font encoding OMX ... +... no UTF-8 mapping file for font encoding OMX +Now handling font encoding U ... +... no UTF-8 mapping file for font encoding U + defining Unicode char U+00A9 (decimal 169) + defining Unicode char U+00AA (decimal 170) + defining Unicode char U+00AE (decimal 174) + defining Unicode char U+00BA (decimal 186) + defining Unicode char U+02C6 (decimal 710) + defining Unicode char U+02DC (decimal 732) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2026 (decimal 8230) + defining Unicode char U+2122 (decimal 8482) + defining Unicode char U+2423 (decimal 9251) +)) ("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\xcolor\xcolor.s +ty" +Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\00miktex\color.cfg +" +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 225. + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\graphics-def\pdfte +x.def" +File: pdftex.def 2016/07/10 v0.06j Graphics/color for pdfTeX + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\oberdiek\infware +rr.sty" +Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\oberdiek\ltxcmds +.sty" +Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count92 +) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. +Package xcolor Info: Model `RGB' extended on input line 1364. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\xcolor\svgnam.def" +File: svgnam.def 2016/05/11 v2.12 Predefined colors according to SVG 1.1 (UK) +)) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\graphics\graphicx. +sty" +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\graphics\graphics. +sty" +Package: graphics 2016/07/10 v1.0t Standard LaTeX Graphics (DPC,SPQR) + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\graphics\trig.sty" +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\00miktex\graphics. +cfg" +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 99. +) +\Gin@req@height=\dimen106 +\Gin@req@width=\dimen107 +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsmath\amsmath.st +y" +Package: amsmath 2016/06/28 v2.15d AMS math features +\@mathmargin=\skip50 + +For additional information on amsmath, use the `?' option. + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsmath\amstext.st +y" +Package: amstext 2000/06/29 v2.01 AMS text + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsmath\amsgen.sty +" +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks18 +\ex@=\dimen108 +)) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsmath\amsbsy.sty +" +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen109 +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsmath\amsopn.sty +" +Package: amsopn 2016/03/08 v2.02 operator names +) +\inf@bad=\count93 +LaTeX Info: Redefining \frac on input line 199. +\uproot@=\count94 +\leftroot@=\count95 +LaTeX Info: Redefining \overline on input line 297. +\classnum@=\count96 +\DOTSCASE@=\count97 +LaTeX Info: Redefining \ldots on input line 394. +LaTeX Info: Redefining \dots on input line 397. +LaTeX Info: Redefining \cdots on input line 518. +\Mathstrutbox@=\box26 +\strutbox@=\box27 +\big@size=\dimen110 +LaTeX Font Info: Redeclaring font encoding OML on input line 634. +LaTeX Font Info: Redeclaring font encoding OMS on input line 635. +\macc@depth=\count98 +\c@MaxMatrixCols=\count99 +\dotsspace@=\muskip10 +\c@parentequation=\count100 +\dspbrk@lvl=\count101 +\tag@help=\toks19 +\row@=\count102 +\column@=\count103 +\maxfields@=\count104 +\andhelp@=\toks20 +\eqnshift@=\dimen111 +\alignsep@=\dimen112 +\tagshift@=\dimen113 +\tagwidth@=\dimen114 +\totwidth@=\dimen115 +\lineht@=\dimen116 +\@envbody=\toks21 +\multlinegap=\skip51 +\multlinetaggap=\skip52 +\mathdisplay@stack=\toks22 +LaTeX Info: Redefining \[ on input line 2739. +LaTeX Info: Redefining \] on input line 2740. +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsfonts\amssymb.s +ty" +Package: amssymb 2013/01/14 v3.01 AMS font symbols + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsfonts\amsfonts. +sty" +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +)) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amscls\amsthm.sty" +Package: amsthm 2015/03/04 v2.20.2 +\thm@style=\toks23 +\thm@bodyfont=\toks24 +\thm@headfont=\toks25 +\thm@notefont=\toks26 +\thm@headpunct=\toks27 +\thm@preskip=\skip53 +\thm@postskip=\skip54 +\thm@headsep=\skip55 +\dth@everypar=\toks28 +) ("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsmath\amscd.st +y" +Package: amscd 1999/11/29 v2.0 AMS Commutatitive Diagrams +\athelp@=\toks29 +\minaw@=\dimen117 +\bigaw@=\dimen118 +\minCDarrowwidth=\dimen119 +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\tools\tabularx.sty +" +Package: tabularx 2016/02/03 v2.11 `tabularx' package (DPC) + ("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\tools\array.sty" +Package: array 2014/10/28 v2.4c Tabular extension package (FMi) +\col@sep=\dimen120 +\extrarowheight=\dimen121 +\NC@list=\toks30 +\extratabsurround=\skip56 +\backup@length=\skip57 +) +\TX@col@width=\dimen122 +\TX@old@table=\dimen123 +\TX@old@col=\dimen124 +\TX@target=\dimen125 +\TX@delta=\dimen126 +\TX@cols=\count105 +\TX@ftn=\toks31 +) ("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\url\url.sty" +\Urlmuskip=\muskip11 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\geometry\geometry. +sty" +Package: geometry 2010/09/12 v5.6 Page Geometry + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\oberdiek\ifpdf.s +ty" +Package: ifpdf 2016/05/14 v3.1 Provides the ifpdf switch +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\oberdiek\ifvtex. +sty" +Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\ifxetex\ifxetex. +sty" +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count106 +\Gm@cntv=\count107 +\c@Gm@tempcnt=\count108 +\Gm@bindingoffset=\dimen127 +\Gm@wd@mp=\dimen128 +\Gm@odd@mp=\dimen129 +\Gm@even@mp=\dimen130 +\Gm@layoutwidth=\dimen131 +\Gm@layoutheight=\dimen132 +\Gm@layouthoffset=\dimen133 +\Gm@layoutvoffset=\dimen134 +\Gm@dimlist=\toks32 + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\geometry\geometry. +cfg")) ("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\ae\ae.sty" +Package: ae 2001/02/12 1.3 Almost European Computer Modern + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\base\fontenc.sty" +Package: fontenc 2016/06/19 v1.99m Standard LaTeX package + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\base\t1enc.def" +File: t1enc.def 2016/06/19 v1.99m Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 48. +) +LaTeX Font Info: Try loading font information for T1+aer on input line 105. + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\ae\t1aer.fd" +File: t1aer.fd 1997/11/16 Font definitions for T1/aer. +))) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\float\float.sty" +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count109 +\float@exts=\toks33 +\float@box=\box28 +\@float@everytoks=\toks34 +\@floatcapt=\box29 +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\hyperref\hyperref. +sty" +Package: hyperref 2016/06/24 v6.83q Hypertext links for LaTeX + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\oberdiek\hobsub- +hyperref.sty" +Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO) + + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\oberdiek\hobsub- +generic.sty" +Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO) +Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO) +Package hobsub Info: Skipping package `infwarerr' (already loaded). +Package hobsub Info: Skipping package `ltxcmds' (already loaded). +Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +Package hobsub Info: Skipping package `ifvtex' (already loaded). +Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO) +Package hobsub Info: Skipping package `ifpdf' (already loaded). +Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) +Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) +Package: pdftexcmds 2016/05/21 v0.22 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO +) +Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO) +Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO) +Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO) +Package: xcolor-patch 2016/05/16 xcolor patch +Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO) +Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO) +Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO) +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\oberdiek\auxhook.s +ty" +Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO) +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\oberdiek\kvoptions +.sty" +Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) +) +\@linkdim=\dimen135 +\Hy@linkcounter=\count110 +\Hy@pagecounter=\count111 + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\hyperref\pd1enc.de +f" +File: pd1enc.def 2016/06/24 v6.83q Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +\Hy@SavedSpaceFactor=\count112 + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\00miktex\hyperref. +cfg" +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Hyper figures OFF on input line 4486. +Package hyperref Info: Link nesting OFF on input line 4491. +Package hyperref Info: Hyper index ON on input line 4494. +Package hyperref Info: Plain pages OFF on input line 4501. +Package hyperref Info: Backreferencing OFF on input line 4506. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4735. +\c@Hy@tempcnt=\count113 +LaTeX Info: Redefining \url on input line 5088. +\XeTeXLinkMargin=\dimen136 +\Fld@menulength=\count114 +\Field@Width=\dimen137 +\Fld@charsize=\dimen138 +Package hyperref Info: Hyper figures OFF on input line 6342. +Package hyperref Info: Link nesting OFF on input line 6347. +Package hyperref Info: Hyper index ON on input line 6350. +Package hyperref Info: backreferencing OFF on input line 6357. +Package hyperref Info: Link coloring OFF on input line 6362. +Package hyperref Info: Link coloring with OCG OFF on input line 6367. +Package hyperref Info: PDF/A mode OFF on input line 6372. +LaTeX Info: Redefining \ref on input line 6412. +LaTeX Info: Redefining \pageref on input line 6416. +\Hy@abspage=\count115 +\c@Item=\count116 +\c@Hfootnote=\count117 +) + +Package hyperref Message: Driver (autodetected): hpdftex. + + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\hyperref\hpdftex.d +ef" +File: hpdftex.def 2016/06/24 v6.83q Hyperref driver for pdfTeX +\Fld@listcount=\count118 +\c@bookmark@seq@number=\count119 + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\oberdiek\rerunfile +check.sty" +Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +) +\Hy@SectionHShift=\skip58 +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\listings\listings. +sty" +\lst@mode=\count120 +\lst@gtempboxa=\box30 +\lst@token=\toks35 +\lst@length=\count121 +\lst@currlwidth=\dimen139 +\lst@column=\count122 +\lst@pos=\count123 +\lst@lostspace=\dimen140 +\lst@width=\dimen141 +\lst@newlines=\count124 +\lst@lineno=\count125 +\lst@maxwidth=\dimen142 + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\listings\lstmisc.s +ty" +File: lstmisc.sty 2015/06/04 1.6 (Carsten Heinz) +\c@lstnumber=\count126 +\lst@skipnumbers=\count127 +\lst@framebox=\box31 +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\listings\listings. +cfg" +File: listings.cfg 2015/06/04 1.6 listings configuration +)) +Package: listings 2015/06/04 1.6 (Carsten Heinz) +\c@defin=\count128 +\c@prop=\count129 +\c@thm=\count130 +\c@cor=\count131 +\c@lem=\count132 +\c@nota=\count133 +\c@rem=\count134 +\c@conj=\count135 +\c@nb=\count136 + (rapport.aux) +\openout1 = `rapport.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 41. +LaTeX Font Info: ... okay on input line 41. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 41. +LaTeX Font Info: ... okay on input line 41. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 41. +LaTeX Font Info: ... okay on input line 41. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 41. +LaTeX Font Info: ... okay on input line 41. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 41. +LaTeX Font Info: ... okay on input line 41. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 41. +LaTeX Font Info: ... okay on input line 41. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 41. +LaTeX Font Info: ... okay on input line 41. +LaTeX Info: Redefining \degres on input line 41. +LaTeX Info: Redefining \dots on input line 41. +LaTeX Info: Redefining \up on input line 41. + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\context\base\supp-pdf.mk +ii" +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count137 +\scratchdimen=\dimen143 +\scratchbox=\box32 +\nofMPsegments=\count138 +\nofMParguments=\count139 +\everyMPshowfont=\toks36 +\MPscratchCnt=\count140 +\MPscratchDim=\dimen144 +\MPnumerator=\count141 +\makeMPintoPDFobject=\count142 +\everyMPtoPDFconversion=\toks37 +) +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\oberdiek\epstopdf- +base.sty" +Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\oberdiek\grfext.st +y" +Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) +) +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +38. +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 456. +) +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: a4paper +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(42.67912pt, 512.14963pt, 42.67912pt) +* v-part:(T,H,B)=(56.9055pt, 731.23584pt, 56.9055pt) +* \paperwidth=597.50787pt +* \paperheight=845.04684pt +* \textwidth=512.14963pt +* \textheight=731.23584pt +* \oddsidemargin=-29.59087pt +* \evensidemargin=-29.59087pt +* \topmargin=-52.36449pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=11.0pt +* \footskip=30.0pt +* \marginparwidth=50.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +\AtBeginShipoutBox=\box33 +Package hyperref Info: Link coloring OFF on input line 41. + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\hyperref\nameref.s +ty" +Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\generic\oberdiek\gettitl +estring.sty" +Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO) +) +\c@section@level=\count143 +) +LaTeX Info: Redefining \ref on input line 41. +LaTeX Info: Redefining \pageref on input line 41. +LaTeX Info: Redefining \nameref on input line 41. + (rapport.out) (rapport.out) +\@outlinefile=\write3 +\openout3 = `rapport.out'. + +\c@lstlisting=\count144 + + +File: LogoUEVE.png Graphic file (type png) + +Package pdftex.def Info: LogoUEVE.png used on input line 58. +(pdftex.def) Requested size: 116.78624pt x 117.17168pt. + [1 + +{C:/Users/nico9/AppData/Local/MiKTeX/2.9/pdftex/config/pdftex.map} <./LogoUEVE. +png>] +(rapport.toc +LaTeX Font Info: Try loading font information for U+msa on input line 3. + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsfonts\umsa.fd" +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Try loading font information for U+msb on input line 3. +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\amsfonts\umsb.fd" +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +)) +\tf@toc=\write4 +\openout4 = `rapport.toc'. + + [2 + +] +Underfull \hbox (badness 10000) in paragraph at lines 104--108 + + [] + +[3 + +] +File: from_clustershell.png Graphic file (type png) + + +Package pdftex.def Info: from_clustershell.png used on input line 155. +(pdftex.def) Requested size: 334.44722pt x 14.05238pt. + [4 <./from_clustershell.png>] + +File: script1.png Graphic file (type png) + +Package pdftex.def Info: script1.png used on input line 174. +(pdftex.def) Requested size: 528.54605pt x 249.78148pt. + +Overfull \hbox (16.39642pt too wide) in paragraph at lines 174--175 + [][] + [] + +[5 <./script1.png>] +File: syntaxe_yaml.png Graphic file (type png) + + +Package pdftex.def Info: syntaxe_yaml.png used on input line 207. +(pdftex.def) Requested size: 407.51973pt x 110.31136pt. + +File: syntaxe_yaml2.png Graphic file (type png) + + +Package pdftex.def Info: syntaxe_yaml2.png used on input line 215. +(pdftex.def) Requested size: 448.27168pt x 205.16508pt. + [6 <./syntaxe_yaml.png> <./syntaxe_yaml2.png>] +LaTeX Font Info: Try loading font information for T1+aett on input line 225. + + +("C:\Users\nico9\AppData\Local\Programs\MiKTeX 2.9\tex\latex\ae\t1aett.fd" +File: t1aett.fd 1997/11/16 Font definitions for T1/aett. +) + +File: import_yaml.png Graphic file (type png) + +Package pdftex.def Info: import_yaml.png used on input line 231. +(pdftex.def) Requested size: 73.07248pt x 14.05238pt. + + +File: recup_yaml.png Graphic file (type png) + +Package pdftex.def Info: recup_yaml.png used on input line 244. +(pdftex.def) Requested size: 223.43321pt x 51.29124pt. + + +File: controle_yaml.png Graphic file (type png) + +Package pdftex.def Info: controle_yaml.png used on input line 255. +(pdftex.def) Requested size: 333.04196pt x 149.6581pt. + +[7 <./import_yaml.png> <./recup_yaml.png> <./controle_yaml.png>] + +File: clustershell_yaml.png Graphic file (type png) + + +Package pdftex.def Info: clustershell_yaml.png used on input line 269. +(pdftex.def) Requested size: 471.45816pt x 64.64104pt. + + +File: example1_yaml.png Graphic file (type png) + +Package pdftex.def Info: example1_yaml.png used on input line 294. +(pdftex.def) Requested size: 137.01093pt x 54.10175pt. + + +File: execution_yaml.png Graphic file (type png) + +Package pdftex.def Info: execution_yaml.png used on input line 302. +(pdftex.def) Requested size: 189.70744pt x 16.16023pt. + + +File: confirmation_yaml.png Graphic file (type png) + + +Package pdftex.def Info: confirmation_yaml.png used on input line 309. +(pdftex.def) Requested size: 411.73544pt x 55.50697pt. + [8 <./clustershell_yaml.png> <./example1_yaml.png> <./execution_yaml.png> <./c +onfirmation_yaml.png>] + +File: resultat_yaml.png Graphic file (type png) + +Package pdftex.def Info: resultat_yaml.png used on input line 317. +(pdftex.def) Requested size: 493.8488pt x 71.66829pt. + + +File: example2_yaml.png Graphic file (type png) + +Package pdftex.def Info: example2_yaml.png used on input line 324. +(pdftex.def) Requested size: 164.41551pt x 164.41551pt. + + +File: resultat2_yaml.png Graphic file (type png) + + +Package pdftex.def Info: resultat2_yaml.png used on input line 331. +(pdftex.def) Requested size: 408.71976pt x 206.36734pt. + [9 <./resultat_yaml.png> <./example2_yaml.png> <./resultat2_yaml.png>] +File: conversion_ui_py.jpg Graphic file (type jpg) + + +Package pdftex.def Info: conversion_ui_py.jpg used on input line 347. +(pdftex.def) Requested size: 215.00491pt x 95.75848pt. + +Underfull \hbox (badness 10000) in paragraph at lines 344--352 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 344--352 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 353--356 +\T1/aer/m/n/10.95 lors du lan-ce-ment de la fe-nêtre. + [] + + +File: initialisation_fenetre.jpg Graphic file (type jpg) + + +Package pdftex.def Info: initialisation_fenetre.jpg used on input line 357. +(pdftex.def) Requested size: 545.18178pt x 84.46478pt. + +Overfull \hbox (33.03215pt too wide) in paragraph at lines 357--358 + [] + [] + + +File: exemple_signal_slot.png Graphic file (type png) + + +Package pdftex.def Info: exemple_signal_slot.png used on input line 369. +(pdftex.def) Requested size: 211.28885pt x 118.4422pt. + +Underfull \hbox (badness 10000) in paragraph at lines 362--373 + + [] + +[10 <./conversion_ui_py.jpg> <./initialisation_fenetre.jpg>] + +File: signal_slot.jpg Graphic file (type jpg) + +Package pdftex.def Info: signal_slot.jpg used on input line 374. +(pdftex.def) Requested size: 189.50464pt x 59.82243pt. + + +File: arborescence_fichiers_IHM.jpg Graphic file (type jpg) + + +Package pdftex.def Info: arborescence_fichiers_IHM.jpg used on input line 394. +(pdftex.def) Requested size: 377.91095pt x 188.70453pt. + [11 <./exemple_signal_slot.png> <./signal_slot.jpg>] +File: configuration_IHM_photo.png Graphic file (type png) + + +Package pdftex.def Info: configuration_IHM_photo.png used on input line 399. +(pdftex.def) Requested size: 279.04182pt x 248.4275pt. + + +File: exemple_config_service.png Graphic file (type png) + + +Package pdftex.def Info: exemple_config_service.png used on input line 411. +(pdftex.def) Requested size: 279.04182pt x 248.4275pt. + [12 <./arborescence_fichiers_IHM.jpg> <./configuration_IHM_photo.png>] + +File: fenetre_principale.png Graphic file (type png) + + +Package pdftex.def Info: fenetre_principale.png used on input line 420. +(pdftex.def) Requested size: 266.49767pt x 302.63295pt. + + +File: exemple_affichage_console.png Graphic file (type png) + + +Package pdftex.def Info: exemple_affichage_console.png used on input line 426. +(pdftex.def) Requested size: 298.11302pt x 336.25542pt. + +Underfull \hbox (badness 10000) in paragraph at lines 422--428 + + [] + +[13 <./exemple_config_service.png> <./fenetre_principale.png>] +Underfull \hbox (badness 10000) in paragraph at lines 430--434 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 430--434 + + [] + + +File: def_lancer.png Graphic file (type png) + +Package pdftex.def Info: def_lancer.png used on input line 439. +(pdftex.def) Requested size: 526.21107pt x 205.5159pt. + +Overfull \hbox (31.06145pt too wide) in paragraph at lines 439--440 +[][] + [] + +[14 <./exemple_affichage_console.png>] + +File: fen_etat_noeud.png Graphic file (type png) + +Package pdftex.def Info: fen_etat_noeud.png used on input line 451. +(pdftex.def) Requested size: 333.34793pt x 289.08221pt. + +Underfull \hbox (badness 10000) in paragraph at lines 462--463 + + [] + +[15 <./def_lancer.png> <./fen_etat_noeud.png>] + +File: check_etatnoeud.png Graphic file (type png) + + +Package pdftex.def Info: check_etatnoeud.png used on input line 470. +(pdftex.def) Requested size: 510.40562pt x 327.47264pt. + +Underfull \hbox (badness 10000) in paragraph at lines 472--473 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 481--483 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 481--483 + + [] + + +File: messagebox.png Graphic file (type png) + +Package pdftex.def Info: messagebox.png used on input line 484. +(pdftex.def) Requested size: 201.75401pt x 148.15369pt. + +[16 <./check_etatnoeud.png>] + +File: difference_importer_openfile.png Graphic file (type png) + + +Package pdftex.def Info: difference_importer_openfile.png used on input line 49 +8. +(pdftex.def) Requested size: 346.2929pt x 112.41972pt. +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 518. + [17 <./messagebox.png> <./difference_importer_openfile.png>] +Package atveryend Info: Empty hook `AfterLastShipout' on input line 518. + (rapport.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 518. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 518. +Package rerunfilecheck Info: File `rapport.out' has not changed. +(rerunfilecheck) Checksum: 4BD74AB0A745D86346640CB32BEEF0BB;2582. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 518. + ) +Here is how much of TeX's memory you used: + 10808 strings out of 493334 + 152200 string characters out of 3130222 + 259480 words of memory out of 3000000 + 14037 multiletter control sequences out of 15000+200000 + 39314 words of font info for 83 fonts, out of 3000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 29i,8n,35p,560b,994s stack positions out of 5000i,500n,10000p,200000b,50000s + +Output written on rapport.pdf (17 pages, 658842 bytes). +PDF statistics: + 393 PDF objects out of 1000 (max. 8388607) + 78 named destinations out of 1000 (max. 500000) + 434 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/Rapport%20projet/rapport.out b/Rapport%20projet/rapport.out new file mode 100644 index 0000000..9a11424 --- /dev/null +++ b/Rapport%20projet/rapport.out @@ -0,0 +1,36 @@ +\BOOKMARK [1][-]{section.1}{Introduction}{}% 1 +\BOOKMARK [2][-]{subsection.1.1}{Objectif}{section.1}% 2 +\BOOKMARK [2][-]{subsection.1.2}{Projet}{section.1}% 3 +\BOOKMARK [1][-]{section.2}{ClusterShell}{}% 4 +\BOOKMARK [2][-]{subsection.2.1}{Pr\351sentation}{section.2}% 5 +\BOOKMARK [2][-]{subsection.2.2}{Commandes CLI}{section.2}% 6 +\BOOKMARK [2][-]{subsection.2.3}{API Python}{section.2}% 7 +\BOOKMARK [1][-]{section.3}{Script gestion des services}{}% 8 +\BOOKMARK [2][-]{subsection.3.1}{Pr\351sentation}{section.3}% 9 +\BOOKMARK [2][-]{subsection.3.2}{Fonctionnement}{section.3}% 10 +\BOOKMARK [1][-]{section.4}{Script avec fichier de configuration}{}% 11 +\BOOKMARK [2][-]{subsection.4.1}{Pr\351sentation}{section.4}% 12 +\BOOKMARK [2][-]{subsection.4.2}{YAML}{section.4}% 13 +\BOOKMARK [3][-]{subsubsection.4.2.1}{Pr\351sentation}{subsection.4.2}% 14 +\BOOKMARK [3][-]{subsubsection.4.2.2}{Fichier de configuration .YAML}{subsection.4.2}% 15 +\BOOKMARK [2][-]{subsection.4.3}{Installation}{section.4}% 16 +\BOOKMARK [2][-]{subsection.4.4}{Script}{section.4}% 17 +\BOOKMARK [2][-]{subsection.4.5}{Affichage}{section.4}% 18 +\BOOKMARK [1][-]{section.5}{Cr\351ation d'une IHM}{}% 19 +\BOOKMARK [2][-]{subsection.5.1}{Qt Creator et PyQt}{section.5}% 20 +\BOOKMARK [3][-]{subsubsection.5.1.1}{La conversion ui > py}{subsection.5.1}% 21 +\BOOKMARK [3][-]{subsubsection.5.1.2}{Les classes d'interfaces graphique}{subsection.5.1}% 22 +\BOOKMARK [3][-]{subsubsection.5.1.3}{Les signaux et les slots}{subsection.5.1}% 23 +\BOOKMARK [3][-]{subsubsection.5.1.4}{Le programme principal}{subsection.5.1}% 24 +\BOOKMARK [3][-]{subsubsection.5.1.5}{Arborescence des fichiers}{subsection.5.1}% 25 +\BOOKMARK [2][-]{subsection.5.2}{Configuration des services}{section.5}% 26 +\BOOKMARK [2][-]{subsection.5.3}{Visualisation des r\351sultats}{section.5}% 27 +\BOOKMARK [3][-]{subsubsection.5.3.1}{Affichage des r\351sultats}{subsection.5.3}% 28 +\BOOKMARK [3][-]{subsubsection.5.3.2}{D\351tail de l'ex\351cution}{subsection.5.3}% 29 +\BOOKMARK [2][-]{subsection.5.4}{V\351rification de l'\351tat des noeuds}{section.5}% 30 +\BOOKMARK [3][-]{subsubsection.5.4.1}{Test des noeuds via la barre de saisie}{subsection.5.4}% 31 +\BOOKMARK [3][-]{subsubsection.5.4.2}{Test des noeuds via un fichier}{subsection.5.4}% 32 +\BOOKMARK [2][-]{subsection.5.5}{Mise en place des r\351sultats d'ex\351cution dans des logs}{section.5}% 33 +\BOOKMARK [1][-]{section.6}{Sources}{}% 34 +\BOOKMARK [2][-]{subsection.6.1}{R\351f\351rences}{section.6}% 35 +\BOOKMARK [2][-]{subsection.6.2}{Annexes}{section.6}% 36 diff --git a/Rapport%20projet/rapport.pdf b/Rapport%20projet/rapport.pdf new file mode 100644 index 0000000..f4181a8 Binary files /dev/null and b/Rapport%20projet/rapport.pdf differ diff --git a/Rapport%20projet/rapport.synctex.gz b/Rapport%20projet/rapport.synctex.gz new file mode 100644 index 0000000..11974d5 Binary files /dev/null and b/Rapport%20projet/rapport.synctex.gz differ diff --git a/Rapport%20projet/rapport.tex b/Rapport%20projet/rapport.tex new file mode 100644 index 0000000..ec68b3a --- /dev/null +++ b/Rapport%20projet/rapport.tex @@ -0,0 +1,518 @@ +\documentclass[a4paper,11pt]{article} +\usepackage[french]{babel} +\usepackage[utf8]{inputenc} +\usepackage[svgnames]{xcolor} +\usepackage{graphicx} +\usepackage{amsmath,amssymb,amsthm,amscd} +\usepackage{tabularx} +\usepackage{url} +\usepackage{geometry} +\usepackage{ae} +\usepackage{float} +\usepackage{hyperref} +\usepackage{listings} + + + + +%% Mise en page (marges) +% (NON MODIFIABLE) +\geometry{hmargin=15mm,vmargin=20mm} + +%% Environnement de "théorèmes" +% (MODIFIABLE) +\newtheorem{defin}{Définition} +\newtheorem{prop}{Proposition} +\newtheorem{thm}{Théorème} +\newtheorem{cor}{Corollaire} +\newtheorem{lem}{Lemme} +\newtheorem{nota}{Notation} +\newtheorem{rem}{Remarque} +\newtheorem{conj}{Conjecture} +\newtheorem{nb}{N.B.} + +%% Taille relative tolérée d'un objet flottant sur une page +% (MODIFIABLE) +\renewcommand{\floatpagefraction}{0.95} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DÉBUT DU DOCUMENT +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} + +%% Changement de nom pour la bibliographie +\renewcommand{\refname}{Bibliographie} +%% Style de bibliographie alpha +\bibliographystyle{alpha} + +%%%%%%%%%%%%%%%%%%%%%%%%%% +% Première de couverture % +%%%%%%%%%%%%%%%%%%%%%%%%%% + +\thispagestyle{empty} +\begin{center} + {\LARGE UNIVERSITÉ D'ÉVRY -- VAL D'ESSONNE} + +\vskip 10mm + \begin{figure}[H] + \centerline{\includegraphics[scale=0.4]{LogoUEVE.png}} + + \end{figure} + + %% Indiquez le titre de votre stage + \vfill {\huge {\bf Réalisation en python d'un outils de gestion de services distribués}} + \vskip 1mm + à l'aide de l'API python clustershell\\ + + %% Indiquez votre prénom et votre nom en lieu et place de "Prénom Nom" + \vskip 3mm {\LARGE {\bf Guillaume Dubroeucq}} + \\ \LARGE {\bf Théo Poccard} + \\ \LARGE {\bf Nicolas Chapron} + + %% Remplacez JJ et AAAA par le jour et l'année de votre soutenance + \vskip 3mm le 18 octobre 2016 + \vfill + + \emph{Professeur}\\ + %% Indiquez le prénom et le nom de votre maître de stage en lieu et place + %% de "Prénom Nom" + Patrice LUCAS\\ + \emph{\ adresse mail}\\ + \emph{\ patrice.lucas@cea.fr}\\ + %% Indiquez l'année universitaire + \vskip 3cm Année universitaire 2016-2017 +\end{center} + +\clearpage +%%%%%%%%%%%%%%%%%%%%%% +% Table des matières % +%%%%%%%%%%%%%%%%%%%%%% + +\hrule\medskip + +\begin{center} + \tableofcontents +\end{center} + +\medskip\hrule\bigskip\bigskip +\clearpage + +\section{Introduction} +\label{sec:section1} +\subsection{Objectif} +\label{sub:1.1} +Développée et utilisée au CEA, l'API Clusterhell est une bibliothèque en Python qui permet d'exécuter en parallèle des commandes local et distantes sur des nÅ“uds d'un cluster. Elle fournit également 3 outils en ligne de commande (script utilitaires basés dessus) qui nous permettent de bénéficier des fonctionnalités de la bibliothèque: clush,nodeset et clubak. +\\ +Ce projet nous demande de réalisé et de développer un outils en ligne de commande de gestion distribué des service de systèmes permettant d'administrer ces services sur plusieurs nÅ“uds, et cela en utilisant l'API Python ClusterShell. +\\ + + +\subsection{Projet} +\label{sub:1.2} + +Ce projet est composé de 3 parties distinctes: +\begin{itemize} +\item Une version simple en ligne de commande +\item Une version accueillant un fichier de configuration +\item Une version avec une interface graphique +\end{itemize} +\bigbreak + +Les deux scripts ainsi que l'interface graphique seront entièrement programmé en python version 2.7. +\smallbreak +Nous allons donc dans un premier temps implémenter une version basique de gestion de services avec des fonctionnalités simple comme : start, stop, restart , etc.. sur un ensemble de nÅ“uds distant. Puis une fois cette base réalisé, nous allons mettre en place une configuration statique de la répartition des services grâce à des fichiers. Et pour finir nous développerons une IHM à partir des éléments déjà crée afin de parfaire l'outil de gestion des services distribué. +\pagebreak + +\section{ClusterShell} +\label{sec:section2} +\subsection{Présentation} +\label{sub:2.1} + +ClusterShell est un outil d'administration distribuée. Il permet d'exécuter des commandes à distance sur un ensemble n de noeuds. +\smallbreak +Pour que ClusterShell fonctionne, il faut installer le paquet "clustershell" coté master (celui qui va administrer les noeuds à distance). +Cette outil est agent-less coté client, c'est à dire qu'il n'y a pas de service à installé sur les noeuds à administrer, ClusterShell nécessite seulement au préalable d'avoir une connexion SSH valide (accès avec échanges de clés sans mot de passe) sur chacun des noeuds qu'il va administrer. + +\subsection{Commandes CLI} +\label{sub:2.2} +Commençons tout d'abord par définir les 3 fonctionnalités de la bibliothèques de ClusterShell définit plus haut:crush,nodeset et clubak. +\begin{itemize} +\item Nodeset : Permet la création et la manipulation de liste de nÅ“uds . En effet on peut créer des listes machines ainsi que des ranges de nÅ“uds, on peut effectuer plusieurs opérations sur ces listes ( union, exclusion, intersection , etc...). Cela facilite fortement la manipulation des noeuds. +\item Clush : Permet l'exécution des commandes en parallèle sur des noeuds distants, prends également en charge les groupes de noeuds. +\item Clubak : Regroupement de sorties standards qui permet de présenter de manière synthétique un résultat d'exécution un peu trop verbeux. +\end{itemize} + +\subsection{API Python} +\label{sub:2.3} +ClusterShell délivre une API python permettant de manipuler cette outil dans nos propres scripts python. +\smallbreak +Pour utiliser cette API, il suffit de télécharger le paquet "clustershell". +\smallbreak +Par la suite, il suffit d'intégrer l'api python ClusterShell à notre script avec cette ligne: + +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{from_clustershell.png} +\caption{Import} +\end{figure} + +\pagebreak +\section{Script gestion des services} +\label{sec:section3} +\subsection{Présentation} +\label{sub:3.1} + +Cette première partie consiste créer un script en python permettant d'utiliser les fonctionnalités de base des services, en étendant cette fonctionnalité de façon distribuée sur un ensemble choisi de noeuds. +Pour ce faire, on utilise l'api python Clustershell qui va nous permettre de créer un script pouvant effectuer ces actions. + +\subsection{Fonctionnement} +\label{sub:3.2} +Le script fonctionne très simplement, il prend 3 élément en paramètres : les nÅ“uds que l’on veut utiliser, le service concerné et la commande que l’on veut exécuter. Comme par exemple : ./script.py node2 cron restart ; cela correspond à relancer le service cron sur le node 2. +\\ +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{script1.png} +\caption{Script Simple} +\end{figure} +\\ +Le script en lui même vérifie dans un premier temps si des éléments sont mis en paramètres puis si il n’y a pas d’erreur de synthase sur les nodes. +\\ +Une fois c'est deux conditions remplis, on vérifie que la commande demandé corresponde à une des commandes suivante : start,stop,status,restart,reload. Dans la variable cli on ajoute les différents service qui ont été passés en paramètre. Task-shell permet d’ajouter les commandes (cli) à exécuter à distance sur les nodes. Et enfin on exécute le tout. +\\ +La dernière boucle for nous permet d'afficher les résultats obtenu. +\pagebreak + +\section{Script avec fichier de configuration} +\label{sec:section4} +\subsection{Présentation} +\label{sub:4.1} + +Cette deuxième partie consiste à améliorer le script précédent en ajoutant un fichier de configuration. Le script aura besoin seulement d'un fichier de configuration en argument contrairement à précédemment où il avait besoin d'une description complète des noeuds, des services et des actions à effectuer. Le fichier de configuration regroupera en lui les actions à accomplir. Nous avons choisi d'utiliser le langage YAML pour le fichier de configuration. + +\subsection{YAML} +\label{sub:4.2} +\subsubsection{Présentation} +\label{subsub:4.2.1} + +YAML (YAML Ain't Markup Language) est un format de représentation des données par sérialisation, c'est à dire que YAML fait passer d'un format de description ("human friendly") à un objet représenté par des combinaisons de listes, dictionnaires et données scalaires. +\\ +YAML est conçu pour être facilement manipulable par des humains (comme l'indique l'abréviation de YAML), il permet par la suite de facilement manipuler les données décrient par l'utilisateur dans beaucoup de langage (C/C++,Python,Java,PHP,...). + +\subsubsection{Fichier de configuration .YAML} +\label{subsub:4.2.2} +Nous allons voir comment se compose un fichier YAML, il y a énormément de manière de synthétiser un fichier YAML, nous ne pourrons pas voir toutes les possibilités offertes par ce langage. +\smallbreak +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{syntaxe_yaml.png} +\end{figure} +Dans notre cas, nous utilisons des collections (crées par l'indentation, voir l'exemple si dessus), il existe aussi les scalaires, c'est à dire l'ensemble des types qui ne sont pas des collections (donc aucune indentation), nous n'en utiliserons pas dans notre cas. +\smallbreak +Voici ci-dessous la syntaxe du fichier YAML utilisé dans notre script: +\smallbreak +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{syntaxe_yaml2.png} +\end{figure} +\pagebreak + + +\subsection{Installation} +\label{sub:4.3} + +Pour pouvoir utiliser le langage YAML, il faut au préalable installer le paquet "pyyaml" disponible dans le gestionnaire de paquets pip. +\smallbreak +\verb?pip install pyyaml? + +Par la suite, pour inclure YAML dans notre script python, il faut importer sa librairie: +\smallbreak +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{import_yaml.png} +\end{figure} +\smallbreak + +À présent, nous possédons tous les outils pour pouvoir utiliser YAML dans notre code python. + +\subsection{Script} +\label{sub:4.4} + +Il suffit maintenant d'ouvrir le fichier YAML en question qui sera passer en argument du script de la façon suivante: +\smallbreak +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{recup_yaml.png} +\end{figure} +\smallbreak + +Si il n'y a pas d'erreur dans l'ouverture et la sérialisation, on récupère un objet python (dans ce cas la variable "doc") parfaitement fonctionnelle. +\smallbreak +Il faut ainsi vérifier la syntaxe de cette objet pour s'assurer que l'utilisateur a bien respecter la syntaxe imposée par notre script: + +\smallbreak +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{controle_yaml.png} +\end{figure} +\smallbreak + +La fonction \verb?check_service(doc)? permet une première vérification de la syntaxe du fichier YAML, notamment si le fichier comporte des listes (requis dans notre cas). +\smallbreak +La fonction \verb?add_key(doc)? permet de récupérer tout les services du fichier et les afficher à l'utilisateur, ce dernier devra valider lui même si les services affichés sont cohérent et dans ce cas là, valider. Il est possible d'outre passer cette vérification en ajoutant "-force" en argument, c'est utile si on a besoin d'automatiser le script. Il est toutefois fortement conseiller de vérifier le fichier YAML avant de l'automatiser. + +\pagebreak + +Dès que l'utilisateur confirme le contenu du fichier ou qu'il ait forcé le passage avec "\verb?-force?", le script continu: +\smallbreak +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{clustershell_yaml.png} +\end{figure} +\smallbreak + + +La fonction \verb?check_attribut(doc,service)? permet de contrôler les attributs de chaque service pour vérifier si il n'en manque pas et qu'ils ne sont pas vide ou erroné. +\smallbreak +Après cette vérification, la fonction \verb?clustershell(doc,service)? est appellé, le script commence à vérifier notamment si il y a des dépendances grâce à une fonction interne à \verb?clustershell(doc,service)? et dans ce cas, le script vérifie si les services dépendants sont installés et activés.Si ce il manque une dépendance, toutes les actions liées à cette dépendance sont annulées Si tout est bon, le script effectue sur les noeuds les commandes distribuées dans \verb?clustershell(doc,service)?. + + +\subsection{Affichage} +\label{sub:4.5} + +Notre setup de test est le suivant: +\begin{itemize} +\item Un master +\item 3 noeuds appelés respectivement node1,node2 et node3 +\end{itemize} +La particularité est que seulement node1 possède nginx d'installé contrairement à node2 et node3. +\smallbreak +Tout les noeuds sont accessibles par le master par SSH sans mot de passe. +On commence par un cas simple: +\smallbreak +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{example1_yaml.png} +\caption{example1.yaml} +\end{figure} + +On exécute le script avec le fichier example1.yaml en argument: +\smallbreak +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.7]{execution_yaml.png} +\caption{exécution du script} +\end{figure} +Le script nous demande de confirmer le contenu du fichier \verb?example1.yaml?, dans notre cas le script affiche bien le service cron. On rappelle que l'on peut outrepasser cette confirmation en ajoutant "\verb?-force?" en argument du script. +\smallbreak + +\begin{figure}[H] + \centerline{\includegraphics[scale=0.7]{confirmation_yaml.png}} + \caption{Confirmation} +\end{figure} +\pagebreak +Pour finir, le script fait son travail avec ClusterShell sur les noeuds indiqués et indique le résultat des commandes, si il y a "OK", cela veut dire que la commande sur l'intégralité des noeuds a été un succès. Il y a une partie "RECAP" qui permet de voir en fin de script sur quel service il y a eu des erreurs ou non. +\smallbreak + +\begin{figure}[H] + \centerline{\includegraphics[scale=0.6]{resultat_yaml.png}} + \caption{Output de l'exécution example1.yaml} +\end{figure} + +Maintenant nous allons faire un fichier yaml plus complet en provoquant volontairement des erreurs, voici le fichier \verb?example2.yaml?: + +\begin{figure}[H] + \centerline{\includegraphics[scale=0.6]{example2_yaml.png}} + \caption{example2.yaml} +\end{figure} +\noindent +Ce fichier example2.yaml comporte des erreurs volontaires comme l'activation de nginx sur tout les noeuds (nginx est installé seulement sur node1), l'activation de ssh sur node123 (qui n'existe pas), ainsi que la dépendance nginx sur cron sur tout les noeuds. + +\begin{figure}[H] + \centerline{\includegraphics[scale=0.4]{resultat2_yaml.png}} + \caption{Output de l'exécution example2.yaml} +\end{figure} + +On remarque les erreurs évidentes + +\pagebreak + +\section{Création d'une IHM} +\label{sec:section5} +Pour la création d'une interface graphique, nous nous sommes tournés vers l'environnement de développement Qt. Qt est basé sur le langage C++ pour créer ses IHM. Cependant il existe le module PyQt permettant de programmer en python une interface graphique aisément. +\subsection{Qt Creator et PyQt} +\subsubsection{La conversion ui > py} +Au départ, on utilise Qt Creator pour pouvoir créer les fenêtres avec tous les composants nécessaires. Lorsque l'on créé une fenêtre, Qt nous génère un fichier \textbf{.ui}. A l'aide de l'utilitaire \textbf{pyuic}, on peut convertir ce fichier en python. +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.3]{conversion_ui_py.jpg} +\caption{Conversion ui - py} +\end{figure} +Pour convertir on utilise la commande suivante: \textbf{pyuic4 fenêtre.ui > fenêtre.py}\linebreak +\\ +\subsubsection{Les classes d'interfaces graphique} +Dans notre fichier python (qui représente la fênetre) se trouve au final une classe qui porte le nom \textbf{Ui\_Form} pour une fenêtre ou \textbf{Ui\_MainWindow} si c'est la fenêtre principale. Das cette classe se trouve une fonction qui s'appelle \textbf{setupUI} et qui configurer tous les composants graphiques qui se trouve dans la fenêtre (exemple: un bouton avec sa taille de base, sa taille maximum etc...). C'est la première fonction à être appelé lors du lancement de la fenêtre. +\linebreak +Voici comment se déroule l'initialisation d'une fenêtre +\begin{center} +\includegraphics[scale=0.45]{initialisation_fenetre.jpg} +\end{center} + + +\subsubsection{Les signaux et les slots} +Pour de la programmation événementielle, on utilise deux moyens qui sont propres à Qt: les signaux et les slots. Chaque composant graphique (comme un bouton) possède des signaux et des slots qui vont permettre d'intéragir avec d'autres composants et fonctions(exemple: ouvrir une fenête via un bouton).\\ +\linebreak +\textbf{Un signal:} Un signal est un message envoyé par une classe lors du déclenchement d'un événement comme le clic sur un bouton\\ +\textbf{Les slots:} Les slots sont tout simplement des fonctions qui seront déclenchés par les signaux. Les fonctions peuvent être créés par nous même ou cela peut être des fonctions propres à une classe de Qt( exemple: la fonction \textbf{quit} de \textbf{QApplication} qui quitte le programme.\\ +Voici un petit exemple pour mieux comprendre:\\ +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.5]{exemple_signal_slot.png} +\caption{Les signaux et slots} +\end{figure}\\ +Pour pouvoir assigner un slot à un signal on doit utilise la fonction \textbf{connect} que l'on définit dans la classe de notre fenêtre: +\begin{center} +\includegraphics[scale=0.4]{signal_slot.jpg} +\end{center} +La définiton d'un slot ce fait exactement de la même manière que celle d'une fonction de base. Il faut également ajouter "\textbf{@pyqtSlot()}" devant la fonction. C'est grâce à pyqtSlot que Qt va savoir que ce sont des slots et non des fonctions.\\ +Voici un exemple de slot: +\begin{lstlisting} +@pyqtSlot() +def monslot(): + print "Hello World" +\end{lstlisting} + +\subsubsection{Le programme principal} + +Comme dans tout fichier python, une fonction main existe et doit être appelé pour lancer le programme principal. Le fichier python principal (\textbf{IHM.py}) va contenir: +\begin{itemize} +\item Les signaux et les slots +\item Les classes d'interface graphique +\item Le code lié aux interactions avec les composants graphiques +\end{itemize} +\subsubsection{Arborescence des fichiers} +Afin de mieux comprendre comment notre IHM à été créé, voici un récapitulatif de l'ensemble de nos fichiers python est regroupé dans le dosser clustershell\_IHM.\\ +\includegraphics[scale=0.5]{arborescence_fichiers_IHM.jpg} + +\subsection{Configuration des services} + +\begin{center} +\includegraphics[scale=0.5]{configuration_IHM_photo.png} +\end{center} + +Cette fenêtre va servir de fenêtre intermédiaire avant l'affichage des résultats sur la fenêtre principale. +On dispose de deux choix: +\begin{itemize} +\item Importer un fichier au format YAML qui recense tous les noeuds et services que l'on veut administrer. +\item Créer une liste de services ou l'on peut manuellement rentrer le noms des services voulu avec les noeuds. +\end{itemize} +Lorsque nos noeuds et services sont configurés, on utilise une liste (\textbf{QListWidget}) afin d'avoir un bref récapitulatif du lancement des séquences de tâches sur les noeuds à effectuer: +\begin{figure}[H] +\centering +\includegraphics[scale=0.5]{exemple_config_service.png} +\caption{Séquences de tâches à exécuter} +\end{figure} +Il est possible d'ajouter plusieurs services (chaque service doit être séparé par une virgule) à la fois, pour plusieurs ensemble de noeuds.\\ +Dans \textbf{IHM.py} une fonction s'occupera d'ajouter les services dans la \textbf{QListWidget} pour les afficher ensuite. De plus, lors de l'ajout / supression d'un service, toute les informations seront envoyés dans \textbf{cluster.py}.\\ +Il faut également gérer le cas des dépendances, car un service peut avoir besoin qu'un autre service soit installé / activé. Pour cela, on à créé une barre de saisie supplémentaire (dépendance) permettant de vérifier au préalable si le service en question est bien disponible. + +\subsection{Visualisation des résultats} +\begin{center} +\includegraphics[scale=0.6]{fenetre_principale.png} +\end{center} +La fenêtre principale est le point d'entrée de notre IHM, elle va permettre de visualiser la sortie de chaque noeud de notre cluster et d'analyser rapidement les résultats.\\ +Une fois que la configuration des noeuds / services à été effectué dans la fenêtre de configuration, il est possible de lancer l'exécution des commandes via le bouton "\textbf{Lancer}" (cliquable uniquement si une liste de services à été créé via la fenêtre de configuration).\\ +\begin{figure}[H] +\centering +\includegraphics[scale=0.5]{exemple_affichage_console.png} +\caption{Exemple de résultat d'exécution} +\end{figure} +\subsubsection{Affichage des résultats} +\noindent L'affichage se fait simplement à l'aide d'une \textbf{QListWidget} qui va récupérer en entrée le résultat de l'exécution.\\ +\textbf{Ligne 1:} On récapitule la tâche qui est effectuée\\ +\textbf{Ligne 2,3:} Le résultat est affiché de manière claire avec une réponse de type FAIL ou OK.\\ +\linebreak + +\subsubsection{Détail de l'exécution} +Nous avons également fait un compteur qui récapitule le nombres d'actions qui a été réalisé grâce à un composant de type \textbf{QLabel}. On à aussi implémenter une barre de progression qui permet de suivre approximativement l'avancement des l'exécution des tâches sur beaucoup de noeuds.\\ +Voici le code qui s'exécute lors du clic sur le bouton Lancer: + +\includegraphics[scale=0.45]{def_lancer.png} + + + + + +\noindent Tout d'abord nous avons mis en place une autre fenêtre (accessible via le bouton "Etat des noeuds") permettant de vérifier l'état de noeuds. Ensuite nous pouvons configurer nos noeuds (via la fenêtre de configuration accessible via le bouton "Configuration").\\ +De plus nous avons trouvé qu'il était essentiel de garder une trace des résultats de tous les noeuds alors vous avons gardé en mémoire ces résultats dans des fichiers qui sont crées à partir du bouton "Résultat". + +\subsection{Vérification de l'état des noeuds} + +\begin{center} +\includegraphics[scale=0.6]{fen_etat_noeud.png} +\end{center} + +Il est souvent utile de savoir si un noeud est bien présent ou non pour effectuer une quelconque tâche. On a alors créé une fenêtre permettant de lister les noeuds actifs, des noeuds qui ne l'étaient pas.\\ +On a utilisé en tout 3 \textbf{QListWidgets}; une pour les noeuds actifs, une pour les noeuds qui ne répondaient pas et une dernière pour l'affichage des erreurs.\\ +Si l'utilisateur veut tester ses noeuds, il dispose de deux choix: +\begin{itemize} + \item Chercher le(s) noeud(s) qu'il veut vérifier en les renseignant dans la barre de saisie (\textbf{QLineEdit} ) + \item Si jamais l'utilisateur avait déjà écris sont fichier au format YAML pour pouvoir administrer ses services, il peut à par avance tester les noeuds dans ce noeud. Le fichier est récupérer via le bouton (\textbf{QPushButton}) "Parcourir". + \end{itemize} +\subsubsection{Test des noeuds via la barre de saisie} +Lorsque l'utilisateur tape une liste de noeuds et lance la vérification des noeuds via le bouton "Lancer", on utilise un signal qui va appeler une fonction de vérification des noeuds:\\ +\begin{lstlisting} +etatnoeud_IHM.pushButton.clicked.connect(check_etat_noeud) +\end{lstlisting} +\textbf{Partie de la fonction de vérification des noeuds:}\\ +Pour tester si les noeuds sont actifs on a finalement lancé une commande sur le(s) noeud(s) en question et on à vérifié si le résultat était bien celui qu'on attendait. Ici j'ai simplement utilisé la commande "\textbf{echo Hello}".\\ +Voici le code qui vérifie la présence et gère l'affichage des noeuds sur l'interface graphique: +\begin{flushleft} +\includegraphics[scale=1]{check_etatnoeud.png} +\end{flushleft} +Détail du code:\\ +\begin{enumerate} +\item Utilisation de \textbf{NodeSet} pour vérifier si ce que l'utilisateur a tapé correspond à la syntaxe d'un noeud. +\item Utilisation de \textbf{Task} pour lancer la commande sur le(s) noeud(s) +\item La boucle for permet de récupérer le résultat d'exécution de la commande sur les noeuds. +\begin{itemize} +\item Si la sortie (\textbf{output}) correspond bien à "Hello", on récupère le nonom du noeud et on l'ajoute dans la \textbf{QListWidget}. +\item Sinon on l'ajoute dans l'autre \textbf{QListWidget} qui liste les noeuds non actifs. +\end{itemize} +\item Biensur on vérifie si quelque chose à bien été entré dans la barre de saisie. L'objet \textbf{msg} de type \textbf{QMessageBox} va afficher une boite de dialogue:\\ +\linebreak +\begin{center} +\includegraphics[scale=0.8]{messagebox.png} +\end{center} + +\end{enumerate} + + + + + +\subsubsection{Test des noeuds via un fichier} +Lors de l'ouverture du fichier au format YAML, il était nécessaire de tester avant tout si la syntaxe du fichier était correcte. Cependant cette vérification à déjà été faite auparavant lors de l'importation d'un fichier au niveau de la configuration des services.\\ +Comme les fonctions utilisés n'etaient pas entièrement compatible avec le contexte il a fallu écrire de nouvelles fonctions basé sur les anciennes en les modifiant.\\ +\begin{figure}[hbtp] +\centering +\includegraphics[scale=0.5]{difference_importer_openfile.png} +\caption{Fonctions de configuration vs Fonctions de vérification de noeuds} +\end{figure} + + + +\subsection{Mise en place des résultats d'exécution dans des logs} +\section{Sources} +\label{sec:section6} +\subsection{Références} +\noindent\textbf{Nodeset:} \url{http://clustershell.readthedocs.io/en/latest/api/NodeSet.html}\\ +\textbf{Task:} \url{http://clustershell.readthedocs.io/en/latest/api/Task.html}\\ +\textbf{Qt GUI:} \url {http://doc.qt.io/qt-4.8/qtgui-module.html}\\ +\url {https://pythonspot.com/en/pyqt4/}\\ +\url {http://pyqt.sourceforge.net/Docs/PyQt4/qtgui.html} + +\subsection{Annexes} + +fonctions yaml + +\end{document} \ No newline at end of file diff --git a/Rapport%20projet/rapport.toc b/Rapport%20projet/rapport.toc new file mode 100644 index 0000000..3749051 --- /dev/null +++ b/Rapport%20projet/rapport.toc @@ -0,0 +1,37 @@ +\select@language {french} +\contentsline {section}{\numberline {1}Introduction}{3}{section.1} +\contentsline {subsection}{\numberline {1.1}Objectif}{3}{subsection.1.1} +\contentsline {subsection}{\numberline {1.2}Projet}{3}{subsection.1.2} +\contentsline {section}{\numberline {2}ClusterShell}{4}{section.2} +\contentsline {subsection}{\numberline {2.1}Pr\IeC {\'e}sentation}{4}{subsection.2.1} +\contentsline {subsection}{\numberline {2.2}Commandes CLI}{4}{subsection.2.2} +\contentsline {subsection}{\numberline {2.3}API Python}{4}{subsection.2.3} +\contentsline {section}{\numberline {3}Script gestion des services}{5}{section.3} +\contentsline {subsection}{\numberline {3.1}Pr\IeC {\'e}sentation}{5}{subsection.3.1} +\contentsline {subsection}{\numberline {3.2}Fonctionnement}{5}{subsection.3.2} +\contentsline {section}{\numberline {4}Script avec fichier de configuration}{6}{section.4} +\contentsline {subsection}{\numberline {4.1}Pr\IeC {\'e}sentation}{6}{subsection.4.1} +\contentsline {subsection}{\numberline {4.2}YAML}{6}{subsection.4.2} +\contentsline {subsubsection}{\numberline {4.2.1}Pr\IeC {\'e}sentation}{6}{subsubsection.4.2.1} +\contentsline {subsubsection}{\numberline {4.2.2}Fichier de configuration .YAML}{6}{subsubsection.4.2.2} +\contentsline {subsection}{\numberline {4.3}Installation}{7}{subsection.4.3} +\contentsline {subsection}{\numberline {4.4}Script}{7}{subsection.4.4} +\contentsline {subsection}{\numberline {4.5}Affichage}{8}{subsection.4.5} +\contentsline {section}{\numberline {5}Cr\IeC {\'e}ation d'une IHM}{10}{section.5} +\contentsline {subsection}{\numberline {5.1}Qt Creator et PyQt}{10}{subsection.5.1} +\contentsline {subsubsection}{\numberline {5.1.1}La conversion ui > py}{10}{subsubsection.5.1.1} +\contentsline {subsubsection}{\numberline {5.1.2}Les classes d'interfaces graphique}{10}{subsubsection.5.1.2} +\contentsline {subsubsection}{\numberline {5.1.3}Les signaux et les slots}{10}{subsubsection.5.1.3} +\contentsline {subsubsection}{\numberline {5.1.4}Le programme principal}{11}{subsubsection.5.1.4} +\contentsline {subsubsection}{\numberline {5.1.5}Arborescence des fichiers}{11}{subsubsection.5.1.5} +\contentsline {subsection}{\numberline {5.2}Configuration des services}{12}{subsection.5.2} +\contentsline {subsection}{\numberline {5.3}Visualisation des r\IeC {\'e}sultats}{13}{subsection.5.3} +\contentsline {subsubsection}{\numberline {5.3.1}Affichage des r\IeC {\'e}sultats}{14}{subsubsection.5.3.1} +\contentsline {subsubsection}{\numberline {5.3.2}D\IeC {\'e}tail de l'ex\IeC {\'e}cution}{14}{subsubsection.5.3.2} +\contentsline {subsection}{\numberline {5.4}V\IeC {\'e}rification de l'\IeC {\'e}tat des noeuds}{15}{subsection.5.4} +\contentsline {subsubsection}{\numberline {5.4.1}Test des noeuds via la barre de saisie}{16}{subsubsection.5.4.1} +\contentsline {subsubsection}{\numberline {5.4.2}Test des noeuds via un fichier}{17}{subsubsection.5.4.2} +\contentsline {subsection}{\numberline {5.5}Mise en place des r\IeC {\'e}sultats d'ex\IeC {\'e}cution dans des logs}{17}{subsection.5.5} +\contentsline {section}{\numberline {6}Sources}{17}{section.6} +\contentsline {subsection}{\numberline {6.1}R\IeC {\'e}f\IeC {\'e}rences}{17}{subsection.6.1} +\contentsline {subsection}{\numberline {6.2}Annexes}{17}{subsection.6.2} diff --git a/Rapport%20projet/recup_yaml.png b/Rapport%20projet/recup_yaml.png new file mode 100644 index 0000000..f75343b Binary files /dev/null and b/Rapport%20projet/recup_yaml.png differ diff --git a/Rapport%20projet/resultat2_yaml.png b/Rapport%20projet/resultat2_yaml.png new file mode 100644 index 0000000..67e4ed6 Binary files /dev/null and b/Rapport%20projet/resultat2_yaml.png differ diff --git a/Rapport%20projet/resultat_yaml.png b/Rapport%20projet/resultat_yaml.png new file mode 100644 index 0000000..ec7e62e Binary files /dev/null and b/Rapport%20projet/resultat_yaml.png differ diff --git a/Rapport%20projet/script1.PNG b/Rapport%20projet/script1.PNG new file mode 100644 index 0000000..c32566e Binary files /dev/null and b/Rapport%20projet/script1.PNG differ diff --git a/Rapport%20projet/signal_slot.jpg b/Rapport%20projet/signal_slot.jpg new file mode 100644 index 0000000..3131b7c Binary files /dev/null and b/Rapport%20projet/signal_slot.jpg differ diff --git a/Rapport%20projet/syntaxe_yaml.png b/Rapport%20projet/syntaxe_yaml.png new file mode 100644 index 0000000..b3bf2ea Binary files /dev/null and b/Rapport%20projet/syntaxe_yaml.png differ diff --git a/Rapport%20projet/syntaxe_yaml2.png b/Rapport%20projet/syntaxe_yaml2.png new file mode 100644 index 0000000..90d2cf4 Binary files /dev/null and b/Rapport%20projet/syntaxe_yaml2.png differ