From f5e526e0bd062f45ec181d8158f19974dcd0381e Mon Sep 17 00:00:00 2001
From: Robert Latta <robert.latta@geant.org>
Date: Fri, 16 Feb 2024 11:08:32 +0000
Subject: [PATCH] added retrieval of router vendor

---
 inventory_provider/db/ims.py      |  1 +
 inventory_provider/db/ims_data.py | 14 ++++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/inventory_provider/db/ims.py b/inventory_provider/db/ims.py
index b27f6773..6932166b 100644
--- a/inventory_provider/db/ims.py
+++ b/inventory_provider/db/ims.py
@@ -61,6 +61,7 @@ CUSTOMER_RELATED_CONTACT_PROPERTIES = {
 }
 # http://149.210.162.190:81/ImsVersions/4.19.9/html/a8dc6266-d934-8162-4a55-9e1648187f2c.htm  # noqa
 EQUIP_DEF_PROPERTIES = {
+    'Vendor': 8,
     'Nodes': 4096
 }
 # http://149.210.162.190:81/ImsVersions/20.1/html/6fd3a968-26e2-e40f-e3cd-c99afa34c3e6.htm
diff --git a/inventory_provider/db/ims_data.py b/inventory_provider/db/ims_data.py
index 9763f70e..43f65cc3 100644
--- a/inventory_provider/db/ims_data.py
+++ b/inventory_provider/db/ims_data.py
@@ -633,3 +633,17 @@ def lookup_geant_nodes(ds: IMS):
         'Node',
         'customer.Name == "GEANT"',
         ims.EQUIP_DEF_PROPERTIES['Nodes']))
+
+
+@log_entry_and_exit
+def get_router_vendors(ds: IMS):
+    ed_nav_properties = [
+        ims.EQUIP_DEF_PROPERTIES['Nodes'],
+        ims.EQUIP_DEF_PROPERTIES['Vendor']
+    ]
+    for ed in ds.get_filtered_entities(
+            'equipmentdefinition',
+            'equipmentkind == ROUTER',
+            ed_nav_properties):
+        for r in ed.get('nodes', []):
+            yield r['name'], ed.get('vendor', {}).get('name', None)
-- 
GitLab