Subject: [netmod] Clarification needed for YANG 1.1 XPATH context

From: William Ivory <[email-masked]>
Date: Thu, 25 Feb 2016 15:08:09 +0000

Hi,

I'm looking for clarification on the meaning of the following paragraph in section 6.4.1 (XPATH context) in RFC6020bis:

   'If a node that exists in the accessible tree has a non-presence
   container as a child, then the non-presence container also exists in
   the tree.'

It's unclear to me what this is trying to say, and why - for example, does this mean that I need to validate any 'must' and 'when' statements on the child container even when nothing within that child container is configured?

Thanks,

William

---

From: Martin Bjorklund <[email-masked]>
Date: Thu, 25 Feb 2016 16:16:59 +0100 (CET)

William Ivory <[email-masked]> wrote:
> Hi,
> 
> I'm looking for clarification on the meaning of the following
> paragraph in section 6.4.1 (XPATH context) in RFC6020bis:
> 
> It's unclear to me what this is trying to say, and why - for example,
> does this mean that I need to validate any 'must' and 'when'
> statements on the child container even when nothing within that child
> container is configured?

must expressions are always evaluated if the node where the must
expression is defined exists, regardless of the number of children
this node has.

/martin

---

From: William Ivory <[email-masked]>
Date: Thu, 25 Feb 2016 15:25:39 +0000

-----Original Message-----
From: Martin Bjorklund [mailto:[email-masked]] 
Sent: 25 February 2016 15:17
To: William Ivory <[email-masked]>
Cc: [email-masked]
Subject: Re: [netmod] Clarification needed for YANG 1.1 XPATH context

> statements on the child container even when nothing within that child 

must expressions are always evaluated if the node where the must expression is defined exists, regardless of the number of children this node has.

[wivory] So in my example where the child container (non-presence) has NO children, then it doesn't exist, and any must statement on it should not be run.  Only when a non-presence container has a non-zero number of children should any 'must' statements on that container be run.

[wivory] If that's the case, then would it be correct to say that the intention of this paragraph is as a reminder that one must evaluate 'must' statements on nodes that have no inherent meaning and exist only because they contain child nodes?

Thanks,

William

/martin

---

From: Martin Bjorklund <[email-masked]>
Date: Thu, 25 Feb 2016 16:31:05 +0100 (CET)

William Ivory <[email-masked]> wrote:
> [wivory] So in my example where the child container (non-presence) has
> NO children, then it doesn't exist, and any must statement on it
> should not be run.  Only when a non-presence container has a non-zero
> number of children should any 'must' statements on that container be
> run.
> 
> [wivory] If that's the case, then would it be correct to say that the
> intention of this paragraph is as a reminder that one must evaluate
> 'must' statements on nodes that have no inherent meaning and exist
> only because they contain child nodes?

No; section 7.5.3 says:

   When a datastore is validated, all "must" constraints are
   conceptually evaluated once for each node in the accessible tree (see
   Section 6.4.1).

And the quoted paragraph of 6.4.1 says that the NP-container
(conceptually) exists if its parent exists - regardless of number of
children.

So if the parent exists, any must expressions in the NP-container are
evaluated.

/martin

---

From: William Ivory <[email-masked]>
Date: Thu, 25 Feb 2016 15:50:23 +0000

-----Original Message-----
From: Martin Bjorklund [mailto:[email-masked]] 
Sent: 25 February 2016 15:31
To: William Ivory <[email-masked]>
Cc: [email-masked]
Subject: Re: [netmod] Clarification needed for YANG 1.1 XPATH context

William Ivory <[email-masked]> wrote:
> > It's unclear to me what this is trying to say, and why - for 
> > example, does this mean that I need to validate any 'must' and 'when'
> > statements on the child container even when nothing within that 
> > child container is configured?
> 

No; section 7.5.3 says:

And the quoted paragraph of 6.4.1 says that the NP-container
(conceptually) exists if its parent exists - regardless of number of children.

So if the parent exists, any must expressions in the NP-container are evaluated.

[wivory] Is the intended use case top-level containers (directly under the root node) where you might wish to enforce that at least one such container existed?  In that case there would be no higher level node (as you can't add when/must to root) on which you could attach the 'must'.  At any other level in the tree you would always be able to attach the 'must' at a higher level.  Or am I missing some use case(s)?

Thanks,

William

/martin