Skip to content

Extending Platform Support

This page covers the technical notes and requirements for extending platform support in the Nautobot Device Discovery App.

For existing platform support matrices, see the Platform Support Matrix.

Protocol Overview

For an overview of what each protocol collects and how the two compare, see SNMP vs SSH — What Each Protocol Collects in the user guide.

Extending SNMP Support

SNMP platform support requires two things:

  • OID Mapper — A YAML file in oid_mappers/ that maps vendor-specific SNMP OIDs to device attributes (hostname, serial, device type, software version).
  • Platform Detection — An entry in the AUTODETECT_MAPPER constants that matches the device's sysDescr OID response to a known platform.

Both must be present for a platform to be fully supported via SNMP. All platforms support core identity correlation (hostname + serial). Software version is extracted from sysDescr or vendor-specific OIDs. Device Type parsing may include vendor-specific post-processing. SNMP does not collect topology (LLDP) data.

Extending SSH Support

SSH platform support requires three things:

  • Command Mapper — A YAML file in command_mappers/ that defines the CLI commands to execute and how to extract data from the parsed output (parser type, jpath expressions, post-processors).
  • Parser Template — A matching template for each command, determined by the parser type specified in the command mapper (see below).
  • Platform Detection — The platform must be detectable by Netmiko's SSHDetect auto-detection mechanism.

A command mapper entry without a corresponding parser template will fail to parse device output.

SSH Parsing Engines

The parser type in the command mapper determines how CLI output is structured:

Parser Description Platforms
TextFSM Uses bundled templates shipped with the app, templates from a configured Git repository (see below), or custom .textfsm files in command_mappers/parsers/textfsm/ Majority of network OS platforms
TTP Uses TTP template files provided via a configured Git repository (see below) or locally in command_mappers/parsers/ttp/ F5 TMOS
Native JSON No template needed; the device returns native structured output Juniper Junos
Raw No template needed; raw CLI output is processed directly via Jinja post-processor expressions Selected legacy platforms

Note

For TextFSM, the app ships with bundled templates that cover supported platforms out of the box. If a Git repository with TextFSM templates is configured, those take precedence. This means SSH discovery works without any Git repository setup for platforms that have bundled templates.

Note

For TTP parsers, no templates are shipped with the app at this time, but custom templates can be defined and loaded from Git datasources. In the event that TTP templates are added to the App, the Git templates will override any matching template definitions.

Additional info on developing custom command mappers and parsers can be found in the Device Onboarding App Documentation. The same yaml definition is used for both.

Git Repository Mappers

The path for Git repository parsers is defined by the configuration setting command_mappers_repo_folder and defaults to discovery_mappers/command_mappers. To allow compatibility with Device Onboarding App mappers and the flexibility to combine other data sources in the same repository, you can specify an alternate path for command mappers and parsers. More information can be found in the install documentation.

Example of the default repository paths:

<repo>/
└── discovery_mappers/
    ├── oid_mappers/
    │   └── <network_driver>.yml
    └── command_mappers/
        ├── parsers/
        │   ├── textfsm
        │   │   └── <network_driver>_<command>.textfsm
        │   └── ttp
        │       └── <network_driver>_<command>.ttp
        └── <network_driver>.yml