Skip to content
Snippets Groups Projects
Commit f07ef2c6 authored by Erik Reid's avatar Erik Reid
Browse files

Finished feature re-add-missing-unmanaged-interfaces.

parents e07fe7d7 2d67e4e6
Branches
Tags
No related merge requests found
...@@ -199,7 +199,7 @@ def update_interfaces_to_services(self): ...@@ -199,7 +199,7 @@ def update_interfaces_to_services(self):
rp.execute() rp.execute()
def _unmanaged_interfaces(self): def _unmanaged_interfaces():
def _convert(d): def _convert(d):
# the config file keys are more readable than # the config file keys are more readable than
...@@ -215,18 +215,6 @@ def _unmanaged_interfaces(self): ...@@ -215,18 +215,6 @@ def _unmanaged_interfaces(self):
_convert, _convert,
InventoryTask.config.get('unmanaged-interfaces', [])) InventoryTask.config.get('unmanaged-interfaces', []))
# if interfaces:
# r = get_next_redis(InventoryTask.config)
# rp = r.pipeline()
# for ifc in interfaces:
# rp.set(
# f'reverse_interface_addresses:{ifc["name"]}',
# json.dumps(ifc))
# rp.set(
# f'subnets:{ifc["interface address"]}',
# json.dumps([ifc]))
# rp.execute()
@app.task(base=InventoryTask, bind=True, name='update_access_services') @app.task(base=InventoryTask, bind=True, name='update_access_services')
@log_task_entry_and_exit @log_task_entry_and_exit
...@@ -710,6 +698,10 @@ def _build_subnet_db(update_callback=lambda s: None): ...@@ -710,6 +698,10 @@ def _build_subnet_db(update_callback=lambda s: None):
entry = subnets.setdefault(ifc['interface address'], []) entry = subnets.setdefault(ifc['interface address'], [])
entry.append(ifc) entry.append(ifc)
for ifc in _unmanaged_interfaces():
entry = subnets.setdefault(ifc['interface address'], [])
entry.append(ifc)
update_callback('saving {} subnets'.format(len(subnets))) update_callback('saving {} subnets'.format(len(subnets)))
rp = r.pipeline() rp = r.pipeline()
......
...@@ -54,6 +54,20 @@ def data_config_filename(): ...@@ -54,6 +54,20 @@ def data_config_filename():
"password": "ims_password" "password": "ims_password"
}, },
"managed-routers": "bogus url", "managed-routers": "bogus url",
"unmanaged-interfaces": [
{
"address": "99.99.99.99",
"network": "99.99.99.0/24",
"interface": "ABC/0/0/0",
"router": "bogus.host.name"
},
{
"address": "999.999.999.99",
"network": "999.999.999.0/24",
"interface": "ZZZ/9/a/x:0.123",
"router": "another.bogus.host.name"
}
]
} }
f.write(json.dumps(config).encode('utf-8')) f.write(json.dumps(config).encode('utf-8'))
......
...@@ -11,6 +11,7 @@ import jsonschema ...@@ -11,6 +11,7 @@ import jsonschema
from inventory_provider.tasks import worker from inventory_provider.tasks import worker
from inventory_provider.tasks import common from inventory_provider.tasks import common
from inventory_provider.routes import msr from inventory_provider.routes import msr
from inventory_provider import config
def backend_db(): def backend_db():
...@@ -23,7 +24,7 @@ def backend_db(): ...@@ -23,7 +24,7 @@ def backend_db():
}).db }).db
def test_build_subnet_db(mocked_worker_module): def test_build_subnet_db(mocked_worker_module, data_config_filename):
""" """
Verify that valid reverse subnet objects are created. Verify that valid reverse subnet objects are created.
...@@ -52,6 +53,16 @@ def test_build_subnet_db(mocked_worker_module): ...@@ -52,6 +53,16 @@ def test_build_subnet_db(mocked_worker_module):
'items': {"$ref": "#/definitions/interface"}, 'items': {"$ref": "#/definitions/interface"},
} }
all_subnet_interfaces = set()
unmanaged_interfaces = set()
with open(data_config_filename) as f:
params = config.load(f)
for ifc in params.get('unmanaged-interfaces', []):
ifc_key = (f'{ifc["router"].lower()}'
f':{ifc["interface"].lower()}'
f':{ifc["network"]}')
unmanaged_interfaces.add(ifc_key)
db = backend_db() # also forces initialization db = backend_db() # also forces initialization
def _x(k): def _x(k):
...@@ -80,8 +91,16 @@ def test_build_subnet_db(mocked_worker_module): ...@@ -80,8 +91,16 @@ def test_build_subnet_db(mocked_worker_module):
for ifc in value: for ifc in value:
assert ifc['interface address'] == address assert ifc['interface address'] == address
ifc_key = (f'{ifc["router"]}'
f':{ifc["interface name"]}'
f':{ifc["interface address"]}')
all_subnet_interfaces.add(ifc_key)
assert found_record assert found_record
assert unmanaged_interfaces <= all_subnet_interfaces
def test_build_juniper_peering_db(mocked_worker_module): def test_build_juniper_peering_db(mocked_worker_module):
""" """
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment