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 !!!
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the NSO Developer community: