mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-05 23:23:51 -09:00
Python CFFI bindings for the libyang YANG library, providing the 'libyang' Python module for YANG data modeling operations. This package is used by higher-level tooling such as python-sysrepo. https://github.com/CESNET/libyang-python Signed-off-by: Vincent Jardin <vjardin@free.fr> Signed-off-by: Vincent Cruz <mooz@blockos.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
47 lines
933 B
Python
47 lines
933 B
Python
# test from https://github.com/CESNET/libyang-python/blob/master/README.rst
|
|
|
|
import libyang
|
|
from xml.etree import ElementTree
|
|
|
|
ctx = libyang.Context()
|
|
|
|
module = ctx.parse_module_str('''
|
|
module example {
|
|
namespace "urn:example";
|
|
prefix "ex";
|
|
container data {
|
|
list interface {
|
|
key name;
|
|
leaf name {
|
|
type string;
|
|
}
|
|
leaf address {
|
|
type string;
|
|
}
|
|
}
|
|
leaf hostname {
|
|
type string;
|
|
}
|
|
}
|
|
}
|
|
''')
|
|
|
|
node = module.parse_data_dict({
|
|
'data': {
|
|
'hostname': 'foobar',
|
|
'interface': [
|
|
{'name': 'eth0', 'address': '1.2.3.4/24'},
|
|
{'name': 'lo', 'address': '127.0.0.1'},
|
|
],
|
|
},
|
|
})
|
|
|
|
xml = node.print_mem('xml', pretty=True)
|
|
tree = ElementTree.fromstringlist(xml)
|
|
assert tree.tag == '{urn:example}data'
|
|
assert tree.find('.//{*}hostname').text == 'foobar'
|
|
assert len(tree.find('.//{*}interface')) == 2
|
|
|
|
node.free()
|
|
ctx.destroy()
|