Andy Bierman <a...@yumaworks.com> wrote:
> On Mon, Apr 23, 2018 at 1:08 PM, Martin Bjorklund <m...@tail-f.com> wrote:
> 
> > Andy Bierman <a...@yumaworks.com> wrote:
> > > > ....
> > > > >
> > > > > 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.
> > > >
> > > >
> > >
> > > You proposed that duplicate nodes were OK:
> > >
> > > module X {
> > > prefix x;
> > >
> > > x:yang-data A {
> > >    list foo { ... }
> > > }
> > >
> > > x:yang-data B {
> > >   container foo { ... }
> > > }
> > >
> > > }
> > >
> > >
> > > I do not want to allow any duplicates.
> >
> > Yes, I got that.
> >
> > > There are no encoding and parsing rules for instance data
> > > that support this sort of duplicate.
> >
> > This is not correct, as I have demonstrated earlier, and I think you
> > also accepted; if different structures are defined for different rpcs'
> > error-infos, then these structures can have the same child node names.
> >
> > I think that we have to agree on the basics before disussing
> > solutions:
> >
> >   1)  Should we do anything at all?
> >
> >       (i.e., keep using yang-data in RFC 8040)
> >
> >   2)  Should we define structures that only can be used in
> >       standalone instance documents?
> >
> >       (i.e., *more* restrictive than yang-data in RFC 8040)
> >
> >   3)  Should we define structures that can be used in standalone
> >       instance documents, error-info contents, and other places that
> >       we might not know right now?
> >
> >       (i.e., *less* restrictive than yang-data in RFC 8040)
> >
> >
> > Since the current draft says:
> >
> >    The "yang-data" extension statement from RFC
> >    8040 [RFC8040] is defined for this purpose, however it is limited in
> >    its functionality.
> >
> >    The intended use of the "yang-data" extension is to model all or part
> >    of a protocol message, such as the "errors" definition in ietf-
> >    restconf.yang [RFC8040], or the contents of a file.  However,
> >    protocols are often layered such that the header or payload portions
> >    of the message can be extended by external documents.  The YANG
> >    statements that model a protocol need to support this extensibility
> >    that is already found in that protocol.
> >
> >
> > I thought we are doing (3).
> >
> >
> >
> The use-case that has come up several times is (1).
> People want to use YANG to define the schema for an XML or JSON
> representation of a stand-alone document.
> 
> Item (3) needs to be machine-readable and deterministic for it to be even
> remotely
> feasible as a standard. There is no way a tool should have to match <x:foo>
> to
> the correct schema, based on the description-stmt inside some
> yang-data-stmt.
> The only data needed must be module + local-name.
> 
> The example you gave of different definitions of the <reason> leaf is a
> really bad idea.
> We should never try to define different schema for the same instance data,
> where the module-name and local-name are the same, but the contents are
> different.

When the context is different this is not a problem.  Compare w/
augment:

    augment "/if:interfaces/if:interface" {
      container ipv4 { ... }
    }

    augment "/if:interfaces/if:interface-state" {
      container ipv4 { ... }
    }
     
These augements define the node "ipv4" in the the "ietf-ip" namespace,
but b/c the context is different, there is no risk for confusion.

> Defining an extension that maps error-info data for a specific RPC might be
> something worth standardizing.  It should not be done with yang-data,
> but rather a different extension just for this purpose.

See my email to Kent.  I don't understand why this can't be done with
yang-data.  This said, if we were to do a new version of YANG and
address this problem, we would define a new core keyword for this.


/martin




> 
> 
> 
> > /martin
> >
> 
> Andy
> 
> 
> >
> >
> >
> > > yang-data definitions define conceptual data nodes (e.g, /x:foo)
> > > Only one data-def-stmt (in yang-data or otherwise) can define a data node
> > > /x:foo.
> > > The descriptive names for the yang-data (A or B) do not define
> > namespaces.
> > >
> > >
> > >
> > > > /martin
> > > >
> > > >
> > > Andy
> >

_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to