11-24-2021 08:36 AM
Hi Guys,
May i ask you to help in solving an issue i am facing with a service package for which an error is issued once i want to compile it using the make command please. Pyang also indicates the same error:
container cisco-ios {
when "deref(../name)/../ncs:module[1]/ncs:name='tailf-ned-cisco-ios'" {
tailf:dependency "../name";
}
tailf:cli-drop-node-name;
list interface {
tailf:info "GigabitEthernet interface";
key iface_id;
leaf iface_id {
tailf:info "GigabitEthernet Interface ID";
mandatory true;
type leafref {
path "deref(../../../name)/../ncs:config/ios:interface/ios:GigabitEthernet/ios:name";
}
}
}
}
pyang yang/create_routing-instance.yang
yang/create_routing-instance.yang:48: error: syntax error: illegal keyword:
Line 48 is the one beginning by "Container cisco-ios {"
Please let me know if you need further informations.
Thanks in advance for your help,
Regards,
Jerems
Solved! Go to Solution.
12-05-2021 02:49 AM
Hi,
If your YANG model looks something like this dummy one:
module dummy { namespace "urn:dummy"; prefix dummy; import tailf-ncs { prefix ncs; } import tailf-common { prefix tailf; } import tailf-ned-cisco-ios { prefix ios; } container dummy { leaf name { type leafref { path '/ncs:devices/ncs:device/ncs:name'; } } container cisco-ios { when "deref(../name)/../ncs:module[1]/ncs:name='tailf-ned-cisco-ios'" { tailf:dependency "../name"; } tailf:cli-drop-node-name; list interface { tailf:info "GigabitEthernet interface"; key iface_id; leaf iface_id { tailf:info "GigabitEthernet Interface ID"; mandatory true; type leafref { path "deref(../../../name)/../ncs:config/ios:interface/ios:GigabitEthernet/ios:name"; } } } } } }
...and you are, for example, referencing the cisco-ios-cli-x.x example NED that comes with NSO, you need to add the path to the YANG models you are referring to from your YANG model. When referencing a NED you need to point to the NED YANG models that have been transformed by ncsc and are ready to be loaded into NSO.
$ pyang -f yang -p $NCS_DIR/packages/neds/cisco-ios-cli-3.8/src/ncsc-out/modules/yang -p $NCS_DIR/src/ncs/yang dummy.yang
With the ncsc compiler you use the --yangpath flag.
12-03-2021 12:50 PM
Hello @Jerems,
I'm seeing the same error when I use an online YANG Validator (https://yangcatalog.org/yangvalidator
1: error: syntax error: illegal keyword:
Accord to this discussion , the 'container' substatements are as follows:
7.5.2. The container's Substatements +--------------+---------+-------------+ | substatement | section | cardinality | +--------------+---------+-------------+ | action | 7.15 | 0..n | | anydata | 7.10 | 0..n | | anyxml | 7.11 | 0..n | | choice | 7.9 | 0..n | | config | 7.21.1 | 0..1 | | container | 7.5 | 0..n | | description | 7.21.3 | 0..1 | | grouping | 7.12 | 0..n | | if-feature | 7.20.2 | 0..n | | leaf | 7.6 | 0..n | | leaf-list | 7.7 | 0..n | | list | 7.8 | 0..n | | must | 7.5.3 | 0..n | | notification | 7.16 | 0..n | | presence | 7.5.5 | 0..1 | | reference | 7.21.4 | 0..1 | | status | 7.21.2 | 0..1 | | typedef | 7.3 | 0..n | | uses | 7.13 | 0..n | | when | 7.21.5 | 0..1 | +--------------+---------+-------------+
This is a tricky one. I played with it for a while and didn't solve in yet. I used every flag imaginable in pyang and am no closer than when I started. I would follow read the discussion linked above and reformat as necessary.
Hope this helps!
12-05-2021 02:49 AM
Hi,
If your YANG model looks something like this dummy one:
module dummy { namespace "urn:dummy"; prefix dummy; import tailf-ncs { prefix ncs; } import tailf-common { prefix tailf; } import tailf-ned-cisco-ios { prefix ios; } container dummy { leaf name { type leafref { path '/ncs:devices/ncs:device/ncs:name'; } } container cisco-ios { when "deref(../name)/../ncs:module[1]/ncs:name='tailf-ned-cisco-ios'" { tailf:dependency "../name"; } tailf:cli-drop-node-name; list interface { tailf:info "GigabitEthernet interface"; key iface_id; leaf iface_id { tailf:info "GigabitEthernet Interface ID"; mandatory true; type leafref { path "deref(../../../name)/../ncs:config/ios:interface/ios:GigabitEthernet/ios:name"; } } } } } }
...and you are, for example, referencing the cisco-ios-cli-x.x example NED that comes with NSO, you need to add the path to the YANG models you are referring to from your YANG model. When referencing a NED you need to point to the NED YANG models that have been transformed by ncsc and are ready to be loaded into NSO.
$ pyang -f yang -p $NCS_DIR/packages/neds/cisco-ios-cli-3.8/src/ncsc-out/modules/yang -p $NCS_DIR/src/ncs/yang dummy.yang
With the ncsc compiler you use the --yangpath flag.
12-08-2021 05:49 AM - edited 12-08-2021 05:49 AM
Thanks a lot Cohult !!!
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide