#==================================================
# constitution et affichage de la page html
#==================================================
if ( $strat_pref eq 'avec' ) { $select_detail_strat = 'selected'; }
if ( $aff_pref eq 'toutes' ) { $select_nb_sauve = 'selected'; }
if ( $aff_pref eq 'archives' ) { $select_arch = 'selected'; }
if ( $err_pref eq 'errabs' ) { $select_aff_sauve1 = 'selected'};
if ( $err_pref eq 'erreur' ) { $select_aff_sauve2 = 'selected'};
if ( $err_pref eq 'absence' ) { $select_aff_sauve3 = 'selected'};
my $vol_sauve_fs_mo = $row[19] ? $row[19] : 0;
my $vol_sauve_bd_mo = $row[20] ? $row[20] : 0;
my $vol_sauve_fs_exter_mo = $row[21] ? $row[21] : 0;
my $vol_sauve_bd_exter_mo = $row[22] ? $row[22] : 0;
my $vol_sauve_fs_mo_pre = $row[23] ? $row[23] : 0;
my $vol_sauve_bd_mo_pre = $row[24] ? $row[24] : 0;
my $vol_sauve_fs_exter_mo_pre = $row[25] ? $row[25] : 0;
my $vol_sauve_bd_exter_mo_pre = $row[26] ? $row[26] : 0;
my $vol_sauve_fs_mo_tot = $vol_sauve_fs_mo + $vol_sauve_fs_exter_mo;
my $vol_sauve_bd_mo_tot = $vol_sauve_bd_mo + $vol_sauve_bd_exter_mo;
my $vol_sauve_fs_mo_pre_tot = $vol_sauve_fs_mo_pre + $vol_sauve_fs_exter_mo_pre;
my $vol_sauve_bd_mo_pre_tot = $vol_sauve_bd_mo_pre + $vol_sauve_bd_exter_mo_pre;
#### HTML header
$r->no_cache(1);
$r->content_type("text/html");
$r->header_out("Pragma", "no-cache");
$r->send_http_header;
if ( $droit_visu ) {
$template->assign(TITLE => "Serveur $serveur_requis : etat des sauvegardes ",
TARGET => "_self");
$template->parse(MAIN => "header" );
$template->print();
my $SaisiePrev = '';
if ( $saisie_previsionnel ) {
$SaisiePrev = createPrevWindow($id_serv);
}
my $ServerSnooze = '';
my $refresh = '';
if ( $droit_modif ) {
$ServerSnooze = createSnoozeWindow($id_serv,$sauvegardes);
$refresh = RefreshParent();
}
$template->assign(SERVEUR => "$serveur_requis",
WIDTH => "70",
ALIGN => "CENTER",
APPLI => "$row[1]",
UTILISATION => $UTILISATION,
ENTITE => "$entite",
CATA_OUTIL => "$cata_outil",
CATALOGUE => "$cata",
TAUX => "$taux %",
HOSTNAME => "$row[5]",
ALIAS => "$row[4]",
TYPE => "$row[6]",
ENTITE_EXPL => $ENTITE_EXPL,
PEIT => $PEIT,
SOX => $SOX,
TDSI => $TDSI,
DIFF_SERVICE => $DIFF_SERVICE,
VOL_SAUVE_FS_MO_TOT => "$vol_sauve_fs_mo_tot",
VOL_SAUVE_BD_MO_TOT => "$vol_sauve_bd_mo_tot",
VOL_SAUVE_FS_MO_PRE_TOT => "$vol_sauve_fs_mo_pre_tot",
VOL_SAUVE_BD_MO_PRE_TOT => "$vol_sauve_bd_mo_pre_tot",
SERVER_SNOOZE => "$ServerSnooze",
REFRESH => "$refresh",
SAISIE_PREV => "$SaisiePrev",
SELECT_DETAIL_STRAT => "$select_detail_strat",
SELECT_NB_SAUVE => "$select_nb_sauve",
SELECT_ARCH => "$select_arch",
SELECT_AFF_SAUVE1 => "$select_aff_sauve1",
SELECT_AFF_SAUVE2 => "$select_aff_sauve2",
SELECT_AFF_SAUVE3 => "$select_aff_sauve3",
CHECK_HELP1 => "$check_help1",
CHECK_HELP2 => "$check_help2",
COLORS_FORM => "$colors_form");
$template->parse(MAIN => "detail_serveur");
$template->print();
#### HTML body
# requete sur table divers jobs
$req3->execute;
my $Still_a_row=1;
@row = $req3->fetchrow_array;
if (@row) {
my $prev_type_job = $row[0];
my $l_status = $JobStatus{$row[1]};
my $debut = get_french_date($row[2]);
my $attente = interval2seconds($row[3]);
my $duree_totale = interval2seconds($row[4]);
my $duree_reelle = ($duree_totale - $attente) ? ($duree_totale - $attente) : 1;
my $volume_mo = $row[5] ? $row[5] : 0;
my $debit = sprintf("%.2f", $volume_mo/$duree_reelle );
$attente = seconds2hours($attente);
$duree_totale = seconds2hours($duree_totale);
$duree_reelle = seconds2hours($duree_reelle);
my $count = push my @array, [$l_status,$debut,$duree_totale,$attente,$duree_reelle,$debit,$row[5],$row[6]];
while ($Still_a_row) {
@row = $req3->fetchrow_array;
my $type_job = '';
if ( @row ) {
$type_job = $row[0];
}
else {
# on a dépassé le dernier enregistrement |=> on sortira de la boucle
# à la prochaine itération
# de plus, $prev_type_job devenant différent de $type_job, on provoque
# l'affichage du dernier élément
$Still_a_row=0;
}
if ( $type_job eq $prev_type_job ) {
# type de job inchangé, on stocke ...
$l_status = $JobStatus{$row[1]};
$debut = get_french_date($row[2]);
$attente = interval2seconds($row[3]);
$duree_totale = interval2seconds($row[4]);
$duree_reelle = ($duree_totale - $attente) ? ($duree_totale - $attente) : 1;
$volume_mo = $row[5] ? $row[5] : 1;
$debit = sprintf("%.2f", $volume_mo/$duree_reelle );
$attente = seconds2hours($attente);
$duree_totale = seconds2hours($duree_totale);
$duree_reelle = seconds2hours($duree_reelle);
$count = push @array, [$l_status, $debut,$duree_totale,$attente,$duree_reelle,$debit,$row[5],$row[6]];
}
else {
# type de job changé, on affiche ...
$template->assign(TITLE => "$prev_type_job",
DETAILSTRAT => "",
CLASS => "active",
BGCOLOR => "$infsvgApache::TITLE_color" ,
WIDTH => "60",
ALIGN => "LEFT" );
$template->parse(MAIN => "rub_header");
$template->print();
my $table=new HTML::Table(-rows => 0,
-cols => 9,
-width => '100%'
);
$table->setClass('black');
$table->setCellSpacing(1);
$table->setCellPadding(1);
$table->addRow("Etat","","Début","Durée totale","Attente","Durée réelle","Débit (Mo/s)","Volume (Mo)","Objets");
$table->setRowBGColor(1,"$infsvgApache::HEAD_color");
my $k=0;
for ($k=0;$k< $count;$k++) {
if ( $array[$k][3] eq 0 ) { $array[$k][3]='...';}
if ( $array[$k][4] eq 0 ) { $array[$k][4]='...';}
$table->addRow("$array[$k][0]","","$array[$k][1]","$array[$k][2]","$array[$k][3]","$array[$k][4]","$array[$k][5]","$array[$k][6]","$array[$k][7]");
STATUS : {
if ( $array[$k][0] =~/EN_COURS|SUSPENDU/ ) {
$table->setRowBGColor($k+2,"$infsvgApache::EN_COURS_color");
last STATUS;
}
if ( $array[$k][0] =~/ERREUR|ABSENTE|ARRET/ ) {
if ( $array[$k][0] =~/DEMANDE/ ) {
$table->setRowBGColor($k+2,"$infsvgApache::WARNING_color");
}
else {
$table->setRowBGColor($k+2,"$infsvgApache::ALARME_color");
}
last STATUS;
}
$table->setRowBGColor($k+2,"$infsvgApache::OK_color");
}
}
$table->setColWidth(1,'22%');
$table->setColWidth(2,'8%');
$table->setColWidth(3,'22%');
$table->setColWidth(4,'8%');
$table->setColWidth(5,'8%');
$table->setColWidth(6,'8%');
$table->setColWidth(7,'8%');
$table->setColWidth(8,'8%');
$table->setColWidth(9,'8%');
$table->print;
$template->parse(MAIN => "rub_footer");
$template->print();
undef $table;
undef @array;
# et on boucle sur le nouveau type de job
$prev_type_job = $type_job;
$l_status = $JobStatus{$row[1]};
$debut = get_french_date($row[2]);
$attente = interval2seconds($row[3]);
$duree_totale = interval2seconds($row[4]);
$duree_reelle = ($duree_totale - $attente) ? ($duree_totale - $attente) : 1;
$volume_mo = $row[5] ? $row[5] : 0;
$debit = sprintf("%.2f", $volume_mo/$duree_reelle );
$attente = seconds2hours($attente);
$duree_totale = seconds2hours($duree_totale);
$duree_reelle = seconds2hours($duree_reelle);
$count = push my @array, [$l_status, $debut,$duree_totale,$attente,$duree_reelle,$debit,$row[5],$row[6]];
}
}
}
# requete sur tables strategies et sauvegardes
$req2->execute;
$Still_a_row=1;
@row = $req2->fetchrow_array;
if (@row) {
# si au moins un élément
if ( $row[14] ) {
$class_activ = 'active';
}
else{
$class_activ = 'inactive';
}
my $prev_class_activ = $class_activ;
my $Prevperiodicite = "";
if ( $row[29] ) {
# si periode_ctrl non nul, on affiche periode_ctrl qui est
# utilisé préférentiellement à periode pour la maj du statut
$Prevperiodicite=infsvgApache::give_time_from_period($row[29]);
}
else {
$Prevperiodicite=infsvgApache::give_time_from_period($row[12]);
}
my $PrevInfoStrat=infsvgApache::strategie_info($row[14],$row[15],$row[16],$row[17],$row[18]);
my $Prevclasse=infsvgApache::give_class_table($row[9],$row[10],$row[11]);
my $prev_id_jeu1 = $row[8];
my $prev_id_jeu2 = $row[21];
my $prev_id_strat = $row[13];
my $prev_pre_trait = $row[22];
my $prev_post_trait = $row[23];
my $prev_reprise = $row[24];
my $prev_reprise_t = $row[25];
my $PrevModiForm = ' ';
#1 pour tina, 2 pour NBU, 3 MVS
METHODE : {
if ( $methodebis == 1 ){
$PrevStrategie=join (' ',"
$row[0]","$row[1]","$row[2]"," | Module $row[20] |
");
$cata_outil = 'Catalogue Tina';
last METHODE;
}
if ( $methodebis == 2) {
$Prevclasse=infsvgApache::give_class_table_nbu($row[9]);
$PrevStrategie=join (' ',"$row[0]","$row[2]"," | Schedule $row[20] |
");
$cata_outil = 'Master NetBackUp';
last METHODE;
}
if ( $methodebis == 3 ) {
$PrevStrategie=join (' ',"$row[0]","$row[2]"," | sauvegarde $row[20] |
");
$cata_outil = 'Site MVS/VMS';
}
}
# my $PrevStrategie=join (' ',"$row[0]","$row[1]","$row[2]"," | module $row[20] |
");
my $l_status = $JobStatus{$row[3]};
my $debut = get_french_date($row[4]);
my $attente = interval2seconds($row[19]);
my $alarme_attente = 0;
if ($attente > 3600) { $alarme_attente = 1; }
my $duree_totale = interval2seconds($row[5]);
my $duree_reelle = ($duree_totale - $attente) ? ($duree_totale - $attente) : 1;
my $volume_mo = $row[6] ? $row[6] : 1;
my $debit = sprintf("%.2f", $volume_mo/$duree_reelle );
my $alarme_debit = 0;
my $sauvegarde_oid = $row[26];
my $sauvegarde_id_comment = $row[27];
my $id_svg = $row[28];
if (($duree_reelle > 1800) and ($debit*100 < 50 )) { $alarme_debit = 1; }
$attente = seconds2hours($attente);
$duree_totale = seconds2hours($duree_totale);
$duree_reelle = seconds2hours($duree_reelle);
my $count = push my @array, [$l_status,$debut,$duree_totale,$attente,$duree_reelle,$debit,$row[6],$row[7],$alarme_attente,$alarme_debit,$sauvegarde_oid,$sauvegarde_id_comment,$id_svg];
while ($Still_a_row) {
@row = $req2->fetchrow_array;
my $periodicite="";
my $Classe="";
my $Retention="";
my $id_jeu1=0;
my $id_jeu2=0;
my $id_strat = 0;
my $pre_trait = '';
my $post_trait = '';
my $reprise = 0;
my $reprise_t = '00:00';
my $Strategie="";
my $DetailStrat="";
my $InfoStrat="";
if (@row) {
# élément valide
if ( $row[29] ) {
# si periode_ctrl non nul, on affiche periode_ctrl qui est
# utilisé préférentiellement à periode pour la maj du statut
$periodicite=infsvgApache::give_time_from_period($row[29]);
}
else {
$periodicite=infsvgApache::give_time_from_period($row[12]);
}
$InfoStrat=infsvgApache::strategie_info($row[14],$row[15],$row[16],$row[17],$row[18]);
$Classe=infsvgApache::give_class_table($row[9],$row[10],$row[11]);
$id_jeu1 = $row[8];
$id_jeu2 = $row[21];
$id_strat = $row[13];
$pre_trait = $row[22];
$post_trait = $row[23];
$reprise = $row[24];
$reprise_t = $row[25];
if ( $row[14] ) {
$class_activ='active';
}
else{
$class_activ='inactive';
}
METHODE : {
if ( $methodebis == 1) {
$Strategie=join (' ',"$row[0]","$row[1]","$row[2]"," | Module $row[20] |
");
last METHODE;
}
if ( $methodebis == 2 ) {
$Classe=infsvgApache::give_class_table_nbu($row[9]);
$Strategie=join (' ',"$row[0]","$row[2]"," | Schedule $row[20] |
");
last METHODE;
}
if ( $methodebis == 3 ) {
$Strategie=join (' ',"$row[0]","$row[2]"," | sauvegarde $row[20] |
");
}
}
}
# $Strategie=join (' ',"$row[0]","$row[1]","$row[2]"," | module $row[20] |
");
else {
# on a dépassé le dernier enregistrement |=> on sortira de la boucle
# à la prochaine itération
# de plus, $Strategie devenant différent de $PreStrategie, on provoque
# l'affichage du dernier élément
$Still_a_row=0;
}
if ( $Strategie eq $PrevStrategie ) {
# stratégie inchangée, on stocke les sauvegardes dans un tableau
$l_status = $JobStatus{$row[3]};
$debut = get_french_date($row[4]);
$attente = interval2seconds($row[19]);
$alarme_attente = 0;
if ($attente > 3600) { $alarme_attente = 1; }
$duree_totale = interval2seconds($row[5]);
$duree_reelle = ($duree_totale - $attente) ? ($duree_totale - $attente) : 1;
$volume_mo = $row[6] ? $row[6] : 0;
$sauvegarde_oid = $row[26];
$sauvegarde_id_comment = $row[27];
$id_svg = $row[28];
$debit = sprintf("%.2f", $volume_mo/$duree_reelle );
$alarme_debit = 0;
if (($duree_reelle > 1800) and ($debit*100 < 50 )) { $alarme_debit = 1; }
$attente = seconds2hours($attente);
$duree_totale = seconds2hours($duree_totale);
$duree_reelle = seconds2hours($duree_reelle);
$count = push @array, [$l_status,$debut,$duree_totale,$attente,$duree_reelle,$debit,$row[6],$row[7],$alarme_attente,$alarme_debit,$sauvegarde_oid,$sauvegarde_id_comment,$id_svg];
}
else {
# stratégie changée ! on affiche la stratégie et les sauvegardes associées
my $PrevDetailStrat = '';
my $PrevTraitement = '';
my $Prevretention = '';
if ( $strat_pref eq 'avec' ) {
$PrevTraitement = infsvgApache::give_trait_table($prev_pre_trait,$prev_post_trait,$prev_reprise,$prev_reprise_t);
my ($label1, $retention1) = $connDB->selectrow_array("SELECT label,retention FROM jeux_cartouches \
WHERE id_jeu='$prev_id_jeu1';");
my ($label2, $retention2) = $connDB->selectrow_array("SELECT label,retention FROM jeux_cartouches \
WHERE id_jeu='$prev_id_jeu2';");
$label2 ||= '';
$retention2 ||= '';
$retention1 =~s/day/jour/;
$retention2 =~s/day/jour/;
$Prevretention=infsvgApache::give_ret_table($label1,$retention1,$label2,$retention2);
if ( $droit_modif ) {
$PrevModiForm=createFormWindow($prev_id_strat);
}
if($methode >= 2 ) {
$PrevTraitement='';
if($methode == 3 ) {
$Prevclasse='';
}
}
$PrevDetailStrat = join(' ',"$Prevclasse",
"
$PrevTraitement",
"
$Prevretention",
"
$PrevInfoStrat",
"
$Prevperiodicite$PrevModiForm");
}
$template->assign(TITLE => "$PrevStrategie",
DETAILSTRAT => "$PrevDetailStrat",
CLASS => "$prev_class_activ",
BGCOLOR => "$infsvgApache::TITLE_color" ,
WIDTH => "60",
ALIGN => "LEFT" );
$template->parse(MAIN => "rub_header");
$template->print();
my $table=new HTML::Table(-rows => 0,
-cols => 9,
-width => '100%'
);
$table->setClass('black');
$table->setCellSpacing(1);
$table->setCellPadding(1);
if ( $methodebis == 3 ) {
$table->setCellPadding(0);
}
if ( $array[0][0] eq 'NON_INIT' ) {
$table->setWidth('100%');
$table->addRow("","
NON UTILISEE","","","");
$table->setRowBGColor(1,"$infsvgApache::HEAD_color");
}
else {
if ( $methodebis != 3 ) {
$table->addRow("Etat","Traitement","Début","Durée totale","Attente","Durée réelle","Débit (Mo/s)","Volume (Mo)","Objets");
}
else {
$table->addRow("Etat","Traitement","","Début","Durée totale","Attente","Durée réelle","Débit (Mo/s)","Volume (Mo)","Objets");
}
$table->setRowBGColor(1,"$infsvgApache::HEAD_color");
my $k=0;
for ($k=0;$k< $count;$k++) {
if ( $array[$k][3] eq 0 ) { $array[$k][3]='...';}
if ( $array[$k][4] eq 0 ) { $array[$k][4]='...';}
if ($array[$k][0] ne 'NON_INIT') {
# il peut arriver qu'un élément NON_INIT subsiste
# 1 jour ou 2 en même temps que des véritables sauvegardes
# il ne faut pas l'afficher...
if ( $methodebis != 3 ) {
$table->addRow("$array[$k][0]","","$array[$k][1]","$array[$k][2]","$array[$k][3]","$array[$k][4]","$array[$k][5]","$array[$k][6]","$array[$k][7]");
}
else {
my $medias_form ='';
if ( $array[$k][12] ) {
$medias_form = createMediaWindow("$array[$k][12]");
}
$table->addRow("$array[$k][0] ","","$medias_form","$array[$k][1]","$array[$k][2]","$array[$k][3]","$array[$k][4]","$array[$k][5]","$array[$k][6]","$array[$k][7]");
}
}
STATUS : {
if (($array[$k][0] eq 'EN_COURS') or ($array[$k][0] =~ /SUSPENDU/ )) {
$table->setRowBGColor($k+2,"#55DD55");
last STATUS;
}
if ( $array[$k][0] =~/ERREUR|ABSENTE|ARRET|ACQUITTE|EN_COURS PLUS DE 24H/ ) {
if ( $array[$k][0] =~/DEMANDE/ ) {
$table->setRowBGColor($k+2,"$infsvgApache::WARNING_color");
}
else {
$table->setRowBGColor($k+2,"$infsvgApache::ALARME_color");
}
if ( $array[$k][0] =~/ACQUITTE/ ) {
$table->setRowBGColor($k+2,"#FFFFFF");
}
my $CauseForm = '';
if ( $array[$k][11] ) {
# une cause d'erreur a été saisie sur cette sauvegarde
$CauseForm = createCauseWindow($prev_id_strat,"$array[$k][10]",$sauvegardes,'Visualiser');
if ( $droit_modif ) {
$CauseForm =createCauseWindow($prev_id_strat,"$array[$k][10]",$sauvegardes,'Modifier');
}
}
else {
# pas de cause
if ( $droit_modif ) {
$CauseForm = createCauseWindow($prev_id_strat,"$array[$k][10]",$sauvegardes,'Acquitter');
}
}
$table->setCell($k+2,2,"$CauseForm");
$table->setCellAlign($k+2,2,"CENTER");
last STATUS;
}
$table->setRowBGColor($k+2,"$infsvgApache::OK_color");
if ( $array[$k][8] ) {
# alarme_attente levé pour cette sauvegarde
$table->setCellBGColor( $k+2,5,"$infsvgApache::WITHOUT_color");
}
if ( $array[$k][9] ) {
# alarme_debit levé pour cette sauvegarde
$table->setCellBGColor( $k+2,7,"$infsvgApache::WITHOUT_color");
}
}
}
}
if ($methodebis != 3){
$table->setColWidth(1,'22%');
$table->setColWidth(2,'8%');
$table->setColWidth(3,'22%');
$table->setColWidth(4,'8%');
$table->setColWidth(5,'8%');
$table->setColWidth(6,'8%');
$table->setColWidth(7,'8%');
$table->setColWidth(8,'8%');
$table->setColWidth(9,'8%');
}