Don't groupings have a somewhat similar concern?
E.g. if two groupings define the same data node name and are used at
the same point then you would get a namespace clash, but YANG does not
disallow the groupings:
grouping foo_widget {
leaf name {
type string;
description "Name of my foo widget";
}
}
grouping bar_widget {
leaf name {
type string;
description "Name of my bar widget";
}
}
container all_widgets {
uses foo_widget;
uses bar_widget;
}
The principal difference here, is that the compiler can easily check and
reject the conflict at the uses statements.
Hence I think that it would be good if we could find a solution for
yang-data-ext that doesn't not require all root yang-data nodes to be
unique, since that feels somewhat clunky. I.e. my preference is to keep
them less restrictive, as Martin has proposed, if this is feasible.
Thanks,
Rob
On 16/04/2018 15:36, Andy Bierman wrote:
Hi,
I am strongly opposed to this change because it breaks the rule in
YANG 1.1
that there cannot be 2 sibling nodes defined in the same module namespace.
IMO since any yang-data nodes are ALLOWED to be used at the top-level,
then these top-level nodes cannot have conflicting names.
It is very important when parsing an instance document that the
instance data
can be associated with the correct schema. This is not possible if the
same top-level node has multiple yang-data nodes defined.
If one needs to define data that is not top-level, (1) use
augment-yang-data
or (2) use a different module.
Andy
On Mon, Apr 16, 2018 at 5:56 AM, Martin Bjorklund <m...@tail-f.com
<mailto:m...@tail-f.com>> 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?
/martin
_______________________________________________
netmod mailing list
netmod@ietf.org <mailto:netmod@ietf.org>
https://www.ietf.org/mailman/listinfo/netmod
<https://www.ietf.org/mailman/listinfo/netmod>
_______________________________________________
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