On Mon, Apr 16, 2018 at 6:33 AM, Joe Clarke <jcla...@cisco.com> wrote:
> On 4/16/18 08:56, Martin Bjorklund 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.) > > > > 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? > > I found the "single container only" policy to be too restricting. I was > modeling data that would [typically] be serialized to something other > than XML, and this just made me jump through more hoops than I wanted to > use rc:yang-data. > > I agree with your laissez-faire proposal here. I think there should be > some text to the same effect about how it is up to the author of the > yd:yang-data elements to make sure the modeled data can be encoded as > they require. > > How will your tool handle this? module foo { x:yang-data fake-namespace1 { container top { ... } } x:yang-data fake-namespace2 { container top { ... } } container top { ... } } You parse an artifact file: <top xmlns="module-foo-namespace"> <next> ... </next> </top> Current YANG says that the <toip> node can only be defined once. This makes it possible for a parser to pick the correct schema. If 2 or or more yang-data definitions have this name (foo:top) then how does your tool pick the right one.? This existing restriction in YANG serves a useful purpose. Removing it would be unwise. There is no restriction to limit the yang-data to a container. This has already been removed. My counter-proposal is to remove the argument for yang-data since it servers no purpose: x:yang-data { container top { ... } } x:yang-data { list bar { ... } } Joe > > Andy > _______________________________________________ > netmod mailing list > netmod@ietf.org > https://www.ietf.org/mailman/listinfo/netmod >
_______________________________________________ netmod mailing list netmod@ietf.org https://www.ietf.org/mailman/listinfo/netmod