diff --git a/inventory_provider/db/opsdb.py b/inventory_provider/db/opsdb.py index ac8958a5ca816583b60d8bf9829119541fb7aca7..cdf49bdc947cb282b5e86093dee0f5448d5708f7 100644 --- a/inventory_provider/db/opsdb.py +++ b/inventory_provider/db/opsdb.py @@ -414,15 +414,20 @@ WHERE """ def _public(row): + # cf. LGR-73 + if row['pop_name'] in INTERNAL_POP_NAMES: return False - if row['router_name'].startswith('sw'): + + router_name_lower = row['router_name'].lower() + if any(router_name_lower.startswith(prefix) + for prefix in ['srx', 'gts', 'sw', 'qfx']): return False + if row['pop_city'].lower() == 'slough' \ and not row['equipment_model'].upper().startswith('MX'): return False - if row['router_name'].startswith('srx'): - return False + return True def _row2rsp(row): diff --git a/test/test_opsdb_queries.py b/test/test_opsdb_queries.py index 021a2adda1cc9429993cad268f55c3e8e557b3fd..da219e271fd717a46655b5b6721ffa027d3fbe01 100644 --- a/test/test_opsdb_queries.py +++ b/test/test_opsdb_queries.py @@ -294,9 +294,12 @@ def test_lookup_lg_routers(connection, cached_test_data): assert not any( r['equipment name'].lower().startswith('junosspace') for r in routers) - srx = filter( - lambda r: r['equipment name'].lower().startswith('srx'), routers) - assert all(s['type'] == 'INTERNAL' for s in srx) + internal_prefix_patterns = ['srx', 'gts', 'qfx'] + for prefix in internal_prefix_patterns: + filtered = filter( + lambda r: r['equipment name'].lower().startswith(prefix), routers) + assert all(r['type'] == 'INTERNAL' for r in filtered), \ + f'not all {prefix}* routers are INTERNAL' CIRCUIT_INFO_SCHEMA = {