> On 16 Dec 2015, at 16:17, Jernej Tuljak <[email protected]> wrote:
>
> Ladislav Lhotka je 16.12.2015 ob 15:10 napisal:
>>> On 16 Dec 2015, at 14:08, Jernej Tuljak <[email protected]> wrote:
>>>
>>> Martin Bjorklund je 16.12.2015 ob 13:48 napisal:
>>>> Jernej Tuljak <[email protected]> wrote:
>>>>> Martin Bjorklund je 25.11.2015 ob 11:16 napisal:
>>>>>> Ladislav Lhotka <[email protected]> wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'd like to resolve this issue. Here is a complete example (valid, I
>>>>>>> believe):
>>>>>>>
>>>>>>> module context {
>>>>>>> namespace "http://example.com/context";
>>>>>>> prefix ctx;
>>>>>>>
>>>>>>> leaf foo {
>>>>>>> config false;
>>>>>>> type uint32;
>>>>>>> }
>>>>>>> rpc oper {
>>>>>>> output {
>>>>>>> must "/foo mod foo = 0";
>>>>>>> leaf foo {
>>>>>>> type uint32;
>>>>>>> }
>>>>>>> }
>>>>>>> }
>>>>>>> }
>>>>>>>
>>>>>>> 1. What does the accessible tree look like?
>>>>>> Note that the anser to this depends on the outcomne of Y04. Andy has
>>>>>> strong objections to Y04-02, and proposed Y04-04 instead.
>>>>>>
>>>>>> Assuming Y04-02, and assuming /foo has the value 20 and the oper rpc's
>>>>>> result has foo = 10, the accessible tree would look like this:
>>>>>>
>>>>>> <root>
>>>>>> +-- oper
>>>>>> | +-- foo = 10
>>>>>> +-- foo = 20
>>>>>>
>>>>>>
>>>>>> (If we instead move back to Y04-04, the accessible tree would be:
>>>>>>
>>>>>> <root>
>>>>>> +-- oper
>>>>>> +-- foo = 10
>>>>>>
>>>>>> )
>>>>>>
>>>>>>> 2. What is the context node for the "must" expression?
>>>>>> /oper
>>>>> This change to the accessible tree (1.0 --> 1.1) may break some
>>>>> existing "when" XPath expressions (those under "output" statement).
>>>> Maybe. The old text said:
>>>>
>>>> o If the context node represents RPC output parameters, the tree is
>>>> the RPC reply instance document.
>>>>
>>>> So this probably meant that for this definition:
>>>>
>>>> module ex {
>>>> ...
>>>> prefix x;
>>>> ...
>>>> rpc foo {
>>>> output {
>>>> leaf bar { ... }
>>>> }
>>>> }
>>>> }
>>>>
>>>> The accessile tree was:
>>>>
>>>> nc:rpc-reply
>>>> +-- x:bar
>>>>
>>>> This is very NETCONF-specifc. With 1.1, the tree would be:
>>>>
>>>> x:foo
>>>> +-- x:bar
>>>>
>>>> which is protocol-neutral.
>>>>
>>>>> Is
>>>>> this compatible with 1.1 charter - "All compliant YANG 1.0 modules
>>>>> must be accepted as compliant YANG 1.1 modules"?
>>>>>
>>>>> rpc my-rpc {
>>>>> output {
>>>>> uses my-stuff {
>>>>> when "specific-param = 'foo'";// 1.0
>>>>> // when "my-rpc/specific-param = 'foo'" // 1.1
>>>> This is not correct. If a relative path is used, it would be the same
>>>> in 1.0 and 1.1.
>>> I disagree due to current text:
>>>
>>> o data node: A node in the schema tree that can be instantiated in a
>>> data tree. One of container, leaf, leaf-list, list, anydata, and
>>> anyxml.
>>>
>>> o If the XPath expression is defined in a substatement to an
>>> "output" statement in an "rpc" or "action" statement, the
>>> accessible tree is the RPC or action operation instance, all state
>>> data in the server, and the running configuration datastore. The
>>> root node has top-level data nodes in all modules as children.
>>> Additionally, for an RPC, the root node also has the node
>>> representing the RPC operation being defined as a child. The node
>>> representing the operation being defined has the operation's
>>> output parameters as children.
>>>
>>> o If the "when" statement is a child of a "uses", "choice", or
>>> "case" statement, then the context node is the closest ancestor
>>> node to the "uses", "choice", or "case" node that is also a data
>>> node. If no such node exists, the context node is the root node.
>>> The accessible tree is tentatively altered during the processing
>>> of the XPath expression by removing all instances (if any) of the
>>> nodes added by the "uses", "choice", or "case" statement.
>>>
>>>
>>> It clearly says that the context node is the root node ("/"), not the node
>>> representing the RPC ("/my-rpc"), which is a child to root node. The "root
>>> node" aka "document root" can only mean a single thing XPath terminology.
>> RFC 6020 clearly says that the tree is the rpc reply instance document, so
>> it is a different document whose root node coincides with <rpc-reply>. The
>> problem of 6020bis is that we need a definition that's independent of XML,
>> and that's not so easy, but I agree with Martin that nothing should change
>> for relative paths.
>
> I'm not against the new accessible tree. That nothing should change for
> relative paths is a given, IMO. So what about absolute location paths?
>
> The previous accessible tree for a "when" expression under "output" was:
>
> <root>
> +- x:bar
>
> and now it is:
>
> <root>
> +- x:foo
> +- x:bar
>
> The absolute path to "x:bar" was:
>
> /x:bar
>
> and is now:
>
> /x:foo/x:bar
>
> and this needs to be taken into account for at least relative paths to stay
> the same. Again, the root node is "/" in any case. So the context node needs
> to be set explicitly "/x:foo" for this corner case. I dare say it is not even
> a corner case. There is a similar
Yes, that's how I think it should be. It's tricky because x:foo doesn't appear
in the XML encoding of <rpc-reply> - that's what I asked about previously in
this thread.
Lada
> YANG pattern to my "my-rpc" example in ietf-netconf-notifications for a
> "notification".
>
> Jernej
>
>>
>> Lada
>>
>>> Jernej
>>>
>>>> If an absolute path is used, it would be:
>>>>
>>>> when "/nc:rpc-reply/x:specific-param = 'foo'"; // 1.0
>>>> when "/x:my-rpc/x:specific-param = 'foo'"; // 1.1
>>>>
>>>>
>>>> I wonder if any implementation of 1.0 supports this absolute form.
>>>>
>>>>
>>>> /martin
>>>>
>>>>
>>>>> }
>>>>> leaf specific-param {
>>>>> type string;
>>>>> }
>>>>> }
>>>>> }
>>>>>
>>>>> Jernej
>>>>>
>>>>>> /martin
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Thanks, Lada
>>>>>>>
>>>>>>> Martin Bjorklund <[email protected]> writes:
>>>>>>>
>>>>>>>> Ladislav Lhotka <[email protected]> wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Y02-01 allows "must" as a substatement of "input", "output" and
>>>>>>>>> "notification" but for these cases the specification of the context
>>>>>>>>> node in sec. 7.5.3 doesn't work.
>>>>>>>>>
>>>>>>>>> o The context node is the node in the accessible tree for which
>>>>>>>>> the
>>>>>>>>> "must" statement is defined.
>>>>>>>> You are right. But note how the accessible tree is defined. There is
>>>>>>>> a node for the operation / notification. This node should be the
>>>>>>>> context node:
>>>>>>>>
>>>>>>>> o If the "must" statement is a substatement of a "notification"
>>>>>>>> statement, the context node is the node representing the
>>>>>>>> notification in the accessible tree.
>>>>>>>>
>>>>>>>> o If the "must" statement is a substatement of a "input"
>>>>>>>> statement, the context node is the node representing the
>>>>>>>> operation in the accessible tree.
>>>>>>>>
>>>>>>>> o If the "must" statement is a substatement of a "output"
>>>>>>>> statement, the context node is the node representing the
>>>>>>>> operation in the accessible tree.
>>>>>>>>
>>>>>>>>
>>>>>>>> /martin
>>>>>>> --
>>>>>>> Ladislav Lhotka, CZ.NIC Labs
>>>>>>> PGP Key ID: E74E8C0C
>>>>>>>
>>>>>> _______________________________________________
>>>>>> netmod mailing list
>>>>>> [email protected]
>>>>>> https://www.ietf.org/mailman/listinfo/netmod
>>>>>>
>>>> _______________________________________________
>>>> netmod mailing list
>>>> [email protected]
>>>> https://www.ietf.org/mailman/listinfo/netmod
>>>>
>>> _______________________________________________
>>> netmod mailing list
>>> [email protected]
>>> https://www.ietf.org/mailman/listinfo/netmod
>> --
>> Ladislav Lhotka, CZ.NIC Labs
>> PGP Key ID: E74E8C0C
>>
>>
>>
>>
>> _______________________________________________
>> netmod mailing list
>> [email protected]
>> https://www.ietf.org/mailman/listinfo/netmod
--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod