You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
validation failed: Missing required element "content-id" in "yang-library". #21
I am trying to build a data tree based on the example that you have provided. I can load the schema, but I was not able to create a data tree. I am getting an error: "libyang.util.LibyangError: validation failed: Missing required element "content-id" in "yang-library".
Any pointer is much appreciated.
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;
... }
... }
... }
... ''')
print(module.print_mem('tree'))
module: example
+--rw data
+--rw interface* [name]
| +--rw name string
| +--rw address? string
+--rw hostname? 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'},
... ],
... },
... })
Traceback (most recent call last):
File "", line 6, in
File "/home/gwieser/libyang-python-test01/venv/lib/python3.6/site-packages/libyang/schema.py", line 190, in parse_data_dict
validate=validate,
File "/home/gwieser/libyang-python-test01/venv/lib/python3.6/site-packages/libyang/data.py", line 903, in dict_to_dnode
no_yanglib=no_yanglib,
File "/home/gwieser/libyang-python-test01/venv/lib/python3.6/site-packages/libyang/data.py", line 282, in validate
raise self.context.error("validation failed")
libyang.util.LibyangError: validation failed: Missing required element "content-id" in "yang-library".
Actually, i had exactly same error so i thought it might be related and not a new issue.
So, from the link are you suggesting me to use this flag LYD_PARSE_SUBTREE? Because i have tried all others and it leads to same issue or it doesn't validate the tree with the PARSE_ONLY flag.
The issue was reported with libyang 1 which is completely different.
I think rpc input cannot be validated without the complete datastore at hand (which you don't have in your case). So PARSE_ONLY makes a lot of sense. Maybe you should ask on the libyang project itself how to parse rpc input data. The python bindings don't do anything fancy besides wrapping the C API.
Activity
rjarry commentedon Mar 25, 2021
Hi @gwieser1234
Indeed, the example is incorrect, I will fix the README.
README: fix data tree example
README: fix data tree example
README: fix data tree example
gwieser1234 commentedon Mar 25, 2021
HI Robin, thank you that fixed it. Its working now.
savnishsingh commentedon Nov 16, 2022
Hi Robin,
I am facing the same issue with libyang-python.
When i use
ctx.parse_data_mem(xml_tree, "xml",strict=True)i receive this error
<nc:error-info>failed to parse data tree: Mandatory node "content-id" instance does not exist.</nc:error-info>The RPC that i am trying contains this data,
I believe
get_yanglib_datais needed here but i don't understand completely how to get around this errorrjarry commentedon Nov 16, 2022
https://netopeer.liberouter.org/doc/libyang/master/html/group__dataparseroptions.html
please do not resurect closed issues.
savnishsingh commentedon Nov 16, 2022
Actually, i had exactly same error so i thought it might be related and not a new issue.
So, from the link are you suggesting me to use this flag LYD_PARSE_SUBTREE? Because i have tried all others and it leads to same issue or it doesn't validate the tree with the PARSE_ONLY flag.
rjarry commentedon Nov 16, 2022
The issue was reported with libyang 1 which is completely different.
I think rpc input cannot be validated without the complete datastore at hand (which you don't have in your case). So
PARSE_ONLYmakes a lot of sense. Maybe you should ask on the libyang project itself how to parse rpc input data. The python bindings don't do anything fancy besides wrapping the C API.savnishsingh commentedon Nov 16, 2022
Thanks Robin. I'll try the libyang project