diff --git a/inventory_provider/db/ims.py b/inventory_provider/db/ims.py index b27f6773a6c450134b76ea2a54217c608d870d88..6932166bd840a79ce1f41d0a4a4125f3a1c3f3ac 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 9763f70e19bb99eca1a52480f929a4d2a1995cda..43f65cc3199bad1ee24b24feec911fb165afd766 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)