Re: [Netmod-ver-dt] Resolving package conflicts

Mahesh Jethanandani <mjethanandani@gmail.com> Wed, 11 September 2019 21:22 UTC

Return-Path: <mjethanandani@gmail.com>
X-Original-To: netmod-ver-dt@ietfa.amsl.com
Delivered-To: netmod-ver-dt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 07C8A120289 for <netmod-ver-dt@ietfa.amsl.com>; Wed, 11 Sep 2019 14:22:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.997
X-Spam-Level:
X-Spam-Status: No, score=-1.997 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 q_V5VxkPAA3R for <netmod-ver-dt@ietfa.amsl.com>; Wed, 11 Sep 2019 14:22:47 -0700 (PDT)
Received: from mail-pg1-x536.google.com (mail-pg1-x536.google.com [IPv6:2607:f8b0:4864:20::536]) (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 477DC120821 for <netmod-ver-dt@ietf.org>; Wed, 11 Sep 2019 14:22:47 -0700 (PDT)
Received: by mail-pg1-x536.google.com with SMTP id i18so12157472pgl.11 for <netmod-ver-dt@ietf.org>; Wed, 11 Sep 2019 14:22:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=BXD5zFvhG/G2vhGcnZDRgMq1ou/REXe1V39CrvMrXAI=; b=SaU+Nvukczd1pDpvX+/de6SecwP0z70gRtDmYF24zY8J7VU0qaK9PHUJ2By2+Sg5Eo r7erBqgXtya+HzQ5uXbrKJgUWCCzuRUlG8O+5mOxXeoqvakBCfJKsyG+v75jjRarW9RF fbJ6ZiJRTHKqYFoLARK859f2CdI+mzn/7kcCBVUBC29XTRtMoiWuJZZhqs3H6QRwqHBV UeufX5JknDJjGFb5sSrDrpmV7f3h3Ft9bi47Xx5b8VZ95JKddYhinb39gIYZqzClIq7E AwhprLlv6RwmDUWXLX491YTLzSMLMnQ8KGt31IxVCsSCwj3mMIv3qE7K8dItN0ejkPIm uWVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=BXD5zFvhG/G2vhGcnZDRgMq1ou/REXe1V39CrvMrXAI=; b=t/woTaqeDYDHrqwcciziCt646W/3Z2WD6WOxgej40f/1pY6F3cPMY8QVaRDIqmLJ7E eVHpZhBgZF5GcwLurpcIAUTfUl5bOvHUs+Wy0TQSGmLQgOdIgXCUm4bEhjzAKLL9b1H7 +RgFuyohUqIXbOVFnQh9vsvVbD20XUzABkkJRZy5g6QR8GbM1qMImaVaJFtucmKVJolY Xh0Xc+nSBDTjfuev9qkfenzhIHPnBuWM3KY44TytN47JDEw5u55wgtOq1FItOvRfHZ5c 4TdtWJntCY3/80FhAId+oh8Ol3reVRVPI8B+FEeC1yC8khRX9gV+02/lM/ri5Uz9AkUJ cp8w==
X-Gm-Message-State: APjAAAWoW8J+QCBGlOSYYrB/As0En7cP634mAtWdWL5y680g8OhO7+fk Pb21W699oaOkuclvRZyIQKA=
X-Google-Smtp-Source: APXvYqzmy14oijhnYrtB2UQWck535KMXbMr/UhS5OPrYmnDtoSDveCuZh+wolVieHndIcheJv/Iicg==
X-Received: by 2002:a63:2bd2:: with SMTP id r201mr9862617pgr.193.1568236966403; Wed, 11 Sep 2019 14:22:46 -0700 (PDT)
Received: from [10.1.244.27] ([66.170.99.95]) by smtp.gmail.com with ESMTPSA id 202sm43830283pfu.161.2019.09.11.14.22.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Sep 2019 14:22:45 -0700 (PDT)
From: Mahesh Jethanandani <mjethanandani@gmail.com>
Message-Id: <01AFBB8A-68B4-40EF-9C74-B48A4065D410@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_24F6FD4A-07B1-4F41-A4A2-62E8C8EE958B"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Date: Wed, 11 Sep 2019 14:22:43 -0700
In-Reply-To: <00DA18F2-59DD-4F33-BE60-011C7A52E9CF@cisco.com>
Cc: Robert Wilton <rwilton@cisco.com>, "netmod-ver-dt@ietf.org" <netmod-ver-dt@ietf.org>
To: Reshad Rehman <rrahman@cisco.com>
References: <00DA18F2-59DD-4F33-BE60-011C7A52E9CF@cisco.com>
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod-ver-dt/FQ1Fz5hQzSfBUZN3PcU6DVNeg74>
Subject: Re: [Netmod-ver-dt] Resolving package conflicts
X-BeenThere: netmod-ver-dt@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NetMod WG YANG Model Versioning Design Team <netmod-ver-dt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod-ver-dt/>
List-Post: <mailto:netmod-ver-dt@ietf.org>
List-Help: <mailto:netmod-ver-dt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Sep 2019 21:22:50 -0000

I have no objection either. But I want to take a very specific example, something I am already working on. With the package concept, how do you see this being packaged?

To support ietf-bgp model, I need the following modules:
iana-bfd-types@2018-08-01.yang
iana-if-type@2019-02-08.yang
ieee802-dot1q-types@2018-03-07.yang
ietf-bfd-types@2018-08-01.yang
ietf-bgp-common-multiprotocol@2019-06-05.yang
ietf-bgp-common-structure@2019-06-05.yang
ietf-bgp-common@2019-06-05.yang
ietf-bgp-neighbor@2019-06-05.yang
ietf-bgp-peer-group@2019-06-05.yang
ietf-bgp-policy@2019-06-05.yang
ietf-bgp-rib-attributes@2019-06-05.yang
ietf-bgp-rib-ext@2019-06-05.yang
ietf-bgp-rib-table-attributes@2019-06-05.yang
ietf-bgp-rib-tables@2019-06-05.yang
ietf-bgp-rib-types@2019-06-05.yang
ietf-bgp-rib@2019-06-05.yang
ietf-bgp-types@2019-06-05.yang
ietf-bgp@2019-06-05.yang
ietf-if-l3-vlan@2019-03-05.yang
ietf-interfaces-common@2019-03-05.yang
ietf-interfaces@2018-02-20.yang
ietf-ip@2018-02-22.yang
ietf-key-chain@2017-06-15.yang
ietf-network-instance@2019-01-21.yang
ietf-routing-policy@2019-03-06.yang
ietf-routing-types@2017-12-04.yang
ietf-routing@2018-03-13.yang
ietf-yang-schema-mount@2019-01-14.yang
To support ietf-evpn module, I need the following modules:
ietf-evpn@2018-02-20.yang
ietf-interfaces@2018-02-20.yang
ietf-ip@2018-02-22.yang
ietf-l2vpn@2019-05-28.yang
ietf-network-instance@2019-01-21.yang
ietf-pseudowires@2018-10-17.yang
ietf-routing-types@2017-12-04.yang
ietf-yang-schema-mount@2019-01-14.yang
To support ietf-l2vpn module, I need the following modules:
ietf-interfaces@2018-02-20.yang
ietf-ip@2018-02-22.yang
ietf-l2vpn@2019-05-28.yang
ietf-network-instance@2019-01-21.yang
ietf-pseudowires@2018-10-17.yang
ietf-routing-types@2017-12-04.yang
ietf-yang-schema-mount@2019-01-14.yang
There are some common modules that all three need, e.g. ietf-interfaces, ietf-ip etc., then there are modules like ietf-l2vpn that are the L2VPN “package” but are needed by EVPN, and then there will be modules that are needed by two of them for which I do not have an example here, but I am sure I can dig one up.

How do you see this packaged?

> On Sep 11, 2019, at 1:49 PM, Reshad Rahman (rrahman) <rrahman@cisco.com> wrote:
> 
> No objections, makes sense.
>  
> From: Netmod-ver-dt <netmod-ver-dt-bounces@ietf.org <mailto:netmod-ver-dt-bounces@ietf.org>> on behalf of "Rob Wilton (rwilton)" <rwilton@cisco.com <mailto:rwilton@cisco.com>>
> Date: Wednesday, September 11, 2019 at 6:00 AM
> To: "netmod-ver-dt@ietf.org <mailto:netmod-ver-dt@ietf.org>" <netmod-ver-dt@ietf.org <mailto:netmod-ver-dt@ietf.org>>
> Subject: [Netmod-ver-dt] Resolving package conflicts
>  
> In the packages draft it is possible to for a package definition to combine modules from two separate packages which may conflict.  I.e. more than one version of a module might end up in the resultant package, or the import dependencies might need to be fixed.
>  
> This is OK, because the packages draft requires that these conflicts are always explicitly resolved by listing the specific module versions in the combined package, so the problem is solved.
>  
> But what about if we define a package ietf-base@1.0.0 <mailto:ietf-base@1.0.0> that contains, say, 10 modules?
>  
> This package might be imported by a hypothetical ietf-routing@1.0.0 <mailto:ietf-routing@1.0.0>.
>  
> Separately there might be a hypothetical ietf-l2vpn@1.0.0 <mailto:ietf-l2vpn@1.0.0> package that has been published later and uses an updated version of ietf-base package, say ietf-base@1.5.0 <mailto:ietf-base@1.5.0>, that may contain BC updates to several of the modules.
>  
> Say a device wants to implement a my-packages@0.5.0 <mailto:my-packages@0.5.0> module that imports both ietf-routing@1.0.0 <mailto:ietf-routing@1.0.0>and ietf-l2vpn@1..0.0 <mailto:ietf-l2vpn@1.0.0>.  Currently the packages draft would require the my-packages definition to explicitly re-state each of the modules in ietf-base@1.5.0 <mailto:ietf-base@1.5.0> that differed ietf-base@1.0.0 <mailto:ietf-base@1.0.0> (because only a single version of a module can be implemented, and all conflicts must be explicitly resolved).
>  
> This works, but I’m wondering whether that might become overly verbose.  Hence, I’m thinking that it might be useful for the my-packages@0.5.0 <mailto:my-packages@0.5.0> definition to explicitly list ietf-base@1.5.0 <mailto:ietf-base@1.5.0> as a direct package import, stating that it is replacing ietf-base@1.0.0 <mailto:ietf-base@1.0.0> (which is indirectly imported via ietf-routing@1.0.0 <mailto:ietf-routing@1.0.0>).  Avoiding the need to explicitly list the conflicting modules.  In fact, we could require that all conflicting imported package versions must also be explicitly resolved, just like for modules.
>  
> Does anyone have any objections to this?
>  
> Thanks,
> Rob
>  
>  
> _______________________________________________
> Netmod-ver-dt mailing list
> Netmod-ver-dt@ietf.org <mailto:Netmod-ver-dt@ietf.org>
> https://www.ietf.org/mailman/listinfo/netmod-ver-dt <https://www.ietf.org/mailman/listinfo/netmod-ver-dt>
Mahesh Jethanandani
mjethanandani@gmail.com