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.

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

Reply via email to