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