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

Robert Wilton <rwilton@cisco.com> Sun, 11 November 2018 20:43 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 E6909130DC1 for <netmod@ietfa.amsl.com>; Sun, 11 Nov 2018 12:43:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.97
X-Spam-Level:
X-Spam-Status: No, score=-14.97 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.47, 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 IzJ3moK_Ke-a for <netmod@ietfa.amsl.com>; Sun, 11 Nov 2018 12:43:38 -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 4BA0B124BAA for <netmod@ietf.org>; Sun, 11 Nov 2018 12:43:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=18067; q=dns/txt; s=iport; t=1541969018; x=1543178618; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to; bh=Qou8L93pqTu0ccm+1+Tv0HTCMOaGq9ZZU9t+N6axtr8=; b=LDICrtdhSG50bRlpvVoCLTzhvQx8QdMi3TI2QoG92powj67k0fsUF+H8 rMYepFUP22mi3LDLTmDt03nSPpJFlibZ0dfIVZ95eTnyJuqsTDkNOmw8K pfbdj+cYSUzOoTuZW/Z7KjP7LGVKG6gmrRWg/sLiJO5bBRsRWXuesFkNm g=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0A+AAD5k+hb/xbLJq1gAxkBAQEBAQE?= =?us-ascii?q?BAQEBAQEHAQEBAQEBgWWCak8hEieDeIh3jQIlkWGGeANTDRgBDIMQcUYCg0Y?= =?us-ascii?q?4FgEDAQECAQECbRwMhToBAQEDAQEBIUsJAg4CCQIQCCcDAgIbDB8RBg0GAgE?= =?us-ascii?q?BF4MGAYF5CA+MIZtQgS8fhR+EUwUFjBKBQD+BEScMgl+DGwEBAhiBMTcmgj2?= =?us-ascii?q?CVwKJPwKVOVUJhnaKIQYYgViFAoJ8hxqNJoN6hliBWiE0gSEzGggbFTuCbIF?= =?us-ascii?q?3MBcSgzgzhGGFPj8DMIpLK4IgAQE?=
X-IronPort-AV: E=Sophos;i="5.54,492,1534809600"; d="scan'208,217";a="7916377"
Received: from aer-iport-nat.cisco.com (HELO aer-core-4.cisco.com) ([173.38.203.22]) by aer-iport-3.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Nov 2018 20:43:34 +0000
Received: from [10.61.210.56] ([10.61.210.56]) by aer-core-4.cisco.com (8.15.2/8.15.2) with ESMTP id wABKhW80026189; Sun, 11 Nov 2018 20:43:32 GMT
To: Andy Bierman <andy@yumaworks.com>
Cc: Martin Bjorklund <mbj@tail-f.com>, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, NetMod WG <netmod@ietf.org>
References: <20181109081557.kzalxvnsk2k2fycm@anna.jacobs.jacobs-university.de> <20181109.143729.1869485019013831956.mbj@tail-f.com> <20181109151347.3xms2cty6hxyl232@anna.jacobs.jacobs-university.de> <20181109.173159.1522007243611164311.mbj@tail-f.com> <96995ddc-f69e-1a91-21b6-36304c8510f3@cisco.com> <CABCOCHT6jShf0t=hC=cB1ZfmoBqHoOHdescYZxX-DOnGTfqt4w@mail.gmail.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <d19878ad-b5fd-3bda-1624-d323d40dddb6@cisco.com>
Date: Sun, 11 Nov 2018 20:43:32 +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: <CABCOCHT6jShf0t=hC=cB1ZfmoBqHoOHdescYZxX-DOnGTfqt4w@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------968F41AF5C155E26DEBFD070"
Content-Language: en-US
X-Outbound-SMTP-Client: 10.61.210.56, [10.61.210.56]
X-Outbound-Node: aer-core-4.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/XVX-meOEMxxUPveOOB4n1d9K4Gk>
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: Sun, 11 Nov 2018 20:43:42 -0000


On 11/11/2018 07:07, Andy Bierman wrote:
>
>
> On Fri, Nov 9, 2018 at 2:53 PM, Robert Wilton <rwilton@cisco.com 
> <mailto:rwilton@cisco.com>> wrote:
>
>     Hi Martin,
>
>
>     On 09/11/2018 16:31, Martin Bjorklund wrote:
>
>         Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de
>         <mailto:j.schoenwaelder@jacobs-university.de>> wrote:
>
>             On Fri, Nov 09, 2018 at 02:37:29PM +0100, Martin Bjorklund
>             wrote:
>
>                     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 do not agree with the requirement that a server MUST
>                 be able to
>                 support multiple revisions of the same module, which
>                 is how I
>                 interpret 3.2.  If this is not the intention of 3.2,
>                 maybe it can be
>                 clarified.
>
>             Here is what 3.2 says:
>
>                     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.
>
>             This does _not_ say servers MUST implement this.
>
>             Item 3.2 establishes a requirement and for some solutions
>             it may be
>             easy to satisfy this requirement, for others it may be
>             more costly to
>             satisfy this requirement.
>
>             The whole requirements exercise becomes a rather pointless
>             exercise if
>             we remove requirements so that certain solutions look more
>             attractive.
>
>         Ok, but that's not what I wrote.  I don't agree with this
>         requirement
>         which says that it MUST be possible for a server to support
>         different revisions of a given module (again, if this is not the
>         intention of the text, please clarify).  I simply don't think that
>         this is a good requirement.
>
>     One way to think of this is as YANG data models defining an API
>     between client and server.
>
>     There seem to be lots of REST APIs that implement versioning of
>     their API by having a version number in the URL.  In fact, I think
>     that RESTCONF adopts this approach to allow versioning of the
>     protocol.
>
>     One solution is as Andy describes.  The underlying server only
>     implements one version of the a given YANG module, but they may
>     provide other views on to this data using different versions of
>     YANG modules.  E.g. the same as how Vendor YANG models, IETF YANG
>     models, and OpenConfig YANG models might be treated as their own
>     views, mapped to the same internal YANG modules.
>
>
>
> I agree with Martin that this requirement is a bad idea.
> It will make YANG too complicated and error-prone.
> This is not the same as versioning the entire API (e.g., /restconf2, 
> /restconf3).
> This is conceptually a version number at every node in the tree.
>
> The "outer" models are ignored by the server in this approach.
> Only the "inner" model is actually implemented and validated.
> A different set of outer models for each client, based on the set of 
> modules
> the client wants to see, sounds very complicated to design, implement, 
> test, and operate.

That is not what I'm proposing.

The server exposes one or more different schema of it's choosing. When 
the client opens the connection with the server it chooses which schema 
to use.

For example, if the server release history was:

Release 1 , supports schema A
Release 1.1, supports schema B
Release 2, supports schema C

Then in release 2, the server may also support the schema associated 
with release 1 and 1.1 (i.e. it supports schema A, B and C)

If this seems too complex, then the server chooses to just implement  
schema C, associated with release 2, and clients are forced to upgrade 
and use the latest schema.

It is not our intention to force servers to implement this version 
selection, only to specify it for vendors who did wish to implement it.

Thanks,
Rob

>
>     Thanks,
>     Rob
>
>
> Andy
>
>
>
>
>         /martin
>
>
>             I have not seen a proposal that addresses all requirements
>             and hence
>             at the end the WG needs to decide which t
>             <https://maps.google.com/?q=the+end+the+WG+needs+to+decide+which+t&entry=gmail&source=g>radeoffs
>             make sense.
>
>             /js
>
>             -- 
>             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 <mailto:netmod@ietf.org>
>         https://www.ietf.org/mailman/listinfo/netmod
>         <https://www.ietf.org/mailman/listinfo/netmod>
>         .
>
>
>     _______________________________________________
>     netmod mailing list
>     netmod@ietf.org <mailto:netmod@ietf.org>
>     https://www.ietf.org/mailman/listinfo/netmod
>     <https://www.ietf.org/mailman/listinfo/netmod>
>
>