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

Robert Wilton <rwilton@cisco.com> Wed, 15 November 2017 17:29 UTC

Return-Path: <rwilton@cisco.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 6FE8C127241 for <netmod@ietfa.amsl.com>; Wed, 15 Nov 2017 09:29:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.519
X-Spam-Level:
X-Spam-Status: No, score=-14.519 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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 s5zZVsZ7xfpi for <netmod@ietfa.amsl.com>; Wed, 15 Nov 2017 09:29:29 -0800 (PST)
Received: from alln-iport-5.cisco.com (alln-iport-5.cisco.com [173.37.142.92]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EC31E126CD8 for <netmod@ietf.org>; Wed, 15 Nov 2017 09:29:28 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=28169; q=dns/txt; s=iport; t=1510766968; x=1511976568; h=subject:to:references:from:message-id:date:mime-version: in-reply-to; bh=sThAUiTYlU5aAZYpnp3a1/Jv7VSXGlwBoQ9rfs3TINs=; b=ObNW+GOH5h/zBXQO3pp+9ezD9TbNpTfxxzkSFknDikAqs7YBtGgSf4Y/ 1j54n/khL3him3XuHOmEF59prgH/TPQyrkz8LeOjANrtAPIt6Vlk7vjjA vWjE3Jd0TvDlppAtwe3jojAv41pOyP2t0HCSUc1zvyr89+nIF5EhxPasr 4=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AMAQDMeAxa/4wNJK1dGQEBAQEBAQEBAQEBAQcBAQEBAYJEcmRuJ4N/ih+PIIFXJpZdEIIBChgBCoRJTwKFDj8YAQEBAQEBAQEBayiFHwEBBAEBIQRHGwkCGCAKAgInMAYBDAYCAQEXigkQiyudaIFtOiaKbQEBAQEBAQEBAQEBAQEBAQEBAQEBARgFgzSCB4FVgWkpC4FpgQ2EZQESAQmDK4JjBYo0hz2BE48zlQaCFYYKg2CHRY46h3SBOR84QkFxNCEIHRVJgmSEbDQ2iVuCNQEBAQ
X-IronPort-AV: E=Sophos; i="5.44,399,1505779200"; d="scan'208,217"; a="31348139"
Received: from alln-core-7.cisco.com ([173.36.13.140]) by alln-iport-5.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 15 Nov 2017 17:29:27 +0000
Received: from [10.24.103.1] ([10.24.103.1]) by alln-core-7.cisco.com (8.14.5/8.14.5) with ESMTP id vAFHTQUU031879; Wed, 15 Nov 2017 17:29:26 GMT
To: Vladimir Vassilev <vladimir@transpacket.com>, "netmod@ietf.org" <netmod@ietf.org>
References: <e35fe233-af5b-58f2-35e4-901eb7eea454@cisco.com> <75e91419-9436-d1b7-29f6-02e3ff4ff86d@transpacket.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <668cc9e1-c006-ce25-1473-549bc0b71a7d@cisco.com>
Date: Thu, 16 Nov 2017 01:29:25 +0800
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0
MIME-Version: 1.0
In-Reply-To: <75e91419-9436-d1b7-29f6-02e3ff4ff86d@transpacket.com>
Content-Type: multipart/alternative; boundary="------------ACEDF0DCD72BF670F763C3CB"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/0aL3j5Y_63libZrnVOirCyVJy1E>
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, 15 Nov 2017 17:29:32 -0000

I don't think that this is really a good idea.  You would end up 
returning server metadata in addition to the configuration.

I still think that the YANG library proposal is the best solution.

Thanks,
Rob


On 16/11/2017 01:21, Vladimir Vassilev wrote:
> Hello,
>
> I have a proposal based on <get-data> that provides an elegant 
> solution to consider as a 3rd option.  It is based on keeping exactly 
> the same model as in RFC 7895 and using <get-data> RPC to retrieve 
> datastore specific yang-library instance data in a similar way one 
> would use <get-data> to retrieve the datastore contents. In addition a 
> top level config=false container e.g. /datastores with list of 
> supported datastores that does not need to be part of the yang-library 
> module:
>
> module: ietf-datastores
> +--ro datastores
> |  +--ro datastore* [name]
> |     +--ro name          identityref
>
> Vladimir
>
> On 11/09/2017 05:51 PM, Robert Wilton wrote:
>>
>> Hi,
>>
>> Given some of the feedback related to the complexity of the YANG 
>> library bis structure, we have come up with two other possible 
>> structures for the YANG library data:
>>
>> (1) A simplified structure to make YANG library meet the NMDA 
>> requirements, but that is closer to the existing YANG library 
>> structure, and arguably simpler.
>> (2) An enhanced version of the structure (1) above, that is also 
>> extended to allow the structure to be reused for schema-mount via an 
>> augmentation.
>>
>> For reference, at the end of this email, I have also included the 
>> tree diagram of the existing YANG library, and the current YANG 
>> library bis draft (draft-ietf-netconf-rfc7895bis-02) version.
>>
>> Considering the two new YANG library structures:
>>
>> ------------------------
>>
>> *(1) A simplified structure to make YANG library meet the NMDA 
>> requirements, but that is closer to the existing YANG library structure.*
>>
>> The main changes are:
>> (i) Split "implemented modules" and "import-only-modules" into two 
>> separate lists, making the most important list (i.e. implemented 
>> modules) keyed by module name only and hence easier to reference.
>> (ii) Assume modules are implemented in all datastores by default 
>> (with a "not-implemented-in" leaflist of datastores that a module is 
>> not implemented in).
>> (iii) Assume that features are implemented in all datastores by 
>> default (with a "not-implemented-in" leaflist of datastores that a 
>> feature is not implemented in).
>> (iv) Deleted module-sets.
>> (v) Datastores are now just a list of supported datastores (that 
>> could potentially be extended with further per datastore properties 
>> in future).
>>
>> Manually generated tree output for proposed YANG library:
>>
>> module: ietf-yang-library
>>  +--ro yang-library
>>     +--ro modules
>>     |  +--ro module* [name]
>>     |  |  +--ro name           yang:yang-identifier
>>     |  |  +--ro revision?      revision-identifier
>>     |  |  +--ro schema?        inet:uri
>>     |  |  +--ro namespace      inet:uri
>>     |  |  +--ro submodule* [name]
>>     |  |  |  +--ro name        yang:yang-identifier
>>     |  |  |  +--ro revision?   yang:yang-identifier
>>     |  |  |  +--ro schema?     inet:uri
>>     |  |  +--ro not-implemented-in*
>>     |  |  |              -> /yang-library/datastore/name
>>     |  |  +--ro feature* [name]
>>     |  |  |  +--ro name        yang:yang-identifier
>>     |  |  |  +--ro not-implemented-in*
>>     |  |  |              -> /yang-library/datastore/name
>>     |  |  +--ro deviation*
>>     |  |                 -> ../name
>>     |  |
>>     |  +--ro import-only-module* [name revision]
>>     |     +--ro name yang:yang-identifier
>>     |     +--ro revision            union
>>     |     +--ro schema?             inet:uri
>>     |     +--ro namespace           inet:uri
>>     |     +--ro submodule* [name]
>>     |        +--ro name        yang:yang-identifier
>>     |        +--ro revision yang:revision-identifier
>>     |        +--ro schema?     inet:uri
>>     +--ro datastore* [name] // Allows future per datastore properties.
>>     |  +--ro name          identityref
>>     +--ro checksum       string
>>
>> ------------------------------
>>
>> *(2) An enhanced version of the structure (1) above, that is extended 
>> to allow the structure to be reused for schema-mount via an 
>> augmentation.*
>>
>> This is similar to the structure above, except that the "the set of 
>> modules" is contained in a list of named schema (e.g. similar to the 
>> schema mount draft), allowing this structure to be re-used for schema 
>> mount.
>>
>> Schema mount would be expected to augment yang-library to add in the 
>> additional schema mount information.  In the tree diagram, I have 
>> shown the schema-mount mount-point augmentation, but not including 
>> namespaces yet.
>>
>> Every server would be required to provide at least one schema in the 
>> schema list, and the primary schema for the device would always be 
>> given the name "primary".
>>
>> module: ietf-yang-library
>>  +--ro yang-library
>>     +--ro schema* [name]
>>     |  +--ro name           string
>>     |  +--ro checksum       string
>>     |  +--ro module* [name]
>>     |  |  +--ro name           yang:yang-identifier
>>     |  |  +--ro revision? yang:revision-identifier
>>     |  |  +--ro schema?        inet:uri
>>     |  |  +--ro namespace      inet:uri
>>     |  |  +--ro submodule* [name]
>>     |  |  |  +--ro name        yang:yang-identifier
>>     |  |  |  +--ro revision?   yang:yang-identifier
>>     |  |  |  +--ro schema?     inet:uri
>>     |  |  +--ro not-implemented-in*
>>     |  |  |              -> /yang-library/datastore/name
>>     |  |  +--ro feature* [name]
>>     |  |  |  +--ro name        yang:yang-identifier
>>     |  |  |  +--ro not-implemented-in*
>>     |  |  |              -> /yang-library/datastore/name
>>     |  |  +--ro deviation*
>>     |  |  |              -> ../name
>>     |  |  +- schema-mount:mount-point* [label]
>>     |  |     +--ro label         yang:yang-identifier
>>     |  |     +--ro config?       boolean
>>     |  |     +--ro (schema-ref)
>>     |  |        +--:(inline)
>>     |  |        |  +--ro inline?       empty
>>     |  |        +--:(use-schema)
>>     |  |           +--ro use-schema* [name]
>>     |  |              +--ro name
>>     |  |              |       -> /yang-library/schema/name
>>     |  |              +--ro parent-reference* yang:xpath1.0
>>     |  |
>>     |  +--ro import-only-module* [name revision]
>>     |     +--ro name yang:yang-identifier
>>     |     +--ro revision            union
>>     |     +--ro schema?             inet:uri
>>     |     +--ro namespace           inet:uri
>>     |     +--ro submodule* [name]
>>     |        +--ro name        yang:yang-identifier
>>     |        +--ro revision yang:revision-identifier
>>     |        +--ro schema?     inet:uri
>>     +--ro datastore* [name] // Allows future per datastore properties.
>>     |  +--ro name          identityref
>>     +--ro checksum       string
>>
>> Please can you provide comments on these structures, in particular:
>>
>> Is this version better (i.e. simpler) that the version currently in 
>> draft-ietf-netconf-rfc7895bis-02 (below)?
>>
>> Should we try and make the structure extensible for schema-mount via 
>> augmentation (i.e. version (2)), or is it better that schema-mount 
>> has its own separate subtree?
>>
>> For reference only I have included the existing YANG library and YANG 
>> library bis draft tree diagrams.
>>
>> Thanks,
>> Rob
>>
>>
>> -----------------------------
>>
>> *** FOR REFERENCE ONLY ***
>>
>> (3)  The current YANG library structure in YANG library bis 
>> (draft-ietf-netconf-rfc7895bis-02)
>>
>>     module: ietf-yang-library
>>         +--ro yang-library
>>            +--ro modules
>>            |  +--ro module* [id]
>>            |     +--ro id                  string
>>            |     +--ro name                yang:yang-identifier
>>            |     +--ro revision?           revision-identifier
>>            |     +--ro schema?             inet:uri
>>            |     +--ro namespace           inet:uri
>>            |     +--ro feature*            yang:yang-identifier
>>            |     +--ro deviation* [module]
>>            |     |  +--ro module    -> ../../id
>>            |     +--ro conformance-type    enumeration
>>            |     +--ro submodule* [name]
>>            |        +--ro name        yang:yang-identifier
>>            |        +--ro revision?   revision-identifier
>>            |        +--ro schema?     inet:uri
>>            +--ro module-sets
>>            |  +--ro module-set* [id]
>>            |     +--ro id        string
>>            |     +--ro module*   -> ../../../modules/module/id
>>            +--ro datastores
>>            |  +--ro datastore* [name]
>>            |     +--ro name          identityref
>>            |     +--ro module-set
>>            |             -> ../../../module-sets/module-set/id
>>            +--ro checksum       string
>>
>> -----------------------------
>>
>> *** FOR REFERENCE ONLY ***
>>
>> (4)  The current YANG library structure (RFC 7895)
>>
>>        +--ro modules-state
>>           +--ro module-set-id    string
>>           +--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
>>
>>
>>
>> _______________________________________________
>> Netconf mailing list
>> Netconf@ietf.org
>> https://www.ietf.org/mailman/listinfo/netconf
>