#================================================== # 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%'); }