Re: [netmod] Y34 - root node

Ladislav Lhotka <lhotka@nic.cz> Thu, 20 August 2015 09:10 UTC

Return-Path: <lhotka@nic.cz>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 262541A1EFF for <netmod@ietfa.amsl.com>; Thu, 20 Aug 2015 02:10:18 -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
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 x2ba22fw2zqE for <netmod@ietfa.amsl.com>; Thu, 20 Aug 2015 02:10:13 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 8611B1A1A2C for <netmod@ietf.org>; Thu, 20 Aug 2015 02:10:13 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id D67781CC0058; Thu, 20 Aug 2015 11:10:12 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Andy Bierman <andy@yumaworks.com>, Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHRgAHah6_f1qZkPs0_v8Cj6NA5TKokb_RtUv+XWNOocFA@mail.gmail.com>
References: <55D36473.90609@cisco.com> <CABCOCHRP3omx37XmEJfPwg6eELuSKF=YL8pgpnvLh9PQxgV62A@mail.gmail.com> <55D45CAF.2070605@cisco.com> <20150819.132555.871710491924929960.mbj@tail-f.com> <CABCOCHRgAHah6_f1qZkPs0_v8Cj6NA5TKokb_RtUv+XWNOocFA@mail.gmail.com>
User-Agent: Notmuch/0.20.2 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Thu, 20 Aug 2015 11:10:13 +0200
Message-ID: <m2twru5nre.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/jBZF8_hedJOC7nf5fRWiJo7yUik>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y34 - root node
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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: Thu, 20 Aug 2015 09:10:18 -0000

Andy Bierman <andy@yumaworks.com> writes:

> On Wed, Aug 19, 2015 at 4:25 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
>
>> Robert Wilton <rwilton@cisco.com> wrote:
>> >
>> >
>> > On 18/08/2015 18:22, Andy Bierman wrote:
>> > > This is how languages like SMIv2 and YANG work.
>> > > A conceptual object is given a permanent "home" within the tree of
>> > > object identifiers.
>> > > Moving data is very expensive, since any clients working with the old
>> > > data
>> > > will break as soon as the data is moved.
>> > >
>> > >  I am not convinced the IETF can or should come up with a set of
>> > >  containers
>> > > that covers every possible topic that can be modeled in YANG.
>> >
>> > I mostly agree, but having some more structure/advice as to where to
>> > place YANG modules may be helpful.  I'm thinking more along the lines
>> > of broad categories rather than precise locations.
>>
>> +1
>>
>> > >     If someone wants to builds a YANG controller node that is managing
>> > >     the configuration for a network of devices then wouldn't they want
>> > >     a particular device's interface configuration to be located
>> > >     somewhere like /network/device/<device-name>/interfaces/interface?
>> > >     Ideally, they would be able to use the same YANG definitions that
>> > >     are defined for /interfaces/ but root them relative to
>> > >     /network/device/<device-name>/.
>> > >
>> > >
>> > >
>> > > Yes -- some of us (like Martin) have pointed this out many times.
>> > > The "device" container on an NE does not help at all wrt/
>> > > aggregation on a controller. "/device" or "/" work the same for this
>> > > purpose.
>>
>> Actually, I would argue that / works better.  On the controller, you
>> probably have a list of devices you control (this is how our NCS
>> works, and how ODL works (I have been told)):
>>
>>   container devices {
>>     list device {
>>       key name;
>>       // meta-info about the device goes here, things like
>>       // ip-address, port, auth info...
>>       container data {
>>         // all models supported by the devices are "mounted" here
>>       }
>>     }
>>   }
>>
>> So on the controller, the path to interface "eth0" on device "foo"
>> would be:
>>
>>   /devices/device[name='foo']/data/interfaces/interface[name='eth0']
>>
>> if we also have a top-level "/device" container we'd have:
>>
>>   /devices/device[name='foo']/data/device/interfaces/interface[name='eth0']
>>
>> > What would the real resource location for
>> > "/network/device/<device-name>/interfaces/interface" be?
>>
>> I don't think there is such a thing as a "real" location.  The path is
>> scoped in the system you work with; in the controller it might be as I
>> illustrated above, in the device it starts with /interfaces, but in a
>> controller-of-controllers it might be:
>>
>>   /domains/domain[name='bar']/devices/device[name='foo']/data
>>     /interfaces/interface[name='eth0']
>>
>> Currently we have a proprietary way of "relocating" YANG modules, and
>> ODL has its "mount", and I think Andy has some other mechanism.  Maybe
>> the time has come to standardize how mount works, and maybe then also
>> standardize the list of devices in a controller model.
>>
>>
>
> +1
>
> We just need to standardize a "docroot within a docroot".  This is not
> relocation of subtrees within the datastore, this is just mounting a
> datastore somewhere within a parent datastore.

The current definition of datastore is too general, so I don't know what
datastore inside datastore means. What's clear is that a single module
cannot just be mounted anywhere. For example, if ietf-interfaces is
mounted under /device and ietf-ip straight under /, then I don't see how
references and XPath expressions could be reliably modified to work as
expected.

That's why I think only self-contained packages can be mounted, and
inside them all references can be prepended with the mount root.

Lada

>
> In YANG validation terms, you simply adjust the docroot to the nested mount
> point,
> and the replicated datastore can be used as if it were stand-alone.
> This would allow any sort of encapsulation of datastores and not add any
> data model complexity to devices which do not have virtual servers
> (most of them).
>
>
>>
>> /martin
>>
>
>
> Andy
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

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