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

Robert Wilton <rwilton@cisco.com> Wed, 15 November 2017 10:43 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 A1C3D129426 for <netmod@ietfa.amsl.com>; Wed, 15 Nov 2017 02:43:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.52
X-Spam-Level:
X-Spam-Status: No, score=-14.52 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, 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 H_oPYSzQuwWe for <netmod@ietfa.amsl.com>; Wed, 15 Nov 2017 02:43:00 -0800 (PST)
Received: from alln-iport-3.cisco.com (alln-iport-3.cisco.com [173.37.142.90]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 263D312706D for <netmod@ietf.org>; Wed, 15 Nov 2017 02:43:00 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=24193; q=dns/txt; s=iport; t=1510742580; x=1511952180; h=subject:to:references:from:message-id:date:mime-version: in-reply-to:content-transfer-encoding; bh=eV1w6eCGHBzSP2ri6xVYxlJgIgS7g/oIJddha6XoYcg=; b=mI+7WcMEuggUQlK176qjcP6Ps1agG9rO9qac5u3GoKO3HI6Irb993g4F HlQpn8X+oMrkgxAOF3M6LRQofYpU0bkwBQ4Az9srqIxgNJqyLkbFG55Tu LeOMXsS6iepcYmnZC70Ys4lwfVXRt9DzmQEF9AOAZ/NVj7Jlh62tahAGo g=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CrAADWGAxa/4UNJK1dGQEBAQEBAQEBAQEBAQcBAQEBAYM2ZG4ng3+KH48hgVcmlloQgX4DChgLhElPAoUHPxgBAQEBAQEBAQFrKIUfAQEBAwEBGAkECwEFNhsJAhIGAgIjAwICJx8DDgYBDAYCAQGKIBCJdZ1ogW06ixcBAQEBAQEBAQEBAQEBAQEBAQEBGgWBD4IlggeBVYFpKQuCdoRlARIBCYMrgmMFijSHPZBGlQaCFYYKg2AkhyGOOYd0gTkfOIEDcTQhCB0VSYJkhGBANoYsgjUBAQE
X-IronPort-AV: E=Sophos;i="5.44,398,1505779200"; d="scan'208";a="31830792"
Received: from alln-core-11.cisco.com ([173.36.13.133]) by alln-iport-3.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 15 Nov 2017 10:42:59 +0000
Received: from [10.24.103.1] ([10.24.103.1]) by alln-core-11.cisco.com (8.14.5/8.14.5) with ESMTP id vAFAgvAJ027718; Wed, 15 Nov 2017 10:42:58 GMT
To: Vladimir Vassilev <vladimir@transpacket.com>, "netmod@ietf.org" <netmod@ietf.org>
References: <e35fe233-af5b-58f2-35e4-901eb7eea454@cisco.com> <CABCOCHSkZGv6Bak-hw4AoGtpZSEAgRa+8v957o9zMijYqC4NNw@mail.gmail.com> <9096e95e-8621-f578-2c84-e502109e0a64@cisco.com> <CABCOCHQseRLRF-msy50FK=wYYwyw+A_HdLREc72bf9V2MvxPTQ@mail.gmail.com> <ceb678ce-63f0-69a4-7565-273d695c1516@transpacket.com> <8584c894-473a-f268-29f0-20de225fa7c4@cisco.com> <bf69be8a-cab3-98ce-8b6d-860751921030@transpacket.com> <f497e7fc-cf47-cbee-265d-b26180cce20a@cisco.com> <cdc778b5-76f3-f0b2-71e3-1df5da49a2e3@transpacket.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <47e8298b-20bb-fdbb-4181-9609a489a312@cisco.com>
Date: Wed, 15 Nov 2017 11:42:56 +0100
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: <cdc778b5-76f3-f0b2-71e3-1df5da49a2e3@transpacket.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/VS6e8qHd6vao8PN7TSUXzJzNEaM>
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 10:43:04 -0000


On 15/11/2017 10:41, Vladimir Vassilev wrote:
>
>
> On 11/15/2017 01:06 AM, Robert Wilton wrote:
>>
>>
>> On 14/11/2017 23:41, Vladimir Vassilev wrote:
>>>
>>>
>>> On 11/13/2017 04:27 PM, Robert Wilton wrote:
>>>>
>>>> Hi Vladimir,
>>>>
>>>>
>>>> On 12/11/2017 10:39, Vladimir Vassilev wrote:
>>>>>
>>>>>
>>>>>
>>>>> On 11/11/2017 08:07 PM, Andy Bierman wrote:
>>>>>>
>>>>>>
>>>>>> On Fri, Nov 10, 2017 at 3:06 AM, Robert Wilton <rwilton@cisco.com 
>>>>>> <mailto:rwilton@cisco.com>> wrote:
>>>>>>
>>>>>>     Hi Andy,
>>>>>>
>>>>>>     The NMDA datastore draft
>>>>>>     (draft-ietf-netmod-revised-datastores-06) mandates two
>>>>>>     constraints that must apply:
>>>>>>
>>>>>>     (1) All conventional datastores must have exactly the same
>>>>>>     schema.  Hence differences in deviations or features are allowed
>>>>>>     between these datastores. (sec 5.1, first paragraph)
>>>>>>
>>>>>>     (2) The schema for operational must be a superset of all
>>>>>>     configuration datatstores, but that data nodes may be omitted
>>>>>>     (sec 5.3, third paragraph).
>>>>>>
>>>>>>
>>>>>>     This implies that only the following differences between
>>>>>>     datastores are allowed:
>>>>>>      (i) a feature can be disabled in conventional (and/or dynamic
>>>>>>     configuration datastores), but enabled in operational (e.g. for
>>>>>>     configurable router-id).
>>>>>>
>>>>>>      (ii) deviations apply in all datastores, except that
>>>>>>       a) a deviation can remove nodes in the conventional datastores
>>>>>>     (if they were not configurable, like the feature example)
>>>>>>       b) a deviation can remove nodes in a dynamic datastore (e.g.
>>>>>>     like I2RS)
>>>>>>       c) a deviation can remove nodes from operational only if a
>>>>>>     server is unable to accurately report them.
>>>>>>
>>>>>>     (iii) modules exist in all datastores, except:
>>>>>>       a) a module can be omitted from conventional datastores (e.g.
>>>>>>     if the module is not configurable)
>>>>>>       b) a module can be omitted from a dynamic datastore (e.g. like
>>>>>>     I2RS)
>>>>>>       c) a module can be omitted from operational only if a server
>>>>>>     is unable to accurately report the data nodes within the module.
>>>>>>
>>>>>>
>>>>>>
>>>>>> I am not convinced that moving to a datastore-centric conformance 
>>>>>> model instead of server-centric
>>>>>> is a good idea.
>>>>> +1
>>>>> IMO yang-library:1.1 can and should be optional. As a first step 
>>>>> NMDA modules and the minimal protocol support <get-data> etc. can 
>>>>> be implemented without yang-library 1.0 to 1.1 transition (read 
>>>>> server-centric to datastore-centric conformance model transition). 
>>>>> draft-ietf-netconf-nmda-netconf-01.txt requires migration to 
>>>>> yang-library:1.1. I do not see good argument to support this 
>>>>> limitation and there are usecases that can benefit from NMDA with 
>>>>> uniform datastore model design.
>>>>
>>>> YANG library bis is the mechanism to indicate which datastores are 
>>>> available to the client.  E.g. a NMDA compatible client would 
>>>> attempt to read YANG library bis on the new path using the 
>>>> <get-data> RPC to determine whether NMDA is supported, and what 
>>>> datastores are supported.
>>>>
>>>> The existing module-state path in YANG library is preserved, but 
>>>> marked as deprecated, so the intention is that it can be made 
>>>> backwards compatible to clients.
>>> I agree draft-ietf-netconf-nmda-netconf-01 sec. 2.4. 'YANG Library 
>>> Capability'  states exactly that. IMO this text can be changed and 
>>> allow the case described above (<get-data> implementation with NMDA 
>>> modules implemented as indicated by yang-library:1.0 uniform model 
>>> applying to all datastores. For cases where the datastores do not 
>>> have common model yang-library:1.1 should still be mandatory). In 
>>> other words if yang-library:1.0 shows implemented 
>>> ietf-netconf-datastores <get-data> and NMDA modules listed as 
>>> implemented will not need yang-library:1.1 implementation which 
>>> takes one obstacle out of the way to rolling NMDA module 
>>> implementations.
>>>
>>> Is there an argument making the proposed change unreasonable?
>> Yes, I think so.
>>
>> In an NMDA implementation, the YANG library information reported in 
>> the new structure can be entirely accurate.  I.e. it can report which 
>> modules are available in which datastores.
>>
>> Of course, it is not possible to represent this in the old YANG 
>> library, so the information that a NMDA server provides via the old 
>> YANG library could be inaccurate.  I.e. I think that it has to report 
>> all modules and deviations as being reported in all datastores.
>>
>> Hence the only way that a client would be able to know that it is 
>> talking to an NMDA server with modules not implemented in some 
>> datastores, or with deviations in some datastores would be for it to 
>> query the new YANG library path.  The new YANG library structures 
>> that we are proposing below are intended to be easier for a client to 
>> determine this, e.g. by checking whether any of the 
>> "not-implemented-in" leaf-lists are populated.
>>
>> So the aim for keeping the old YANG library path is to inter-operate 
>> with old clients that don't know about NMDA, and hence would not be 
>> expected to use the <edit-data> or <get-data> RPCs.
>>
>> Thanks,
>> Rob
> I still do not see an argument against supporting  NMDA modules with 
> yang-library:1.0 in the case when and only when there are no 
> deviations and the implemented module sets are exactly identical for 
> all datastores.
OK, so when a client reads the YANG modules on the old YANG library 
path, then how do they distinguish between:
(i) the information is accurate and correct
(ii) the information isn't precise because there are per datastore 
differences.

Thanks,
Rob


>>
>>
>>>
>>> Vladimir
>>>
>>>>
>>>> Thanks,
>>>> Rob
>>>>
>>>>>>  I get it that it is supposed to allow the server to accurately 
>>>>>> reflect its implementation,
>>>>>> but it actually says that servers MAY implement whatever partial 
>>>>>> subset of a module they want,
>>>>>> and a client MUST deal with the mess.
>>>>>>
>>>>>> IMO, YANG says that features and deviations are server-wide, not 
>>>>>> per-datastore.
>>>>>> This new complexity is non-trivial to implement, so it may not be 
>>>>>> widely supported.
>>>>>>
>>>>>> The WG seems confused about the difference between a conformance 
>>>>>> model and capabilities reporting.
>>>>>> (ii)(c) and (iii)(c) is about reporting, not conformance. There 
>>>>>> is still no way to express
>>>>>> trivial use-cases in the conformance model such as "this module 
>>>>>> is intended for the I2RS ephemeral datastore only"
>>>>>>
>>>>>>
>>>>>>     Changing the type of a node between datastores, or changing its
>>>>>>     properties is not allowed.  The only difference allowed between
>>>>>>     data nodes in different datastores is the nodes existence.
>>>>>>
>>>>>>     These rules seem more restrictive that what a server using split
>>>>>>     config state trees (IETF style, or OpenConfig style) can achieve
>>>>>>     using deviations today.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Lots of rules to enforce actually makes the code harder, not easier.
>>>>>>
>>>>>>     Thanks,
>>>>>>     Rob
>>>>>>
>>>>>>
>>>>>>
>>>>>> Andy
>>>>>>
>>>>>>
>>>>>>
>>>>>>     On 09/11/2017 19:33, Andy Bierman wrote:
>>>>>>>     Hi,
>>>>>>>
>>>>>>>     The new structure still has the same problems for the client as
>>>>>>>     before.
>>>>>>>     It is a major change in the architecture to have different
>>>>>>>     schema trees per datastore instead of per-server.
>>>>>>>     The server is allowed to have different features and deviations
>>>>>>>     for the same objects.
>>>>>>>     The client is completely on its own trying to compare
>>>>>>>     <operational> to anything
>>>>>>>     if the schema trees are different
>>>>>>>
>>>>>>>       container foo {
>>>>>>>         leaf bar {
>>>>>>>            if-feature X;
>>>>>>>            type string;
>>>>>>>         }
>>>>>>>         leaf baz {
>>>>>>>            if-feature "not X";
>>>>>>>            type string;
>>>>>>>         }
>>>>>>>      }
>>>>>>>
>>>>>>>     How does the client compare <running> to <operational> if the
>>>>>>>     features do not match?
>>>>>>>     If the server deviates the leaf (e.g. change type string to
>>>>>>>     int32) how does the client
>>>>>>>     compare the values?
>>>>>>>
>>>>>>>     This new complexity would be mandatory for the client to
>>>>>>>     support in some proprietary
>>>>>>>     manner since the NMDA standard ignores these problems.
>>>>>>>
>>>>>>>     NMDA was supposed to be simpler because the client could
>>>>>>>     compare intended
>>>>>>>     and applied values using the same object path. openconfig
>>>>>>>     required a data
>>>>>>>     model change and a trivial name-mapping. In reality, NMDA
>>>>>>>     is far more disruptive to existing implementations.
>>>>>>>
>>>>>>>
>>>>>>>     Andy
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>     On Thu, Nov 9, 2017 at 8:51 AM, Robert Wilton
>>>>>>>     <rwilton@cisco.com <mailto:rwilton@cisco.com>> 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
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Netconf mailing list
>>>>> Netconf@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/netconf
>>>>
>>>
>>> .
>>>
>>
>
> .
>