diff --git a/inventory_provider/routes/poller.py b/inventory_provider/routes/poller.py index 61b15c3786efef16084d02cb6167fb18f8897fb2..6e18e894b9b5b8c83d268fb8e99f6f6185b04984 100644 --- a/inventory_provider/routes/poller.py +++ b/inventory_provider/routes/poller.py @@ -876,9 +876,10 @@ def load_interfaces_to_poll(config, hostname=None, no_lab=False, use_next_redis= _get_services_and_customers(config, hostname, use_next_redis) snmp_indexes = common.load_snmp_indexes(config, hostname, use_next_redis) nren_regions = _load_nren_regions(config, use_next_redis) - unique_regions = set([value for value in nren_regions.values()]) - region_index = {region_key: [nren for nren, reg in nren_regions.items() if reg == region_key] - for region_key in unique_regions} + unique_regions = set(nren_regions.values()) + region_index = {} + for region_key in unique_regions: + region_index[region_key] = {nren for nren, reg in nren_regions.items() if reg == region_key} def _get_populated_interfaces(all_interfaces): if use_next_redis: @@ -907,9 +908,12 @@ def load_interfaces_to_poll(config, hostname=None, no_lab=False, use_next_redis= ifc['circuits'] = ifc_services_and_customers['services'] _customers = ifc_services_and_customers.get('customers', []) + customer_set = {c['name'] for c in _customers} region = None for region_name in region_index: - if any(customer['name'] in region_index[region_name] for customer in _customers): + # check if any of the customers are in this region + if any(region_index[region_name] & customer_set): + # customers will only have one region, so if there's a match, break here region = region_name break dashboards = _get_dashboards(ifc, region)