Release Notes¶
0.5.9¶
TEMPLATES¶
- Added Cisco NX-OS inventory parsing support using
ttp://platform/cisco_nxos_show_inventory_pipe_json_pretty.txtforshow inventory | json-prettycommand output. - Updated
ttp://get/inventory.txtto use the Cisco NX-OSshow inventory | json-prettyplatform template. - Added A10 hardware parsing support using
ttp://platform/a10_show_hardware.txtforshow hardwarecommand output. - Updated
ttp://get/inventory.txtto include A10 inventory parsing through theshow hardwareplatform template. - Added Linux interface parsing support using
ttp://platform/linux_ip_address_show.txtforip address showcommand output. - Updated
ttp://get/interfaces.txtto include Linux interface parsing. - Added Cisco NX-OS interface parsing support using
ttp://platform/cisco_nxos_show_running_config_interface.txtforshow running-config interfacecommand output. - Updated
ttp://get/interfaces.txtto include Cisco NX-OS interface parsing. - Added Cisco IOS inventory parsing support using
ttp://platform/cisco_ios_show_inventory.txtforshow inventorycommand output. - Updated
ttp://get/inventory.txtto include Cisco IOS inventory parsing. - Added Cisco IOS interface parsing support using
ttp://platform/cisco_ios_show_running_config_pipe_section_interface.txtforshow running-config | section interfacecommand output. - Updated
ttp://get/interfaces.txtto include Cisco IOS interface parsing. - Added A10 interface parsing support using
ttp://platform/a10_show_running_config_partition_config_all_pipe_section_interface.txtforshow running-config partition-config all | section interfacecommand output. - Updated
ttp://get/interfaces.txtto include A10 interface parsing.
CHANGES¶
- Added
InventoryRecordPydantic model inttp_templates/utils/models.pyto validate normalized inventory records. - Moved inventory transformation logic out of TTP template macros and into dedicated utility modules:
ttp_templates/utils/arista_eos_process_show_inventory_pipe_json.pyttp_templates/utils/cisco_ios_process_show_inventory.pyttp_templates/utils/cisco_nxos_process_show_inventory_pipe_json_pretty.pyttp_templates/utils/cisco_xr_process_show_inventory.pyttp_templates/utils/juniper_junos_process_show_chassis_hardware_pipe_json.py- Updated Arista EOS, Cisco IOS, Cisco NX-OS, Cisco IOS-XR and Juniper Junos
inventory templates to import their processing functions from
ttp_templates/utils/and return validated normalized records. - Added
BgpNeighborRecordPydantic model and updated Arista EOS, Cisco IOS-XR and Juniper Junos BGP neighbor utility functions to validate normalized neighbor records before returning them. - Updated Arista EOS and Juniper Junos LLDP neighbor utility functions to use
the existing
LldpNeighborRecordmodel for normalized LLDP records. - Added
ArpRecordPydantic model and updated Cisco IOS and Cisco IOS-XR ARP platform templates to validate parsed ARP entries while preserving TTP result structure. - Updated A10
show hardwareparsing to validate normalized inventory records with the existingInventoryRecordmodel usingttp_templates/utils/a10_process_show_hardware.py. - Added
ttp_templates/utils/linux_process_ip_address_show.pyto normalize Linux operational interface output and validate it withInterfaceConfigRecord. - Added
ttp_templates/utils/cisco_nxos_process_show_running_config_interface.pyto normalize Cisco NX-OS interface configuration output and validate it withInterfaceConfigRecord. - Added
ttp_templates/utils/cisco_ios_process_show_running_config_pipe_section_interface.pyto normalize Cisco IOS interface configuration output, including dot1Q and QinQ subinterfaces, and validate it withInterfaceConfigRecord. - Added
ttp_templates/utils/a10_process_show_running_config_partition_config_all_pipe_section_interface.pyto normalize A10 interface configuration output and validate it withInterfaceConfigRecord.
TESTS¶
- Added Cisco NX-OS inventory mock data and expected output under
test/platform/cisco_nxos/show_inventory_pipe_json_pretty/. - Extended
test/test_get_inventory.pyto validate Cisco NX-OS inventory parsing through theget/inventorygetter. - Added A10
show hardwaremock data and expected output undertest/platform/a10/show_hardware/. - Extended
test/test_get_inventory.pyto validate A10 inventory parsing through theget/inventorygetter. - Added Linux
ip address showmock data and expected output undertest/platform/linux/ip_address_show/. - Added Cisco NX-OS
show running-config interfacemock data and expected output undertest/platform/cisco_nxos/show_running_config_interface/. - Added Cisco IOS
show inventorymock data samples and expected output undertest/platform/cisco_ios/show_inventory/. - Added Cisco IOS
show running-config | section interfacemock data samples and expected output undertest/platform/cisco_ios/show_running_config_pipe_section_interface/, including a QinQ subinterface sample. - Added A10
show running-config partition-config all | section interfaceanonymized mock data and expected output undertest/platform/a10/show_running_config_partition_config_all_pipe_section_interface/.
DOCS¶
- Merged template guidelines into
docs/contribute.mdand rewrote the guidance as an AI-friendly step-by-step workflow for adding templates. - Updated
CLAUDE.md,mkdocs.ymland generated template reference pages to document the new template workflow. - Updated
docs/getters_support_matrix.mdto note Cisco NX-OS inventory getter support withshow inventory | json-pretty. - Added generated template reference docs and mkdocs navigation entry for
ttp://platform/a10_show_hardware.txt. - Updated getter support matrix and generated inventory getter reference docs to include A10 inventory support.
- Updated getter support matrix to include Linux interface getter support.
- Updated getter support matrix to include Cisco NX-OS interface getter support.
- Updated getter support matrix to include Cisco IOS inventory getter support.
- Updated getter support matrix to include Cisco IOS interface getter support.
- Updated getter support matrix to include A10 interface getter support.
0.5.8¶
BUGS¶
- Fixing
juniper_junos_process_show_configuration_interfaces_pipe_display_setuntagged_vlan vlan handling for juniper subinterfaces - set mode to access and populate untagged_vlan correctly - Fixing
juniper_junos_process_show_configuration_interfaces_pipe_display_setto not assing parent for any logical interface likegrorltorlo0
0.5.7¶
BUGS¶
- Fixing
cisco_xr_show_bgp_neighbors.txttemplate dynamic BGP peers ASN parsing - Fixing
juniper_junos_process_show_configuration_interfaces_pipe_display_setextraction of ips for interfaces with virtual gateways - Fixing
juniper_junos_process_show_configuration_interfaces_pipe_display_setparent assignment logic - skip it for irb and lo0 interfaces - Fixing
juniper_junos_process_show_configuration_interfaces_pipe_display_setto check if bridge port has sub-interface when trying to derive untagged vlan
0.5.6¶
CHANGES¶
- Changing
get/interfaceslagto be a parent lag name and addinglag_idattribute get/interfacesfor Arista adding interfaces speeds map- Enhancing
get/interfacesfor Arista to calculate access VLAN id for SVI interfaces - Changing
vrfto beNonefor get bgp peerings, if BGP peering belongs to global/default/master VRF
TEMPLATES¶
- Added
platform/cisco_xr_show_running_config_interface.txtrefactoring to alight with interfaces getter data - Added
platform/juniper_junos_show_configuration_interfaces_pipe_display_set.txttemplate - Added
platform/arista_eos_show_lldp_neighbors_detail_pipe_json.txttemplate - Added
get/lldp_neighbors.txtgetter template supporting Arista EOS - Added
platform/juniper_junos_show_lldp_neighbors_detail_pipe_display_json.txttemplate
0.5.5¶
CHANGES¶
- Changing Arista EOS bgp neighbor template to use "show ip bgp .." command instead of "show bgp .." command
0.5.4¶
BUGS¶
- Fixing VRF handling for
platform/cisco_xr_show_bgp_neighbors.txttemplate. - Fixing BGP peer local ip handling for
platform/cisco_xr_show_bgp_neighbors.txttemplate for newer IOS XR syntax - Fixing bgp peer group extraction for
platform/arista_eos_show_bgp_neighbors_vrf_all_pipe_json.txttemplate for newer JSON format
0.5.3¶
TEMPLATES¶
- platform/arista_eos_show_running_config_section_interface
- get/interfaces.txt
CHANGES¶
- bgp neighbors templates now return local_as and remote_as as integers not strings.
- Removed filtering of built-in modules for Junos inventory in get_inventory getter.
0.5.2¶
TEMPLATES¶
- platform/arista_eos_show_bgp_neighbors_vrf_all_pipe_json.txt
- get/bgp_neighbors.txt
- platform/juniper_junos_show_bgp_neighbor_pipe_display_json.txt
- platform/cisco_xr_show_bgp_neighbors.txt
0.5.1¶
CHANGES¶
- Enhancing
getresults return to return only parsing result for matched template
0.5.0¶
Features¶
-
gettemplate collection – newttp_templates/get/directory holds getter templates modelled after NAPALM getters. Each getter bundles platform-specific<extend>references and returns a normalised, platform-agnostic structure regardless of which vendor's output is supplied. -
inventorygetter template – first getter:get/inventory.txtsupports Cisco IOS-XR (cisco_xr), Cisco NXOS (cisco_nxos,nxos), Arista EOS (arista_eos,eos), and Juniper Junos (juniper_junos,junos). Returns a list of dicts with keysslot,description,module,serial. -
get_template(get=...)argument –get_templatenow accepts agetkeyword argument to load a getter template by name (e.g.get_template(get="inventory")). The.txtextension is optional. -
parse_output(get=..., platform=...)routing –parse_outputupdated to handle getter templates: whengetis supplied theplatformargument is required and is used to select the correct platform-specific input section inside the getter template. RaisesValueErrorwhenplatformis omitted andRuntimeErrorwhen no input in the getter supports the given platform. -
list_templates()includes"get"key – the dict returned bylist_templatesnow has a"get"top-level key listing all getter template filenames. -
list_templates_refs()new function – returns a flat, sorted list ofttp://URI strings for every template across all collections (platform,yang,misc,get). Every URI is directly loadable viaget_template(path=ref). Supports the samepatternglob filter aslist_templates.
Templates¶
- Added
ttp://get/inventory.txt– multi-platform inventory getter template. - Updated
ttp://platform/cisco_xr_show_inventory.txt– addedplatformlist to the input block for getter routing compatibility. - Updated
ttp://platform/arista_eos_show_inventory_pipe_json.txt– addedplatformlist witharista_eosandeosentries. - Updated
ttp://platform/cisco_nxos_show_inventory_pipe_json_pretty.txt– addedplatformlist withcisco_nxosandnxosentries. - Updated
ttp://platform/juniper_junos_show_chassis_hardware_pipe_json.txt– addedplatformlist withjuniper_junosandjunosentries.
v0.4.0¶
Bugs¶
- Bug 1 –
parse_outputnow raisesValueErrorwith a descriptive message when called without any valid template-locating argument (previously theNonereturned byget_templatewas silently forwarded to the TTP constructor, causing confusing downstream errors). - Bug 2 – Fixed path-traversal vulnerability (OWASP A01) in
get_template. The resolved template filename is now verified withos.path.realpathto confirm it falls inside the package directory before the file is opened; crafted paths such aspath="../../etc/passwd"now raiseValueError. - Bug 3 – Fixed
list_templatescrashing withAttributeErrorwhen a template file is placed directly inside themisc/root directory (rather than in a subdirectory). The leaf-assignment logic now checks whether the target key already holds a dict; if it does, the files are stored under the empty-string sub-key instead of overwriting the dict with a list. - Bug 4 –
list_templatesnow returns file lists in sorted alphabetical order. Previouslyos.walk/os.listdirproduced non-deterministic ordering across operating systems and filesystems, making the output unreliable for callers and difficult to test reliably. - Bug 5 – Fixed prefix-ambiguity in
short_interface_names(ttp_vars.py). The2GEpatterns'^Tw'and'^Two'were broad enough to also matchTwoHundredGigabitEthernet*(200GE) names because2GEappeared before200GEin the dict. Negative look-ahead anchors (r'^Tw(?!entyFive|oHundred)'andr'^Two(?!Hundred)') were added so only genuine 2GE interface names are matched.
Changes¶
- Python minimum version bumped to 3.10.
- Improved logging throughout all public API functions.
- Improved type hint annotations and converted docstrings to Google format.
- Improved inline comments for clarity.
- Enhancing tests suite
v0.3.2¶
Templates¶
- Added
misc/Netboxfolder with templates for Junos, IOS-XR, and Arista devices configuration.
v0.3.1¶
Templates¶
- Added
ttp://misc/N2G/cli_ip_data/arista_eos.txttemplate to parse Arista EOS IP details for N2G L3 diagrams.
v0.3.0¶
Features¶
- Added
list_templatesmethod to list available templates.
Bugs¶
- Fixed Cisco IOS
show running-configurationto correct command:show running-config. - Updated N2G IOS-XR
cli_ip_datatemplate to matchipv4 address 1.1.1.1/32style config.
Templates¶
- Updated all N2G templates to have default input with required commands and platform attributes.
v0.2.0¶
Changes¶
- Moved to Poetry for dependency management.
Templates¶
Added templates:
ttp://platform/juniper_junos_show_isis_database_verbose_pipe_no_more.txtttp://misc/N2G/cli_l2_data/juniper.txtttp://misc/N2G/cli_isis_data/juniper.txtttp://platform/arista_eos_show_hostname.txt
Modified templates:
ttp://platform/cisco_xr_show_isis_database_verbose.txt– updated produced data structure to key LSPs by hostname.
v0.1.3¶
Bugs¶
- Fixed TTP Templates docs example path formation: the correct path is
ttp://misc/Netmiko/cisco.ios.arp.txt, notttp://misc.Netmiko.cisco.ios.arp.txt.
New Templates¶
- Added N2G templates.
v0.1.2¶
Minor Features¶
- Added support for
get_templateto source a template by path using thettp://URI scheme. - Added
ttp_vars.pyto repository to store common TTP variables. - Added
short_interface_namesdictionary inttp_vars.pyfor use withresuballto normalize interface names to shorter abbreviations.
New Templates¶
misc/Netmiko/cisco.ios.arp.txtmisc/Netmiko/cisco.ios.cfg.ip.txtmisc/Netmiko/cisco.iosxr.arp.txtmisc/Netmiko/huawei.vrp.cfg.ip.txtyang/openconfig-lldp_cisco_ios.txtyang/openconfig-lldp_cisco_nxos.txtyang/openconfig-lldp_cisco_xr.txtmisc/Netmiko/cisco.iosxr.cfg.ip.txtplatform/arista_eos_show_hostname.txt