diff --git a/changes/320.fixed b/changes/320.fixed new file mode 100644 index 00000000..3ba7de8b --- /dev/null +++ b/changes/320.fixed @@ -0,0 +1 @@ +Fixed app startup crashing nautobot during startup in some cases. diff --git a/nautobot_device_onboarding/constants.py b/nautobot_device_onboarding/constants.py index 3b8e70ad..ffc8b209 100644 --- a/nautobot_device_onboarding/constants.py +++ b/nautobot_device_onboarding/constants.py @@ -1,7 +1,6 @@ """Constants for nautobot_device_onboarding app.""" from django.conf import settings -from nautobot.dcim.utils import get_all_network_driver_mappings NETMIKO_EXTRAS = ( settings.PLUGINS_CONFIG.get("nautobot_plugin_nornir", {}) @@ -23,9 +22,6 @@ } -# This is used in the new SSoT based jobs. -SUPPORTED_NETWORK_DRIVERS = list(get_all_network_driver_mappings().keys()) - # This is used in the new SSoT based jobs. Soon PYATS should be supported. SUPPORTED_COMMAND_PARSERS = ["textfsm", "ttp"] diff --git a/nautobot_device_onboarding/nornir_plays/command_getter.py b/nautobot_device_onboarding/nornir_plays/command_getter.py index fc2e0fb4..eff29225 100755 --- a/nautobot_device_onboarding/nornir_plays/command_getter.py +++ b/nautobot_device_onboarding/nornir_plays/command_getter.py @@ -20,7 +20,7 @@ from ntc_templates.parse import parse_output from ttp import ttp -from nautobot_device_onboarding.constants import SUPPORTED_COMMAND_PARSERS, SUPPORTED_NETWORK_DRIVERS +from nautobot_device_onboarding.constants import SUPPORTED_COMMAND_PARSERS from nautobot_device_onboarding.nornir_plays.empty_inventory import EmptyInventory from nautobot_device_onboarding.nornir_plays.inventory_creator import _set_inventory from nautobot_device_onboarding.nornir_plays.logger import NornirLogger @@ -112,7 +112,7 @@ def netmiko_send_commands( """Run commands specified in PLATFORM_COMMAND_MAP.""" if not task.host.platform: return Result(host=task.host, result=f"{task.host.name} has no platform set.", failed=True) - if task.host.platform not in SUPPORTED_NETWORK_DRIVERS or not "cisco_wlc_ssh": + if task.host.platform not in get_all_network_driver_mappings().keys() or not "cisco_wlc_ssh": return Result(host=task.host, result=f"{task.host.name} has a unsupported platform set.", failed=True) if not command_getter_yaml_data[task.host.platform].get(command_getter_job): return Result( @@ -354,7 +354,7 @@ def sync_network_data_command_getter(job_result, log_level, kwargs): "queryset": qs, "defaults": { "platform_parsing_info": add_platform_parsing_info(), - "network_driver_mappings": SUPPORTED_NETWORK_DRIVERS, + "network_driver_mappings": list(get_all_network_driver_mappings().keys()), "sync_vlans": kwargs["sync_vlans"], "sync_vrfs": kwargs["sync_vrfs"], "sync_cables": kwargs["sync_cables"], diff --git a/nautobot_device_onboarding/nornir_plays/empty_inventory.py b/nautobot_device_onboarding/nornir_plays/empty_inventory.py index 701a4afc..c8038529 100755 --- a/nautobot_device_onboarding/nornir_plays/empty_inventory.py +++ b/nautobot_device_onboarding/nornir_plays/empty_inventory.py @@ -1,8 +1,8 @@ """Empty Nornir Inventory Plugin.""" +from nautobot.dcim.utils import get_all_network_driver_mappings from nornir.core.inventory import Defaults, Groups, Hosts, Inventory -from nautobot_device_onboarding.constants import SUPPORTED_NETWORK_DRIVERS from nautobot_device_onboarding.nornir_plays.transform import add_platform_parsing_info @@ -15,7 +15,7 @@ def load(self) -> Inventory: defaults = Defaults( data={ "platform_parsing_info": add_platform_parsing_info(), - "network_driver_mappings": SUPPORTED_NETWORK_DRIVERS, + "network_driver_mappings": list(get_all_network_driver_mappings().keys()), } ) groups = Groups()