Re: [NGO] external module properties

Martin Bjorklund <mbj@tail-f.com> Sat, 03 May 2008 20:40 UTC

Return-Path: <ngo-bounces@ietf.org>
X-Original-To: ngo-archive@optimus.ietf.org
Delivered-To: ietfarch-ngo-archive@core3.amsl.com
Received: from core3.amsl.com (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DDCB13A6B5B; Sat, 3 May 2008 13:40:48 -0700 (PDT)
X-Original-To: ngo@core3.amsl.com
Delivered-To: ngo@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 42B973A6B5B for <ngo@core3.amsl.com>; Sat, 3 May 2008 13:40:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.448
X-Spam-Level:
X-Spam-Status: No, score=-0.448 tagged_above=-999 required=5 tests=[AWL=0.047, BAYES_00=-2.599, FH_RELAY_NODNS=1.451, HELO_MISMATCH_COM=0.553, RDNS_NONE=0.1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id a8+zfFUpWcD0 for <ngo@core3.amsl.com>; Sat, 3 May 2008 13:40:46 -0700 (PDT)
Received: from mail.tail-f.com (unknown [213.180.94.162]) by core3.amsl.com (Postfix) with ESMTP id 1DA8E3A6B31 for <ngo@ietf.org>; Sat, 3 May 2008 13:40:46 -0700 (PDT)
Received: from localhost (c213-100-166-13.swipnet.se [213.100.166.13]) by mail.tail-f.com (Postfix) with ESMTP id 601501B80CA; Sat, 3 May 2008 22:40:41 +0200 (CEST)
Date: Sat, 03 May 2008 22:40:32 +0200
Message-Id: <20080503.224032.27961815.mbj@tail-f.com>
To: randy_presuhn@mindspring.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <002101c8abd1$493e66c0$6801a8c0@oemcomputer>
References: <200805012045.m41KjmAp009395@idle.juniper.net> <20080501.232635.78733212.mbj@tail-f.com> <002101c8abd1$493e66c0$6801a8c0@oemcomputer>
X-Mailer: Mew version 5.2.52 on Emacs 22.1 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Cc: ngo@ietf.org
Subject: Re: [NGO] external module properties
X-BeenThere: ngo@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: NETCONF Goes On - discussions on future work and extensions to NETCONF <ngo.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/ngo>, <mailto:ngo-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/pipermail/ngo>
List-Post: <mailto:ngo@ietf.org>
List-Help: <mailto:ngo-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ngo>, <mailto:ngo-request@ietf.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: ngo-bounces@ietf.org
Errors-To: ngo-bounces@ietf.org

Hi,

"Randy Presuhn" <randy_presuhn@mindspring.com> wrote:
> Hi -
> 
> > From: "Martin Bjorklund" <mbj@tail-f.com>
> > To: <phil@juniper.net>
> > Cc: <randy_presuhn@mindspring.com>; <ngo@ietf.org>
> > Sent: Thursday, May 01, 2008 3:26 PM
> > Subject: Re: [NGO] external module properties 
> ...
> > A YANG module defines types, groupings, data, rpc, and notifications.
> > All of these can be referenced by an importing modules (types and
> > groupings are obvious; data can be referenced through keyrefs,
> > augments, and must expressions; and rpc/notifs can be augmented).  I
> > agree that supporting multiple versions of a module in order to handle
> > types and grouping should be fairly straight-forward.  But when it
> > comes to data/rpc/notifs the device must choose one version to
> > implement.  It would have to be a version no earlier than the latest
> > version referenced by any other module implemented on the device.
> ...
> 
> This is an excellent example of the consequences of choosing (perhaps
> unconsiously) a particular meta-model.  Consider, for example, what
> happens if RPCs and notifications are associated not with "the device",
> but with a particular object class.  (One possible object class is a stand-in
> for "the device" which would be appropriate for those few things like
> "reboot" which really do apply to the entire device.)
> If the module defining a particular class imports a pre-defined notification
> or RPC, versioning would work just like for anything else.  Consequently,
> a "device" would no longer be limited to implementing just one version
> of an RPC.
> 
> Ancient use case: consider a "Rewind" RPC.  System has several tape
> drives from various vendors, possibly from different technology
> generations.  Someone updates "Rewind" to include a "energy
> conservation" option.  When a new drive supporting that option in
> its Rewind RPC is installed, it should not require changing the
> software for all the other drives.

This is an interesting problem, but I think it is separate from the
issue about importing w/ or w/o versions?  You will have the rewind
problem in a single module with a single rpc, when the module gets
updated with the new parameter.

I don't know if you're suggesting that the client should send version
information in the request (rpc rewind-1.0 vs. rpc rewind-1.1)?  I
don't think this solves the problem anyway.  IMO, the server will
implement the rpc with the new parameter, and then it will
have to translate this into native function calls to the drivers, and
in that process reject requests it cannot handle.


/martin
_______________________________________________
NGO mailing list
NGO@ietf.org
https://www.ietf.org/mailman/listinfo/ngo