Re: [netmod] initial comments on draft-rwilton-netmod-yang-packages
Andy Bierman <andy@yumaworks.com> Thu, 31 January 2019 17:45 UTC
Return-Path: <andy@yumaworks.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3B1C212D4F2 for <netmod@ietfa.amsl.com>; Thu, 31 Jan 2019 09:45:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.032
X-Spam-Level:
X-Spam-Status: No, score=-2.032 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.142, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks-com.20150623.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3L0rvQ25Fr1t for <netmod@ietfa.amsl.com>; Thu, 31 Jan 2019 09:45:19 -0800 (PST)
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com [IPv6:2a00:1450:4864:20::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 982AD1277D2 for <netmod@ietf.org>; Thu, 31 Jan 2019 09:45:18 -0800 (PST)
Received: by mail-lj1-x235.google.com with SMTP id k15-v6so3427269ljc.8 for <netmod@ietf.org>; Thu, 31 Jan 2019 09:45:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=JWIKrIneu4N0FEZKODtsnl8OHxU6LOxsQxkwUjbda+M=; b=KEy0N4fcPaW3FYpYzQ2PjDiAv+CTWSiarc92W8qpo/+NSonwNLYrsmMGcX8q8pTLQ9 RB6wwC4UDzr/U9lgvi8KOMVLZUIgj3faR+6i4UY7T7UZmxGPX4+4kw5k4cpJeG8/TxCB h7Lk9IbcVhpj9bVaINkvB7jf8HSRo54Ytqs1BsCVTPnR6hVAXzOA/pWU9Q086f0tVHyC v3aYAHqA4XSHO7JYJT0YXkvI4xBX7wrIlqzny3fj+cOymrRkUFUByS2Gc1iNSWJTGXy4 zysKakcDgEa2STqWn3W2ydHMI65Mmpu3gBhvQUTohZopdPqx4Cz1wRd+OAPulNbuYwPE kcaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=JWIKrIneu4N0FEZKODtsnl8OHxU6LOxsQxkwUjbda+M=; b=HLVyziNAexRfq/B9fc3hFJziiXDJAwYg1KM+WRR6EbDwAsKTAmc50djFfsSS1wuR6D I23AZO1SVVyOV1lp0lW3NiTEU4sBSrHERrGB1wjWzuY7DX3bRFP4sS8M6K4EQ0BjOVlC i4Aev+KNkV5zwMSyinb8JqBjrF70IWiihtREQgqv0dP7tGBi7afsSfOepopRHQZt9weM sRs5p3StckEwo4jvpTFEP+3UKrnmDHQufynYd4qwn3UOQ7w61lNR2Dfyhd4UX+/y//b9 U4gkW9hOJsYIO+G3Ri2dIwUaas8UGTZp8o/GmWwB+PeXOxLDFzkeWTaoPA39FMpGCt3H qj8A==
X-Gm-Message-State: AHQUAuYD0C0zLu3WpA6oT/qjfSQL0saSPj4UpIBsw4gY4MAsrSocI1oB STk/diabIkAAzBMFyG8FEQMP9RjNAnkw1/Q1y8I3Yg==
X-Google-Smtp-Source: ALg8bN6WqK/Ynes6o0qXl98390vYke2V9z1KvsBH4R0YqbzJNX7zSkb+JK19wEjS3tvDlj5VU/hbXP8RgyjFpAr6eq0=
X-Received: by 2002:a2e:6a13:: with SMTP id f19-v6mr22814428ljc.41.1548956716442; Thu, 31 Jan 2019 09:45:16 -0800 (PST)
MIME-Version: 1.0
References: <DB7PR07MB397887BD6B69B474618FD1469B9A0@DB7PR07MB3978.eurprd07.prod.outlook.com> <98469d28-4d53-c5c5-6487-a873a289e073@cisco.com> <VI1PR07MB39818961D1CA989CD8E1A48A9B900@VI1PR07MB3981.eurprd07.prod.outlook.com> <CABCOCHS-2tJroT2AVF0zLSh7qz5tORe_yp2LkZLf8=AFj4oq2w@mail.gmail.com> <cd8690ad-1750-917f-d7c4-ba582922037d@cisco.com> <CABCOCHRZnHD2Q8jNuNpiSCEzhzFjNjAv3Ynpn7rmB_8CL+=OBg@mail.gmail.com> <af5c7e85-de2e-501a-7f39-f17e4e9d64ae@cisco.com> <CABCOCHTO64_RCkekXxD=2z=QUF=uORO+kiv7znAPBz-yp7kPKg@mail.gmail.com> <914c99e5-ca38-9e39-32dd-1b0c3ed3294e@cisco.com> <CABCOCHSrREv8nnzi4kZ0vAwmE0NbCnb69kFCOw3pu7o3u7rCXA@mail.gmail.com> <47132640-a71a-596a-6b07-253c4defb5c3@cisco.com>
In-Reply-To: <47132640-a71a-596a-6b07-253c4defb5c3@cisco.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Thu, 31 Jan 2019 09:45:04 -0800
Message-ID: <CABCOCHS5Zxh3OumLJc39OpmC86MEotK_G4oMsmNw18kUiGpM-A@mail.gmail.com>
To: Robert Wilton <rwilton@cisco.com>
Cc: "Sterne, Jason (Nokia - CA/Ottawa)" <jason.sterne@nokia.com>, "netmod@ietf.org" <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000db46180580c496ce"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/LMmiieJ7_1Qyld9alyvSZrK11F4>
Subject: Re: [netmod] initial comments on draft-rwilton-netmod-yang-packages
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 31 Jan 2019 17:45:24 -0000
Hi, I can see some utility in a module-set artifact. Every tool has a different way of specifying a set of [module, revision, features, deviations]. The module-set has these parameters (plus other metadata) rc:yang-data module-set { container module-set { uses yanglib:module-set-parameters; } } The application purpose of the module-set is not relevant here. It could be the library subset needed for L2VPN, it could be the entire module list for a specific vendor/model/version. It could be the module-set needed to reproduce a bug. Andy On Thu, Jan 31, 2019 at 9:24 AM Robert Wilton <rwilton@cisco.com> wrote: > > On 30/01/2019 20:51, Andy Bierman wrote: > > > > On Wed, Jan 30, 2019 at 10:04 AM Robert Wilton <rwilton@cisco.com> wrote: > >> >> On 30/01/2019 17:31, Andy Bierman wrote: >> >> >> >> On Wed, Jan 30, 2019 at 8:02 AM Robert Wilton <rwilton@cisco.com> wrote: >> >>> >>> On 30/01/2019 15:16, Andy Bierman wrote: >>> >>> >>> >>> On Wed, Jan 30, 2019 at 4:19 AM Robert Wilton <rwilton@cisco.com> wrote: >>> >>>> Hi Andy, >>>> >>>> Thanks for the comments. >>>> On 30/01/2019 01:22, Andy Bierman wrote: >>>> >>>> Hi, >>>> >>>> I originally brought up this issue in July 2015 >>>> https://datatracker.ietf.org/doc/draft-bierman-netmod-yang-package/ >>>> >>>> Yes. >>>> >>>> The solution I propose is different in the sense that it uses YANG >>>> instance data to define YANG packages rather than new YANG keywords. I >>>> believe that this should make it a lower cost solution to define and >>>> implement. >>>> >>>> >>>> >>> I think yangvalidator.org has a better solution that does not change >>> YANG conformance. >>> >>> Do you mean that we can just use zip files with the list of modules? >>> >> >> I don't care about the solution details yet. They are 2nd order problems. >> >> Conformance means "what modules are required to be implemented together". >> It is not clear that this problem can be solved. The augment-stmt >> defines implicit >> multi-module conformance. I am not convinced that the extra work of >> defining package conformance >> is worth it. >> >> So, I'm not proposing backing any sort of package conformance into the >> language at all. A package is just metadata that defines that a set of >> modules, at particular revisions/versions, work together and can represent >> part of a YANG schema. >> >> This is equivalent to >> - how a zip file of YANG modules provided to yangvalidator would work. >> - getting the contents of YANG library from a server (but a YANG >> packages soln can also work offline) >> - fetching the modules from YANG catalog (if they have been labelled >> appropriately), although I'm not convinced that this universally works >> today. >> > > This sort of metadata could be provided by module tags. > A vendor or SDO could define module-tags that represent packages. > > Yes, this is a different way to assigning membership, although I'm not > convinced that it is better. > > I think that such a scheme could work without versioning, but I'm not sure > that it will work so well once package versioning is considered, because to > handle versioning the tags don't just need to represent which package they > belong to, they also should identify which version of that package. > > E.g. ietf-interfaces@2014-05-08.yang might be tagged with: > "ietf-base-pkg@0.0.1" <ietf-base-pkg@0.0.1>, "ietf-base-pkg@0.0.2" > <ietf-base-pkg@0.0.2>, "ietf-base-pkg@1.0.0" <ietf-base-pkg@1.0.0>, > ietf-base-pkg@1.1.0", ... > > If packages change quite frequently then you might find that a module > needs 50+ tags to identify which particular packages it belongs to. > > Any without knowing the package version, I don't see that there would be > enough information to build a schema since you wouldn't know which versions > of YANG modules to use. > > > > > > >> But in terms of the usability of YANG, I don't think that doing >> conformance only at the module level is really sufficient. Clients need to >> be coding against sets of modules at particular versions that are known to >> work together, and known that multiple server vendors will implement. >> >> A pick and mix appropriate to module revisions doesn't seem to help >> anyone. >> >> >> > I get all the different components and variables one might have for a > package. > I am not as convinced (as in 2015) that standard packages could be simple > and widely deployed.. > Now it seems vendors implement an ad-hoc subset + additions to everything. > It doesn't help to define a new package variant to match the vendor > implementation. > The YANG library can do that already. > > YANG library is only on the box at the moment, and it just gives a flat > list of modules. > I would like it to also be available off the box and have more structure. > > E.g. I would like IETF to define an L2VPN package that contains the basic > set of YANG modules that a device that supports L2VPN services would be > expected to implement at a minimum. > > Then, rather that checking the output of YANG library to see that it has > all the necessary modules to implement an L2VPN service, I could instead > check whether the package implemented by the device imports the L2VPN > package. And if it does import that package, I can then also see which > version of that package it implements (rather than checking every module > version). > > > You seem more optimistic than me that the industry is actually ready, > willing, and able > to implement standard YANG packages. > > If we want YANG to be properly successful then I see that it has go > there. But nobody can do this today until there is a way that such > packages can be defined, and versioned, and we start defining what these > standard packages look like. > > > > > > >> The issue of what modules does vendor A implement is not a conformance >> problem. >> It is just more metadata and YANG Catalog is focused on providing that >> data. >> >> Does YANG catalog indicate the set of IETF modules that I would need to >> implement L2VPN services on a device? >> >> > This seems like a separate problem, but actually it can help by searching > a lot of known modules. > In order to know what vendor A, B, and C have in common, you need to get > the catalog info for each vendor. > > Module tags can also solve this problem. > > But when there are multiple vendors with multiple devices, with multiple > versions of software available then this looks like a hard problem to solve. > > I would like someone (or a program) to be able to look at a package > definition file, and determine if it implements what is required, and what > software version is needed, and whether they are deviations that matter. > > When my client then connects to that device, I would like the client to be > able to check that it implements that modules that I expect it to. I would > strongly prefer if this could be done by returning a small amount of data, > rather than a list of 1000 modules/sub-modules for every server that I > connect to. > > Module tags won't tell the client that it implements all the required > modules that implement the L2VPN service, it will just indicate that > implements some modules which can be used to implement an L2VPN service. > > > > >> Module tags could be used to do this (another packaging solution), but >> this would cause a proliferation of tags when it comes to versioning, since >> I don't think that you can cleanly bake semver into module tags. >> >> >> >> I don't really see how this helps. >>> >>> Consider: >>> - server vendor A, implements some subset of the OpenConfig YANG >>> modules, each at a particular version, along with some deviations and >>> vendor augmentations. >>> - server vendor B, implements the same subset of the OpenConfig YANG >>> modules, but at different versions, along with some deviations and vendor >>> augmentations. >>> - server vendor C, implements a slightly different set of the OpenConfig >>> YANG modules, but at different versions, along with some deviations and >>> vendor augmentations. >>> >>> As a client, how do I know what module versions to code against, when I >>> want to work with devices provided by all three vendors? >>> >> >> >> The vendors publish their implementation details on yangcatalog and you >> get the info >> and see what modules are in common. >> >> There are only market requirements determining what group of modules has >> to exist >> in an implementation. It is not clear to me that formalizing these >> requirements >> is something the industry will do effectively. Module tags already >> provide a way >> to conceptually group modules together. >> >> Seems like every vendor has openconfig, foo-openconfig, and >> foo-openconfig-deviations >> so that there are no agreed upon subsets. Even if openconfig had properly >> documented >> subsets, would your client even be able to code to it (ignoring add-ons >> and deviations). >> >> I think that answer will converge on yes, I don't know how long it will >> take. It would probably be better if at the time that protocol >> specifications are written, that the authors of the specifications also >> write the YANG modules to manage them at the same time. >> >> >> I might be wrong, but I think that the OC solution is use git tags, so >>> they tag sets of modules that are expected to work together and also to >>> provide a linear release history of their sets of modules. So, if everyone >>> implements the module versions associated with a git tag then it should >>> convert a two dimensional problem of module revisions into a linear >>> problem. The YANG packages draft is aiming to provide a solution to this >>> problem that doesn't require the use of git, or sending zip files of >>> modules around. >>> >> >> At the moment, it seems that everyone is doing this in different ways: >>> - Yumawork customers/servers use zip files of modules for conformance. >>> >> >> Not sure what this means. >> Actually the server libraries can be loaded and unloaded. >> Module can be standalone libraries or grouped as bundles. >> But this seems like an implementation detail, unrelated to conformance. >> >> >> - OpenConfig client/server implementations use git tags, or git >>> refpoints. >>> - Cisco customers use the contents of directories on github YangModels. >>> >>> Finally, this draft doesn't change YANG conformance, it just expresses >>> it in what is intended to be a simpler way. >>> >> >> It adds another conformance system to maintain. >> The language only recognizes module to module interfaces, not package to >> package. >> >> I propose that at the language level conformance is at the module level >> (modulo import-by-version). >> >> >> That adds more complexity. It doesn't take away any complexity. >> >> It is meant to be a simpler way of packaging up, and trying to control >> and manage the complexity that already exists today. >> >> E.g. I could give a YANG compiler the name, version, and location of a >> package and tell it to build the entire schema associated with that >> package. >> > > This is a tool implementation detail, not a conformance issue. > It would be nice to have a standard format for the YANG library for a tool > to use. > You seem to be proposing an artifact containing ietf-yang-library > information. > That seems OK to me, but it should not have anything to do with > conformance. > It is just a standard way to express a module-set in a yang-data artifact. > > Yes, what I am proposing is close to a file containing ietf-yang-library > information, but I want it to be hierarchical/recursive, where as the > schema defined by YANG library bis is flat, and I want the data to also > optionally be made available in YANG library. > > What I am proposing here doesn't change conformance of the YANG language > in any way, not does it replace YANG library. > > Thanks, > Rob > > > > > >> In a somewhat similar way, when I write code, my build file specifies >> which libraries I depend on, and their versions, but I can leave it to the >> build tool to determine what those libraries themselves depend on and >> recursively pull in all the dependencies. >> >> >> >> If there was a standard to load and unload modular functionality at >> boot-time or run-time, >> then I could see why there is a need to have a standard to define YANG >> packages. >> >> I agree that this is another example of where they could be useful. >> >> Thanks, >> Rob >> >> >> > Andy > > >> >> >>> Thanks, >>> Rob >>> >>> >>> >> Andy >> >> >>> >>> >>> Andy >>> >>> >>>> >>>> I don't think the WG ever agreed on the problem that needs to be solved, >>>> and that is still the case. >>>> >>>> That wasn't quite my impression. I also think that folks were busy >>>> focusing on other WG activity and didn't necessarily have the time to >>>> concentrate on this. >>>> >>>> My draft was aiming on solving two broad problems: >>>> >>>> The main goals of YANG package definitions include, but are not >>>> restricted to: >>>> >>>> o To act as a simplified YANG conformance mechanism. Rather than >>>> conformance being performed against a set of individual YANG >>>> module revisions, conformance could also be more simply stated in >>>> terms of YANG packages, with a set modifications (e.g. additional >>>> modules, deviations, or features). >>>> >>>> o To allow YANG datastore schema to be specified in a more concise >>>> way rather than having to list all modules and revisions. YANG >>>> package definitions can be defined in documents that can be >>>> referenced by a URL rather than requiring explicit lists of >>>> modules to be shared between client and server. Hence, a YANG >>>> package must contain sufficient information to allow a client or >>>> server to precisely construct the schema associated with the >>>> package. >>>> >>>> >>>> >>>> >>>> >>>> In reality each server has 1 package -- its entire library. >>>> >>>> This doesn't apply to all servers. For a long time, as a vendor, we >>>> have had separate packages that can be independently installed, and which >>>> extend the management model to cover the new functionality. E.g. BNG >>>> functionality could be in a separate, independently installable, package on >>>> top of the base router functionality. >>>> >>>> For a Linux server, the manageability interface will depend on what >>>> applications have been installed. >>>> >>>> >>>> The SEMVER work shows >>>> that vendors are treating platforms as independent release trains, and >>>> not really >>>> developing loadable packages. >>>> >>>> This depends on the vendor. The YANG versioning work is trying to find >>>> a solution that works across the industry. I believe that the versioning >>>> requirements are different for standards developed modules, vs industry >>>> developed modules, vs vendor modules. >>>> >>>> >>>> >>>> I think YANG 1.2 improvements for conformance (e.g., YANG-redirects, >>>> SEMVER import) >>>> and the YANG Catalog can solve the module compatibility issues. It is >>>> more of a documentation >>>> problem than a standards problem. >>>> >>>> Having a standard YANG module that can be used to define packages is >>>> something this is useful and should be standardized. I believe that this >>>> is better than each vendor coming up with their own solution for this >>>> problem. >>>> >>>> Thanks, >>>> Rob >>>> >>>> >>>> >>>> >>>> Andy >>>> >>>> >>>> >>>> >>>> On Tue, Jan 29, 2019 at 4:55 PM Sterne, Jason (Nokia - CA/Ottawa) < >>>> jason.sterne@nokia.com> wrote: >>>> >>>>> Thanks Rob. Please see inline. >>>>> >>>>> Jason >>>>> >>>>> >>>>> >>>>> *From:* Robert Wilton <rwilton@cisco.com> >>>>> *Sent:* Thursday, January 24, 2019 1:16 PM >>>>> *To:* Sterne, Jason (Nokia - CA/Ottawa) <jason.sterne@nokia.com>; >>>>> netmod@ietf.org >>>>> *Subject:* Re: initial comments on draft-rwilton-netmod-yang-packages >>>>> >>>>> >>>>> >>>>> Hi Jason, >>>>> >>>>> Thanks for the review and comments. >>>>> >>>>> I've put some responses inline ... >>>>> >>>>> On 24/01/2019 14:56, Sterne, Jason (Nokia - CA/Ottawa) wrote: >>>>> >>>>> Hi guys, >>>>> >>>>> >>>>> >>>>> I've gotten most of the way through the draft and have some initial >>>>> comments. I haven't digested the section 10 open issues yet or the examples. >>>>> >>>>> >>>>> >>>>> Section 5 mentions the following: >>>>> >>>>> YANG library is augmented to allow servers to report the packages >>>>> >>>>> that they implement and to associate those packages back to >>>>> >>>>> particular datastore schema. >>>>> >>>>> >>>>> >>>>> Does the combination of this draft and rfc7895bis somehow allow the >>>>> same package to be advertised in 2 different datastores, but with different >>>>> deviations in each datastore? I'm thinking of a case, for example, where a >>>>> package is fully supported in the running but the package minus a few >>>>> modules (or parts of modules) is supported in the operational datastore. >>>>> There seems to be a 1:1 relationship between package and rfc7895bis schema. >>>>> >>>>> So, the intention is no, not directly. >>>>> >>>>> My aim here is that <running> would implement package "foo", and >>>>> <operational> would implement package "modified-foo". Package >>>>> "modified-foo" would import package "foo" and also specify the set of >>>>> modules that contain the deviations "foo". >>>>> >>>>> I didn't want a server to be able to see that I implement package >>>>> "foo", but then I have all these deviations that change its behavior. >>>>> Instead, it is really implementing a different package that is based on >>>>> "foo". >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> The packages draft doesn't include any specific leaf-list for >>>>> deviations. Section 7.2 mentions that deviations could be expressed by >>>>> including modules that happen to contain deviations. That seems a bit >>>>> inconsistent with rfc7895bis that has a specific leaf-list of deviations >>>>> (and NETCONF hello that specifically explicitly labels deviation modules). >>>>> >>>>> I'm conflicted on this one. I don't really like the deviation list in >>>>> YANG library because I regard it as a duplicate source of information, and >>>>> then there is a question of which source of data do you trust. E.g. do you >>>>> process a deviation in a module that is not listed in the deviations module >>>>> list? >>>>> >>>>> *[>>JTS: ] Good point. I suppose this issue applies today already. >>>>> i.e. what if one of the modules advertised in the <hello> is a module of >>>>> deviations (without having been referenced by another module as a deviation >>>>> module).* >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Section 5.1 says the package must be referentially complete. I can see >>>>> the advantages of that although wondering if that might limit flexibility >>>>> of partitioning modules into packages. I could imagine use cases for >>>>> dividing a large set of modules into a few packages that might rev >>>>> independently but can still all work together (especially if they rev in a >>>>> bc manner). But maybe that just starts to introduce too much complexity? >>>>> >>>>> Yes, having partial packages may be useful. Perhaps just adding a >>>>> leaf to indicate whether a package is referentially complete could be the >>>>> answer here. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> I didn't understand this part of section 5.1. Can you maybe illustrate >>>>> with an example? >>>>> >>>>> The version/revision of a module listed in the package module >>>>> list >>>>> >>>>> supercedes any version/revision of the module listed in a >>>>> imported >>>>> >>>>> package module list. This allows a package to resolve any >>>>> >>>>> conflicting implemented module versions/revisions in imported >>>>> >>>>> packages. >>>>> >>>>> Probably best to see example B.3. in the appendix because it exactly >>>>> illustrates this point. >>>>> >>>>> Basically: >>>>> 1) Packages must explicitly list all versions of all modules they >>>>> define/import. >>>>> 2) If two imported packages define different versions of modules, then >>>>> the package that is importing them needs a way to define which version to >>>>> use. >>>>> 3) A package needs a way to override the version of module specified >>>>> in an imported package. >>>>> >>>>> *[>>JTS: ] Thx. That example does help. I suppose the designer of the >>>>> package needs to carefully check that the version they select can be >>>>> successfully used by all the modules in the package. * >>>>> >>>>> *I think there is a minor typo in example B.3. The example-3-pkg is >>>>> importing "* *example-import-1" but I believe you meant "* *example-import-1-pkg" >>>>> (and some for import-2).* >>>>> >>>>> >>>>> >>>>> It might be a good idea to add a parent-version to the package module >>>>> (to allow tracking lineage of packages). >>>>> >>>>> Agreed, or maybe allowing a revision history like modules. Not sure >>>>> which is better here. Packages could get a lot of updates, and a long >>>>> revision history would not be helpful at all. >>>>> >>>>> *[>>JTS: ] I think a minimum of just specifying the direct parent is >>>>> enough to build the full tree of lineage. We don't need a long history of N >>>>> revisions.* >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> I like the use of groupings. That allows a manager to use this as a >>>>> building block to compose a model that has a list of packages. >>>>> >>>>> OK. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Having a global list of mandatory features (vs having the mandatory >>>>> feature a per-module list) means inventing the new <module-name>:<feature> >>>>> format. Should we instead somehow put the mandatory features against each >>>>> module of the package? >>>>> >>>>> Perhaps. My thinking here was to have the list of features high up >>>>> and very easy to find/parse. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> The location leaf is a uri but then the description says it must be a >>>>> url (where the model can be retrieved). I do like that the namespace is >>>>> separate from the location, but maybe we should make location a url type? >>>>> >>>>> Yes, I was thinking that is should be a URL. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Do we need a namespace for package names in the model? >>>>> >>>>> I had them in an earlier version, but I took them out, because I >>>>> wasn't sure that they are really useful/required. >>>>> >>>>> Defining a format to make package names themselves globally unique >>>>> might be sufficient. >>>>> >>>>> *[>>JTS: ] I'm OK with that. It is similar to how we're finding that >>>>> it is useful that YANG module names are globally unique (i.e. by naming >>>>> with ietf-xxxx or companyabc-xxx).* >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> In 7.3 we only reference module-sets and not modules. So the grouping >>>>> of modules into sets and packages must be the same? >>>>> >>>>> Not necessarily. >>>>> >>>>> I am trying to reuse the module-set definitions as much as possible >>>>> (to avoid duplication). One issue here is that module-sets are combined >>>>> then all the modules must not overlap, which doesn't make the mapping to >>>>> module-sets quite so clean. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> A schema can only have a single package. I think that works but it >>>>> means a server would advertise multiple schemas if it wants to support >>>>> multiple packages. I'm not sure if there are some downsides to that (it >>>>> just surprised me). >>>>> >>>>> My aim here was: >>>>> - multiple packages are advertised in yang-library/packages >>>>> - datastores only report that they "implement" one [top level] >>>>> package version. [The package itself might import other packages.] >>>>> >>>>> If we do package selection, then for a given YANG client session, and >>>>> the version of YANG library available/reported by that session, it would >>>>> appear as if the server only implements one top level package for a >>>>> datastore. Different clients choosing different versions would see >>>>> slightly different output depending on which package version they had >>>>> selected to use. >>>>> >>>>> Thanks again for the review and the comments! >>>>> >>>>> Rob >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Jason >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> *From:* netmod <netmod-bounces@ietf.org> <netmod-bounces@ietf.org> *On >>>>> Behalf Of *Robert Wilton >>>>> *Sent:* Thursday, December 20, 2018 12:45 PM >>>>> *To:* netmod@ietf.org >>>>> *Subject:* [netmod] YANG Packages >>>>> >>>>> >>>>> >>>>> Hi, >>>>> >>>>> I've written up an ID for a potential solution for YANG packages using >>>>> instance data: >>>>> >>>>> Abstract >>>>> >>>>> >>>>> >>>>> This document defines YANG packages, an organizational structure >>>>> >>>>> holding a set of related YANG modules, that can be used to simplify >>>>> >>>>> the conformance and sharing of YANG schema. It describes how YANG >>>>> >>>>> instance data documents are used to define YANG packages, and how the >>>>> >>>>> YANG library information published by a server can be augmented with >>>>> >>>>> additional packaging related information. >>>>> >>>>> https://datatracker.ietf.org/doc/draft-rwilton-netmod-yang-packages/ >>>>> >>>>> Potentially this work may be of use as part of the YANG versioning >>>>> design team work. In addition, if the WG likes this approach of defining >>>>> YANG packages, then it might also be useful to bind a schema to a YANG >>>>> instance data document. >>>>> >>>>> Some questions for members of the WG: >>>>> >>>>> 1) Do members of the WG agree that YANG packages is something that >>>>> needs to be solved? >>>>> >>>>> 2) Is the approach in this draft of defining these as instance data >>>>> documents a good starting point? >>>>> >>>>> 3) This approach augments YANG library-bis, reusing module-sets, but >>>>> not replacing the way that modules are reported in YANG library-bis. Is >>>>> this the right approach? This approach tries to allow module-sets to be >>>>> reused for both schema and packages, but the YANG library-bis rules for >>>>> combining module-sets (i.e. no conflicts) may make this harder to really >>>>> reuse the module-sets for both purposes. >>>>> >>>>> Of course, any other comments or feedback is welcome and appreciated. >>>>> >>>>> Thanks, >>>>> Rob >>>>> >>>>> _______________________________________________ >>>>> netmod mailing list >>>>> netmod@ietf.org >>>>> https://www.ietf.org/mailman/listinfo/netmod >>>>> >>>>
- [netmod] initial comments on draft-rwilton-netmod… Sterne, Jason (Nokia - CA/Ottawa)
- Re: [netmod] initial comments on draft-rwilton-ne… Robert Wilton
- Re: [netmod] initial comments on draft-rwilton-ne… Sterne, Jason (Nokia - CA/Ottawa)
- Re: [netmod] initial comments on draft-rwilton-ne… Andy Bierman
- Re: [netmod] initial comments on draft-rwilton-ne… Robert Wilton
- Re: [netmod] initial comments on draft-rwilton-ne… Andy Bierman
- Re: [netmod] initial comments on draft-rwilton-ne… Robert Wilton
- Re: [netmod] initial comments on draft-rwilton-ne… Andy Bierman
- Re: [netmod] initial comments on draft-rwilton-ne… Robert Wilton
- Re: [netmod] initial comments on draft-rwilton-ne… Andy Bierman
- Re: [netmod] initial comments on draft-rwilton-ne… Robert Wilton
- Re: [netmod] initial comments on draft-rwilton-ne… Andy Bierman
- Re: [netmod] initial comments on draft-rwilton-ne… Robert Wilton
- Re: [netmod] initial comments on draft-rwilton-ne… Andy Bierman