Re: [netmod] schema mount open issue #1
Martin Bjorklund <mbj@tail-f.com> Wed, 23 August 2017 06:28 UTC
Return-Path: <mbj@tail-f.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 9F2AA132332 for <netmod@ietfa.amsl.com>; Tue, 22 Aug 2017 23:28:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 bLbXngrISyHw for <netmod@ietfa.amsl.com>; Tue, 22 Aug 2017 23:28:07 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 340EB1321ED for <netmod@ietf.org>; Tue, 22 Aug 2017 23:28:07 -0700 (PDT)
Received: from localhost (h-40-225.A165.priv.bahnhof.se [94.254.40.225]) by mail.tail-f.com (Postfix) with ESMTPSA id 418DA1AE01AA; Wed, 23 Aug 2017 08:28:06 +0200 (CEST)
Date: Wed, 23 Aug 2017 08:29:06 +0200
Message-Id: <20170823.082906.1853252260651620253.mbj@tail-f.com>
To: lberger@labn.net
Cc: netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <1aa26e59-6999-8f8a-6cd6-5e74050453bd@labn.net>
References: <20170822.122022.1375224682803846655.mbj@tail-f.com> <1aa26e59-6999-8f8a-6cd6-5e74050453bd@labn.net>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/3ZOOzW1D6M18OfVQ08AGhMEMUJo>
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: Wed, 23 Aug 2017 06:28:10 -0000
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. But what is the point of a choice with three different mount points? > augment /if:interfaces/if:interface: > +--rw bind-ni-name? -> /network-instances/network-instance/name > augment /if:interfaces/if:interface/ip:ipv4: > +--rw bind-ni-name? -> /network-instances/network-instance/name > augment /if:interfaces/if:interface/ip:ipv6: > +--rw bind-ni-name? -> /network-instances/network-instance/name > > > And in state data: > > > > > > "ietf-yang-schema-mount:schema-mounts": { > > "namespace": [ > > { > > "prefix": "ni", > > "uri": "urn:ietf:params:xml:ns:yang:ietf-network-instance" > > }, > > { > > "prefix": "if", > > "uri": "urn:ietf:params:xml:ns:yang:ietf-interfaces" > > } > > ] > > "mount-point": [ > > { > > "target": "/ni:network-instances/ni:network-instance/ni:root", > Can you confirm that with the current definition the target is: > > "target": "/ni:network-instances/ni:network-instance", > > correct? See above; the current definition is invalid. > > "parent-reference": [ > > "/if:interfaces/if:interface > > [ni:bind-network-instance-name = ../ni:name]" Correction. This should be: "/if:interfaces/if:interface [ni:bind-network-instance-name = current()/../ni:name]" > > ], > Also, can you confirm that if we wanted to cover v4, v6 (for example > purposes) interfaces-state, the full parent reference list would be: > > "parent-reference": [ > "/if:interfaces/if:interface > [ni:bind-ni-name = ./ni:name]", > "/if:interfaces/if:interface/ip:ipv4 > [ni:bind-ni-name = ./ni:name]", > "/if:interfaces/if:interface/ip:ipv6 > [ni:bind-ni-name = ./ni:name]", > "/if:interfaces-state/if:interface" > > correct? No it would be: /if:interfaces-state/if:interface[ if:name = /if:interfaces/if:interface[ ni:bind-ni-name = current()/../ni:name]/if:name] etc. I.e., the interfaces in -state that that has the same names as the interfaces in config that has the correct bind-ni-name. > Note that interfaces-state isn't filtered as the bind-ni-name isn't > present in -state. > > > "use-schema": [ > > { > > "name": "ni-schema" > > } > > ] > > } > > ] > > > > > > > > Note that this does NOT affect the schema that is mounted; it only > > affects the result of the parent-reference XPath expressions. > > > > > > I think that we should make this change, since it allows for more > > precise parent-references. > I'm okay with the change (just want to see the draft moved forward ;-) > > Lou > (As contributor) /martin
- [netmod] schema mount open issue #1 Martin Bjorklund
- Re: [netmod] schema mount open issue #1 Acee Lindem (acee)
- Re: [netmod] schema mount open issue #1 Martin Bjorklund
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Martin Bjorklund
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Martin Bjorklund
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Martin Bjorklund
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Ladislav Lhotka
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Ladislav Lhotka
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Martin Bjorklund
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Martin Bjorklund
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Per Hedeland
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Ladislav Lhotka
- Re: [netmod] schema mount open issue #1 Per Hedeland
- Re: [netmod] schema mount open issue #1 Martin Bjorklund
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Xufeng Liu
- Re: [netmod] schema mount open issue #1 Ladislav Lhotka
- Re: [netmod] schema mount open issue #1 Lou Berger
- Re: [netmod] schema mount open issue #1 Martin Bjorklund
- Re: [netmod] schema mount open issue #1 terminolo… t.petch