Skip to main content

Template Text Parser Templates collections

Project description

Downloads PyPI versions

Template Text Parser Templates

This repository contains a collection of TTP templates.

If you solved a problem using TTP and feel that your work can be useful to other people, feel free to raise an issue or submit pull request to include your template(s) in this repository. Refer to Contribute Guide for details.

Documentation: https://dmulyalin.github.io/ttp_templates/

Repository: https://github.com/dmulyalin/ttp_templates

TTP: https://ttp.readthedocs.io/

Installation

From PyPi:

pip install ttp-templates

or latest from GitHub master branch (need Git installed on the system):

pip install git+https://github.com/dmulyalin/ttp_templates.git

Sample usage

This example demonstrates how to parse Test Platform output for show run | sec interface command using platform/test_platform_show_run_pipe_sec_interface.txt template.

Code
from ttp_templates import parse_output
import pprint

data = """
interface GigabitEthernet1/3.251
 description Customer #32148
 encapsulation dot1q 251
 ip address 172.16.33.10 255.255.255.128
 shutdown
!
interface GigabitEthernet1/3.251
 description Customer #32148
 encapsulation dot1q 251
 ip address 172.16.33.10 255.255.255.128
 shutdown
"""

result = parse_output(
    data=data,
    platform="Test Platform",
    command="show run | sec interface"
)

pprint.pprint(result)

# prints:
# [[[{'description': 'Customer #32148',
#     'disabled': True,
#     'dot1q': '251',
#     'interface': 'GigabitEthernet1/3.251',
#     'ip': '172.16.33.10',
#     'mask': '255.255.255.128'},
#    {'description': 'Customer #32148',
#     'disabled': True,
#     'dot1q': '251',
#     'interface': 'GigabitEthernet1/3.251',
#     'ip': '172.16.33.10',
#     'mask': '255.255.255.128'}]]]

Sample code to parse Cisco IOS output in a structure compatible with ietf-interfaces YANG module.

Code
from ttp_templates import get_template
from ttp import ttp
import pprint

data1 = """
interface GigabitEthernet1/3.251
 description Customer #32148
 encapsulation dot1q 251
 ip address 172.16.33.10 255.255.255.128
 shutdown
!
interface GigabitEthernet1/4
 description vCPEs access control
 ip address 172.16.33.10 255.255.255.128
!
"""
data2 = """
interface GigabitEthernet1/5
 description Works data
 ip mtu 9000
!
interface GigabitEthernet1/7
 description Works data v6
 ipv6 address 2001::1/64
 ipv6 address 2001:1::1/64
"""

template = get_template(yang="ietf-interfaces", platform="cisco_ios")
parser = ttp(template=template)

parser.add_input(data1)
parser.add_input(data2)

parser.parse()
res = parser.result()
pprint.pprint(res)

# prints:
# [{'comment': '',
#   'exception': {},
#   'result': [{'ietf-interfaces:interfaces': {'interface': [{'admin-status': 'down',
#                                                             'description': 'Customer '
#                                                                            '#32148',
#                                                             'enabled': False,
#                                                             'ietf-ip:ipv4': {'address': [{'ip': '172.16.33.10',
#                                                                                           'netmask': '255.255.255.128',
#                                                                                           'origin': 'static'}]},
#                                                             'if-index': 1,
#                                                             'link-up-down-trap-enable': 'enabled',
#                                                             'name': 'GigabitEthernet1/3.251',
#                                                             'oper-status': 'unknown',
#                                                             'statistics': {'discontinuity-time': '1970-01-01T00:00:00+00:00'},
#                                                             'type': 'iana-if-type:ethernetCsmacd'},
#                                                            {'admin-status': 'up',
#                                                             'description': 'vCPEs '
#                                                                            'access '
#                                                                            'control',
#                                                             'enabled': True,
#                                                             'ietf-ip:ipv4': {'address': [{'ip': '172.16.33.10',
#                                                                                           'netmask': '255.255.255.128',
#                                                                                           'origin': 'static'}]},
#                                                             'if-index': 1,
#                                                             'link-up-down-trap-enable': 'enabled',
#                                                             'name': 'GigabitEthernet1/4',
#                                                             'oper-status': 'unknown',
#                                                             'statistics': {'discontinuity-time': '1970-01-01T00:00:00+00:00'},
#                                                             'type': 'iana-if-type:ethernetCsmacd'}]}},
#              {'ietf-interfaces:interfaces': {'interface': [{'admin-status': 'up',
#                                                             'description': 'Works '
#                                                                            'data',
#                                                             'enabled': True,
#                                                             'ietf-ip:ipv4': {'mtu': 9000},
#                                                             'if-index': 1,
#                                                             'link-up-down-trap-enable': 'enabled',
#                                                             'name': 'GigabitEthernet1/5',
#                                                             'oper-status': 'unknown',
#                                                             'statistics': {'discontinuity-time': '1970-01-01T00:00:00+00:00'},
#                                                             'type': 'iana-if-type:ethernetCsmacd'},
#                                                            {'admin-status': 'up',
#                                                             'description': 'Works '
#                                                                            'data '
#                                                                            'v6',
#                                                             'enabled': True,
#                                                             'ietf-ip:ipv6': {'address': [{'ip': '2001::1',
#                                                                                           'origin': 'static',
#                                                                                           'prefix-length': 64},
#                                                                                          {'ip': '2001:1::1',
#                                                                                           'origin': 'static',
#                                                                                           'prefix-length': 64}]},
#                                                             'if-index': 1,
#                                                             'link-up-down-trap-enable': 'enabled',
#                                                             'name': 'GigabitEthernet1/7',
#                                                             'oper-status': 'unknown',
#                                                             'statistics': {'discontinuity-time': '1970-01-01T00:00:00+00:00'},
#                                                             'type': 'iana-if-type:ethernetCsmacd'}]}}],
#   'valid': {0: True, 1: True}}]

How templates collections structured

This repository contains three collections of templates corresponding to folder names:

  • platform collection - mimics ntc-templates API and follows same naming rule
  • yang collection - contains templates capable of producing YANG compatible structures out of text data
  • misc collection - miscellaneous templates for various use cases organized in folders

Platform collection templates files naming rule

{{ vendor_os }}_{{ command_with_underscores }}.txt - lower case only.

Naming rules details:

  • All space symbols ' ' replaced with underscores.
  • Pipe symbol | replaced with pipe in template name. For example, template to parse Cisco IOS show run | section interface command output must be named cisco_ios_show_running_config_pipe_section_interface.txt
  • Dash symbols - replaced with underscores. For example, template to parse Huawei display current-configuration interface command output must be named huawei_display_current_configuration_interface.txt

YANG collection templates files naming rule

{{ YANG module name }}_{{ platform_name }}.txt - lower case only

Naming rules details:

  • All space symbols ' ' replaced with underscore.
  • Dash symbol - does not replaced with underscore. For example, template to produce output compatible with openconfig-lldp YANG model for Cisco IOS must be named openconfig-lldp_cisco_xr.txt

Misc collection templates files naming rule

{{ usecase folder }}/{{ template name }}.txt - upper or lower case

Naming rules details:

  • Nothing replaced with anything, provided template name used as is.

Additional Templates Resources

List of resources with TTP templates:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ttp_templates-0.5.1.tar.gz (45.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ttp_templates-0.5.1-py3-none-any.whl (83.5 kB view details)

Uploaded Python 3

File details

Details for the file ttp_templates-0.5.1.tar.gz.

File metadata

  • Download URL: ttp_templates-0.5.1.tar.gz
  • Upload date:
  • Size: 45.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.9 Windows/10

File hashes

Hashes for ttp_templates-0.5.1.tar.gz
Algorithm Hash digest
SHA256 7aa868abfb3942905a953d160af51139340495cf087529630a162a7994b3f81b
MD5 68af1bc946613fac0a6c2cc90c21c796
BLAKE2b-256 31fde2da855d8405319fa2d3c064d30dc34ed6319fdd5a68f867c2e066a1c60d

See more details on using hashes here.

File details

Details for the file ttp_templates-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: ttp_templates-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 83.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.9 Windows/10

File hashes

Hashes for ttp_templates-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eb3af31b312ffb2ce501c4d7b2c055fc946ee63ea32e7ac60145ee0322dbcf27
MD5 73c77e8c77761d3b9f95d6c0b7bea59f
BLAKE2b-256 23f7b5ecd28e61aa66fbbebb18365820a348aa4dd6441246210a40c78534e0d9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page