Re: [netmod] [Netconf] Alternative YANG library structure for 7895bis

Vladimir Vassilev <vladimir@transpacket.com> Wed, 13 December 2017 07:50 UTC

Return-Path: <vladimir@transpacket.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 B2935126D05; Tue, 12 Dec 2017 23:50:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-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 AW1DCyMeo-Gs; Tue, 12 Dec 2017 23:50:35 -0800 (PST)
Received: from mail.transpacket.com (s91205186171.blix.com [91.205.186.171]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6B869126C26; Tue, 12 Dec 2017 23:50:35 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by mail.transpacket.com (Postfix) with ESMTP id C5EC11541B5F; Wed, 13 Dec 2017 08:50:33 +0100 (CET)
Received: from mail.transpacket.com ([127.0.0.1]) by localhost (mail.transpacket.com [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id gf2Pr6xHjdey; Wed, 13 Dec 2017 08:50:33 +0100 (CET)
Received: from localhost (localhost [127.0.0.1]) by mail.transpacket.com (Postfix) with ESMTP id 9911C1541B65; Wed, 13 Dec 2017 08:50:33 +0100 (CET)
Received: from mail.transpacket.com ([127.0.0.1]) by localhost (mail.transpacket.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id XYQt8yAcXsay; Wed, 13 Dec 2017 08:50:33 +0100 (CET)
Received: from [192.168.209.122] (s1853520235.blix.com [185.35.202.35]) by mail.transpacket.com (Postfix) with ESMTPSA id 63A8B1541AB1; Wed, 13 Dec 2017 08:50:33 +0100 (CET)
From: Vladimir Vassilev <vladimir@transpacket.com>
To: Martin Bjorklund <mbj@tail-f.com>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
References: <20171208.160306.109290175567894287.mbj@tail-f.com> <20171208150614.axuynu4atpg7aaj2@elstar.local> <b3159aa5-93e4-23eb-406e-083289a4767d@transpacket.com> <20171212.202001.1743562517319162368.mbj@tail-f.com> <ba42f0ee-3926-071a-3611-199af31910aa@transpacket.com>
Message-ID: <1c97862a-9bc5-6101-6a79-3438573a9aca@transpacket.com>
Date: Wed, 13 Dec 2017 08:50:33 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0
MIME-Version: 1.0
In-Reply-To: <ba42f0ee-3926-071a-3611-199af31910aa@transpacket.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Language: nb
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/uUznxuqisLHtSNIgGW9uy-Xr_fE>
Subject: Re: [netmod] [Netconf] Alternative YANG library structure for 7895bis
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, 13 Dec 2017 07:50:37 -0000


On 12/13/2017 08:19 AM, Vladimir Vassilev wrote:
> On 12/12/2017 08:20 PM, Martin Bjorklund wrote:
>
>> Hi,
>>
>> Vladimir Vassilev <vladimir@transpacket.com> wrote:
>>>
>>> On 12/08/2017 04:06 PM, Juergen Schoenwaelder wrote:
>>>> On Fri, Dec 08, 2017 at 04:03:06PM +0100, Martin Bjorklund wrote:
>>>>> Vladimir Vassilev <vladimir@transpacket.com> wrote:
>>>>>> On 11/15/2017 06:29 PM, Robert Wilton wrote:
>>>>>>
>>>>>>> I don't think that this is really a good idea.  You would end up
>>>>>>> returning server metadata in addition to the configuration.
>>>>>> Obviously RFC 7895 defines only config false; data and I was not
>>>>>> proposing a change to that. But I agree something has to be added to
>>>>>> complete the solution. Special purpose datastore identities can be
>>>>>> defined that return instance of yang-library data when read with
>>>>>> <get-data>. (Datastores with yang-library config false; only data 
>>>>>> not
>>>>>> represented in 'operational')
>>>>>>
>>>>>> Adding this special yang-library-datastore to the proposed
>>>>>> ietf-datastores container e.g.
>>>>>>
>>>>>> module: ietf-datastores
>>>>>> +--ro datastores
>>>>>> |  +--ro datastore* [name]
>>>>>> |     +--ro name          identityref
>>>>>> |     +--ro yang-library-datastore          identityref
>>>>>>
>>>>> I don't understand this proposal.  How would a client learn the
>>>>> library for <running>?  For <operational>?
>>>> My interpretation is that the client reads the datastores list from
>>>> <operational> and the list entries give you the identity of a separate
>>>> datastore that gives you the content of the yang library for that
>>>> datastore. (For each datastore, you have a separate datastore to
>>>> report its yang library.)
>>> Yes. The default value for yang-library-datastore leaf is
>>> ds:operational (the only possible one for the ds:operational
>>> datastore). This is backward compatible. If one needs different model
>>> for 'running', etc. then a new datastore identity has to be defined
>>> and set in place of the default value. Then this identity can be used
>>> to read the yang-library data with <get-data>.
>> Ah, ok.  This is a clever solution, but quite complicated.  It
>> requires several round trips for a client to learn all library
>> instances.  Also, w/o any changes, it is not clear which module-set-id
>> is sent in the capability,
The module-set-id sent in capabilities has to be the one for operational 
since the client needs to get started by reading /datastores-state.
>> and a client must query all module-set-ids
>> in all (meta)datastores in order to just check if it has the latest
>> version or not.
Adding a /datastores-state/datastore/module-set-id leaf in operational 
can resolve this problem.

At the current point I think all issues raised are addressed with the 
following model (notice the added anydata option which can replace the 
use of yang-library-datastore and if implemented as an alternative can 
make retrieval as a single tree):

module: ietf-datastores
     +--ro datastores-state
        +--ro datastore* [name]
        +--ro module-set-id             string
        +--ro (model)?
           +--:(same-as-operational)
           +--:(constrained-to-operational)
           |  +--ro not-implemented* [name revision]
           |     +--ro name        -> /yanglib:module-state/module/name
           |     +--ro revision    -> /yanglib:module-state/module/revision
           +--:(unconstrained-datastore-instance)
           |  +--ro yang-library-datastore    identityref
           +--:(unconstrained-anydata)
              +--ro yang-library?             <anydata>

   augment /yanglib:yang-library-change:
     +---- datastore?   identityref

Vladimir

>>   It is also not clear how the existing notification
>> "yang-library-change" would work when there are multiple instances
>> involved.
> How about this?
> module: ietf-datastores
> ...
>   augment /yanglib:yang-library-change:
>     +---- datastore?   identityref
>
> Vladimir
>>    So I don't think that this solution will actually work w/o
>> an update to 7895 - but not updating 7895 was the whole reason for
>> doing this.
>>
>>
>> /martin
>>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod