From e1b9ade4d4a1e8e387c0263fbfe9c10701fb6938 Mon Sep 17 00:00:00 2001 From: Progfou Date: Thu, 1 May 2014 19:36:47 -0400 Subject: [PATCH] =?utf8?q?glpi-plugin-auf=20:=20rapport=20sur=20la=20migrati?= =?utf8?q?on=20Debian=20+=20ajustements=20cosm=C3=A9tiques?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- glpi-plugin-auf/plugin/rapport.migrationdebian.php | 289 +++++++++++++++++++- glpi-plugin-auf/plugin/rapport.migrationubuntu.php | 25 +- glpi-plugin-auf/plugin/setup.php | 3 +- 3 files changed, 310 insertions(+), 7 deletions(-) diff --git a/glpi-plugin-auf/plugin/rapport.migrationdebian.php b/glpi-plugin-auf/plugin/rapport.migrationdebian.php index 96203c4..931ddda 100644 --- a/glpi-plugin-auf/plugin/rapport.migrationdebian.php +++ b/glpi-plugin-auf/plugin/rapport.migrationdebian.php @@ -1 +1,288 @@ - +Progression de la migration vers Debian 7 (Wheezy)

"; + +$computer = new Computer(); + +$itemtype = 'Computer'; +$table_item = getTableForItemType($itemtype); + +$svg_colors = Array('red'=>'#ffa0a0', 'green'=>'#a0ffa0', 'yellow'=>'#ffdd80', 'blue'=>'#a0a0ff'); + +function svg_circle($color, $size=4) { + global $svg_colors; + if (array_key_exists($color, $svg_colors)) { $color = $svg_colors[$color]; } + $r = (int)$size; $cx = $r+1; $cy = $r+1; + $svg = ''; + $svg .= ""; + $svg .= ''; + return $svg; +} + +function svg_pie_chart($values, $size=16) { + global $svg_colors; + $color_names = Array('blue', 'red', 'green', 'yellow'); $color_idx = 0; + $total = 0.0; foreach ($values as $v) { $total += $v; } + $r = (int)$size; $cx = $r+1; $cy = $r+1; $rad = 2*pi()/$total; $old_a = 0; + $svg = ''; + foreach ($values as $a) { + $color = $svg_colors[$color_names[$color_idx++]]; + if ($a == $total) { + $svg .= ""; + } elseif ($a > 0) { + $x1 = $cx + $r * cos(-$old_a * $rad); + $y1 = $cy + $r * sin(-$old_a * $rad); + $x2 = $cx + $r * cos(-($old_a + $a) * $rad); + $y2 = $cy + $r * sin(-($old_a + $a) * $rad); + $big = ($a > ($total/2)) ? '1' : '0'; + $svg .= ""; + } + $old_a += $a; + } + $svg .= ''; + return $svg; +} + +function svg_bar($values, $width=100, $height=5) { + global $svg_colors; + $color_names = Array('blue', 'red', 'green', 'yellow'); $color_idx = 0; + $total = 0.0; foreach ($values as $v) { $total += $v; } + $svg = ""; + $x = 0; + foreach ($values as $v) { + $color = $svg_colors[$color_names[$color_idx++]]; + $w = round(($width*$v)/$total); + if ($w > 0) { + $svg .= ""; + $x += $w; + } + } + $svg .= ''; + return $svg; +} + +// echo "\nATTENTION : ce rapport est en cours de refonte, merci de ne pas tenir compte des données affichées ci-dessous.

"; + +//echo "\nOrdinateurs par implantation

"; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo "\n"; + +$grand_serveurs_wheezy = 0; $grand_serveurs_squeeze = 0; $grand_serveurs_autres = 0; +$grand_virtuels_wheezy = 0; $grand_virtuels_squeeze = 0; $grand_virtuels_autres = 0; +// récupération de la liste des régions +$query = "SELECT id FROM glpi_entities WHERE (id=0 OR entities_id=0)"; +$query .= " ".getEntitiesRestrictRequest("AND", "glpi_entities")." ORDER BY name"; +$region_result = $DB->query($query); +// parcours des régions +while ($region_data = $DB->fetch_assoc($region_result)) { + $region_id = $region_data['id']; + if ($region_id != 0) { + $region_name = getTreeLeafValueName("glpi_entities", $region_id); + } else { + $region_name = "AUF"; + } + $table_lines = Array(); + $region_serveurs_wheezy = 0; $region_serveurs_squeeze = 0; $region_serveurs_autres = 0; + $region_virtuels_wheezy = 0; $region_virtuels_squeeze = 0; $region_virtuels_autres = 0; + + // récupération de la liste des implantations + $query = "SELECT id,level FROM glpi_entities WHERE "; + if ($region_id != 0) { + $query .= getRealQueryForTreeItem("glpi_entities", $region_id, "id"); + } else { + $query .= "id=0"; + } + $query .= " ".getEntitiesRestrictRequest("AND", "glpi_entities")." ORDER BY name"; + $implant_result = $DB->query($query); + // parcours des implantations + while ($implant_data = $DB->fetch_assoc($implant_result)) { + $implant_id = $implant_data['id']; + if ($implant_id != 0) { + $implant_name = getTreeLeafValueName("glpi_entities", $implant_id); + } else { + $implant_name = "(non classé)"; + } + + // récupération de la liste des systèmes de l'implantation + $nb_serveurs_wheezy = 0; $nb_serveurs_squeeze = 0; $nb_serveurs_autres = 0; + $nb_virtuels_wheezy = 0; $nb_virtuels_squeeze = 0; $nb_virtuels_autres = 0; + $query = "SELECT s.completename AS sname, o.name AS oname, + ac.est_virtuel AS virtuel, + acc.name AS categorie, acu.name AS utilisation + FROM `$table_item` c + LEFT JOIN glpi_states s ON (c.states_id = s.id) + LEFT JOIN glpi_plugin_auf_computers ac ON (c.id = ac.id) + LEFT JOIN glpi_plugin_auf_categories acc ON (ac.auf_categories_id = acc.id) + LEFT JOIN glpi_plugin_auf_utilisations acu ON (ac.auf_utilisations_id = acu.id) + LEFT JOIN glpi_operatingsystems o ON (c.operatingsystems_id = o.id) + WHERE c.is_deleted = '0' AND c.is_template = '0' + AND o.name LIKE 'Debian %' + AND c.entities_id = '".$implant_id."'"; + $result = $DB->query($query); + while ($data=$DB->fetch_assoc($result)) { + // on ne compte pas les sorties d'inventaire + if (preg_match("/^sortie/i", $data['sname'])) { + continue; + } + // serveurs virtuels + if ($data['virtuel']) { + if (preg_match("/^Debian( GNU\/Linux)? 7/", $data['oname'])) { + $nb_virtuels_wheezy++; + } elseif (preg_match("/^Debian( GNU\/Linux)? 6/", $data['oname'])) { + $nb_virtuels_squeeze++; + } else { + $nb_virtuels_autres++; + } + } + // serveurs physiques + elseif (preg_match("/^infra/i", $data['categorie'])) { + if (preg_match("/^production/i", $data['utilisation']) && + !preg_match("/panne/i", $data['sname'])) { + if (preg_match("/^Debian( GNU\/Linux)? 7/", $data['oname'])) { + $nb_serveurs_wheezy++; + } elseif (preg_match("/^Debian( GNU\/Linux)? 6/", $data['oname'])) { + $nb_serveurs_squeeze++; + } else { + $nb_serveurs_autres++; + } + } + } + // autres + else { + // on ne compte pas les postes clients, que les serveurs + } + } // systèmes dans l'implantation + + $total_serveurs = $nb_serveurs_wheezy + $nb_serveurs_squeeze + $nb_serveurs_autres; + $total_virtuels = $nb_virtuels_wheezy + $nb_virtuels_squeeze + $nb_virtuels_autres; + if (($total_serveurs + $total_virtuels) > 0) { + $spaces = ""; + for ($i=1;$i<$implant_data['level'];$i++) { $spaces .= " "; } + $line = ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= "\n"; + $table_lines[] = $line; + } + // total régional + $region_serveurs_autres += $nb_serveurs_autres; + $region_serveurs_squeeze += $nb_serveurs_squeeze; + $region_serveurs_wheezy += $nb_serveurs_wheezy; + $region_virtuels_autres += $nb_virtuels_autres; + $region_virtuels_squeeze += $nb_virtuels_squeeze; + $region_virtuels_wheezy += $nb_virtuels_wheezy; + #$table_lines[] = ""; + } // fin des implantations de la région + + $total_serveurs = $region_serveurs_wheezy + $region_serveurs_squeeze + $region_serveurs_autres; + $total_virtuels = $region_virtuels_wheezy + $region_virtuels_squeeze + $region_virtuels_autres; + if (($total_serveurs + $total_virtuels) > 0) { + $line = ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= ""; + $line .= "\n"; + $table_lines[] = $line; + } + + # TODO: revoir ce pie-chart + $region_name = svg_pie_chart(Array( + $region_serveurs_autres + $region_virtuels_autres, + $region_serveurs_squeeze + $region_virtuels_squeeze, + $region_serveurs_wheezy + $region_virtuels_wheezy, + ), 16) . $region_name; + $table_lines[0] = str_replace("", "", $table_lines[0]); + if ($region_id != 0) { + echo "\n"; + } + echo implode("\n", $table_lines); + + // total général + $grand_serveurs_autres += $region_serveurs_autres; + $grand_serveurs_squeeze += $region_serveurs_squeeze; + $grand_serveurs_wheezy += $region_serveurs_wheezy; + $grand_virtuels_autres += $region_virtuels_autres; + $grand_virtuels_squeeze += $region_virtuels_squeeze; + $grand_virtuels_wheezy += $region_virtuels_wheezy; +} // fin des régions + +#echo ""; + +$total_serveurs = $grand_serveurs_wheezy + $grand_serveurs_squeeze + $grand_serveurs_autres; +$total_virtuels = $grand_virtuels_wheezy + $grand_virtuels_squeeze + $grand_virtuels_autres; +$line = ""; +$line .= ""; +$line .= ""; +$line .= ""; +$line .= ""; +$line .= ""; +$line .= ""; +$line .= ""; +$line .= ""; +$line .= ""; +echo "\n"; +echo $line; + +echo "
ImplantationServeurs physiquesServeurs virtuels
Autres ".svg_circle('blue', 3)."Debian 6 ".svg_circle('red', 3)."Debian 7 ".svg_circle('green', 3)."ProgressionAutres ".svg_circle('blue', 3)."Debian 6 ".svg_circle('red', 3)."Debian 7 ".svg_circle('green', 3)."Progression
$spaces$implant_name$nb_serveurs_autres$nb_serveurs_squeeze$nb_serveurs_wheezy"; + $line .= svg_bar(Array($nb_serveurs_autres, $nb_serveurs_squeeze, $nb_serveurs_wheezy), $svg_bar_width, $svg_bar_height); + $line .= round((100*$nb_serveurs_wheezy)/$total_serveurs)."%$nb_virtuels_autres$nb_virtuels_squeeze$nb_virtuels_wheezy"; + $line .= svg_bar(Array($nb_virtuels_autres, $nb_virtuels_squeeze, $nb_virtuels_wheezy), $svg_bar_width, $svg_bar_height); + $line .= round((100*$nb_virtuels_wheezy)/$total_virtuels)."%
".$implant_name."
Sous-total$region_serveurs_autres$region_serveurs_squeeze$region_serveurs_wheezy"; + $line .= svg_bar(Array($region_serveurs_autres, $region_serveurs_squeeze, $region_serveurs_wheezy), $svg_bar_width, $svg_bar_height); + $line .= round((100*$region_serveurs_wheezy)/$total_serveurs)."%$region_virtuels_autres$region_virtuels_squeeze$region_virtuels_wheezy"; + $line .= svg_bar(Array($region_virtuels_autres, $region_virtuels_squeeze, $region_virtuels_wheezy), $svg_bar_width, $svg_bar_height); + $line .= round((100*$region_virtuels_wheezy)/$total_virtuels)."%
$region_name
 
"; +$line .= svg_pie_chart(Array( + $grand_serveurs_autres + $grand_virtuels_autres, + $grand_serveurs_squeeze + $grand_virtuels_squeeze, + $grand_serveurs_wheezy + $grand_virtuels_wheezy, +), 16); +$line .= "TOTAL GÉNÉRAL$grand_serveurs_autres$grand_serveurs_squeeze$grand_serveurs_wheezy"; +$line .= svg_bar(Array($grand_serveurs_autres, $grand_serveurs_squeeze, $grand_serveurs_wheezy), $svg_bar_width, $svg_bar_height); +$line .= round((100*$grand_serveurs_wheezy)/$total_serveurs)."%$grand_virtuels_autres$grand_virtuels_squeeze$grand_virtuels_wheezy"; +$line .= svg_bar(Array($grand_virtuels_autres, $grand_virtuels_squeeze, $grand_virtuels_wheezy), $svg_bar_width, $svg_bar_height); +$line .= round((100*$grand_virtuels_wheezy)/$total_virtuels)."%
"; + +echo "

Remarques :

"; + +Html::footer(); +?> diff --git a/glpi-plugin-auf/plugin/rapport.migrationubuntu.php b/glpi-plugin-auf/plugin/rapport.migrationubuntu.php index f410047..f28b381 100644 --- a/glpi-plugin-auf/plugin/rapport.migrationubuntu.php +++ b/glpi-plugin-auf/plugin/rapport.migrationubuntu.php @@ -12,11 +12,10 @@ Session::checkRight("reports", "r"); Session::checkRight("computer", "r"); #Html::header(Report::getTypeName(2), $_SERVER['PHP_SELF'], "utils", "report"); -Html::header("Suivi de la migration vers Ubuntu 12.04.", $_SERVER['PHP_SELF'], "utils", "report"); +Html::header("Progression de la migration vers Ubuntu 12.04.", $_SERVER['PHP_SELF'], "utils", "report"); Report::title(); -#echo "\n

Suivi de la migration vers Ubuntu 12.04



"; -#echo "

Les données du rapport de migration Ubuntu seront disponibles à partir du jeudi 24 avril 2014.
En attendant vous pouvez déjà consulter les rapports sur le parc machine et sur les systèmes d'exploitation.

"; +echo "\n

Progression de la migration vers Ubuntu 12.04 (Precise)

"; $computer = new Computer(); @@ -137,7 +136,9 @@ while ($region_data = $DB->fetch_assoc($region_result)) { LEFT JOIN glpi_plugin_auf_categories acc ON (ac.auf_categories_id = acc.id) LEFT JOIN glpi_plugin_auf_utilisations acu ON (ac.auf_utilisations_id = acu.id) LEFT JOIN glpi_operatingsystems o ON (c.operatingsystems_id = o.id) - WHERE c.is_deleted = '0' AND c.is_template = '0' AND ac.est_virtuel IS FALSE + WHERE c.is_deleted = '0' AND c.is_template = '0' + AND ac.est_virtuel IS FALSE + AND o.name LIKE 'Ubuntu %' AND c.entities_id = '".$implant_id."'"; $result = $DB->query($query); while ($data=$DB->fetch_assoc($result)) { @@ -253,7 +254,13 @@ while ($region_data = $DB->fetch_assoc($region_result)) { $total_internes = $grand_internes_1204 + $grand_internes_1004 + $grand_internes_autres; $total_publics += $grand_publics_1204 + $grand_publics_1004 + $grand_publics_autres; -$line = "Total général"; +$line = ""; +$line .= svg_pie_chart(Array( + $grand_internes_autres + $grand_publics_autres, + $grand_internes_1004 + $grand_publics_1004, + $grand_internes_1204 + $grand_publics_1204, +), 16); +$line .= "TOTAL GÉNÉRAL"; $line .= "$grand_internes_autres"; $line .= "$grand_internes_1004"; $line .= "$grand_internes_1204"; @@ -272,5 +279,13 @@ echo $line; echo ""; +echo "

Remarques :

"; + Html::footer(); ?> diff --git a/glpi-plugin-auf/plugin/setup.php b/glpi-plugin-auf/plugin/setup.php index 2537022..e20c0d8 100644 --- a/glpi-plugin-auf/plugin/setup.php +++ b/glpi-plugin-auf/plugin/setup.php @@ -30,7 +30,8 @@ function plugin_init_auf() { if (isset($_SESSION["glpiname"])) { $report_list = array(); if (Session::haveRight("computer", "r")) { - $report_list["rapport.migrationubuntu.php"] = "Suivi de la migration vers Ubuntu 12.04"; + $report_list["rapport.migrationubuntu.php"] = "Progression de la migration vers Ubuntu 12.04 (Precise)"; + $report_list["rapport.migrationdebian.php"] = "Progression de la migration vers Debian 7 (Wheezy)"; $report_list["report.operatingsystems.php"] = "Systèmes d'exploitation par implantation"; $report_list["report.computers.php"] = "Ordinateurs par implantation"; // $report_list["report.wip.php"] = 'WIP (rapport en cours de développement)'; -- 1.7.10.4