Bonjour,

C'est un sujet connexe au problème soulevé par Xavier ("Comportement de la gestion des prises réseaux").

Dans la version actuelle du trunk (0.84), nous ne propageons pas les informations entre deux ports connectés : si on modifie la prise réseau d'un PC, le port du switch en vis-à-vis n'est pas modifié. Cela avait été désactivé pour facilité le débuggage des ports réseaux en cours de refonte. Nous pouvons le rétablir. Mais à la réflexion, cette duplication des informations peut être très lourde à gérer (cf. cas soulevé par Xavier), surtout si on duplique également les informations internet. De plus, elle n'a pas forcément de sens. Par exemple, entre nos bâtiments, les fibres passent par une armoire de brassage hors de notre contrôle et les noms des connecteurs de fibres sont ceux imposés par le fournisseur extérieur. Donc, deux ports de switchs reliés entre eux par une telle fibre ont nécessairement des NetPoint différents.

L'un des intérêts de cette duplication est de permettre une recherche dans la base de données. L'utilisation du moteur de recherche "global" introduit dans la 0.84 nous permettra de trouver l'une des extrémité branchée à ce NetPoint. Il suffira de suivre le "fil" pour retrouver l'autre bout.

Le second intérêt de cette duplication est de permettre une visualisation directe de l'information lorsque l'on consulte la liste des ports d'un équipement réseau ou autre (PC, téléphone ...). Pour ce second cas, je propose le patch ci-joint qui vise à afficher, pour un port Ethernet donné, les informations du port en vis-à-vis, s'il est connecté.

Nous pourrions envisager une option de configuration pour l'utilsateur afin de désactiver ce double affichage et alléger la page de rendu des ports des switchs.

Damien
PS : désolé Xavier, mais je n'ai pas de réponse à te fournir pour ton problème avec la 0.83.
Index: inc/networkportethernet.class.php
===================================================================
--- inc/networkportethernet.class.php	(revision 18911)
+++ inc/networkportethernet.class.php	(working copy)
@@ -97,64 +97,79 @@
                                                      HTMLTable_SuperHeader $super,
                                                      $options=array()) {
 
-      DeviceNetworkCard::getHTMLTableHeader('NetworkPortEthernet', $group, $super);
-      $group->addHeader('MAC', __('MAC'), $super);
-      $group->addHeader('speed', __('Ethernet port speed'), $super);
-      $group->addHeader('type', __('Ethernet port type'), $super);
-      NetworkPort_Vlan::getHTMLTableHeader('NetworkPort', $group, $super);
-      Netpoint::getHTMLTableHeader('NetworkPortEthernet', $group, $super);
-      $group->addHeader('Outlet', __('Network outlet'), $super);
       $header = $group->addHeader('Connected', __('Connected to'), $super);
+      DeviceNetworkCard::getHTMLTableHeader('NetworkPortEthernet', $group, $super, $header);
+      $group->addHeader('MAC', __('MAC'), $super, $header);
+      $group->addHeader('speed', __('Ethernet port speed'), $super, $header);
+      $group->addHeader('type', __('Ethernet port type'), $super, $header);
+      NetworkPort_Vlan::getHTMLTableHeader('NetworkPort', $group, $super, $header);
+      Netpoint::getHTMLTableHeader('NetworkPortEthernet', $group, $super, $header);
+      $group->addHeader('Outlet', __('Network outlet'), $super, $header);
 
       return $header;
 
   }
 
 
-  /**
-   * @see inc/NetworkPortInstantiation::getInstantiationHTMLTable_()
-  **/
-   function getInstantiationHTMLTable_(NetworkPort $netport, CommonDBTM $item,
-                                       HTMLTable_Row $row, $canedit, $options=array()) {
+   /**
+    * 
+   **/
+   private function getEthernetInstantiationHTMLTable_(NetworkPort $netport, HTMLTable_Row $row,
+                                                       HTMLTable_Cell $father, $canedit,
+                                                       $options=array()) {
 
-      DeviceNetworkCard::getHTMLTableCellsForItem($row, $this, NULL, $options);
+      DeviceNetworkCard::getHTMLTableCellsForItem($row, $this, $father, $options);
 
-      $row->addCell($row->getHeaderByName('Instantiation', 'MAC'), $netport->fields["mac"]);
+      $row->addCell($row->getHeaderByName('Instantiation', 'MAC'),
+                    $netport->fields["mac"], $father);
 
       if (!empty($this->fields['speed'])) {
-         $row->addCell($row->getHeaderByName('Instantiation', 'speed'), $this->fields["speed"]);
+         $row->addCell($row->getHeaderByName('Instantiation', 'speed'),
+                       $this->fields["speed"], $father);
       }
 
       if (!empty($this->fields['type'])) {
-         $row->addCell($row->getHeaderByName('Instantiation', 'type'), $this->fields["type"]);
+         $row->addCell($row->getHeaderByName('Instantiation', 'type'),
+                       $this->fields["type"], $father);
       }
 
-      NetworkPort_Vlan::getHTMLTableCellsForItem($row, $netport, NULL, $options);
+      NetworkPort_Vlan::getHTMLTableCellsForItem($row, $netport, $father, $options);
 
-      Netpoint::getHTMLTableCellsForItem($row, $this, NULL, $options);
+      Netpoint::getHTMLTableCellsForItem($row, $this, $father, $options);
 
+   }
+
+  /**
+   * @see inc/NetworkPortInstantiation::getInstantiationHTMLTable_()
+  **/
+   function getInstantiationHTMLTable_(NetworkPort $netport, CommonDBTM $item,
+                                       HTMLTable_Row $row, $canedit, $options=array()) {
+
       $connect_cell_value = array(array('function'   => array(__CLASS__, 'showConnection'),
                                         'parameters' => array(clone $netport)));
 
       $oppositePort = new NetworkPort();
       if ($oppositePort->getFromDB($netport->getContact($netport->getID()))) {
-         if ((NetworkName::countForItem($netport) > 0)
-             && (NetworkName::countForItem($netport) > 0)) {
-            $cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
-                                  __('Local network port'));
-            $opposite_cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
-                                           $connect_cell_value);
-            NetworkName::getHTMLTableCellsForItem($row, $oppositePort, $opposite_cell, $options);
-         } else {
-            $cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
-                                  $connect_cell_value);
-            NetworkName::getHTMLTableCellsForItem($row, $oppositePort, $cell, $options);
+         $cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
+                               __('Local network port'));
+
+         $opposite_cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
+                                        $connect_cell_value);
+         NetworkName::getHTMLTableCellsForItem($row, $oppositePort, $opposite_cell, $options);
+         $oppositeEthernetPort = $oppositePort->getInstantiation();
+         if ($oppositeEthernetPort !== false) {
+            $oppositeEthernetPort->getEthernetInstantiationHTMLTable_($oppositePort, $row,
+                                                                      $opposite_cell, $canedit,
+                                                                      $options);
          }
       } else {
          $cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
                                $connect_cell_value);
       }
 
+      $this->getEthernetInstantiationHTMLTable_($netport, $row, $cell,
+                                                $canedit, $options);
+
       return $cell;
 
    }
_______________________________________________
Glpi-dev mailing list
Glpi-dev@gna.org
https://mail.gna.org/listinfo/glpi-dev

Reply via email to