Re: [netmod] New Version Notification for draft-verdt-netmod-yang-versioning-reqs-01.txt

Robert Wilton <rwilton@cisco.com> Fri, 09 November 2018 22:46 UTC

Return-Path: <rwilton@cisco.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 474F412D4E7 for <netmod@ietfa.amsl.com>; Fri, 9 Nov 2018 14:46:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.501
X-Spam-Level:
X-Spam-Status: No, score=-14.501 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.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 WVxHcf8rqH91 for <netmod@ietfa.amsl.com>; Fri, 9 Nov 2018 14:46:09 -0800 (PST)
Received: from aer-iport-3.cisco.com (aer-iport-3.cisco.com [173.38.203.53]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E5A41129619 for <netmod@ietf.org>; Fri, 9 Nov 2018 14:46:08 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=21975; q=dns/txt; s=iport; t=1541803569; x=1543013169; h=subject:to:references:from:message-id:date:mime-version: in-reply-to; bh=t8l+/+32htbkBMM++wjzFnqgz/zHJKSIJLuGHY4OPYQ=; b=Nk3kM4Vyb+gMS1iwS6ox9LbzpFYLJqePXpcH07C+JkmpDbrpTaPStOr4 6Nujy75LsSlugw3i9UJto/DF6a42tobxG2FkL2rd9C3UTDxz5jdort+MB XQeECZxAA5/qeSP0K4DJHsEuy2yAzA9I5UsVTlis9S6NQ0+ent6Ya0bxl 4=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0AFAAD5DOZb/xbLJq1gAxkBAQEBAQE?= =?us-ascii?q?BAQEBAQEHAQEBAQEBgVIDAQEBAQELAYJpgQIng3iId40EJZcygXoNGAEKgxJ?= =?us-ascii?q?xRgKDRjUMDQEDAQECAQECbRwMhToBAQEDAQEBIUsJBwkCCQIQCCcDAgIbDB8?= =?us-ascii?q?RBgEMBgIBAReDBgGBeQgPjC2bUIEuH4UfhGQFBYwOgUE/gREnDIFhfoMbAQG?= =?us-ascii?q?BSzcmgj2CVwKJPYVFkEoJkRMGGIFXh32HGolWh0SGV4FEATaBVTMaCBsVO4J?= =?us-ascii?q?sgXdZg2uEYYU+PwMwjQ8BAQ?=
X-IronPort-AV: E=Sophos;i="5.54,485,1534809600"; d="scan'208,217";a="7879924"
Received: from aer-iport-nat.cisco.com (HELO aer-core-3.cisco.com) ([173.38.203.22]) by aer-iport-3.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Nov 2018 22:46:06 +0000
Received: from [10.61.194.82] ([10.61.194.82]) by aer-core-3.cisco.com (8.15.2/8.15.2) with ESMTP id wA9Mk5Ii021692; Fri, 9 Nov 2018 22:46:06 GMT
To: Andy Bierman <andy@yumaworks.com>, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Martin Bjorklund <mbj@tail-f.com>, NetMod WG <netmod@ietf.org>
References: <20181027083628.tgymddbje3yp2lhy@anna.jacobs.jacobs-university.de> <CABCOCHRmcqpffXYcOOeZA7hy=NRhK8RAF8KcJYpht+Mp9g8qkQ@mail.gmail.com> <20181027211355.ppu7wavjcq2butc4@anna.jacobs.jacobs-university.de> <20181108.224220.1513800936571555652.mbj@tail-f.com> <20181109081557.kzalxvnsk2k2fycm@anna.jacobs.jacobs-university.de> <CABCOCHQ_gyiQMaDDnLZE4aJ-xBp5cNHFjASpHsCHWni=cBK2_A@mail.gmail.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <7feb0020-9484-2903-6f38-e45b13ff06a4@cisco.com>
Date: Fri, 9 Nov 2018 22:46:05 +0000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1
MIME-Version: 1.0
In-Reply-To: <CABCOCHQ_gyiQMaDDnLZE4aJ-xBp5cNHFjASpHsCHWni=cBK2_A@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------0C5F85BA11D9321E90CFE45A"
Content-Language: en-US
X-Outbound-SMTP-Client: 10.61.194.82, [10.61.194.82]
X-Outbound-Node: aer-core-3.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/u_bnrUps1ciyyoMX6t_1i2FeZOo>
Subject: Re: [netmod] New Version Notification for draft-verdt-netmod-yang-versioning-reqs-01.txt
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: Fri, 09 Nov 2018 22:46:13 -0000


On 09/11/2018 11:38, Andy Bierman wrote:
>
>
> On Fri, Nov 9, 2018 at 12:15 AM, Juergen Schoenwaelder 
> <j.schoenwaelder@jacobs-university.de 
> <mailto:j.schoenwaelder@jacobs-university.de>> wrote:
>
>     On Thu, Nov 08, 2018 at 10:42:20PM +0100, Martin Bjorklund wrote:
>     > Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de
>     <mailto:j.schoenwaelder@jacobs-university.de>> wrote:
>     > > On Sat, Oct 27, 2018 at 06:50:58AM -0700, Andy Bierman wrote:
>     > > >
>     > > > This is what we have today only if modules are updated in
>     legal ways.
>     > > > The 3.1 requirement says this backward compatibility is
>     maintained even
>     > > > if the module is updated in violation of the module update
>     rules.
>     > > >
>     > >
>     > > It is stating a requirement. How solutions meet the
>     requirement is for
>     > > the solutions to figure out.
>     > >
>     > > > How would 3.1 be met if the WG decided to just add a new
>     'datastore'
>     > > > key leaf to the /modules-state/module list?
>     > >
>     > > Depends on the solution I guess.
>     > >
>     > > > IMO the current "deprecate and start over" is actually the
>     easiest
>     > > > and most robust solution path, and it requires no changes to
>     YANG or
>     > > > the protocols.
>     > >
>     > > Yep. But there are people who think that other solutions can do
>     > > better. The challenge is to find out whether they actually do
>     better
>     > > or for whom they do better (and if someone has to pay a price
>     for it).
>     > > For having this discussions, it is good to write down
>     requirements.
>     > >
>     > > > >        3.2  The solution MUST provide a mechanism to allow
>     servers to
>     > > > >             simultaneously support clients using different
>     revisions of
>     > > > >             modules.  A client's choice of particular
>     revision of one or
>     > > > >             more modules may restrict the particular
>     revision of other
>     > > > >             modules that may be used in the same request
>     or session.
>     > > > >
>     > > > > Today, the version number is effectively an (implicit)
>     part of the
>     > > > > module name (plus the revision date for backwards
>     compatible changes).
>     > > > > Hence, my understanding is that today's model does satisfy
>     3.2 as
>     > > > > well.
>     > > >
>     > > > This is not what we have at all. RFC 7950 says a server can
>     only implement
>     > > > one revision of a module.
>     > > >
>     > >
>     > > A new version today essentially means a new module name and I
>     do not
>     > > see a conflict with what I wrote.
>     >
>     > Then I think this requirement needs clarification. It says
>     "different
>     > revision of modules", which can be interpreted as different
>     revisions
>     > of *the same* module.
>     >
>     > Also the second part of the paragraph seems to indicate multiple
>     > revisions of the same module in the server.
>     >
>     > I do not agree with this requirement.
>
>     Today, you need to create a new module if you make NBC changes to
>     existing changes (e.g., you change Bool to Int {0..1} and you are not
>     creating a new leaf). Since there are now two modules, you _can_
>     implement both modules if that makes sense.
>
>
>
> This does not make sense because a node in YANG is identified by a QName,
> not just a local-name.   The node oldmod:foo is not the same as 
> newmod:foo.
> It never has been and never will be the same node.

Yes, not the same node, but both representing the same property.

For "config false", or stuff coming out of operational then I have no 
issues with two nodes reporting different representations of the same 
property (unless default values are not being returned).  This is quite 
a common thing to do anyway, and clients can ignore the data that is not 
being returned.

But I struggle to understand how have two nodes in the same schema that 
both directly manipulate the same underlying config property works.  I 
think that various folks have suggesting that this is a viable way of 
fixing bugs in config nodes, but I would be interested to see an 
explanation of exactly how this works, and what limitations are deemed 
to be acceptable.


>
>     If we allow to make such changes as part of a module revision, i.e.,
>     without creating a new module, I think we should not loose the ability
>     to implement both the old version and the new version.
>
>
> As Balazs asked, how can the data node be a boolean and an integer at 
> the same time?
> There seem to be plenty of scenarios that cannot be implemented 
> simultaneously by a server.
I think that there are lots of questions if you have two properties 
representing the same underlying configurable node:
  - can they both be configured at the same time with different values?
  - can they both be configured at the same time with the same value?
  - what if the configured value for one data node is not representable 
in the other data node?
  - what if the defaults values differ?

>
>     I think we need to distinguish between the agreement on the
>     requirement, namely that a server should be able to provide support
>     for an old and a new definition, and agreement on the solution.
>
>     Do you disagree with the requirement? Or do you disagree with the
>     consequences of implementing multiple versions of the same module
>     for some of the proposed new versioning schemes? Or both?
>
>
>
> I understand the transformation approach (am have implemented 
> something like it).
> This only works if the mapping is complete.  If there are any holes in 
> the mapping
> then the affected nodes are lost.  Vendors have already proven they
> can implement this approach without any new standards.
>
> Vendors are already releasing updates to old module revisions by 
> managing the revision date.
> I agree SEMVER is incrementally better than that.
>
> I do not agree that more than 1 revision of a module can be implemented.
> A server can have multiple "outside" schema that gets transformed to 
> the real "inside" schema.

This is the solution that I'm potentially thinking of ... but it may 
require some protocol mechanism for a client to be able to select which 
"outside" schema it is using, if the server supports multiple.

If different revisions of modules exist in different "outside" schema 
then some may argue that the server is implementing two different 
revisions of a module.

For me, one thing is certain, is that there should only be a single 
revision of each module as being implemented in YANG library.

> This is fine and breaks no YANG rules.  It also requires no additional 
> standards unless the
> transformation mechanism is going to be standardized.
>
No current plans to try and standardize the transformation mechanism.

Thanks,
Rob

>
>
>     /js
>
>
>
> Andy
>
>
>     -- 
>     Juergen Schoenwaelder           Jacobs University Bremen gGmbH
>     Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
>     Fax:   +49 421 200 3103         <https://www.jacobs-university.de/
>     <https://www.jacobs-university.de/>>
>
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod