Skip to content

Command Parsers Datasource

This datasource provides custom TextFSM and TTP parser templates that the app uses at runtime to parse CLI command output. This is useful when:

  • You need a custom parser not available in ntc-templates
  • You want to override an existing ntc-templates parser with a custom version
  • You are using TTP templates (which are not included in ntc-templates)

Directory Structure

repository_root/
├── parsers/
│   ├── cisco_ios/
│   │   ├── show_version.textfsm
│   │   ├── show_ip_bgp_summary.textfsm
│   │   └── show_interfaces.ttp
│   ├── arista_eos/
│   │   ├── show_version.textfsm
│   │   └── show_ip_bgp_summary.ttp
│   └── juniper_junos/
│       └── show_bgp_summary.ttp

File Naming Convention

The app converts the CLI command to a filename by replacing spaces with underscores:

CLI Command Expected Filename
show version show_version.textfsm or show_version.ttp
show ip bgp summary show_ip_bgp_summary.textfsm or show_ip_bgp_summary.ttp
show interfaces show_interfaces.textfsm or show_interfaces.ttp

The file extension (.textfsm or .ttp) must match the parser type configured on the CommandParser object.

Parser File Path Resolution

At runtime, the app resolves parser file paths using a Jinja2 template. The default template renders to a path like cisco_ios/show_version, which is then appended to the parsers/ directory in the Git repository and given the appropriate file extension.

The full resolution path is: <repo>/parsers/<network_driver>/<command_filename>.<parser_type>

Example: For a device with platform cisco_ios running show ip bgp summary with a textfsm parser:

<repo>/parsers/cisco_ios/show_ip_bgp_summary.textfsm

Customizing the Path Template

The path template can be customized via the GIT_PARSERS_PATH setting in your Nautobot configuration or via the Constance admin UI. Available template variables:

Variable Description
{{ obj }} The device object
{{ obj.platform.network_driver }} The platform's network driver (e.g., cisco_ios)
{{ cmd }} The command converted to a filename (spaces replaced with underscores)

Parser Lookup Behavior

When the app needs to parse command output, it follows this lookup order:

Parser Type Custom Git Template Fallback
TextFSM Checks Git repos for .textfsm file Falls back to ntc-templates built-in templates
TTP Checks Git repos for .ttp file No fallback — fails if not found in a Git repo
NAPALM N/A Uses NAPALM getter directly
JSON N/A Parses JSON output directly

Warning

TTP parsers must be provided through a Git repository. There is no built-in fallback for TTP templates. If a TTP template is not found, the command output parsing will fail.

Template Availability Warning

The same lookup runs when you save a CommandParser in the UI. The Command Parser is always saved, but when no template is available the app shows a warning and the Command Parser detail page flags the command. The lookup reads the local checkout, so sync the repository in Nautobot before saving parsers for newly added templates.

If you customize GIT_PARSERS_PATH to reference device attributes other than the platform, the warning can appear even when a template exists, because a CommandParser has no device to render the path with. The parser is still saved, and parsing at collection time is unaffected.