Re: [netmod] kw comments on draft-voit-netmod-yang-mount-requirements

Martin Bjorklund <mbj@tail-f.com> Tue, 05 April 2016 09:38 UTC

Return-Path: <mbj@tail-f.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 97DF112D197 for <netmod@ietfa.amsl.com>; Tue, 5 Apr 2016 02:38:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.911
X-Spam-Level:
X-Spam-Status: No, score=-1.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 KDWCTRxbeANu for <netmod@ietfa.amsl.com>; Tue, 5 Apr 2016 02:38:24 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id CABF312D10B for <netmod@ietf.org>; Tue, 5 Apr 2016 02:38:23 -0700 (PDT)
Received: from localhost (h-186-70.a165.priv.bahnhof.se [109.228.186.70]) by mail.tail-f.com (Postfix) with ESMTPSA id 1AE721AE035B; Tue, 5 Apr 2016 11:38:23 +0200 (CEST)
Date: Tue, 05 Apr 2016 11:38:22 +0200
Message-Id: <20160405.113822.1614298419822308565.mbj@tail-f.com>
To: kwatsen@juniper.net
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <51F6361D-5F32-449F-80D6-26A4B3569DC1@juniper.net>
References: <51F6361D-5F32-449F-80D6-26A4B3569DC1@juniper.net>
X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/H69nbnaDHBgvL8LpFtj7WVlq_HM>
Cc: netmod@ietf.org
Subject: Re: [netmod] kw comments on draft-voit-netmod-yang-mount-requirements
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, 05 Apr 2016 09:38:26 -0000

Hi,

Kent Watsen <kwatsen@juniper.net> wrote:
> [As a contributor]
> 
> Note: this is a -00 document, but only because the draft's name
> changed.  In reality this is like a
> draft-voit-netmod-peer-mount-requirements-04.  Looking at the diffs,
> there aren't many changes, mostly cleanup and adding the "schema
> mount" concept.  That is, the new "yang mount" term is use to cover
> all of "schema mount", "alias mount", and "peer mount".
> 
> My comment is mostly high-level.  I'm wondering about the need for
> this draft to include schema mount at all.  That is, a schema mount
> solution draft is now an adopted WG item, and I'm unsure if the
> authors of that draft are looking to this one to define requirements.
> Perhaps the goal is to define the umbrella term "yang mount", but to
> be honest, I don't really see a need to have a term that spans both
> schema and data mounts.  I'm not sure how others feel about this, but
> my thoughts are that we should define terms like:
> 
> - scheme-mount
> - data-mount
> - remote data mount   (a.k.a. peer mount)
> - local data mount        (a.k.a. alias mount)
> 
> More so than:
> 
> yang-mount
> - scheme-mount
> - alias-mount
> - peer-mount

Listening to Eric's presentation yesterday, I realized that I have a
slightly different view on these terms.

I prefer to separate the *schema* (data model) from how things are
implemented.  The various proposals for specific implementations (peer
mount and alias mount etc) all need a "schema mount" to take of
defining a proper data model.   (This was the whole point of defining
structural-mount...)

For example, suppose we have:

  container logical-devices {
    list logical-device {
      key name;
      ...
      yangmnt:mount-point logical-device;
    }
  }

With the associated yang-library, a client might learn that
ietf-interfaces is mounted under the "logical-device" mount mount.

Now, the client knows that there are paths:

  /logical-devices/logical-device/if:interfaces/if:interface

but the client doesn't necessarily have to know if the the interfaces
data is implemented w/ "peer mount" or some other mechanism.


So, in my view, we have:

  schema mount
      |
      +---- peer mount
      +---- alias mount
      +---- other cool mount



As a concrete example, peer mount might be used like this (example
taken from draft-clemm-netmod-mount-03):

   import ietf-schema-mount {
     prefix yangmnt;
   }
   import ietf-peer-mount {
     prefix pmnt;
   }

   ...

   list network-element {
     key "element-id";
     leaf element-id {
       type element-ID;
     }
     container element-address {
       ... // choice definition that allows to specify
           // host name,
           // IP addresses, URIs, etc
     }
     yangmnt:mount-point "interfaces" {
       pmnt:target "./element-address";
       pmnt:subtree "/if:interfaces";
     }
     ...
   }


A client that knows about the generic, abstract schema mount can work
with this, without knowing anything of the specific implementation of
peer mount.

[Actually, since peer mount is just one implementation technique, I'd
prefer to decouple the definition of this implementation detail from
the data model, but that's a different topic.]


/martin