03-16-2021 05:31 AM - edited 03-16-2021 05:33 AM
i'm trying to make condition in NSO service that when i chose the device name to check it ned type ( ios or iosxr ) and depending on the output to will create the right container
here is the part of yang that i used :
leaf device { type leafref { path "/ncs:devices/ncs:device/ncs:name"; } } container SR_inputs { container iosxr { when " /ncs:devices/ncs:device[ncs:name=current()/../device]/ncs:device-type/ncs:cli/ncs:ned-id='cisco-iosxr-cli-7.19-id:cisco-iosxr-cli-7.19'" { tailf:dependency "/ncs:devices/ncs:device/ncs:device-type/ncs:cli/ncs:ned-id"; } } }
the compile doesn't give me errors only warning : "warning: The when expression refers to the current node, will probably not work as intended. "
but it doesn't give me the correct output ( no container created after i choose the device )
any help please ?
03-17-2021 01:49 AM
Containers are not "created on demand", the when statement condition is satisfied. The idea of a when statement is to validate when the container should exist. If you want to force the user API call to include the container, you should use the "mandatory true" statement.
RFC6020:
The "when" statement makes its parent data definition statement conditional. The node defined by the parent data definition statement is only valid when the condition specified by the "when" statement is satisfied.
03-17-2021 08:59 AM
Thanks @rogaglia for your reply
I think i asked a wrong question.
what i'm searching for exactly is validate when the container should exist.
as i have 2 containers iosxe and iosxr and depending on ned type of device i choose i want to have one to appear
as shown below:
leaf device { type leafref { path "/ncs:devices/ncs:device/ncs:name"; } } container SR_inputs { container iosxr { when " /ncs:devices/ncs:device[ncs:name=current()/../device]/ncs:device-type/ncs:cli/ncs:ned-id='cisco-iosxr-cli-7.19-id:cisco-iosxr-cli-7.19'" { tailf:dependency "/ncs:devices/ncs:device/ncs:device-type/ncs:cli/ncs:ned-id"; } } container iosxe {
when " /ncs:devices/ncs:device[ncs:name=current()/../device]/ncs:device-type/ncs:cli/ncs:ned-id='cisco-ios-cli-6.90-id:cisco-ios-cli-6.90'"
{
tailf:dependency "/ncs:devices/ncs:device/ncs:device-type/ncs:cli/ncs:ned-id";
}
} }
do when can validate xpath ? because as I found when i search that when always validate value not xpath.
thanks
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