Skip to content
Snippets Groups Projects
Commit 17daebd3 authored by Erik Reid's avatar Erik Reid
Browse files

separate netconf i/o from parsing

parent fd1177ed
No related branches found
No related tags found
No related merge requests found
......@@ -100,7 +100,14 @@ def _rpc(hostname, ssh):
def load_config(hostname, ssh_params):
# data = dev.rpc.get_config(options={'format': 'json'})
"""
loads netconf data from the router, validates and
returns as an lxml etree doc
:param hostname: router hostname
:param ssh_params: 'ssh' config element(cf. config.py:CONFIG_SCHEMA)
:return:
"""
config = _rpc(hostname, ssh_params).get_config()
def _validate(schema, doc):
......@@ -124,10 +131,14 @@ def load_config(hostname, ssh_params):
return config
def load_interfaces(hostname, ssh_params):
data = load_config(hostname, ssh_params)
def list_interfaces(netconf_config):
"""
generator that parses netconf output and
yields a list of interfaces
# print(etree.tostring(data, encoding='unicode'))
:param netconf_config: xml doc that was generated by load_config
:return:
"""
def _ifc_info(e):
name = e.find('name')
......@@ -135,23 +146,14 @@ def load_interfaces(hostname, ssh_params):
description = e.find('description')
return {
'name': name.text,
'description': description.text if description is not None else None
'description': description.text if description is not None else ''
}
# for i in data.xpath('//configuration/groups/interfaces/interface'):
for i in data.xpath('//configuration/interfaces/interface'):
for i in netconf_config.xpath('//configuration/interfaces/interface'):
info = _ifc_info(i)
yield info
# ifc_name = i.xpath('./name/text()')
# assert ifc_name
# print(ifc_name[0])
for u in i.xpath('./unit'):
unit_info = _ifc_info(u)
unit_info['name'] = "%s.%s" % (info['name'], unit_info['name'])
yield unit_info
# print("%s.%s" % (ifc_name[0], u))
#
# print("-----routing-instances-----")
# for i in data.xpath("//configuration/routing-instances/instance/interface"):
# print(i.xpath('./name/text()'))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment