Re: [Netconf] [netmod] Retrieving Information Pointed by leafref
Robert Wilton <rwilton@cisco.com> Tue, 10 October 2017 10:41 UTC
Return-Path: <rwilton@cisco.com>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A333F134C9B; Tue, 10 Oct 2017 03:41:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.5
X-Spam-Level:
X-Spam-Status: No, score=-14.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, URIBL_BLOCKED=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 UoYKzBOeuQ95; Tue, 10 Oct 2017 03:41:36 -0700 (PDT)
Received: from aer-iport-2.cisco.com (aer-iport-2.cisco.com [173.38.203.52]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0C2D6134CA0; Tue, 10 Oct 2017 03:40:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=12152; q=dns/txt; s=iport; t=1507632051; x=1508841651; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=VAU7cdMyVPTVoL/4eigtGk0rNMnCubO/G0WdbErwJ7k=; b=Q2xDa5F4znocVQyvdN2haWuYjMVN9TEDCt5AI7fVku+n5Yo6IaEBzQjT fj5zyctuyZ2djL4CX6+3Ve4CXrA6fXIz3d9hou0NVuMwhs/nbb9RCZf5d Y7dBFUNp7/HJfjA2riVq2940Nk+5EX21P53KVRhEpU37ZsOC96Hg2zbP1 0=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0DPAQBGo9xZ/xbLJq1RChkBAQEBAQEBAQEBAQcBAQEBAYQ/bieDeosTkFQieYdMjWqCEgoYC4FegmtPAoUJFwECAQEBAQEBAWsohR0BAQEDAQEBIQQRNgsMBAsRAwEBAQECAiMDAgIhBh8JCAYNBgIBARaJcgMNCBCnfIFtOodADYNXAQEBAQEBAQEBAQEBAQEBAQEBAQEBGAWBDoIfg1OBaisLgj41gl6BexWDKYJhBYobhyaPPzyHXogShHkCghKFc4Nahy6Me4EJh12BOSABNoEOMiEIHRVJhRocgWg/NgGHfiyCFQEBAQ
X-IronPort-AV: E=Sophos;i="5.42,504,1500940800"; d="scan'208";a="655364330"
Received: from aer-iport-nat.cisco.com (HELO aer-core-3.cisco.com) ([173.38.203.22]) by aer-iport-2.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Oct 2017 10:40:48 +0000
Received: from [10.63.23.63] (dhcp-ensft1-uk-vla370-10-63-23-63.cisco.com [10.63.23.63]) by aer-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id v9AAel7f005769; Tue, 10 Oct 2017 10:40:48 GMT
To: Igor Bryskin <Igor.Bryskin@huawei.com>
Cc: Per Hedeland <per@tail-f.com>, "netmod@ietf.org" <netmod@ietf.org>, "netconf@ietf.org" <netconf@ietf.org>
References: <049501d34104$6aa46670$3fed3350$@gmail.com> <59DB9E54.8080805@tail-f.com> <0C72C38E7EBC34499E8A9E7DD007863909CDB234@SJCEML702-CHM.china.huawei.com> <20171009.191347.1897981146275128665.mbj@tail-f.com> <6f8eb6ff-8fc5-4be3-d582-b188bd2337a6@tail-f.com> <etPan.59dbd366.8bfdc1a.12f7@localhost> <a1af1cd1-9a61-9d1c-49d3-f1e031525f0a@tail-f.com> <0C72C38E7EBC34499E8A9E7DD007863909CDB9E2@SJCEML702-CHM.china.huawei.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <42819484-f9b5-4f06-dd58-23d9bc8c1ecc@cisco.com>
Date: Tue, 10 Oct 2017 11:40:47 +0100
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: <0C72C38E7EBC34499E8A9E7DD007863909CDB9E2@SJCEML702-CHM.china.huawei.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/bPF7_tDJh2iPvJ_TnUsrYmj_7z4>
Subject: Re: [Netconf] [netmod] Retrieving Information Pointed by leafref
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Network Configuration WG mailing list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf/>
List-Post: <mailto:netconf@ietf.org>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Oct 2017 10:41:39 -0000
Hi Igor, On 09/10/2017 23:11, Igor Bryskin wrote: > Hi Per, > > This is a good news, but, please, help us out. > Consider, we have a node - "te-tunnel" - which among other attributes has two key leafref lists: > 1) each member of the 1st list points to a "connection" supporting the te-tunnel. All connections supporting all te-tunnels are stored in a single list of connections. > 2) each member of the 2nd list points to a supporting "te-tunnel" - the te-tunnel in question depends on. All te=tunnels including the te-tunnel in question, are stored in a single list of te-tunnels. > > The question: how the client can retrieve via a single request all attributes of the te-tunnel in question along with all parameters of all connections supporting the te-tunnel, but with just pointers to supporting te-tunnels (so that the interested client can use the pointers to retrieve full data via subsequent separate requests) ? I think that it might be something like this (for tunnel name foo): /te/tunnels/tunnel[name='foo'] | /te/connections/connection[name=/te/tunnels/tunnel[name='foo']/connections/connection/name] E.g. in English, this should equate to something like: Return all information for tunnel foo AND ALSO Return all information for all connections where the connection name matches one of the connections listed in tunnel foo. > > Likewise, how the client can ask for full data of the te-tunnel and all supporting te-tunnels and just pointers for supporting connections? If my xpath above is right, then this would be something roughly like this: /te/tunnels/tunnel[name='foo'] | /te/tunnels/tunnel[name=/te/tunnels/tunnel[name='foo']/supporting-tunnels/supporting-tunnel/name] I'm an XPath novice, so the expressions might be wrong. https://www.freeformatter.com/xpath-tester.html might be useful. E.g. if you can construct a simple XML instance tree of your data, you could validate whether the XPath expression works. I hope that this is of some help, Rob > > I really appreciate your help, > > Igor > > > -----Original Message----- > From: Per Hedeland [mailto:per@tail-f.com] > Sent: Monday, October 09, 2017 5:21 PM > To: Igor Bryskin > Cc: mbj@tail-f.com; xufeng.liu.ietf@gmail.com; netconf@ietf.org; netmod@ietf.org > Subject: Re: [Netconf] [netmod] Retrieving Information Pointed by leafref > > Just to be clear: what we're suggesting is that you can use the > already-existing standard NETCONF XPath capability to achieve the desired > result - see https://tools.ietf.org/html/rfc6241#section-8.9 > > --Per > > On 2017-10-09 21:52, Igor Bryskin wrote: >> I agree. For example, a leafref may point not to a singls entity, but to a list of entities, and the client might want to expand all of them into the joint get response. >> >> Igor >> >> *From:*Per Hedeland >> *To:*Martin Bjorklund, >> *Cc:*Igor Bryskin,xufeng.liu.ietf@gmail.com,netconf@ietf.org,netmod@ietf.org, >> *Date:*2017-10-09 15:12:22 >> *Subject:*Re: [Netconf] [netmod] Retrieving Information Pointed by leafref >> >> On 2017-10-09 19:13, Martin Bjorklund wrote: >>> Igor Bryskin <Igor.Bryskin@huawei.com> wrote: >>>> Hi Per, >>>> >>>> Basically, what we need is a way for a client to request something >>>> like this: >>>> >>>> get <XPath> joint with <XPath1, XPath2, ..., XPathn> >>> ... which is what Per's expression does! Note that "|" in XPath means >>> "union". >>> >>> But as Per explained, it only works in some cases (when the leafref >>> acts a "single pointer"). >> Well, that particular expression works only in that case - but since it >> is effectively the client that (perhaps based on the data model) decides >> what the leafref-leafs "mean" (in this case the single key of a single >> list), other cases can be handled the same way. E.g. multiple >> leafref-to-key leafs that together give the keys of a multi-key list >> just amounts to a slightly hairier XPath filter... >> >> --Per >> >>>> with a server interpreting the request as follows: >>>> if a node pointed by XPath contains a pointer (e.g. key leafref) >>>> matching one of the XPath from the "joint with" list, then the server >>>> must provide the entire body of the node pointed by the pointer, >>>> otherwise, just the pointer (as it happens today, that is, when no >>>> "joint with" list specified). >>>> >>>> We think that this would allow for the client to optimize the number >>>> of request-response iterations depending on application/use case. >>>> >>>> Regards, >>>> Igor >>> >>> >>> /martin >>> >>> >>>> >>>> >>>> >>>> >>>> >>>> -----Original Message----- >>>> From: Per Hedeland [mailto:per@tail-f.com] >>>> Sent: Monday, October 09, 2017 12:06 PM >>>> To: Xufeng Liu >>>> Cc: Igor Bryskin; netconf@ietf.org; netmod@ietf.org >>>> Subject: Re: [Netconf] [netmod] Retrieving Information Pointed by >>>> leafref >>>> >>>> I understand your use case, but a leaf of type leafref does not in >>>> general identify a single node in the data tree - the leafref path >>>> could >>>> be for a non-key leaf, and/or the path could traverse list nodes, >>>> and/or >>>> the "target" list could have multiple keys and thus multiple >>>> leafref-leafs be required to identify a specific list entry. >>>> >>>> Thus it seems to me that your use case is not a reasonable basis for a >>>> new protocol operation. My XPath foo isn't very good either, but I do >>>> believe Robert's suggestion of using an XPath filter could be a way >>>> forward. I *think* the filter expression would be something along the >>>> lines of >>>> >>>> /te/tunnels/tunnel[name='foo'] | >>>> /te/explicit-paths/explicit-path[name=/te/tunnels/tunnel[name='foo']/paths/path/explicit-path] >>>> >>>> --Per >>>> >>>> On 2017-10-09 15:42, Xufeng Liu wrote: >>>>> Hi Per, >>>>> >>>>> >>>>> >>>>> *From:* Igor Bryskin [mailto:Igor.Bryskin@huawei.com] >>>>> *Sent:* Sunday, October 8, 2017 7:04 PM >>>>> *To:* Igor Bryskin <Igor.Bryskin@huawei.com>; per@tail-f.com; >>>>> *xufeng.liu.ietf@gmail.com >>>>> *Cc:* netconf@ietf.org; netmod@ietf.org >>>>> *Subject:* Re: [Netconf] [netmod] Retrieving Information Pointed by >>>>> *leafref >>>>> >>>>> >>>>> >>>>> >>>>> Hi Joel, >>>>> >>>>> Thanks, I think I didnt explain our problem correctly. >>>>> >>>>> In our case we have a leafref pointing to a te tunnel name, which >>>>> happens to be a key to lookup the (axilary) tunnel. We need a way to >>>>> include the entire tunnel body (not just a name) into the get >>>>> response. This is to optimize the number of iterations between the >>>>> client and the server. As Xufeng put it something similar to SQL join, >>>>> >>>>> Igor >>>>> >>>>> *From:*Igor Bryskin >>>>> >>>>> *To:*per@tail-f.com,xufeng.liu.ietf@gmail.com, >>>>> >>>>> *Cc:*netconf@ietf.org,netmod@ietf.org, >>>>> >>>>> *Date:*2017-10-08 17:36:47 >>>>> >>>>> *Subject:*Re: [Netconf] [netmod] Retrieving Information Pointed by >>>>> *leafref >>>>> >>>>> >>>>> >>>>> Hi Per, >>>>> >>>>> In a nutshell we would lika for a netconf client to have a way to >>>>> instruct the server on whether in response to the get request the >>>>> server needs to provide the entire body of a datastore node pointed >>>>> to by a leafref or just a pointer to said node, so that the node's >>>>> body could be retrieved by a subsequent separate request. This is >>>>> requested by implementors who want to optimise rhe number of >>>>> interactions between a client and its server. >>>>> >>>>> Cheers, >>>>> Igor >>>>> >>>>> *From:*Per Hedeland >>>>> >>>>> *To:*Xufeng Liu, >>>>> >>>>> *Cc:*netconf@ietf.org,'NetMod WG', >>>>> >>>>> *Date:*2017-10-08 14:01:27 >>>>> >>>>> *Subject:*Re: [Netconf] [netmod] Retrieving Information Pointed by >>>>> *leafref >>>>> >>>>> >>>>> >>>>> On 2017-10-06 23:11, Xufeng Liu wrote: >>>>>> During the design team discussion for TE and MPLS YANG modeling, we >>>>>> have received a request from implementers: How to minimize the number >>>>>> of NETCONF/RESTCONF RPCs to improve operation efficiency? >>>>>> Especially for the case when the operator or client software needs to >>>>>> retrieve the object contents pointed by a leafref. >>>>>> >>>>>> For example, given the following simplified TE tunnel model, >>>>>> >>>>>> +--rw te >>>>>> >>>>>> +--rw explicit-paths >>>>>> >>>>>> | +--rw explicit-path* [name] >>>>>> >>>>>> | +--rw name string >>>>>> >>>>>> | +--rw explicit-route-object* [index] >>>>>> >>>>>> | +--rw index uint32 >>>>>> >>>>>> | +--rw explicit-route-usage? identityref >>>>>> >>>>>> +--rw tunnels >>>>>> >>>>>> | +--rw tunnel* [name] >>>>>> >>>>>> | | +--rw name string >>>>>> >>>>>> | | +--rw paths >>>>>> >>>>>> | | | +--rw path* [name] >>>>>> >>>>>> | | | +--rw explicit-path? -> >>>>>> | | | ../../../../../explicit-paths/explicit-path/name >>>>>> >>>>>> when the client tries to retrieve a tunnels information based on the >>>>>> tunnel name, the get operation returns a list of leafrefs pointing >>>>>> to the paths of the tunnel. >>>>> Sorry, I'm afraid I don't follow. Can you explain exactly what your >>>>> "get" request is (protocol and payload), and where the "list of >>>>> leafref's" (whatever that may be) occurs in the reply? >>>>> >>>>> */[Xufeng] The get operation is the NETCONF/RESTCON <get> protocol >>>>> *operation, or the <get-data> operation described in >>>>> *https://tools.ietf.org/html/draft-dsdt-nmda-netconf-01 and the GET >>>>> *operations >>>>> on {+restconf}/ds/<datastore> described in >>>>> https://tools.ietf.org/html/draft-ietf-netconf-nmda-restconf-00./* >>>>> >>>>> */ /* >>>>> >>>>> */We have a list of leafref values because in this example model, each >>>>> *tunnel contains a list of paths, each of them contains a leafref. The >>>>> *get returns a value for each instance of such a leafref, >>>>> which (as a string value) will be used as a constraint (foreign key) >>>>> to retrieve the instance of an explicit-path in the model above./* >>>>> >>>>> >>>>> >>>>> JFYI, in case there is some fundamental misunderstanding here: a leaf >>>>> of >>>>> type leafref has a single value - *one* of those that satisfy the >>>>> leafref >>>>> constraint, in case there are multiple "candidates". >>>>> >>>>> --Per >>>>> >>>>>> The client needs to issue at >>>>>> least one more get operation to retrieve the path information about >>>>>> the given tunnel. The request is to combine these two operations into >>>>>> one. >>>>>> >>>>>> In the RDBMS SQL world, join can be used when SQL select is >>>>>> performed, but NETCONF/YANG currently does not have this capability. >>>>>> >>>>>> Wed like to ask whether such a request is considered reasonable. >>>>>> >>>>>> If the request is reasonable, the next question is how to >>>>>> proceed. This seems to be a protocol issue rather than YANG modeling >>>>>> issue. Is it acceptable to add a new operation to achieve such a >>>>>> <get-data> operation with expanded leafrefs? >>>>>> >>>>>> Comments and suggestions are appreciated. >>>>>> >>>>>> Thanks, >>>>>> >>>>>> - Xufeng >>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> netmod mailing list >>>>>> netmod@ietf.org <mailto:netmod@ietf.org> >>>>>> https://www.ietf.org/mailman/listinfo/netmod >>>>>> >>>>> _______________________________________________ >>>>> Netconf mailing list >>>>> Netconf@ietf.org <mailto:Netconf@ietf.org> >>>>> https://www.ietf.org/mailman/listinfo/netconf >>>>> >>>> _______________________________________________ >>>> Netconf mailing list >>>> Netconf@ietf.org >>>> https://www.ietf.org/mailman/listinfo/netconf >>>> > _______________________________________________ > netmod mailing list > netmod@ietf.org > https://www.ietf.org/mailman/listinfo/netmod > . >
- [Netconf] Retrieving Information Pointed by leafr… Xufeng Liu
- Re: [Netconf] [netmod] Retrieving Information Poi… Kent Watsen
- Re: [Netconf] [netmod] Retrieving Information Poi… Kent Watsen
- Re: [Netconf] [netmod] Retrieving Information Poi… Per Hedeland
- Re: [Netconf] [netmod] Retrieving Information Poi… Igor Bryskin
- Re: [Netconf] [netmod] Retrieving Information Poi… Igor Bryskin
- Re: [Netconf] [netmod] Retrieving Information Poi… Xufeng Liu
- Re: [Netconf] [netmod] Retrieving Information Poi… Robert Wilton
- Re: [Netconf] [netmod] Retrieving Information Poi… Per Hedeland
- Re: [Netconf] [netmod] Retrieving Information Poi… Igor Bryskin
- Re: [Netconf] [netmod] Retrieving Information Poi… Martin Bjorklund
- Re: [Netconf] [netmod] Retrieving Information Poi… Igor Bryskin
- Re: [Netconf] [netmod] Retrieving Information Poi… Per Hedeland
- Re: [Netconf] [netmod] Retrieving Information Poi… Igor Bryskin
- Re: [Netconf] [netmod] Retrieving Information Poi… Per Hedeland
- Re: [Netconf] [netmod] Retrieving Information Poi… Igor Bryskin
- Re: [Netconf] [netmod] Retrieving Information Poi… Per Hedeland
- Re: [Netconf] [netmod] Retrieving Information Poi… Robert Wilton
- Re: [Netconf] [netmod] Retrieving Information Poi… Igor Bryskin
- Re: [Netconf] [netmod] Retrieving Information Poi… t.petch
- Re: [Netconf] [netmod] Retrieving Information Poi… Robert Wilton
- Re: [Netconf] [netmod] Retrieving Information Poi… Xufeng Liu
- Re: [Netconf] [netmod] Retrieving Information Poi… Robert Wilton