On Wed, Apr 25, 2018 at 12:03 AM, Martin Bjorklund <m...@tail-f.com> wrote:

> 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 { ... }
>     }
>
>

But you are proposing that the target location not be specified,
or specified inside a description-stmt.

No matter what context you pick, DOUBLE augment is not allowed:


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


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


So yang-data cannot define the same node in multiple contexts.
Leaving the context unspecified is not an option.





> 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
>
>
>

Andy



>
>
> >
> >
> >
> > > /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