function importPorts($a_inventory, $items_id) { $networkPort = new NetworkPort(); $pfNetworkPort = new PluginFusioninventoryNetworkPort(); $networkports_id = 0; foreach ($a_inventory['networkport'] as $a_port) { $a_ports_DB = current($networkPort->find("`itemtype`='Printer'\n AND `items_id`='" . $items_id . "'\n AND `instantiation_type`='NetworkPortEthernet'\n AND `logical_number` = '" . $a_port['logical_number'] . "'", '', 1)); if (!isset($a_ports_DB['id'])) { // Add port $a_port['instantiation_type'] = 'NetworkPortEthernet'; $a_port['items_id'] = $items_id; $a_port['itemtype'] = 'Printer'; $networkports_id = $networkPort->add($a_port); unset($a_port['id']); $a_pfnetworkport_DB = current($pfNetworkPort->find("`networkports_id`='" . $networkports_id . "'", '', 1)); $a_port['id'] = $a_pfnetworkport_DB['id']; $pfNetworkPort->update($a_port); } else { // Update port $networkports_id = $a_ports_DB['id']; $a_port['id'] = $a_ports_DB['id']; $networkPort->update($a_port); unset($a_port['id']); // Check if pfnetworkport exist. $a_pfnetworkport_DB = current($pfNetworkPort->find("`networkports_id`='" . $networkports_id . "'", '', 1)); $a_port['networkports_id'] = $networkports_id; if (isset($a_pfnetworkport_DB['id'])) { $a_port['id'] = $a_pfnetworkport_DB['id']; $pfNetworkPort->update($a_port); } else { $a_port['networkports_id'] = $networkports_id; $pfNetworkPort->add($a_port); } } } }
function plugin_item_add_fusioninventory($parm) { switch (get_class($parm)) { case 'NetworkPort_NetworkPort': $networkPort = new NetworkPort(); $networkPort->getFromDB($parm->fields['networkports_id_1']); if ($networkPort->fields['itemtype'] == 'NetworkEquipment') { PluginFusioninventoryNetworkPortLog::addLogConnection("make", $parm->fields['networkports_id_1']); } else { $networkPort->getFromDB($parm->fields['networkports_id_2']); if ($networkPort->fields['itemtype'] == 'NetworkEquipment') { PluginFusioninventoryNetworkPortLog::addLogConnection("make", $parm->fields['networkports_id_2']); } } break; case 'NetworkPort': if ($parm->fields['itemtype'] == 'NetworkEquipment') { $pfNetworkPort = new PluginFusioninventoryNetworkPort(); $pfNetworkPort->add(array('networkports_id' => $parm->fields['id'])); } break; } return $parm; }
/** * @test */ public function Cisco2Switch() { global $DB; $DB->connect(); self::restore_database(); $a_lldp = array('ifdescr' => 'ge-0/0/1.0', 'logical_number' => '504', 'sysdescr' => 'Juniper Networks, Inc. ex2200-24t-4g , version 10.1R1.8 Build date: 2010-02-12 16:59:31 UTC ', 'model' => '', 'ip' => '', 'mac' => '2c:6b:f5:98:f9:70', 'name' => 'juniperswitch3'); $pfINetworkEquipmentLib = new PluginFusioninventoryInventoryNetworkEquipmentLib(); $networkEquipment = new NetworkEquipment(); $networkport = new NetworkPort(); $pfNetworkPort = new PluginFusioninventoryNetworkPort(); // Cisco switch $networkequipments_id = $networkEquipment->add(array('name' => 'cisco2', 'entities_id' => 0)); $networkports_id = $networkport->add(array('itemtype' => 'NetworkEquipment', 'items_id' => $networkequipments_id, 'entities_id' => 0)); // Another switch $networkequipments_other_id = $networkEquipment->add(array('name' => 'juniperswitch3', 'entities_id' => 0)); // Port ge-0/0/1.0 $networkports_other_id = $networkport->add(array('itemtype' => 'NetworkEquipment', 'items_id' => $networkequipments_other_id, 'entities_id' => 0, 'mac' => '2c:6b:f5:98:f9:70', 'logical_number' => 504)); $pfNetworkPort->add(array('networkports_id' => $networkports_other_id, 'ifdescr' => 'ge-0/0/1.0')); $pfINetworkEquipmentLib->importConnectionLLDP($a_lldp, $networkports_id); $a_portslinks = getAllDatasFromTable('glpi_networkports_networkports'); $this->assertEquals(1, count($a_portslinks), 'May have 1 connection between 2 network ports'); $a_networkports = getAllDatasFromTable('glpi_networkports'); $this->assertEquals(2, count($a_networkports), 'May have 2 network ports (' . print_r($a_networkports, TRUE) . ')'); $a_ref = array('id' => 1, 'networkports_id_1' => $networkports_id, 'networkports_id_2' => $networkports_other_id); $this->assertEquals($a_ref, current($a_portslinks), 'Link port'); }
function importPorts($a_inventory, $items_id) { $pfNetworkporttype = new PluginFusioninventoryNetworkporttype(); $networkPort = new NetworkPort(); $pfNetworkPort = new PluginFusioninventoryNetworkPort(); $networkports_id = 0; foreach ($a_inventory['networkport'] as $a_port) { $ifType = $a_port['iftype']; if ($pfNetworkporttype->isImportType($ifType) || isset($a_inventory['aggregate'][$a_port['logical_number']]) || $ifType == '') { $a_ports_DB = current($networkPort->find("`itemtype`='NetworkEquipment'\n AND `items_id`='" . $items_id . "'\n AND `logical_number` = '" . $a_port['logical_number'] . "'", '', 1)); if (!isset($a_ports_DB['id'])) { // Add port if (isset($a_inventory['aggregate']) && isset($a_inventory['aggregate'][$a_port['logical_number']])) { $a_port['instantiation_type'] = 'NetworkPortAggregate'; } else { $a_port['instantiation_type'] = 'NetworkPortEthernet'; } $a_port['items_id'] = $items_id; $a_port['itemtype'] = 'NetworkEquipment'; $networkports_id = $networkPort->add($a_port); unset($a_port['id']); $a_pfnetworkport_DB = current($pfNetworkPort->find("`networkports_id`='" . $networkports_id . "'", '', 1)); $a_port['id'] = $a_pfnetworkport_DB['id']; $a_port['lastup'] = date('Y-m-d H:i:s'); $pfNetworkPort->update($a_port); } else { // Update port $networkports_id = $a_ports_DB['id']; $a_port['id'] = $a_ports_DB['id']; $networkPort->update($a_port); unset($a_port['id']); // Check if pfnetworkport exist. $a_pfnetworkport_DB = current($pfNetworkPort->find("`networkports_id`='" . $networkports_id . "'", '', 1)); $a_port['networkports_id'] = $networkports_id; if (isset($a_pfnetworkport_DB['id'])) { $a_port['id'] = $a_pfnetworkport_DB['id']; if ($a_port['ifstatus'] == 0 && $a_pfnetworkport_DB['ifstatus'] == 1) { $a_port['lastup'] = date('Y-m-d H:i:s'); } $pfNetworkPort->update($a_port); } else { $a_port['networkports_id'] = $networkports_id; $a_port['lastup'] = date('Y-m-d H:i:s'); $pfNetworkPort->add($a_port); } } // Connections if (isset($a_inventory['connection-lldp'][$a_port['logical_number']])) { $this->importConnectionLLDP($a_inventory['connection-lldp'][$a_port['logical_number']], $networkports_id); } else { if (isset($a_inventory['connection-mac'][$a_port['logical_number']])) { $this->importConnectionMac($a_inventory['connection-mac'][$a_port['logical_number']], $networkports_id); } } // Vlan if (isset($a_inventory['vlans'][$a_port['logical_number']])) { $this->importPortVlan($a_inventory['vlans'][$a_port['logical_number']], $networkports_id); } // Aggegation if (isset($a_inventory['aggregate']) && isset($a_inventory['aggregate'][$a_port['logical_number']])) { $this->importPortAggregate($a_inventory['aggregate'][$a_port['logical_number']], $networkports_id, $items_id); } } else { // Delete the port $a_ports_DB = current($networkPort->find("`itemtype`='NetworkEquipment'\n AND `items_id`='" . $items_id . "'\n AND `logical_number` = '" . $a_port['logical_number'] . "'", '', 1)); if (count($a_ports_DB) > 0) { $networkPort->delete($a_ports_DB); } } } }