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