On 9/19/2017 9:42 AM, Martin Bjorklund wrote: > Lou Berger <lber...@labn.net> wrote: >> >> On 9/19/2017 7:29 AM, Martin Bjorklund wrote: >>> Lou Berger <lber...@labn.net> wrote: >>>> Martin, >>>> >>>> Speaking as a contributor: >>>> >>>> >>>> On 9/15/2017 7:40 AM, Martin Bjorklund wrote: >>>>> Robert Wilton <rwil...@cisco.com> wrote: >>>>>> On 15/09/2017 11:21, Ladislav Lhotka wrote: >>>>>>> Andy Bierman píše v Čt 14. 09. 2017 v 08:43 -0700: >>>>>>>> Hi, >>>>>>>> >>>>>>>> >>>>>>>> Actually I liked the early pyang output that was concise and easy to >>>>>>>> remember. >>>>>>>> The current format gets very cluttered and there are too many little >>>>>>>> symbols >>>>>>>> to remember them all. >>>>>>> I agree. >>>>> Me too. The current draft adds three new magic symbols: "mp" "@" and >>>>> "/". >>>>> >>>>> "mp" is for a mount point, and it can be generated directly from the >>>>> YANG modules. >>>>> >>>>> Directly under a "mp", "/" and "@" are used to indicate that a node is >>>>> mounted >>>>> or available through a parent reference, respectively. >>>>> >>>>> I actually question the usability of "/" and "@". >>>> I agree that / and @ are something new, and enabled by schema mount. >>>> There have been repeated comments in the RTG WG that there needs to be >>>> some way for vendors to convey what they have implemented with Schema >>>> mount >>> If that's the requirement, using the tree diagram is probably not the >>> best way. The tree diagram is intended to provide an overview of a >>> given (set of) YANG module(s). >>> >>> A perhaps better way to convey the information is to create a file >>> with an instantiated /schema-mounts tree. >> using what syntax? JSON and XML really isn't that easy for the (human) >> reader to parse. > Either JSON or XML. This is fine for code, less so for humans. We include both in the NI draft, the tree provides a quick overview, the JSON provides the details.
> >>>> and this is one way to help convey (a) what is expected of server >>>> implementors and (b) what client implementors should expect. >>>> >>> Hence the >>>> current draft text: >>>> >>>> In describing the intended use of a module containing a mount point, >>>> it is helpful to show how the mount point would look with mounted >>>> modules. >>>> >>>> The whole point of trees is to facilitate understanding for those who >>>> are less familiar with a model than the authors, and IMO that's the >>>> paramount perspective in this discussion. >>> Fully agree! I would say that we have to make sure that the diagrams >>> can be understood by people less familiar with the technology than the >>> authors. Mixing schema and instance data does not help here. >> Can you propose an alternative? > As I have written before, I think the "/" is not needed, so I would > remove that. I would also not list the nodes from "parent-references" > in the same tree ouput. It is not clear to me that this level of > detail is needed in the tree, and - as noted before - it isn't even > correct to list e.g. "interfaces" when the parent-reference in fact > selects a single interface. > >> The routing WG participants seem to >> find these useful, we can also ask there for broader input if you'd like. > One approach is to add the union of eveything that some people find > useful. In the end we have to look for WG consensus. Several people > have said that they prefer a less cluttered format. In the context of listing enums... > >>>>> Since a parent >>>>> reference can be very specific, e.g. one specific interface, it isn't >>>>> really accurate to show: >>>>> >>>>> +--mp vrf-root >>>>> +--rw rt:routing/ >>>>> | ... >>>>> +--ro if:interfaces@ >>>> This is just a conditional and we have precedent on how to handle >>>> conditional representation. >>>> >>>>> And the trailing "/" on rt:routing doesn't add any information we >>>>> don't already know. Since vrf-root is a mount point, it follows that >>>>> its children are mounted. >>>> The issue is a bit more complex when considering some real use cases, >>>> particularity when parent references and augmentations are used. For >>>> example consider the following *without* the use / or @: >>>> >>>> module: ietf-network-instance >>>> +--rw network-instances >>>> +--rw network-instance* [name] >>>> | ... >>>> +--rw (root-type) >>>> +--:(vrf-root) >>>> +--mp vrf-root >>>> +--ro rt:routing-state >>>> | +--ro router-id? yang:dotted-quad >>>> | +--ro control-plane-protocols >>>> | +--ro control-plane-protocol* [type name] >>>> | +--ro ospf:ospf >>>> | +--ro instance* [af] >>>> +--rw rt:routing >>>> | +--rw router-id? yang:dotted-quad >>>> | +--rw control-plane-protocols >>>> | +--rw control-plane-protocol* [type name] >>>> | +--rw ospf:ospf >>>> | +--rw instance* [af] >>>> | +--rw areas >>>> | +--rw area* [area-id] >>>> | +--rw interfaces >>>> | +--rw interface* [name] >>>> | +--rw name if:interface-ref >>>> | +--rw cost? uint16 >>>> +--ro if:interfaces >>>> | ... >>>> +--ro if:interfaces-state >>>> | ... >>>> >>>> >>>> It's certainly not too hard to spot the top level mounts, but it is >>>> impossible to distinguish the parent references from the actual mounts. >>> My proposal would be to not even show the parent references in the >>> diagram. If we do that, the '/' is not needed. >>> >>>> Further more, some mounts are hard to spot. For example, notice ospf. >>>> Did you notice that it's a mount? >>> This is actually not correct. ospf is *not* a mount; it is an augment. >>> >> it's a mounted module that augments another mounted module. > But why would it have a "/" just b/c it is augmented, when its sibling > 'control-plan-protocol' doesn't have the "/"? What addition info does > the "/" convey? That it is a (sub)tree that is present due to a mounted module. Lou > > > /martin _______________________________________________ netmod mailing list netmod@ietf.org https://www.ietf.org/mailman/listinfo/netmod