"Sterne, Jason (Nokia - CA/Ottawa)" <jason.ste...@nokia.com> wrote: > Thx. In the case I'm most concerned about, a-list (and all > descendants) is config true and 'entry' is the key leaf.
No need to check for a key's existance! > So all > a-list entries have a node called 'entry' by definition. > > (I'm regretting using the name 'entry' for my key now in this example 😊 > > In this case it seems all the following result in the equivalent behavior > (checking that a-list has at least one entry): > must "../a-list"; > must "../a-list[entry=*]"; > must "../a-list[entry]"; <- this confuses me but I'll take your word > for it > must "../a-list/entry"; > must "../a-list[entry=*]/entry"; > must "../a-list[entry]/entry"; <- not sure about this one Yes. As would: must "../a-list[1=1]/entry"; must "../a-list[count(*) > 0]/entry"; etc; if you want to have a confusing expression instead of the simple: must "../a-list"; /martin > > Rgds, > Jason > > > -----Original Message----- > > From: Martin Bjorklund [mailto:m...@tail-f.com] > > Sent: Wednesday, March 28, 2018 1:28 PM > > To: Sterne, Jason (Nokia - CA/Ottawa) <jason.ste...@nokia.com> > > Cc: alex.campb...@aviatnet.com; netmod@ietf.org > > Subject: Re: [netmod] YANG 'must' Xpaths, predicates and wildcards > > > > "Sterne, Jason (Nokia - CA/Ottawa)" <jason.ste...@nokia.com> wrote: > > > Thanks Alex. Sorry about those sloppy mistakes. I agree about the > > > ../a-list and I should have said count > 0. > > > > > > In the 2nd part of my email, my intention was to only allow foo to be > > > configured if a-list has at least one entry configured. So I don't > > > think min-elements 1 would work. I don't want to always require an > > > entry in a-list. I only want to require one if foo is configured. > > > > > > I guess this also achieves the same thing right ? > > > must "../a-list[entry=*]"; > > > > Yes, if all a-list entries has a node called "entry". But if that't > > what you want, do: > > > > must "../a-list[entry]"; > > > > > > > If foo has a default value, then does that mean the "must" is > > > evaluated even if foo is deleted from the config ? > > > leaf foo { > > > must "../a-list"; <- always evaluated because of default ? > > > type uint16; > > > default 5; > > > } > > > If the must is always evaluated then it would be the equivalent of > > > having min-elements 1 in a-list. > > > > > > Correct. > > > > > > /martin > > > > > > > > Rgds, > > > Jason > > > > > > From: Alex Campbell [mailto:alex.campb...@aviatnet.com] > > > Sent: Tuesday, March 27, 2018 9:57 PM > > > To: Sterne, Jason (Nokia - CA/Ottawa) <jason.ste...@nokia.com>; > > > net...@ietf..org > > > Subject: Re: YANG 'must' Xpaths, predicates and wildcards > > > > > > > > > Hi, > > > > > > > > > > > > For one thing, it should be ../a-list since a-list is not a child of > > > foo. > > > > > > Also - if foo is not configured and has no default value, then any > > > must expressions in foo are not evaluated because it is not part of > > > the "accessible tree". (I tested this in ConfD) > > > > > > Apart from these issues, yes it will behave as you expect - it will > > > fail if a-list contains no entries. > > > > > > > > > > > > must "count(a-list) > 1"; is not equivalent since it requires at least > > > two entries. > > > > > > > > > > > > However, you can more simply add a min-elements 1; statement to a-list > > > to achieve the same goal - no XPath required. > > > > > > > > > > > > ________________________________ > > > From: netmod <netmod-boun...@ietf.org<mailto:netmod- > > boun...@ietf.org>> > > > on behalf of Sterne, Jason (Nokia - CA/Ottawa) > > > <jason.ste...@nokia.com<mailto:jason.ste...@nokia.com>> > > > Sent: Wednesday, 28 March 2018 1:10 p.m. > > > To: netmod@ietf.org<mailto:netmod@ietf.org> > > > Subject: [netmod] YANG 'must' Xpaths, predicates and wildcards > > > > > > Hi all, > > > > > > I'm pretty sure that this xpath (e.g. in a must statement) isn't > > > correct: > > > > > > (A) ../container-a/list-b[name=*]/some-leaf > > > > > > and should just be this instead: > > > > > > (B) ../container-a/list-b/some-leaf > > > > > > Or is the * an allowable wildcard for a key value in a predicate ? > > > > > > I also had a question about whether the following "must" correctly > > > checks that at least one entry exists in a-list. > > > > > > container c1 { > > > leaf foo { > > > must "a-list"; > > > type uint16; > > > } > > > list a-list { > > > key "entry"; > > > leaf entry { > > > type uint16; > > > } > > > leaf another-entry { > > > type uint32; > > > } > > > } > > > } > > > > > > I think I could also replace that must with the following: > > > must "count(a-list) > 1"; > > > but does must "a-list"; achieve the same thing ? > > > > > > Rgds, > > > Jason _______________________________________________ netmod mailing list netmod@ietf.org https://www.ietf.org/mailman/listinfo/netmod