From d87f5561d2e0443a378548767573825bef24f16c Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 23 Aug 2017 17:36:12 +0100 Subject: [PATCH] Added interfaces parsing --- napalm_iosxr_ssh/iosxr_ssh.py | 22 ++++++++++++++++++ .../cisco_xr_show_interfaces.tpl | 23 +++++++++++++++++++ .../cisco_xr_show_interfaces_admin.tpl | 23 +++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 napalm_iosxr_ssh/utils/textfsm_templates/cisco_xr_show_interfaces.tpl create mode 100644 napalm_iosxr_ssh/utils/textfsm_templates/cisco_xr_show_interfaces_admin.tpl diff --git a/napalm_iosxr_ssh/iosxr_ssh.py b/napalm_iosxr_ssh/iosxr_ssh.py index f8bd5a5..9d42a64 100644 --- a/napalm_iosxr_ssh/iosxr_ssh.py +++ b/napalm_iosxr_ssh/iosxr_ssh.py @@ -289,3 +289,25 @@ def cli(self, commands): response = self._send_command(command) cli_output[command] = response return cli_output + + def get_interfaces(self): + + interfaces = {} + + INTERFACE_DEFAULTS = { + 'is_enabled': False, + 'is_up': False, + 'mac_address': u'', + 'description': u'', + 'speed': -1, + 'last_flapped': -1.0 + } + + interfaces_command = 'show interfaces' + + interfaces_ssh_reply = self._send_command(interfaces_command) + + t = napalm_base.helpers.textfsm_extractor(self, "cisco_xr_show_interfaces", interfaces_ssh_reply) + t = napalm_base.helpers.textfsm_extractor(self, "cisco_xr_show_interfaces_admin", interfaces_ssh_reply) + + return interfaces diff --git a/napalm_iosxr_ssh/utils/textfsm_templates/cisco_xr_show_interfaces.tpl b/napalm_iosxr_ssh/utils/textfsm_templates/cisco_xr_show_interfaces.tpl new file mode 100644 index 0000000..fa55e5b --- /dev/null +++ b/napalm_iosxr_ssh/utils/textfsm_templates/cisco_xr_show_interfaces.tpl @@ -0,0 +1,23 @@ +Value Required INTERFACE (\S+) +Value LINK_STATUS (\w+) +Value ADMIN_STATE (\S+) +Value HARDWARE_TYPE (\w+) +Value ADDRESS ([a-zA-Z0-9]+.[a-zA-Z0-9]+.[a-zA-Z0-9]+) +Value BIA ([a-zA-Z0-9]+.[a-zA-Z0-9]+.[a-zA-Z0-9]+) +Value DESCRIPTION (.*) +Value IP_ADDRESS (\d+\.\d+\.\d+\.\d+\/\d+) +Value MTU (\d+) +Value DUPLEX (.+?) +Value SPEED (.+?) +Value BANDWIDTH (\d+\s+\w+) +Value ENCAPSULATION (\w+) + +Start + ^${INTERFACE}\sis\s+${LINK_STATUS},\s+line\sprotocol\sis\s+${ADMIN_STATE} + ^\s+Hardware\s+is\s+${HARDWARE_TYPE}(\s+)?(Ethernet)?(,)?(\s+address\s+is\s+${ADDRESS}\s+\(bia\s+${BIA})? + ^\s+Description:\s+${DESCRIPTION} + ^\s+Internet\s+Address\s+is\s+${IP_ADDRESS} + ^\s+MTU\s+${MTU}.*BW\s+${BANDWIDTH} + ^\s+${DUPLEX}, ${SPEED},.+link + ^\s+Encapsulation\s+${ENCAPSULATION} + ^\s+Last -> Record \ No newline at end of file diff --git a/napalm_iosxr_ssh/utils/textfsm_templates/cisco_xr_show_interfaces_admin.tpl b/napalm_iosxr_ssh/utils/textfsm_templates/cisco_xr_show_interfaces_admin.tpl new file mode 100644 index 0000000..5ca715a --- /dev/null +++ b/napalm_iosxr_ssh/utils/textfsm_templates/cisco_xr_show_interfaces_admin.tpl @@ -0,0 +1,23 @@ +Value Required INTERFACE (\S+) +Value LINK_STATUS (\w+) +Value ADMIN_STATE (\S+) +Value HARDWARE_TYPE (\w+) +Value ADDRESS ([a-zA-Z0-9]+.[a-zA-Z0-9]+.[a-zA-Z0-9]+) +Value BIA ([a-zA-Z0-9]+.[a-zA-Z0-9]+.[a-zA-Z0-9]+) +Value DESCRIPTION (.*) +Value IP_ADDRESS (\d+\.\d+\.\d+\.\d+\/\d+) +Value MTU (\d+) +Value DUPLEX (.+?) +Value SPEED (.+?) +Value BANDWIDTH (\d+\s+\w+) +Value ENCAPSULATION (\w+) + +Start + ^${INTERFACE}\sis.+\s${LINK_STATUS},\s+line\sprotocol\sis.+\s+${ADMIN_STATE} + ^\s+Hardware\s+is\s+${HARDWARE_TYPE}(\s+)?(Ethernet)?(,)?(\s+address\s+is\s+${ADDRESS}\s+\(bia\s+${BIA})? + ^\s+Description:\s+${DESCRIPTION} + ^\s+Internet\s+Address\s+is\s+${IP_ADDRESS} + ^\s+MTU\s+${MTU}.*BW\s+${BANDWIDTH} + ^\s+${DUPLEX}, ${SPEED},.+link + ^\s+Encapsulation\s+${ENCAPSULATION} + ^\s+Last -> Record \ No newline at end of file