Re: [netmod] compact versus iterative representation of the overall schema

Ladislav Lhotka <lhotka@nic.cz> Tue, 24 May 2016 12:43 UTC

Return-Path: <lhotka@nic.cz>
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 2AEE712D6B8 for <netmod@ietfa.amsl.com>; Tue, 24 May 2016 05:43:48 -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] 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 6Xex0s0I-VUk for <netmod@ietfa.amsl.com>; Tue, 24 May 2016 05:43:46 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 21D5512D6D0 for <netmod@ietf.org>; Tue, 24 May 2016 05:43:44 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 9160C1CC02E4; Tue, 24 May 2016 14:43:43 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <20160524.122451.316337046466834553.mbj@tail-f.com>
References: <m2y48q96f4.fsf@nic.cz> <5742F7FB.4040803@labn.net> <22C4E267-E883-4909-A824-DB742B9F63A4@nic.cz> <20160524.122451.316337046466834553.mbj@tail-f.com>
User-Agent: Notmuch/0.22 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 24 May 2016 14:43:46 +0200
Message-ID: <m260u3mxrx.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/fU8qSbYmW6Ngm6wdp6b56MXUKpw>
Cc: netmod@ietf.org
Subject: Re: [netmod] compact versus iterative representation of the overall schema
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.17
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: Tue, 24 May 2016 12:43:48 -0000

Martin Bjorklund <mbj@tail-f.com> writes:

> Ladislav Lhotka <lhotka@nic.cz> wrote:
>> 
>> > On 23 May 2016, at 14:30, Lou Berger <lberger@labn.net> wrote:
>> > 
>> > Hi Lada,
>> >    I looks like no one really jumped on this one -- so better late than
>> > never ...
>> > 
>> > When looking at the question below, we should consider the uses cases.
>> > I'm particularity interested (as a contributor) in the use case of
>> > nested mounts (NIs mounted within LNEs), as well as the case if models
>> > that will only permit mounting of specific other models vs generically
>> > mounting any model.
>> > 
>> > On 4/6/2016 10:07 AM, Ladislav Lhotka wrote:
>> >> Hi,
>> >> 
>> >> with a schema mount mechanism in place, there are two different
>> >> options
>> >> for constructing the overall schema (their combinations are possible,
>> >> too):
>> >> 
>> >> 1. Define schema mount as an extension of YANG library so that it
>> >> defines YANG modules, revisions, features and deviations as before but
>> >> also the way how they are combined into a hierarchical structure of
>> >> schemas.
>> > 
>> > I think this only makes sense if this is scoped in some way.  For
>> > example, with LNEs, the parent/host server may not have visibility
>> > into
>> > the mounted models, (see draft-rtgyangdt-rtgwg-lne-model).  And even
>> > if
>> 
>> As I understand it, schema-mount is about accessing the LNE models
>> from the parent/host management interface. I believe the real question
>> is whether we want to allow the schema to dynamically change at run
>> time and possibly throw in new modules that the client never heard
>> of. #2 can do it while #1 can't. I am not sure though whether the LNE
>> model really requires something like this.
>> 
>> > does, you have to consider the cases of mounted models contained
>> > within
>> > mounted models.
>> 
>> This is possible either way, provided that the complete schema is
>> known upfront.
>
> I don't think I have seen a concrete proposal for such a compact

YSDL was such a proposal.

> format that can handle the case where different instances of a list
> with a mount point have different modules mounted, and some of them
> have mounted models within the mounted models.
>
> As a concrete example, suppose we have the model
> example-network-manager from Appendix B in
> draft-ietf-netmod-schema-mount-01:
>
>    +--rw managed-devices
>       +--rw device* [name]
>          +--rw name         string
>          +--rw transport
>          +--rw root      yangmnt:mount-point managed-device
>
> Now, let's assume that two devices exist, A and B:
>
>   A  implements:  ietf-interfaces, example-netowrk-manager
>   B  implements:  ietf-system
>
> In A, there is a managed-device C which implements ietf-interfaces and
> ietf-ip.
>
> What would this look like in the compact form?

The module "example-network-manager" would be modified as follows:

   +--rw managed-devices
      +--rw device* [name]
         +--rw name         string
         +--rw transport
         +--rw (root)
            +--:(A)
            +--:(B)
            +--:(C)

And then:

   {
     "ietf-ysdl:schemas": {
       "top-schema": "host",
       "schema": [
         {
           "name": "host",
           "yang-modules": [ "example-logical-devices" ],
           "subschema": [
             {
               "root":
                 "/example-network-manager:managed-devices/device/root/A",
               "schemas": [ "schema-A" ]
             }
             {
               "root":
                 "/example-network-manager:managed-devices/device/root/B",
               "schemas": [ "schema-B" ]
             }
           ]
         },
         {
           "name": "schema-A",
           "yang-modules": [
             "ietf-interfaces",
             "example-network-manager"
           ],
           "subschema": [
             {
               "root":
                 "/example-network-manager:managed-devices/device/root/C",
               "schemas": [ "schema-C" ]
             }
           ]
         },
         {
           "name": "schema-B",
           "yang-modules": [ "ietf-system" ]
         },
         {
           "name": "schema-C",
           "yang-modules": [
             "ietf-interfaces",
             "ietf-ip"
           ]
         }
       ]
     }
   }
         
As long as all modules comprising the schema and their possible
arrangement is known in advance, it should flexible enough. And as I
said, I'd prefer to address this case in schema-mount because the model
of trust between the server and client isn't changed in any way.

>
> BTW, in this case, it is not obvious that the top-level server knows
> anything about the data models mounted by C...

But then the top-level server cannot possibly serve data for C.

Lada

>
>
> /martin
>
>
>
>
>> 
>> > 
>> >> 
>> >> 2. Apart from YANG Library data, the server just specifies the mount
>> >> points. A client of an NM protocol is expected to fetch a new instance
>> >> of YANG library and/or subordinate mount points as state data from a
>> >> well-known location under each mount point.
>> > 
>> > I think this depends on the use case.  For LNEs, I think this is
>> > right.
>> > For some of the other possible use cases being discussed only a
>> > specific
>> > model can be mounted.
>> 
>> I guess I need some example scenarios demonstrating that #1 cannot be
>> used for LNE.
>

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C