diff --git a/inventory_provider/db/opsdb.py b/inventory_provider/db/opsdb.py index a8a094c591fe2242b8325b9ee5c230cf7d316cd2..ee0aabc8b3bd614c8f37987cd09ffddc1b0f45ff 100644 --- a/inventory_provider/db/opsdb.py +++ b/inventory_provider/db/opsdb.py @@ -176,6 +176,20 @@ def _juniper_field_update(record): record["interface_name"] += separator + str(record["port"]) if record["logical_unit"] is not None and record["logical_unit"] != "": record["interface_name"] += "." + str(record["logical_unit"]) + + if not record["other_end_interface_name"]: + record["other_end_interface_name"] = record["other_end_card_id"] + if record["other_end_port"] is not None \ + and record["other_end_port"] != "": + separator = "" + if "-" in record["other_end_interface_name"]: + separator = "/" + record["other_end_interface_name"] += \ + separator + str(record["other_end_port"]) + if record["other_end_logical_unit"] is not None \ + and record["other_end_logical_unit"] != "": + record["other_end_interface_name"] += \ + "." + str(record["other_end_logical_unit"]) return record diff --git a/test/test_opsdb.py b/test/test_opsdb.py index 2b0a299b3ebccff745cbe2108745711e01711d13..cf46fd99ea4e88e9c739f555d590cd9e468ba6e9 100644 --- a/test/test_opsdb.py +++ b/test/test_opsdb.py @@ -52,53 +52,83 @@ def test_infinera_field_update(): def test_juniper_field_update(): i = { "interface_name": "xe-1/2", - "logical_unit": None + "logical_unit": None, + "other_end_interface_name": "xe-3/2", + "other_end_logical_unit": None } r = inventory_provider.db.opsdb._juniper_field_update(i) assert r["interface_name"] == "xe-1/2" + assert r["other_end_interface_name"] == "xe-3/2" i["interface_name"] = "xe-1/2" i["logical_unit"] = 101 + i["other_end_interface_name"] = "xe-3/2" + i["other_end_logical_unit"] = 301 r = inventory_provider.db.opsdb._juniper_field_update(i) assert r["interface_name"] == "xe-1/2.101" + assert r["other_end_interface_name"] == "xe-3/2.301" i["interface_name"] = "xe-1/2" i["logical_unit"] = 0 + i["other_end_interface_name"] = "xe-3/2" + i["other_end_logical_unit"] = 0 r = inventory_provider.db.opsdb._juniper_field_update(i) assert r["interface_name"] == "xe-1/2.0" + assert r["other_end_interface_name"] == "xe-3/2.0" i["interface_name"] = "xe-1/2" i["logical_unit"] = None i["port"] = 0 + i["other_end_interface_name"] = "xe-3/2" + i["other_end_logical_unit"] = None + i["other_end_port"] = 0 r = inventory_provider.db.opsdb._juniper_field_update(i) assert r["interface_name"] == "xe-1/2" + assert r["other_end_interface_name"] == "xe-3/2" i["interface_name"] = None i["card_id"] = "xe-2/0" i["logical_unit"] = None i["port"] = None + i["other_end_interface_name"] = None + i["other_end_card_id"] = "xe-3/0" + i["other_end_logical_unit"] = None + i["other_end_port"] = None r = inventory_provider.db.opsdb._juniper_field_update(i) assert r["interface_name"] == "xe-2/0" + assert r["other_end_interface_name"] == "xe-3/0" i["interface_name"] = None i["port"] = "0" + i["other_end_interface_name"] = None + i["other_end_port"] = "0" r = inventory_provider.db.opsdb._juniper_field_update(i) assert r["interface_name"] == "xe-2/0/0" + assert r["other_end_interface_name"] == "xe-3/0/0" i["interface_name"] = None i["port"] = 0 + i["other_end_interface_name"] = None + i["other_end_port"] = 0 r = inventory_provider.db.opsdb._juniper_field_update(i) assert r["interface_name"] == "xe-2/0/0" + assert r["other_end_interface_name"] == "xe-3/0/0" i["interface_name"] = None i["logical_unit"] = "123" + i["other_end_interface_name"] = None + i["other_end_logical_unit"] = "323" r = inventory_provider.db.opsdb._juniper_field_update(i) assert r["interface_name"] == "xe-2/0/0.123" + assert r["other_end_interface_name"] == "xe-3/0/0.323" i["interface_name"] = None i["logical_unit"] = 123 + i["other_end_interface_name"] = None + i["other_end_logical_unit"] = 323 r = inventory_provider.db.opsdb._juniper_field_update(i) assert r["interface_name"] == "xe-2/0/0.123" + assert r["other_end_interface_name"] == "xe-3/0/0.323" def test_coriant_update_fields():