[netmod] Proposal for minimalist full NMDA support in schema mount

Lou Berger <lberger@labn.net> Thu, 22 February 2018 16:18 UTC

Return-Path: <lberger@labn.net>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id 1020B12D7E2 for <netmod@ietfa.amsl.com>; Thu, 22 Feb 2018 08:18:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (768-bit key) header.d=labn.net
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id VVPwmHYyy6NQ for <netmod@ietfa.amsl.com>; Thu, 22 Feb 2018 08:18:45 -0800 (PST)
Received: from gproxy2-pub.mail.unifiedlayer.com (gproxy2-pub.mail.unifiedlayer.com []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DCA3912741D for <netmod@ietf.org>; Thu, 22 Feb 2018 08:18:45 -0800 (PST)
Received: from cmgw2 (unknown []) by gproxy2.mail.unifiedlayer.com (Postfix) with ESMTP id 87A231E07A8 for <netmod@ietf.org>; Thu, 22 Feb 2018 09:18:45 -0700 (MST)
Received: from box313.bluehost.com ([]) by cmgw2 with id DsJh1x00r2SSUrH01sJk6F; Thu, 22 Feb 2018 09:18:45 -0700
X-Authority-Analysis: v=2.2 cv=M5g9E24s c=1 sm=1 tr=0 a=h1BC+oY+fLhyFmnTBx92Jg==:117 a=h1BC+oY+fLhyFmnTBx92Jg==:17 a=IkcTkHD0fZMA:10 a=xqWC_Br6kY4A:10 a=Op4juWPpsa0A:10 a=9trkQO-fGp8CiU5gpf0A:9 a=QEXdDO2ut3YA:10
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=labn.net; s=default; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Date: Message-ID:Cc:To:Subject:From:Sender:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=+9bK9CJ1tBotT/1Tpq7AqZ6WoRoRQmMpZWHmnwWNrjU=; b=wAaCc9EJ8UwNN4qR+8/+80M8Y7 7TuTmHwVXrnMngVv9oKyaTr0FpOEoIVqhMHZFEX797CMtAaJ26qLSOlJ0beJcypxPAGJAYbs+uERH OxJi0wMM1bJG1qBdbASk6k/cB;
Received: from pool-100-15-86-101.washdc.fios.verizon.net ([]:34954 helo=[IPv6:::1]) by box313.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.89_1) (envelope-from <lberger@labn.net>) id 1eotZx-004HI4-Fz; Thu, 22 Feb 2018 09:18:41 -0700
From: Lou Berger <lberger@labn.net>
To: NetMod WG <netmod@ietf.org>
Message-ID: <090b951e-8627-183b-6fe1-ae46da5a90bc@labn.net>
Date: Thu, 22 Feb 2018 11:18:38 -0500
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Content-Language: en-US
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - box313.bluehost.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - labn.net
X-BWhitelist: no
X-Exim-ID: 1eotZx-004HI4-Fz
X-Source-Sender: pool-100-15-86-101.washdc.fios.verizon.net ([IPv6:::1]) []:34954
X-Source-Auth: lberger@labn.net
X-Email-Count: 1
X-Source-Cap: bGFibm1vYmk7bGFibm1vYmk7Ym94MzEzLmJsdWVob3N0LmNvbQ==
X-Local-Domain: yes
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/bWEMgBN7HN9fKylj05JcLR748-g>
Subject: [netmod] Proposal for minimalist full NMDA support in schema mount
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
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, 22 Feb 2018 16:18:47 -0000


(I have a bunch of different roles WRT this work.  This mail is being 
sent as an individual - as chair, I fully support the previous chair 
statements on this draft.)

Chris and I have come up with a proposal on how to provide full NMDA as 
part the existing schema-mount module.  Our motivation was to enable 
full NMDA support with *minimal* change to the model and disruption to 
the LC'ed work.  The key NMDA limitation, with -08, that we are aiming 
to address is the ability to support different mounted schema in 
different datastores for non-inline mount points. (See more detailed 
description below if interested full nuances of limitations of -08)

What we came up with was  to simply add a (leaf)list to identify in 
which datastores a
schema-mount schema is valid/present. This is somewhat similar to YL-bis 
schema/module-set. Specifically we're proposing (see below for full tree 

            +--ro schema* [name]
               +--ro name           string
ADD          +--ro datastore*    ds:datastore-ref {revised-datastores}

This approach has the advantages of supporting different mounted schema 
in different DSes, working with both NMDA and non-NMDA implementations, 
supporting all of the extensively discussed features of schema mount 
(including recursive mounts), and having minor/scoped impact on all 
dependent work.  The main downside is that it isn't the most 
optimal/compact solution possible if we were to base this work on 
YL-bis/pre09 draft.  Of course -08 isn't necessarily optimal from all 
perspectives, but it is what was agreed to as sufficient by those who 
contribute to the WG discussion.

In short, we see this as a solution to  addresses the raised last call 
issue with the minimal impact on -08 and dependent work -- which is what 
is appropriate given where we are in the process.

So our/my question really is:

     Is this a solution that you/all can live with?

Note: optimization, design preference and perfect alignment with use or 
YL-bis are not part of our question as we both don't think that is the 
right question given where we are in the WG process.

Lou (with ideas developed with Chris, and chair hat off)

Details -- for those who want
As background, my understanding/view is that the -08 version of the both 
NMDA and non-NMDA supporting implementations, but there are limitations 
in its NMDA applicability. Used with Yang Library, [rfc7895], only 
non-NMDA implementations can be supported.  When used with the revised 
Yang Library defined in [I.D.ietf-netconf-rfc7895bis-],  NMDA 
implementations  can be supported with certain limitations. 
Specifically, this document requires use of the now deprecated 
module-list grouping, and the same schema represented in schema list of 
the Schema Mount module MUST be used in all datastores.  Inline type 
mount points, which don't use the schema list,  can support different 
schema in different data stores not by instantiating the 
[I.D.ietf-netconf-rfc7895bis-] version of YANG library under the inline 
mount point.

     module: ietf-yang-schema-mount
         +--ro schema-mounts
            +--ro namespace* [prefix]
            |  +--ro prefix    yang:yang-identifier
            |  +--ro uri?      inet:uri
            +--ro mount-point* [module name]
            |  +--ro module        yang:yang-identifier
            |  +--ro name          yang:yang-identifier
            |  +--ro config?       boolean
            |  +--ro (schema-ref)?
            |     +--:(inline)
            |     |  +--ro inline?       empty
            |     +--:(use-schema)
            |        +--ro use-schema* [name]
            |           +--ro name
            |           |       -> /schema-mounts/schema/name
            |           +--ro parent-reference*   yang:xpath1.0
            +--ro schema* [name]
               +--ro name           string
ADD          +--ro datastore*	ds:datastore-ref {revised-datastores}
               +--ro module* [name revision]
               |  +--ro name                yang:yang-identifier
               |  +--ro revision            union
               |  +--ro schema?             inet:uri
               |  +--ro namespace           inet:uri
               |  +--ro feature*            yang:yang-identifier
               |  +--ro deviation* [name revision]
               |  |  +--ro name        yang:yang-identifier
               |  |  +--ro revision    union
               |  +--ro conformance-type    enumeration
               |  +--ro submodule* [name revision]
               |     +--ro name        yang:yang-identifier
               |     +--ro revision    union
               |     +--ro schema?     inet:uri
               +--ro mount-point* [module name]
                  +--ro module        yang:yang-identifier
                  +--ro name          yang:yang-identifier
                  +--ro config?       boolean
                  +--ro (schema-ref)?
                     |  +--ro inline?       empty
                        +--ro use-schema* [name]
                           +--ro name
                           |       -> /schema-mounts/schema/name
                           +--ro parent-reference*   yang:xpath1.0

We would expect that the revised-datastores feature would be used
(perhaps required) for any implementation that supports ietf-datastores
and yl-bis.