glpi-plugin-auf : intégration Debian 8 et Ubuntu 14.04
[auf-serveur.git] / glpi-plugin-auf / plugin / rapport.migrationdebian.php
CommitLineData
e1b9ade4
P
1<?php
2//Options for GLPI 0.71 and newer : need slave db to access the report
3$USEDBREPLICATE=1;
4$DBCONNECTION_REQUIRED=0;
5
6include ("../../inc/includes.php");
1135f035 7include_once ("inc/functions.php");
e1b9ade4
P
8
9Session::checkRight("reports", "r");
10Session::checkRight("computer", "r");
11
1135f035 12$report_title = "Progression des mises à niveau Debian";
118fab7c 13
e1b9ade4 14#Html::header(Report::getTypeName(2), $_SERVER['PHP_SELF'], "utils", "report");
118fab7c 15Html::header($report_title, $_SERVER['PHP_SELF'], "utils", "report");
e1b9ade4
P
16Report::title();
17
1135f035 18echo "\n<p class='big b' style='margin: 5px; text-align: center'><span id='report_date' style='float: right; margin: 2px 20px; font-size: 75%; font-style: italic'>(".date('Y-m-d H:i:s')." UTC)</span>$report_title</p>";
e1b9ade4
P
19
20$computer = new Computer();
21
22$itemtype = 'Computer';
23$table_item = getTableForItemType($itemtype);
24
e1b9ade4
P
25// echo "\n<span class='big b' style='color: red;'>ATTENTION : ce rapport est en cours de refonte, merci de ne pas tenir compte des données affichées ci-dessous.</span><br><br>";
26
27//echo "\n<span class='big b'>Ordinateurs par implantation</span><br><br>";
28echo "<table class='tab_cadrehov'>";
29echo "<tr class='tab_bg_1'><th rowspan='2' colspan='2'>Implantation</th>";
1135f035
P
30echo "<th colspan='5'>Serveurs physiques</th>";
31echo "<th colspan='5'>Serveurs virtuels</th>";
e1b9ade4
P
32echo "</tr>";
33echo "<tr class='tab_bg_1'>";
1135f035
P
34echo "<th>Autres ".svg_circle('blue', 3)."</th><th>Debian 6 ".svg_circle('red', 3)."</th><th>Debian 7 ".svg_circle('yellow', 3)."</th><th>Debian 8 ".svg_circle('green', 3)."</th><th>Progression</th>";
35echo "<th>Autres ".svg_circle('blue', 3)."</th><th>Debian 6 ".svg_circle('red', 3)."</th><th>Debian 7 ".svg_circle('yellow', 3)."</th><th>Debian 8 ".svg_circle('green', 3)."</th><th>Progression</th>";
e1b9ade4
P
36echo "</tr>\n";
37
1135f035
P
38$grand_serveurs_jessie = 0; $grand_serveurs_wheezy = 0; $grand_serveurs_squeeze = 0; $grand_serveurs_autres = 0;
39$grand_virtuels_jessie = 0; $grand_virtuels_wheezy = 0; $grand_virtuels_squeeze = 0; $grand_virtuels_autres = 0;
e1b9ade4
P
40// récupération de la liste des régions
41$query = "SELECT id FROM glpi_entities WHERE (id=0 OR entities_id=0)";
42$query .= " ".getEntitiesRestrictRequest("AND", "glpi_entities")." ORDER BY name";
43$region_result = $DB->query($query);
44// parcours des régions
45while ($region_data = $DB->fetch_assoc($region_result)) {
46 $region_id = $region_data['id'];
47 if ($region_id != 0) {
48 $region_name = getTreeLeafValueName("glpi_entities", $region_id);
49 } else {
50 $region_name = "AUF";
51 }
52 $table_lines = Array();
1135f035
P
53 $region_serveurs_jessie = 0; $region_serveurs_wheezy = 0; $region_serveurs_squeeze = 0; $region_serveurs_autres = 0;
54 $region_virtuels_jessie = 0; $region_virtuels_wheezy = 0; $region_virtuels_squeeze = 0; $region_virtuels_autres = 0;
e1b9ade4
P
55
56 // récupération de la liste des implantations
57 $query = "SELECT id,level FROM glpi_entities WHERE ";
58 if ($region_id != 0) {
59 $query .= getRealQueryForTreeItem("glpi_entities", $region_id, "id");
60 } else {
61 $query .= "id=0";
62 }
63 $query .= " ".getEntitiesRestrictRequest("AND", "glpi_entities")." ORDER BY name";
64 $implant_result = $DB->query($query);
65 // parcours des implantations
66 while ($implant_data = $DB->fetch_assoc($implant_result)) {
67 $implant_id = $implant_data['id'];
68 if ($implant_id != 0) {
69 $implant_name = getTreeLeafValueName("glpi_entities", $implant_id);
70 } else {
71 $implant_name = "<i>(non classé)</i>";
72 }
73
74 // récupération de la liste des systèmes de l'implantation
1135f035
P
75 $nb_serveurs_jessie = 0; $nb_serveurs_wheezy = 0; $nb_serveurs_squeeze = 0; $nb_serveurs_autres = 0;
76 $nb_virtuels_jessie = 0; $nb_virtuels_wheezy = 0; $nb_virtuels_squeeze = 0; $nb_virtuels_autres = 0;
e1b9ade4
P
77 $query = "SELECT s.completename AS sname, o.name AS oname,
78 ac.est_virtuel AS virtuel,
79 acc.name AS categorie, acu.name AS utilisation
80 FROM `$table_item` c
81 LEFT JOIN glpi_states s ON (c.states_id = s.id)
82 LEFT JOIN glpi_plugin_auf_computers ac ON (c.id = ac.id)
83 LEFT JOIN glpi_plugin_auf_categories acc ON (ac.auf_categories_id = acc.id)
84 LEFT JOIN glpi_plugin_auf_utilisations acu ON (ac.auf_utilisations_id = acu.id)
85 LEFT JOIN glpi_operatingsystems o ON (c.operatingsystems_id = o.id)
86 WHERE c.is_deleted = '0' AND c.is_template = '0'
87 AND o.name LIKE 'Debian %'
88 AND c.entities_id = '".$implant_id."'";
89 $result = $DB->query($query);
90 while ($data=$DB->fetch_assoc($result)) {
91 // on ne compte pas les sorties d'inventaire
92 if (preg_match("/^sortie/i", $data['sname'])) {
93 continue;
94 }
95 // serveurs virtuels
96 if ($data['virtuel']) {
1135f035
P
97 if (preg_match("/^Debian( GNU\/Linux)? 8/", $data['oname'])) {
98 $nb_virtuels_jessie++;
99 } elseif (preg_match("/^Debian( GNU\/Linux)? 7/", $data['oname'])) {
e1b9ade4
P
100 $nb_virtuels_wheezy++;
101 } elseif (preg_match("/^Debian( GNU\/Linux)? 6/", $data['oname'])) {
102 $nb_virtuels_squeeze++;
103 } else {
104 $nb_virtuels_autres++;
105 }
106 }
107 // serveurs physiques
108 elseif (preg_match("/^infra/i", $data['categorie'])) {
109 if (preg_match("/^production/i", $data['utilisation']) &&
110 !preg_match("/panne/i", $data['sname'])) {
1135f035
P
111 if (preg_match("/^Debian( GNU\/Linux)? 8/", $data['oname'])) {
112 $nb_serveurs_jessie++;
113 } elseif (preg_match("/^Debian( GNU\/Linux)? 7/", $data['oname'])) {
e1b9ade4
P
114 $nb_serveurs_wheezy++;
115 } elseif (preg_match("/^Debian( GNU\/Linux)? 6/", $data['oname'])) {
116 $nb_serveurs_squeeze++;
117 } else {
118 $nb_serveurs_autres++;
119 }
120 }
121 }
122 // autres
123 else {
124 // on ne compte pas les postes clients, que les serveurs
125 }
126 } // systèmes dans l'implantation
127
1135f035
P
128 $total_serveurs = $nb_serveurs_jessie + $nb_serveurs_wheezy + $nb_serveurs_squeeze + $nb_serveurs_autres;
129 $total_virtuels = $nb_virtuels_jessie + $nb_virtuels_wheezy + $nb_virtuels_squeeze + $nb_virtuels_autres;
e1b9ade4
P
130 if (($total_serveurs + $total_virtuels) > 0) {
131 $spaces = "";
132 for ($i=1;$i<$implant_data['level'];$i++) { $spaces .= "&nbsp;"; }
133 $line = "<tr><td class='tab_bg_1'>$spaces$implant_name</td>";
134 $line .= "<td class='numeric'>$nb_serveurs_autres</td>";
135 $line .= "<td class='numeric'>$nb_serveurs_squeeze</td>";
136 $line .= "<td class='numeric'>$nb_serveurs_wheezy</td>";
1135f035
P
137 $line .= "<td class='numeric'>$nb_serveurs_jessie</td>";
138 $line .= "<td class='numeric tab_bg_2'>".progression_html(Array($nb_serveurs_autres, $nb_serveurs_squeeze, $nb_serveurs_wheezy, $nb_serveurs_jessie), $nb_serveurs_wheezy + $nb_serveurs_jessie)."</td>";
e1b9ade4
P
139 $line .= "<td class='numeric'>$nb_virtuels_autres</td>";
140 $line .= "<td class='numeric'>$nb_virtuels_squeeze</td>";
141 $line .= "<td class='numeric'>$nb_virtuels_wheezy</td>";
1135f035
P
142 $line .= "<td class='numeric'>$nb_virtuels_jessie</td>";
143 $line .= "<td class='numeric tab_bg_2'>".progression_html(Array($nb_virtuels_autres, $nb_virtuels_squeeze, $nb_virtuels_wheezy, $nb_virtuels_jessie), $nb_virtuels_wheezy + $nb_virtuels_jessie)."</td>";
e1b9ade4
P
144 $line .= "</tr>\n";
145 $table_lines[] = $line;
146 }
147 // total régional
148 $region_serveurs_autres += $nb_serveurs_autres;
149 $region_serveurs_squeeze += $nb_serveurs_squeeze;
150 $region_serveurs_wheezy += $nb_serveurs_wheezy;
1135f035 151 $region_serveurs_jessie += $nb_serveurs_jessie;
e1b9ade4
P
152 $region_virtuels_autres += $nb_virtuels_autres;
153 $region_virtuels_squeeze += $nb_virtuels_squeeze;
154 $region_virtuels_wheezy += $nb_virtuels_wheezy;
1135f035 155 $region_virtuels_jessie += $nb_virtuels_jessie;
e1b9ade4
P
156 #$table_lines[] = "<tr><td>".$implant_name."</td></tr>";
157 } // fin des implantations de la région
158
1135f035
P
159 $total_serveurs = $region_serveurs_jessie + $region_serveurs_wheezy + $region_serveurs_squeeze + $region_serveurs_autres;
160 $total_virtuels = $region_virtuels_jessie + $region_virtuels_wheezy + $region_virtuels_squeeze + $region_virtuels_autres;
e1b9ade4
P
161 if (($total_serveurs + $total_virtuels) > 0) {
162 $line = "<tr class='tab_bg_1 b'><td>Sous-total</td>";
163 $line .= "<td class='numeric'>$region_serveurs_autres</td>";
164 $line .= "<td class='numeric'>$region_serveurs_squeeze</td>";
165 $line .= "<td class='numeric'>$region_serveurs_wheezy</td>";
1135f035
P
166 $line .= "<td class='numeric'>$region_serveurs_jessie</td>";
167 $line .= "<td class='numeric tab_bg_1'>".progression_html(Array($region_serveurs_autres, $region_serveurs_squeeze, $region_serveurs_wheezy, $region_serveurs_jessie), $region_serveurs_wheezy + $region_serveurs_jessie)."</td>";
e1b9ade4
P
168 $line .= "<td class='numeric'>$region_virtuels_autres</td>";
169 $line .= "<td class='numeric'>$region_virtuels_squeeze</td>";
170 $line .= "<td class='numeric'>$region_virtuels_wheezy</td>";
1135f035
P
171 $line .= "<td class='numeric'>$region_virtuels_jessie</td>";
172 $line .= "<td class='numeric tab_bg_1'>".progression_html(Array($region_virtuels_autres, $region_virtuels_squeeze, $region_virtuels_wheezy, $region_virtuels_jessie), $region_virtuels_wheezy + $region_virtuels_jessie)."</td>";
e1b9ade4
P
173 $line .= "</tr>\n";
174 $table_lines[] = $line;
175 }
176
177 # TODO: revoir ce pie-chart
178 $region_name = svg_pie_chart(Array(
179 $region_serveurs_autres + $region_virtuels_autres,
180 $region_serveurs_squeeze + $region_virtuels_squeeze,
181 $region_serveurs_wheezy + $region_virtuels_wheezy,
1135f035 182 $region_serveurs_jessie + $region_virtuels_jessie,
e1b9ade4
P
183 ), 16) . $region_name;
184 $table_lines[0] = str_replace("<tr>", "<tr><td class='tab_bg_1 b' rowspan='".count($table_lines)."'>$region_name</td>", $table_lines[0]);
185 if ($region_id != 0) {
1135f035 186 echo "<tr><th colspan='12'></th></tr>\n";
e1b9ade4
P
187 }
188 echo implode("\n", $table_lines);
189
190 // total général
191 $grand_serveurs_autres += $region_serveurs_autres;
192 $grand_serveurs_squeeze += $region_serveurs_squeeze;
193 $grand_serveurs_wheezy += $region_serveurs_wheezy;
1135f035 194 $grand_serveurs_jessie += $region_serveurs_jessie;
e1b9ade4
P
195 $grand_virtuels_autres += $region_virtuels_autres;
196 $grand_virtuels_squeeze += $region_virtuels_squeeze;
197 $grand_virtuels_wheezy += $region_virtuels_wheezy;
1135f035 198 $grand_virtuels_jessie += $region_virtuels_jessie;
e1b9ade4
P
199} // fin des régions
200
201#echo "<tr class='tab_bg_1'><td colspan='8'>&nbsp;</td></tr>";
202
e1b9ade4
P
203$line = "<tr class='tab_bg_1'><td class='b' colspan='2'>";
204$line .= svg_pie_chart(Array(
205 $grand_serveurs_autres + $grand_virtuels_autres,
206 $grand_serveurs_squeeze + $grand_virtuels_squeeze,
207 $grand_serveurs_wheezy + $grand_virtuels_wheezy,
1135f035 208 $grand_serveurs_jessie + $grand_virtuels_jessie,
e1b9ade4
P
209), 16);
210$line .= "TOTAL GÉNÉRAL</td>";
211$line .= "<td class='numeric b'>$grand_serveurs_autres</td>";
212$line .= "<td class='numeric b'>$grand_serveurs_squeeze</td>";
213$line .= "<td class='numeric b'>$grand_serveurs_wheezy</td>";
1135f035
P
214$line .= "<td class='numeric b'>$grand_serveurs_jessie</td>";
215$line .= "<td class='numeric tab_bg_1'>".progression_html(Array($grand_serveurs_autres, $grand_serveurs_squeeze, $grand_serveurs_wheezy, $grand_serveurs_jessie), $grand_serveurs_wheezy + $grand_serveurs_jessie)."</td>";
e1b9ade4
P
216$line .= "<td class='numeric b'>$grand_virtuels_autres</td>";
217$line .= "<td class='numeric b'>$grand_virtuels_squeeze</td>";
218$line .= "<td class='numeric b'>$grand_virtuels_wheezy</td>";
1135f035
P
219$line .= "<td class='numeric b'>$grand_virtuels_jessie</td>";
220$line .= "<td class='numeric tab_bg_1'>".progression_html(Array($grand_virtuels_autres, $grand_virtuels_squeeze, $grand_virtuels_wheezy, $grand_virtuels_jessie), $grand_virtuels_wheezy + $grand_virtuels_jessie)."</td>";
e1b9ade4 221$line .= "</tr>";
1135f035 222echo "<tr><th colspan='12'></th></tr>\n";
e1b9ade4
P
223echo $line;
224
225echo "</table>";
226
227echo "<div style='margin: 5px; text-align: center;'><p><strong>Remarques&nbsp;:</strong></p><ul>";
228echo "<li>Ce rapport ne considère que les machines déclarées en production et qui n'ont pas un statut de panne.</li>";
229echo "<li>Ce rapport ne considère que les machines dans la catégorie infrastructure, pas les postes internes ou publics.</li>";
230echo "<li>Ce rapport considère à la fois les machines physiques et les machines virtuelles.</li>";
231echo "<li>Ce rapport ne considère que les machines sous Debian, aucun autre système.</li>";
1135f035
P
232echo "<li>La colonne «&nbsp;Autres&nbsp;» consiste en des systèmes Debian d'une version autre que 8, 7 ou 6.</li>";
233echo "<li>La valeur de progression considère à la fois les versions 7 et 8.</li>";
234echo "<li><i>Note&nbsp;: la mise à niveau vers Debian 8 devrait être faite dans la foulée de celle vers Debian 7.</i></li>";
e1b9ade4
P
235echo "</ul></div>";
236
237Html::footer();
238?>