Re: [netmod] schema mount open issue #1

Lou Berger <lberger@labn.net> Mon, 28 August 2017 12:54 UTC

Return-Path: <lberger@labn.net>
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 5E507132D09 for <netmod@ietfa.amsl.com>; Mon, 28 Aug 2017 05:54:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 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=-2.8, RCVD_IN_SORBS_SPAM=0.5, 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 ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id i4CXUIouGjub for <netmod@ietfa.amsl.com>; Mon, 28 Aug 2017 05:54:35 -0700 (PDT)
Received: from gproxy7-pub.mail.unifiedlayer.com (gproxy7-pub.mail.unifiedlayer.com [70.40.196.235]) (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 3406D132199 for <netmod@ietf.org>; Mon, 28 Aug 2017 05:54:35 -0700 (PDT)
Received: from CMOut01 (unknown [10.0.90.82]) by gproxy7.mail.unifiedlayer.com (Postfix) with ESMTP id DF8A0215E34 for <netmod@ietf.org>; Mon, 28 Aug 2017 06:54:33 -0600 (MDT)
Received: from box313.bluehost.com ([69.89.31.113]) by CMOut01 with id 2cuW1w00g2SSUrH01cuZu7; Mon, 28 Aug 2017 06:54:33 -0600
X-Authority-Analysis: v=2.2 cv=fJ5J5dSe c=1 sm=1 tr=0 a=h1BC+oY+fLhyFmnTBx92Jg==:117 a=h1BC+oY+fLhyFmnTBx92Jg==:17 a=IkcTkHD0fZMA:10 a=xqWC_Br6kY4A:10 a=KeKAF7QvOSUA:10 a=wU2YTnxGAAAA:8 a=u07AKapRAAAA:8 a=48vgC7mUAAAA:8 a=qo_yGb_QLt_5vNEFytgA:9 a=QEXdDO2ut3YA:10 a=Yz9wTY_ffGCQnEDHKrcv:22 a=SkebfZ6J2Mmvk2rLHZle:22 a=w1C3t2QeGrPiZgrLijVG:22
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=labn.net; s=default; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:MIME-Version :Date:Message-ID:From:References:Cc:To:Subject:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=nlJ4XKEVg4v+wkXNScO/oV7DQxh6D700isprwvnakyY=; b=Xoa8DlATEul1Uip3Jizynyhy49 DzvFK7udN69jck+tR6qJB1XixD2zsrCWSakHSdCd5zk/siNRNVCYBbQ5LVKgXsKPoOuQUezKU4MgP EqCsYmbllnZjzwOsRjenZNPZv;
Received: from pool-100-15-84-20.washdc.fios.verizon.net ([100.15.84.20]:47028 helo=[IPv6:::1]) by box313.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.87) (envelope-from <lberger@labn.net>) id 1dmJYj-004CxU-Tx; Mon, 28 Aug 2017 06:54:30 -0600
To: Martin Bjorklund <mbj@tail-f.com>
Cc: netmod@ietf.org
References: <edf93508-3b14-e962-488f-a4844d7f8399@labn.net> <20170828.122845.1527315474517128533.mbj@tail-f.com> <ca476502-c8f5-ffad-a463-04f21e2411f9@labn.net> <20170828.133507.2047018591752852829.mbj@tail-f.com>
From: Lou Berger <lberger@labn.net>
Message-ID: <e356dcb1-6bb2-96ec-17d4-c0bf7f1868b4@labn.net>
Date: Mon, 28 Aug 2017 08:54:24 -0400
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0
MIME-Version: 1.0
In-Reply-To: <20170828.133507.2047018591752852829.mbj@tail-f.com>
Content-Type: text/plain; charset="utf-8"
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-Source-IP: 100.15.84.20
X-Exim-ID: 1dmJYj-004CxU-Tx
X-Source:
X-Source-Args:
X-Source-Dir:
X-Source-Sender: pool-100-15-84-20.washdc.fios.verizon.net ([IPv6:::1]) [100.15.84.20]:47028
X-Source-Auth: lberger@labn.net
X-Email-Count: 2
X-Source-Cap: bGFibm1vYmk7bGFibm1vYmk7Ym94MzEzLmJsdWVob3N0LmNvbQ==
X-Local-Domain: yes
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/IQBfUD_cgO7zwDMWBoOXrClBZxI>
Subject: Re: [netmod] schema mount open issue #1
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: Mon, 28 Aug 2017 12:54:41 -0000


On 8/28/2017 7:35 AM, Martin Bjorklund wrote:
> Lou Berger <lberger@labn.net> wrote:
>> Martin,
>> 	See below.
>>
>> On 08/28/2017 06:28 AM, Martin Bjorklund wrote:
>>> Lou Berger <lberger@labn.net> wrote:
>>>> Martin,
>>>> See below
>>>>
>>>>
>>>> On August 23, 2017 2:28:37 AM Martin Bjorklund <mbj@tail-f.com> wrote:
>>>>
>>>>> Lou Berger <lberger@labn.net> wrote:
>>>>>> Hi Martin,
>>>>>>
>>>>>> See below.
>>>>>>
>>>>>>
>>>>>> On 8/22/2017 6:20 AM, Martin Bjorklund wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> Lada presented an open issue in schema mount in Prague.  (See slide 6
>>>>>>> in
>>>>>>>
>>>>>> https://datatracker.ietf.org/meeting/99/materials/slides-99-netmod-sessb-schema-mount)
>>>>>>> The original problem comes from the NI use case
>>>>>>> (https://tools.ietf.org/html/draft-ietf-rtgwg-ni-model).  In this
>>>>>>> use case, interfaces are assigned to NIs by:
>>>>>>>
>>>>>>>    augment /if:interfaces/if:interface:
>>>>>>>      +--rw bind-ni-name?   -> /network-instances/network-instance/name
>>>>>>>
>>>>>>> Modules that are mounted within the NI might have references to
>>>>>>> interfaces.  The idea is that a specific NI can only reference the
>>>>>>> interfaces that has been assigned to it.
>>>>>>>
>>>>>>> In schema mount, we have the "parent-reference" XPath expression that
>>>>>>> in this case will be "/if:interfaces/if:interface".  The problem is
>>>>>>> that this XPath expression will evaluate to a node set that contains
>>>>>>> *all* interfaces in the system.  We would like this to contain just
>>>>>>> the interfaces assigned to the NI.
>>>>>>>
>>>>>>> It turns out that this can be done with a simple change to the
>>>>>>> "parent-reference" node.  If we state that this XPath expression is
>>>>>>> evaluated in an XPath context where the context node is the node in
>>>>>>> the data tree where the mount point is defined (instead of "/"), we
>>>>>>> can use as parent-reference:
>>>>>>>
>>>>>>>   /if:interfaces/if:interface[ni:bind-network-instance-name = ../ni:name]
>>>>>>>
>>>>>>> Putting this together we'd have:
>>>>>>>
>>>>>>>   augment "/if:interfaces/if:interface" {
>>>>>>>     leaf bind-ni-name {
>>>>>>>       type leafref {
>>>>>>>         path "/network-instances/network-instance/name";
>>>>>>>       }
>>>>>>>     }
>>>>>>>   }
>>>>>>>
>>>>>>>   container network-instances {
>>>>>>>     list network-instance {
>>>>>>>       key name;
>>>>>>>       leaf name { ... }
>>>>>>>       ...
>>>>>>>       container root {
>>>>>>>         // this would be the XPath context root for parent-reference
>>>>>>>         yangmnt:mount-point ni-root;
>>>>>>>       }
>>>>>>>     }
>>>>>>>   }
>>>>>> note that the current NI definition is:
>>>>> Yes I saw that.
>>>>>
>>>>>>    module: ietf-network-instance
>>>>>>      +--rw network-instances
>>>>>>         +--rw network-instance* [name]
>>>>>>            +--rw name           string
>>>>>>            +--rw enabled?       boolean
>>>>>>            +--rw description?   string
>>>>>>            +--rw (ni-type)?
>>>>>>            +--rw (root-type)?
>>>>>>               +--:(vrf-root)
>>>>>>               |  +--mp vrf-root?
>>>>>>               +--:(vsi-root)
>>>>>>               |  +--mp vsi-root?
>>>>>>               +--:(vv-root)
>>>>>>                  +--mp vv-root?
>>>>> Note that the extension yangmnt:mount-point can only be present in a
>>>>> container or list, not in a choice/case.
>>>> Okay, I missed that restriction in your draft.  What's the reason for
>>>> not allowing mounts under choices/cases?  Isn't the resulting path to
>>>> data nodes indistinguishable when the parent is a list or container?
>>> Suppose a server lists a couple of modules for "vrf-root" and some
>>> other for "vsi-root" in the /schema-mounts/mount-point list.  How can
>>> a client tell if a certain NI instance is has the "vrf" modules or
>>> "vsi" modules?
>> umm, my understanding is that only one of the cases under a choice can
>> be present in the data (tree) at a time so the client *can* only see one
>>  mount point {vrf-root, vsi-root or vv-root} node and all the mounted
>> schemas will be under that '-root' node.  What have I missed?
> The mount point itself is not a node.  
okay, I think we're getting to the crux of this issue!  I certainly
didn't see this (that a schema-mount root node is *not* represented in
the data, but only in the schema) stated in
draft-ietf-netmod-schema-mount.  In fact, I read the text as saying just
the opposite:

   The basic idea of schema mount is to label a data node in the parent
   schema as the mount point, and then define a complete data model to
   be attached to the mount point so that the labeled data node
   effectively becomes the root node of the mounted data model.

Why don't you think an MP should be represented in the data (tree)?

In our example usage
(https://tools.ietf.org/html/draft-ietf-rtgwg-ni-model-03#appendix-B) we
include the mount point as a node in the data.  You're saying that this
doesn't line up with your expectation, right?

Can you please take a look at it and see if we have any other disconnects?

> So the client will just see
> some mounted top-level nodes.  If you require that all mount points
> have disjoint sets of modules, then this could work.  But I assume
> that this is not the case.

<rest trimmed>

Lou