Re: [netmod] yang-data-ext issues

Martin Bjorklund <mbj@tail-f.com> Mon, 23 April 2018 19:49 UTC

Return-Path: <mbj@tail-f.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A3E0612D7E4 for <netmod@ietfa.amsl.com>; Mon, 23 Apr 2018 12:49:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hyjYH9Idl-jh for <netmod@ietfa.amsl.com>; Mon, 23 Apr 2018 12:49:26 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id E6B63126B6E for <netmod@ietf.org>; Mon, 23 Apr 2018 12:49:25 -0700 (PDT)
Received: from localhost (h-80-27.A165.priv.bahnhof.se [212.85.80.27]) by mail.tail-f.com (Postfix) with ESMTPSA id F19741AE018C; Mon, 23 Apr 2018 21:49:23 +0200 (CEST)
Date: Mon, 23 Apr 2018 21:49:23 +0200
Message-Id: <20180423.214923.1209533731960312602.mbj@tail-f.com>
To: andy@yumaworks.com
Cc: kwatsen@juniper.net, netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHQXqPpXT031qaZ5psPr4C8rsC6E2PkaL2nNLB7K-H_37g@mail.gmail.com>
References: <CABCOCHQukqRLz1Q-W0wNsV0ZOkBpm9gzXG0JqsUhj8voyPC6BQ@mail.gmail.com> <20180423.132830.1432860273167614403.mbj@tail-f.com> <CABCOCHQXqPpXT031qaZ5psPr4C8rsC6E2PkaL2nNLB7K-H_37g@mail.gmail.com>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/fGVtkhd5bUoIP_wflxO7-Xrtl58>
Subject: Re: [netmod] yang-data-ext issues
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 23 Apr 2018 19:49:30 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Mon, Apr 23, 2018 at 4:28 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Andy Bierman <andy@yumaworks.com> wrote:
> > > On Sun, Apr 22, 2018 at 11:52 PM, Martin Bjorklund <mbj@tail-f.com>
> > wrote:
> > >
> > > > Andy Bierman <andy@yumaworks.com> wrote:
> > > > > On Wed, Apr 18, 2018 at 10:47 AM, Martin Bjorklund <mbj@tail-f.com>
> > > > wrote:
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > Andy Bierman <andy@yumaworks.com> wrote:
> > > > > > > On Wed, Apr 18, 2018 at 10:26 AM, Kent Watsen <
> > kwatsen@juniper.net>
> > > > > > wrote:
> > > > > > >
> > > > > > > > I like Andy's proposal below, for the argument of the
> > 'yang-data'
> > > > > > > > statement to encode some meta-information regarding the
> > > > > > context/namespace
> > > > > > > > in which it's used, but I wonder how it really works.  For
> > > > instance,
> > > > > > would
> > > > > > > > "top" and "error-info" be the only allowed base-path values
> > for the
> > > > > > > > argument? and what is the value of the remainder of the path?
> > are
> > > > we
> > > > > > > > expecting for there to be some kind us 'uses' statement that
> > can
> > > > refer
> > > > > > to
> > > > > > > > just the base-path component to implement substitution-group
> > like
> > > > > > behavior?
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > If we want to avoid defining these contexts, then we could just
> > > > define
> > > > > > root
> > > > > > > vs. nonroot.
> > > > > > >
> > > > > > > e,g:
> > > > > > >
> > > > > > > x:yang-data /mydef1 {
> > > > > > >   container foo;
> > > > > > > }
> > > > > > >
> > > > > > > x:yang-data mydef2 {
> > > > > > >   leaf x;
> > > > > > >   leaf y;
> > > > > > >   container z;
> > > > > > > }
> > > > > > >
> > > > > > >
> > > > > > > Only an argument starting with '/' would be treated as a
> > top-level
> > > > data
> > > > > > > node.
> > > > > > >
> > > > > > > All other yang-data definitions are not allowed to appear as a
> > root
> > > > node.
> > > > > > > The context where this yang-data is used is completely
> > proprietary.
> > > > > > > The mechanism used to expand this yang-data as if it was a
> > grouping
> > > > > > > is completely proprietary.
> > > > > > >
> > > > > > > The augment-yang-data extension only applies to top-level
> > yang-data
> > > > > > > definitions.
> > > > > > >
> > > > > > > However, my preference is to only standardize top-level
> > yang-data.
> > > > > >
> > > > > > What is "top-level" yang-data?
> > > > > >
> > > > > >
> > > > > >
> > > > > It is a data structure that represents an instance document.
> > > >
> > > > So then I assume that you also want to change the current draft -01
> > > > behavior so that a yang-data structure MUST have a single container as
> > > > the child?  Just like in rc:yang-data.
> > > >
> > > >
> > >
> > > A yang-data structure representing an instance document needs to result
> > in
> > > a container.
> >
> > Right, and since you wrote:
> >
> >     my preference is to only standardize top-level yang-data.
> >
> > I assume that you want to re-add the CLR about a single container in
> > yang-ext?
> >
> > > > > Since this is the ONLY definition of yang-data we have in the
> > standard,
> > > > > what is a yang-data definition that represents some unspecified
> > usage,
> > > > > other than an instance document?
> > > >
> > > > We want to create a flexible solution for creating structures that can
> > > > be used in other places than just self-contained instance document.
> > > > One example is the error-info data (see subscribed-notifications).
> > > >
> > > > > Why is this any different than a YANG grouping?
> > > >
> > > > ?  We don't have these CLRs for groupings; the following is legal:
> > > >
> > > >   grouping foo {
> > > >     leaf a { ... }
> > > >     leaf b { ... }
> > > >   }
> > > >
> > > >   grouping bar {
> > > >     leaf b { ... }
> > > >   }
> > > >
> > > >
> > > > It is up to the user of the grouping to ensure it is used in a way so
> > > > that the result is legal.  I think yang-data should work the same
> > > > way.
> > > >
> > > >
> > > >
> > >
> > > We don't need yang-data to be another way to define a grouping, because
> > > we already have grouping-stmt.
> >
> > I agree.  At some point someone suggested "uses-yang-data", I think we
> > both agreed that this was a bad idea.
> >
> > > We don't need to re-invent another collection of data-def-stmts that are
> > not
> > > instantiated as data nodes automatically. Any place you could use
> > yang-data
> > > for this purpose, you could use a grouping instead.
> >
> > I'm not sure what you are trying to say.  Are you suggesting that we
> > don't need yang-data at all?
> >
> >
> 
> I do not understand the need for a yang-data structure that represents data
> that can be instantiated anywhere and everywhere.

AFAIK noone is proposing that.

> I do not want to break
> existing tools that expect sibling data nodes in the same module namespace
> to
> be unique local-names.
> 
> I would rather stick with the yang-data in RFC 8040 than introduce a new
> extension
> with no restrictions.  Standard YANG extensions should be interoperable and
> have
> a clear purpose.

Of course.

> If we do not need to define what a YANG extension does in
> a way that can be observed somehow, then it does not need to be a standard.

Agreed.

Not sure how any of this helps with the original issue though.


/martin



> 
> 
> 
> > /martin
> >
> 
> 
> Andy
> 
> 
> >
> >
> > >
> > >
> > >
> > > > /martin
> > > >
> > > >
> > > >
> > >
> > > Andy
> > >
> > >
> > >
> > > >
> > > > >
> > > > >
> > > > >
> > > > > > /martin
> > > > > >
> > > > > >
> > > > > >
> > > > > Andy
> > > > >
> > > > >
> > > > >
> > > > > > > I do not see any need for the other form since all functionality
> > can
> > > > be
> > > > > > > achieved with a grouping and a proprietary YANG extension.
> > > > > > >
> > > > > > > Kent // contributor
> > > > > > > >
> > > > > > >
> > > > > > > Andy
> > > > > > >
> > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On 4/16/18, 1:05 PM, "netmod on behalf of Andy Bierman" <
> > > > > > > > netmod-bounces@ietf.org on behalf of andy@yumaworks.com>
> > wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On Mon, Apr 16, 2018 at 9:46 AM, Robert Wilton <
> > rwilton@cisco.com>
> > > > > > wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On 16/04/2018 17:07, Andy Bierman wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On Mon, Apr 16, 2018 at 8:44 AM, Robert Wilton <
> > rwilton@cisco.com>
> > > > > > wrote:
> > > > > > > >
> > > > > > > > Don't groupings have a somewhat similar concern?
> > > > > > > >
> > > > > > > >  E.g. if two groupings define the same data node name and are
> > used
> > > > at
> > > > > > the
> > > > > > > > same point then you would get a namespace clash, but YANG does
> > not
> > > > > > disallow
> > > > > > > > the groupings:
> > > > > > > >
> > > > > > > >
> > > > > > > >      grouping foo_widget {
> > > > > > > >
> > > > > > > >        leaf name {
> > > > > > > >
> > > > > > > >          type string;
> > > > > > > >
> > > > > > > >          description "Name of my foo widget";
> > > > > > > >
> > > > > > > >        }
> > > > > > > >
> > > > > > > >      }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >      grouping bar_widget {
> > > > > > > >
> > > > > > > >        leaf name {
> > > > > > > >
> > > > > > > >          type string;
> > > > > > > >
> > > > > > > >          description "Name of my bar widget";
> > > > > > > >
> > > > > > > >        }
> > > > > > > >
> > > > > > > >      }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >      container all_widgets {
> > > > > > > >
> > > > > > > >        uses foo_widget;
> > > > > > > >
> > > > > > > >        uses bar_widget;
> > > > > > > >
> > > > > > > >      }
> > > > > > > >
> > > > > > > >
> > > > > > > > The principal difference here, is that the compiler can easily
> > > > check
> > > > > > and
> > > > > > > > reject the conflict at the uses statements.
> > > > > > > >
> > > > > > > > Hence I think that it would be good if we could find a
> > solution for
> > > > > > > > yang-data-ext that doesn't not require all root yang-data
> > nodes to
> > > > be
> > > > > > > > unique, since that feels somewhat clunky.  I.e. my preference
> > is to
> > > > > > keep
> > > > > > > > them less restrictive, as Martin has proposed, if this is
> > feasible.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > It is not clunky that 2 top-level YANG data nodes in the same
> > > > module
> > > > > > > >
> > > > > > > > have unique names. This is simple and deterministic.
> > > > > > > >
> > > > > > > > This restriction has not been a problem so far.
> > > > > > > >
> > > > > > > > I agree with the statements above.
> > > > > > > >
> > > > > > > > But it is not clear to me that yang-data-ext is really defining
> > > > new top
> > > > > > > > level data nodes that are part of the same tree/namespace as
> > the
> > > > > > > > configuration/state nodes.  In Martin's examples they were used
> > > > within
> > > > > > > > RPCs, and it the forcing the names to be unique in that context
> > > > that I
> > > > > > > > think would be clunky.  E.g. in Martin's example forcing
> > different
> > > > > > names
> > > > > > > > for "reason" and "user-info" doesn't seem to be helpful.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > The yang-data statement has to define the context or new
> > abstract
> > > > > > > > namespace,
> > > > > > > >
> > > > > > > > or whatever this hack is called.
> > > > > > > >
> > > > > > > > Perhaps.  I think that this depends on how they are used.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > The yang-data statement has to specify the expansion point, or
> > > > > > > >
> > > > > > > > at least specify that it is or is not the top-level.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >   yang-data top/name1 {
> > > > > > > >
> > > > > > > >       container mydata;
> > > > > > > >
> > > > > > > >   }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > where context is something like "top" or "error-info", etc.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > It is trivial to use groupings if the same set of nodes needs
> > to be
> > > > > > used
> > > > > > > > in different contexts:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >   yang-data error-info/name1 {
> > > > > > > >
> > > > > > > >       container mydata;
> > > > > > > >
> > > > > > > >   }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Only the context named "top" is restricted to a resulting
> > > > > > single-container
> > > > > > > >
> > > > > > > > and cannot have duplicate names.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > This is OK:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >   x:yang-data error-info/my-error1 {
> > > > > > > >
> > > > > > > >       leaf reason {}
> > > > > > > >
> > > > > > > >   }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >   x:yang-data error-info/my-error2 {
> > > > > > > >
> > > > > > > >       leaf reason {}
> > > > > > > >
> > > > > > > >   }
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Could a fix for this be something along the lines of:
> > > > > > > >  - yang-data names must be unique amongst other top level data
> > > > nodes
> > > > > > > > within the module.
> > > > > > > >  - if yang-data extensions are used at the top level then their
> > > > name
> > > > > > must
> > > > > > > > be used as a single top level container.
> > > > > > > >  - if a yang-data extension is used within another structure
> > then
> > > > the
> > > > > > > > yang-data name is excluded, and the top level nodes defined in
> > the
> > > > > > > > yang-data definition are used ....
> > > > > > > >
> > > > > > > >
> > > > > > > >   Every tool that implements yang-data has to be able
> > > > > > > >
> > > > > > > > to interpret a yang-data statement exactly the same way.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > If you want to reinvent XSD substitutionGroup, then do it
> > right.
> > > > > > > >
> > > > > > > > I'm not familiar with them.  From a quick read, I don't see how
> > > > they
> > > > > > are
> > > > > > > > related to the problem that we are trying to solve here.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > A substitutionGroup allows a point int the schema to be
> > identified
> > > > by
> > > > > > name.
> > > > > > > >
> > > > > > > > Different elements can be defined that match this name, which
> > then
> > > > can
> > > > > > be
> > > > > > > >
> > > > > > > > used (like a YANG choice) at the specified schema point.
> > > > > > > >
> > > > > > > > (e.g. error-info above is like a substitutionGroup)
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Rob
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Andy
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Rob
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Andy
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On 16/04/2018 15:36, Andy Bierman wrote:
> > > > > > > >
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I am strongly opposed to this change because it breaks the
> > rule in
> > > > > > YANG 1..1
> > > > > > > >
> > > > > > > > that there cannot be 2 sibling nodes defined in the same module
> > > > > > namespace..
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > IMO since any yang-data nodes are ALLOWED to be used at the
> > > > top-level,
> > > > > > > >
> > > > > > > > then these top-level nodes cannot have conflicting names.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > It is very important when parsing an instance document that the
> > > > > > instance
> > > > > > > > data
> > > > > > > >
> > > > > > > > can be associated with the correct schema.  This is not
> > possible
> > > > if the
> > > > > > > >
> > > > > > > > same top-level node has multiple yang-data nodes defined.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > If one needs to define data that is not top-level, (1) use
> > > > > > > > augment-yang-data
> > > > > > > >
> > > > > > > > or (2) use a different module.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Andy
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On Mon, Apr 16, 2018 at 5:56 AM, Martin Bjorklund <
> > mbj@tail-f.com>
> > > > > > wrote:
> > > > > > > >
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > While preparing draft-ietf-netmod-yang-data-ext-02, it turned
> > out
> > > > that
> > > > > > > > it is not clear what, if any, restrictions should be enforced
> > for
> > > > > > > > yang-data structures.  Even among the authors we have different
> > > > ideas
> > > > > > > > for how this should work.
> > > > > > > >
> > > > > > > > Background:
> > > > > > > >
> > > > > > > > In 8040, the original yang-data extension had a restriction
> > that
> > > > said
> > > > > > > > that a yang-data structure MUST have exactly one container,
> > since
> > > > it
> > > > > > > > wouldn't be possible to have a yang-data structure in an XML
> > > > instance
> > > > > > > > document otherwise.
> > > > > > > >
> > > > > > > > Since people want to use yang-data structures in other places,
> > this
> > > > > > > > restriction was lifted in the new draft:
> > > > > > > >
> > > > > > > >    There is no longer an assumption that a yang data structure
> > can
> > > > > > > >    only be used as a top-level abstraction, instead of nested
> > > > within
> > > > > > > >    some other data structure.
> > > > > > > >
> > > > > > > >
> > > > > > > > With this in mind, here's a use case that I think we ought to
> > > > support:
> > > > > > > >
> > > > > > > >   rpc my-first-rpc {
> > > > > > > >     description
> > > > > > > >       "Bla bla...
> > > > > > > >        If an error occurs, <error-info> will contain an
> > instance of
> > > > > > > >        the yang-data structure 'my-first-rpc-error-info'.";
> > > > > > > >     ...
> > > > > > > >   }
> > > > > > > >
> > > > > > > >   yang-data my-first-rpc-error-info {
> > > > > > > >     leaf reason { ... }
> > > > > > > >     container user-info { ... }
> > > > > > > >   }
> > > > > > > >
> > > > > > > >   rpc my-second-rpc {
> > > > > > > >     description
> > > > > > > >       "Bla bla...
> > > > > > > >        If an error occurs, <error-info> will contain an
> > instance of
> > > > > > > >        the yang-data structure 'my-second-rpc-error-info'.";
> > > > > > > >     ...
> > > > > > > >   }
> > > > > > > >
> > > > > > > >   yang-data my-second-rpc-error-info {
> > > > > > > >     leaf reason { ... }
> > > > > > > >     leaf important-url { ... }
> > > > > > > >   }
> > > > > > > >
> > > > > > > > (maybe in the future we could even have a YANG extension
> > statement
> > > > to
> > > > > > > > formalize the description:
> > > > > > > >
> > > > > > > >    rpc my-first-rpc {
> > > > > > > >      ...
> > > > > > > >      opx:error-info-structure my-first-rpc-error-info;
> > > > > > > >    }
> > > > > > > >
> > > > > > > > but this is not point now.)
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > I see no reason to reinvent the grouping-stmt.
> > > > > > > >
> > > > > > > > You could easily say opx:error-info-structure argument is a
> > > > grouping
> > > > > > name
> > > > > > > >
> > > > > > > > as it is a yang-data name.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > In the example above, note that the leaf "reason" is present in
> > > > both
> > > > > > > > structures.  IMO this is not a problem, since these structures
> > are
> > > > > > > > used in different contexts.
> > > > > > > >
> > > > > > > > My point is that I think we should impose as few restrictions
> > as
> > > > > > > > possible to the yang-data extension.  It should be up to the
> > user
> > > > of
> > > > > > > > yang-data to ensure that the structure is defined in such a
> > way so
> > > > > > > > that it can be used properly.  For example, a structure that is
> > > > > > > > supposed to describe an XML instance document cannot define two
> > > > leafs
> > > > > > > > at the top level.
> > > > > > > >
> > > > > > > > If the WG agrees with what I wrote above, we need to change the
> > > > > > > > augment-yang-data extension so that you would write for
> > example:
> > > > > > > >
> > > > > > > >   yx:augment-yang-data /ex:my-first-rpc-error-info/ex:user-info
> > {
> > > > > > > >     ...
> > > > > > > >   }
> > > > > > > >
> > > > > > > > Comments?
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > /martin
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > netmod mailing list
> > > > > > > > netmod@ietf.org
> > > > > > > > https://www.ietf.org/mailman/listinfo/netmod
> > > > > > > > <https://urldefense.proofpoint.com/v2/url?u=https-
> > > > > > 3A__www.ietf.org_mailman_listinfo_netmod&d=DwMFaQ&c=
> > > > > > HAkYuh63rsuhr6Scbfh0UjBXeMK-ndb3voDTXcWzoCI&r=
> > > > > > 9zkP0xnJUvZGJ9EPoOH7Yhqn2gsBYaGTvjISlaJdcZo&m=q6I_
> > > > > > yKbXVoahv9h5I1wZiQMUeHLZ5XWuMohEYtypmzs&s=jECZMhypw9LtuxzuntkFNM-
> > > > > > 8lm7xpztYwDDLOxCM_8k&e=>
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > >
> > > > > > > > netmod mailing list
> > > > > > > >
> > > > > > > > netmod@ietf.org
> > > > > > > >
> > > > > > > > https://www.ietf.org/mailman/listinfo/netmod <
> > https://urldefense.
> > > > > > proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_
> > > > > > listinfo_netmod&d=DwMFaQ&c=HAkYuh63rsuhr6Scbfh0UjBXeMK-
> > > > ndb3voDTXcWzoCI&r=
> > > > > > 9zkP0xnJUvZGJ9EPoOH7Yhqn2gsBYaGTvjISlaJdcZo&m=q6I_
> > > > > > yKbXVoahv9h5I1wZiQMUeHLZ5XWuMohEYtypmzs&s=jECZMhypw9LtuxzuntkFNM-
> > > > > > 8lm7xpztYwDDLOxCM_8k&e=>
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> >