diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py index 01e9edb0fc0b7e2fd7481dfe3d15b28c3b1928a8..2e84b96453264dbc7c109bb13d4f5a2a71d6b28f 100644 --- a/inventory_provider/routes/classifier.py +++ b/inventory_provider/routes/classifier.py @@ -193,12 +193,16 @@ def find_interfaces(address): :return: """ r = common.get_current_redis() - for k in r.keys('reverse_interface_addresses:*'): - info = r.get(k.decode('utf-8')).decode('utf-8') - info = json.loads(info) - interface = ipaddress.ip_interface(info['interface address']) + for k in r.keys('subnets:*'): + k = k.decode('utf-8') + m = re.match(r'^subnets:(.*)$', k) + assert m, 'sanity failure: redis returned an invalid key name' + interface = ipaddress.ip_interface(m.group(1)) if address in interface.network: - yield info + info = r.get(k).decode('utf-8') + info = json.loads(info) + for ifc in info: + yield ifc def find_interfaces_and_services(address_str):