Re: [netmod] initial comments on draft-rwilton-netmod-yang-packages
Andy Bierman <andy@yumaworks.com> Wed, 30 January 2019 01:22 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 983E91310B9 for <netmod@ietfa.amsl.com>; Tue, 29 Jan 2019 17:22:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.031
X-Spam-Level:
X-Spam-Status: No, score=-2.031 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, URIBL_BLOCKED=0.001] 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 dtSs1vfU11MS for <netmod@ietfa.amsl.com>; Tue, 29 Jan 2019 17:22:16 -0800 (PST)
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) (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 479DA1310B3 for <netmod@ietf.org>; Tue, 29 Jan 2019 17:22:15 -0800 (PST)
Received: by mail-lj1-x22d.google.com with SMTP id l15-v6so19252423lja.9 for <netmod@ietf.org>; Tue, 29 Jan 2019 17:22:15 -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=49Wk0GuOSRyeBXIZ4v3EV2K2xdYtZaC0+/TYn8SnLGE=; b=r/BqvziLuYAB3Aw7yKAstBmt0Yd7QMmLOd6hohNwgQ4k6eufKH5b7/v9A/GWWpOARE KqgGqj5vP8c5p/PrCiZTlOQ1UVMZ0qSLEwhkaeGXKrXoM+yW5/iuHgTB7DN/ywqyeLBZ ON1k5WjKf7fbpt2iBBToQNNLidoZ0teme2B0wwGuVPJBrF+P/g+2pCVlrmwrJy9Sz7SE CzWppHgHdIv0+I+eFnxP35Jxpwg4Fj2aECEmuC6mscB5YXB4ry4Jl8ONPutcclNS/SxY eki9ilAuGkaFmsxJprtOBoXwEpLKGm9S3UCj3C96C0fUPLG1TBmdZUMSZZ/jtwWNvxix m0Xg==
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=49Wk0GuOSRyeBXIZ4v3EV2K2xdYtZaC0+/TYn8SnLGE=; b=YTZLgcSv/JRkwoeba2ifvKkzVkqwrLPBccRh6I61NFffM6NZqniRzU44gAR6oI2TVQ k8pFMRYEexSdE7WMY1mwub8z3ELoA3BQ1UOVLmlBhTwkqqY47iJfqOlDIzZ7J5FuWB6W nrWJ3XT6uxwVzTCHYm045AxQp/xGJbnfqVXihFxdynZsez/gmmmAbAIex4AiUb8sSW9/ ujR+x8D4mPoCqPXCiC4l1ewMxlYtctHgG81FNE4CP5CwnZFSZaNuVH1USEnJCwEUCwl5 hcV+xAO1Mn3pNFJ8z7KkGLbxzUn8Oi+N0B6VYwyLEDrcxP5CJnHOnA+6xW+ZjXgQ7mTm ihrg==
X-Gm-Message-State: AJcUukfWzAvefSSstwezGNT4iv9CV3FukJW5T79pbgF2NIXhQ6eChIh+ UksbBdYf5caMCxkdKidQ71Xs3Nlt35/uj8oLXvVgLA==
X-Google-Smtp-Source: ALg8bN7D579jvcnTayGglaQSBm2CprWi4tC5FYvLUEE+ayNQtFVw5B8MToMyhXkEHxM4nAhhMogJSgd51PoTxv7E9O8=
X-Received: by 2002:a2e:458b:: with SMTP id s133-v6mr24616128lja.170.1548811333286; Tue, 29 Jan 2019 17:22:13 -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>
In-Reply-To: <VI1PR07MB39818961D1CA989CD8E1A48A9B900@VI1PR07MB3981.eurprd07.prod.outlook.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Tue, 29 Jan 2019 17:22:02 -0800
Message-ID: <CABCOCHS-2tJroT2AVF0zLSh7qz5tORe_yp2LkZLf8=AFj4oq2w@mail.gmail.com>
To: "Sterne, Jason (Nokia - CA/Ottawa)" <jason.sterne@nokia.com>
Cc: Robert Wilton <rwilton@cisco.com>, "netmod@ietf.org" <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000585e5d0580a2bda3"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/MjYSiOCvKG90U046K09Wpp0IFMQ>
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: Wed, 30 Jan 2019 01:22:21 -0000
Hi, I originally brought up this issue in July 2015 https://datatracker.ietf.org/doc/draft-bierman-netmod-yang-package/ I don't think the WG ever agreed on the problem that needs to be solved, and that is still the case. In reality each server has 1 package -- its entire library. The SEMVER work shows that vendors are treating platforms as independent release trains, and not really developing loadable packages. 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. 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