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