Andy, On 07/27/2015 12:58 PM, Andy Bierman wrote: > Hi, > > I don't think a standard for relocating subtrees would be worth it. > I am not in favor of moving /interfaces or /system to a new location. > That's not how YANG works. It only allows "obsolete and start over". > > I would suggest pursuing solutions that don't cause > as much disruption and expense as possible. >
I think it would be really good to explore other, less "disruptive" options. Perhaps you'd be willing to have a brain storming session off-line? (Of course, any proposed changes/approaches would be brought to the WG for normal WG processing.) Lou > For example, a resource directory of symlinks > (YANG leaf, type instance-identifier) would allow > standard or vendor modules to be supported. > The exact location of the data nodes can change over time, > and be different on each server. > > > Andy > > On Mon, Jul 27, 2015 at 8:48 AM, Lou Berger <[email protected] > <mailto:[email protected]>> wrote: > > Andy, > > Thanks for the good information. (I'll followup off line a bit if > that's okay.) Of course there's a small matter of getting something > standardized. > > Lou > > On July 27, 2015 2:19:09 AM Andy Bierman <[email protected] > <mailto:[email protected]>> wrote: > >> >> >> On Sun, Jul 26, 2015 at 5:31 PM, Lou Berger <[email protected] >> <mailto:[email protected]>> wrote: >> >> Andy, >> >> Have you thought through implications / possibilities for >> existing models, e.g., interfaces? >> >> >> >> First we have to define various forms of relocation. >> >> (1) Aggregation of datastores >> >> The simplest form is aggregation. >> It is possible to define a YANG container that is a conceptual >> document root, such that the set of child nodes matches the set >> of top-level YANG data nodes supported by the server. >> >> A YANG extension can mark a YANG container or anyxml as a docroot. >> Yuma-based code has been doing this for years with a YANG >> extension called "root" >> >> http://www.netconfcentral.org/modules/yuma-ncx/2013-09-23#root.554 >> >> http://svn.tools.ietf.org/svn/wg/netmod/yang-1.1/issues.html >> (See Y34-04) >> >> The <config> node below is a document root: >> >> container servers { >> list server { >> key addr; >> leaf addr { type inet:ip-address; } >> anydata config { >> ncx:root; >> } >> } >> } >> >> XPath evaluation requires certain inputs, including a context node >> and a document root. The 'root' extension tells the tool to use >> the node with the 'root' tag as the document root, when processing >> XPath within its descendant nodes. Without the tag, the XPath parser >> would use 'servers' as the document root, which is incorrect for >> the relocated YANG nodes within 'config'. >> >> (2) Move a subtree within the datastore >> >> This is the hardest (of course) because it involves moving the >> context node >> not the document root. It is possible for tools to get fooled >> about the intent >> of the XPath writer. Basically the tool has to remember the >> original context node, >> and do some complicated data manipulation, processing [4] Step >> in XPath 1.0. Multiple relocated subtrees gets even more complicated. >> >> It may be possible to come up with some guidelines on XPath to avoid. >> Basically any Xpath that selects nodes by specific names can be >> relocated automatically. Nodes selected by function, wildcard, >> axis, etc. >> will not be so easy. >> >> >> >> >> Thanks, >> Lou >> >> >> >> Andy >> >> >> On July 26, 2015 4:41:32 PM Andy Bierman <[email protected] >> <mailto:[email protected]>> wrote: >> >>> Hi Acee, >>> >>> I agree that "Relocatable YANG" would be very useful, and >>> have been >>> thinking about the problem for awhile. I think the key is to >>> precisely >>> define a protocol-independent document root for each of the >>> various >>> YANG XPath contexts. In most cases the expression can be >>> automatically relocated to an ancestor root. For the rest, a >>> YANG mechanism is needed to tell the compiler to force evaluation >>> on the old docroot (not the new docroot ancestor). >>> >>> >>> Andy >>> >>> >>> On Sun, Jul 26, 2015 at 10:49 AM, Acee Lindem (acee) >>> <[email protected] <mailto:[email protected]>> wrote: >>> >>> I think being able to place a given model anywhere in the >>> device tree >>> would be useful and this would allow a model to be rooted >>> in different >>> locations on different devices. Similarly, we’d need the >>> ability to prefix >>> XPATH references to data nodes in the model with the root. >>> Thanks, >>> Acee >>> >>> On 7/20/15, 11:00 PM, "netmod on behalf of Juergen >>> Schoenwaelder" >>> <[email protected] <mailto:[email protected]> >>> on behalf of >>> [email protected] >>> <mailto:[email protected]>> wrote: >>> >>> >Lada, >>> > >>> >Y34 is closed and I have not seen any new argument here >>> that indicates >>> >we made a major mistake with the resolution of Y34. As >>> such, Y34 >>> >remains closed. >>> > >>> >If you want to discuss new ideas to relocate or >>> "symlink" data models, >>> >please do so in a separate thread. (And no, we do not >>> accept new >>> >issues for YANG 1.1 either at this point in time.) >>> > >>> >/js >>> > >>> >On Mon, Jul 20, 2015 at 07:42:49PM +0200, Ladislav >>> Lhotka wrote: >>> >> >>> >> > On 20 Jul 2015, at 19:29, Andy Bierman >>> <[email protected] <mailto:[email protected]>> wrote: >>> >> > >>> >> > >>> >> > >>> >> > On Mon, Jul 20, 2015 at 10:15 AM, Ladislav Lhotka >>> <[email protected] <mailto:[email protected]>> >>> >>wrote: >>> >> > >>> >> > > On 20 Jul 2015, at 17:00, Andy Bierman >>> <[email protected] <mailto:[email protected]>> wrote: >>> >> > > >>> >> > > >>> >> > > >>> >> > > On Mon, Jul 20, 2015 at 6:08 AM, Ladislav Lhotka >>> <[email protected] <mailto:[email protected]>> >>> >>wrote: >>> >> > > >>> >> > > > On 20 Jul 2015, at 14:55, Andy Bierman >>> <[email protected] <mailto:[email protected]>> wrote: >>> >> > > > >>> >> > > > Hi, >>> >> > > > >>> >> > > > Can you explain why we need 2 broken anyxmls? >>> >> > > > (The original and a synonym?) The whole point of >>> >> > > > anydata is that it does not have XML cruft in it. >>> >> > > >>> >> > > Yes, I understand this was your main priority. For >>> implementors >>> >>using off-the-shelf XML parsers and tools the XML cruft >>> is not an issue >>> >>at all. >>> >> > > >>> >> > > >>> >> > > yes it is an issue. >>> >> > > We need something to model a container full of >>> arbitrary YANG data >>> >>nodes. >>> >> > > This is something that can be applied to the >>> contents of a >>> >>datastore. >>> >> > >>> >> > anyxml can do that, too. >>> >> > >>> >> > >>> >> > the WG already decided it can't. >>> >> > The extra XML PIs, etc. are not accepted by all >>> servers, remember? >>> >> > There is no use for the extra stuff in the datastore. >>> >> > I don't see why we need 2 anyxml constructs that >>> are not >>> >> > supported by the industry. One is already too many. >>> >> >>> >> I agree, but this is what we are going to have. My >>> proposal was to have >>> >>just one with two different names. >>> >> >>> >> > >>> >> > >>> >> > > >>> >> > > >>> >> > > Anyway, I believe there are use cases for >>> arbitrary XML/JSON/CBOR/… >>> >>with no (YANG) schema available. My only complaint to >>> “anyxml” has >>> >>always been that it is a misnomer for encodings other >>> than XML. >>> >> > > >>> >> > > The message encoding on the wire is not the same issue >>> >> > > as the contents of a datastore. Our server stores >>> its own >>> >> > > internal data structures. XML, JSON, CBOR are >>> just message >>> >> > > encoding formats between client and server. The >>> datastore >>> >> > > is not encoded in any of these formats. >>> >> > >>> >> > The payload of anyxml needn’t directly map to a data >>> subtree in the >>> >>usual sense. >>> >> > >>> >> > that's precisely the difference between anyxml and >>> anydata. >>> >> > The anydata node MUST map directly into data subtrees. >>> >> >>> >> If the server doesn’t know the YANG data model at run >>> time (which is >>> >>possible) then it cannot do it - for instance, it >>> cannot properly map >>> >>module names to namespace URI or handle lists. >>> >> >>> >> > >>> >> > >>> >> > >>> >> > > >>> >> > > >>> >> > > >>> >> > > >>> >> > > >>> >> > > > >>> >> > > > I also don't get the value of a single top-level >>> node called >>> >>'device' >>> >> > > > that every YANG model on the planet is supposed >>> to augment. >>> >> > > > Can you explain why a protocol operation to >>> retrieve the >>> >> > > > document root (/) is not sufficient for the >>> top-level node? >>> >> > > >>> >> > > I don’t intend to defend their model, the more >>> serious problem IMO >>> >>is that a model for a single device/function may be >>> needed in another >>> >>device that hosts many virtualised devices/functions of >>> the former type. >>> >>We don’t have a good solution for this rather typical >>> situation. >>> >> > > >>> >> > > But a single container called "whatever" provides >>> no such >>> >>aggregation. >>> >> > > You would need a list for that. And the NMS might >>> have multiple >>> >> > > layers of hierarchy to represent various >>> aggregations. The NP >>> >> > > container called "device" is not helpful for >>> aggregation. >>> >> > >>> >> > The parent node can be a list as well. The “root” >>> node would be like >>> >>a mount point in a Unix filesystem. >>> >> > >>> >> > >>> >> > Are you saying all data on a device needs to be in a >>> top-level list >>> >>called 'device' >>> >> > because an NMS might exist that wants to have the >>> datastores from >>> >>lots of devices? >>> >> > As Martin pointed out several times, the NMS can >>> make its own >>> >>container or >>> >> > lists. It does not need the device to mirror its >>> own structure. >>> >> >>> >> As I said, I don’t care that much about the “device” >>> container. What >>> >>would be really useful is to have the possibility to do >>> e.g. this: >>> >> >>> >> virtual-node* [name] >>> >> name >>> >> if:interfaces >>> >> ... >>> >> >>> >> to support the use case where all virtual nodes are >>> managed by the same >>> >>NETCONF/RESTCONF server. >>> >> >>> >> Lada >>> >> >>> >> > >>> >> > >>> >> > >>> >> > Lada >>> >> > >>> >> > Andy >>> >> > >>> >> > >>> >> > > >>> >> > > >>> >> > > >>> >> > > Lada >>> >> > > >>> >> > > >>> >> > > Andy >>> >> > > >>> >> > > >>> >> > > > >>> >> > > > Andy >>> >> > > > >>> >> > > > >>> >> > > > >>> >> > > > On Mon, Jul 20, 2015 at 5:48 AM, Ladislav Lhotka >>> <[email protected] <mailto:[email protected]>> >>> >>wrote: >>> >> > > > >>> >> > > > > On 20 Jul 2015, at 14:45, Ladislav Lhotka >>> <[email protected] <mailto:[email protected]>> wrote: >>> >> > > > > >>> >> > > > > Hi, >>> >> > > > > >>> >> > > > > after listening to the presentation of >>> >> > > > > draft-rtgyangdt-rtgwg-device-model-00 at RTGWG >>> session, I am >>> >>wondering >>> >> > > > > whether the solution chosen for Y34 is really >>> useful. >>> >> > > > > >>> >> > > > > The draft states they want to reuse >>> ietf-interfaces but their >>> >>tree in >>> >> > > > > fact is >>> >> > > > > >>> >> > > > > +--rw device >>> >> > > > > +--rw info >>> >> > > > > | +--rw device-type? enumeration >>> >> > > > > +--rw hardware >>> >> > > > > +--rw interfaces >>> >> > > > > | +--rw interface* [name] >>> >> > > > > | ... >>> >> > > > > +--rw qos >>> >> > > > > >>> >> > > > > So the "interfaces" container is no more a >>> top-level node. >>> >>There are >>> >> > > > > three possible options: >>> >> > > > > >>> >> > > > > 1. Change the ietf-interfaces module. >>> >> > > > > 2. Replicate its contents in another module. >>> >> > > > > 3. Extend YANG so that a *specific* schema >>> tree can be grafted >>> >>at a >>> >> > > > > given data node. >>> >> > > > > >>> >> > > > > IMO #1 & #2 are really bad. I thought Y34-04 >>> was essentially #3 >>> >>but it >>> >> > > > > seems it is not so because it doesn't specify >>> a concrete data >>> >>model >>> >> > > > > that's allowed at a given location. >>> >> > > > > >>> >> > > > > On the other hand, the only real contribution >>> of "anydata" over >>> >>"anyxml" >>> >> > > > > is that is doesn't permit mixed content in >>> XML, which is IMO >>> >>not much. >>> >> > > > > >>> >> > > > > I know Y34 was already closed but I think it >>> is more important >>> >>to do >>> >> > > > > things right before YANG 1.1 becomes an RFC. >>> >> > > > > >>> >> > > > > What I want to propose is this: >>> >> > > > > >>> >> > > > > - Rename "anydata" as a synonym to "anyxml", >>> and deprecate >>> >>"anyxml" (but >>> >> > > > > keep it for backward compatibility). >>> >> > > > >>> >> > > > s/Rename/Introduce/ >>> >> > > > >>> >> > > > > >>> >> > > > > - Introduce a new statement and data node >>> type, e.g. "root", >>> >>that will >>> >> > > > > extend the schema tree starting from that >>> data node with a >>> >>precisely >>> >> > > > > specified data model. The specification can >>> be same or similar >>> >>as >>> >> > > > > in yang-library. >>> >> > > > > >>> >> > > > > I believe there are other use cases in the >>> existing modules. For >>> >> > > > > example, the ietf-routing module could simply >>> define the data >>> >>model for >>> >> > > > > a single routing instance (i.e. without >>> "routing-instance" list >>> >>at the >>> >> > > > > top), and it can be then used without changes >>> on simple >>> >>devices, and >>> >> > > > > more complex router implementations can graft >>> it as a subtree >>> >>under >>> >> > > > > "routing-instance", "networking-instance" or >>> whatever. >>> >> > > > > >>> >> > > > > Lada >>> >> > > > > >>> >> > > > > -- >>> >> > > > > Ladislav Lhotka, CZ.NIC Labs >>> >> > > > > PGP Key ID: E74E8C0C >>> >> > > > > >>> >> > > > > _______________________________________________ >>> >> > > > > netmod mailing list >>> >> > > > > [email protected] <mailto:[email protected]> >>> >> > > > > https://www.ietf.org/mailman/listinfo/netmod >>> >> > > > >>> >> > > > -- >>> >> > > > Ladislav Lhotka, CZ.NIC Labs >>> >> > > > PGP Key ID: E74E8C0C >>> >> > > > >>> >> > > > >>> >> > > > >>> >> > > > >>> >> > > > _______________________________________________ >>> >> > > > netmod mailing list >>> >> > > > [email protected] <mailto:[email protected]> >>> >> > > > https://www.ietf.org/mailman/listinfo/netmod >>> >> > > > >>> >> > > >>> >> > > -- >>> >> > > Ladislav Lhotka, CZ.NIC Labs >>> >> > > PGP Key ID: E74E8C0C >>> >> > > >>> >> > > >>> >> > > >>> >> > > >>> >> > > >>> >> > >>> >> > -- >>> >> > Ladislav Lhotka, CZ.NIC Labs >>> >> > PGP Key ID: E74E8C0C >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > _______________________________________________ >>> >> > netmod mailing list >>> >> > [email protected] <mailto:[email protected]> >>> >> > https://www.ietf.org/mailman/listinfo/netmod >>> >> >>> >> -- >>> >> Ladislav Lhotka, CZ.NIC Labs >>> >> PGP Key ID: E74E8C0C >>> >> >>> >> >>> >> >>> >> >>> >> _______________________________________________ >>> >> netmod mailing list >>> >> [email protected] <mailto:[email protected]> >>> >> https://www.ietf.org/mailman/listinfo/netmod >>> > >>> >-- >>> >Juergen Schoenwaelder Jacobs University Bremen >>> gGmbH >>> >Phone: +49 421 200 3587 Campus Ring 1 | 28759 >>> Bremen | Germany >>> >Fax: +49 421 200 3103 >>> <http://www.jacobs-university.de/> >>> > >>> >_______________________________________________ >>> >netmod mailing list >>> >[email protected] <mailto:[email protected]> >>> >https://www.ietf.org/mailman/listinfo/netmod >>> >>> _______________________________________________ >>> netmod mailing list >>> [email protected] <mailto:[email protected]> >>> https://www.ietf.org/mailman/listinfo/netmod >>> >>> >>> _______________________________________________ >>> netmod mailing list >>> [email protected] <mailto:netmod%40ietf.org> >>> https://www.ietf.org/mailman/listinfo/netmod >>> >> > _______________________________________________ netmod mailing list [email protected] https://www.ietf.org/mailman/listinfo/netmod
