ich habe - speziell im 2. Szenario - meine Ausführungen noch etwas konkretisiert bzw. korrigiert, deshalb die Änderung meines Threads:
Hallo Jungs,
mir ist ein Fehler bei der Verbindung von Netzwerkgeräten aufgefallen.
Euer Konzept sieht ja bei Netzwerkverbindungen vor, die Verbindung von beiden Seiten herstellen zu können, sprich wenn ich einen Server-Port mit einem Switch-Port verbinden möchte, so kann ich dies entweder vom Server aus tun, oder vom Switch aus. Das ist grundsätzlich eine schöne Sache. Allerdings ist diese Verbindung eineindeutig (ein Server-Port kann nur mit einem Switch-Port verbunden werden und umgekehrt).
Verbindet man in i-doit einen Server-Port mit einem Switch-Port, so wird die Verbindung auf beiden Seiten ordnungsgemäß eingetragen. Ändert man die Verbindung auf der Gegenseite kommt es zu Fehlern:
Ausgangssituation:
Server01 >> Port01 wird verbunden mit Switch01 >> Port01
Änderungsszenarien:
1. Switch01 >> Port02 wird verbunden mit Server01 >> Port 01 => Am Switch wird nun auf beiden Ports eine Verbindung zu Server01 >> Port01 angezeigt; Am Server
wird angezeigt, dass nach wie vor eine Verbindung zu Switch01 >> Port01 besteht
2. Switch01 >> Port01 wird verbunden mit Server02 >> Port01 => es kommt zu einer Exception:
isys_exception_dao : DAO Exception: isys_exception_dao_cmdb : CMDB DAO Exception (): Could not read network connection. Valid connection DAO object, but != 2 references to ports. (Extended Information: 0)
VIEW HANDLER (isys_cmdb_view_category):
Backtrace:
#9 called: isys_cmdb_dao_network_connection->load(1017) in [/srv/www/htdocs/i-doit/src/classes/cmdb/dao/isys_cmdb_dao_network_connection.class.php:237]
–
#8 called: isys_cmdb_dao_network_connection->load_by_port_id(92) in [/srv/www/htdocs/i-doit/src/classes/cmdb/ui/global/isys_cmdb_ui_category_g_network_port.class.php:129]
–
#7 called: isys_cmdb_ui_category_g_network_port->process(Object) in [/srv/www/htdocs/i-doit/src/classes/cmdb/view/isys_cmdb_view_category.class.php:210]
–
#6 called: isys_cmdb_view_category->category_process() in [/srv/www/htdocs/i-doit/src/classes/cmdb/view/isys_cmdb_view_category.class.php:645]
–
#5 called: isys_cmdb_view_category->process() in [/srv/www/htdocs/i-doit/src/classes/modules/isys_module_cmdb.class.php:519]
–
#4 called: isys_module_cmdb->start() in [/srv/www/htdocs/i-doit/src/classes/modules/isys_module_manager.class.php:268]
–
#3 called: isys_module_manager->load(2) in [/srv/www/htdocs/i-doit/src/i-doit.inc.php:125]
–
#2 called: include_once(/srv/www/htdocs/i-doit/src/i-doit.inc.php) in [/srv/www/htdocs/i-doit/src/hypergate.inc.php:179]
–
#1 called: include_once(/srv/www/htdocs/i-doit/src/hypergate.inc.php) in [/srv/www/htdocs/i-doit/index.php:334]
–
Dies ist auch sehr schön in den entsprechenden Datenbanktabellen ("isys_netp_con" und "isys_netp_port_2_isys_netp_con") nachzuvollziehen. Das Problem ist im ersten Szenario, dass die bestehende Verbindung (Server zu Switch) nicht geändert, sondern eine zweite (Switch zu Server) angelegt wird und somit keine Eineindeutigkeit mehr gegeben ist. Ihr zieht sozusagen ein neues Kabel, statt das bestehende umzustecken, wie es in der Realität passieren würde. Im zweiten Szenario aktualisiert ihr zwar die Verbindungsinformationen in der Tabelle "isys_netp_con", jedoch nicht in der Tabelle "isys_netp_port_2_isys_netp_con", hier legt ihr auch wieder eine neue Verbindung an. Da jedoch die alten Verbindungsdaten (in diesem Beispiel Verbindungs-ID 1017) in der Tabelle "isys_netp_con" nicht mehr existieren, kommt es zu der Exception.
Ich hoffe ich konnte das Problem ausreichend erläutern.
Des weiteren wäre es schön, wenn man eine Verbindung auch wieder löschen könnte. Dies ist derzeit nicht möglich. Ich habe nur die Möglichkeit, eine Verbindung zu einem anderen Port herzustellen, nicht jedoch die Verbindung ganz zu löschen.
Gruß ThH