Re: [netmod] augment and if-feature

Martin Bjorklund <mbj@tail-f.com> Wed, 15 March 2017 10:20 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 15894129A9E for <netmod@ietfa.amsl.com>; Wed, 15 Mar 2017 03:20:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] 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 HsBG-pPQSIAe for <netmod@ietfa.amsl.com>; Wed, 15 Mar 2017 03:20:39 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id A0255129A9D for <netmod@ietf.org>; Wed, 15 Mar 2017 03:20:39 -0700 (PDT)
Received: from localhost (unknown [173.38.220.40]) by mail.tail-f.com (Postfix) with ESMTPSA id 79E131AE02A7; Wed, 15 Mar 2017 11:20:38 +0100 (CET)
Date: Wed, 15 Mar 2017 11:20:44 +0100
Message-Id: <20170315.112044.1525149482580030224.mbj@tail-f.com>
To: rwilton@cisco.com
Cc: phil@juniper.net, netmod@ietf.org, joey.boyd@adtran.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <bb5472be-3882-785f-3c53-148bae6959af@cisco.com>
References: <201703142223.v2EMNpnW074003@idle.juniper.net> <20170315.082814.1668142020606045450.mbj@tail-f.com> <bb5472be-3882-785f-3c53-148bae6959af@cisco.com>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/lUFjfEHEWJJPsziE6umzeKRFeOg>
Subject: Re: [netmod] augment and if-feature
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 Mar 2017 10:20:41 -0000

Robert Wilton <rwilton@cisco.com> wrote:
> Hi,
> 
> On 15/03/2017 07:28, Martin Bjorklund wrote:
> > Phil Shafer <phil@juniper.net> wrote:
> >> Martin Bjorklund writes:
> >>> Phil Shafer <phil@juniper.net> wrote:
> >>>> Martin Bjorklund writes:
> >>>>>> What are your thoughts on this? Surely, an augment should not have to
> >>>>>> contain if-feature statements of all parents of the augmented node.
> >>>>> The spec says:
> >>>>>
> >>>>>    When a server implements a module containing an "augment" statement,
> >>>>>    that implies that the server's implementation of the augmented module
> >>>>>    contains the additional nodes.
> >>>>>
> >>>>> Compare with a simple augment of a node w/o an if-feature.  In this
> >>>>> case, if the server implements the augmenting module, it MUST also
> >>>>> implement the augmented module.
> >>>> It implements the module, but it doesn't implement the nodes
> >>>> since it doesn't express the feature.  IMHO this is a tool
> >>>> bug and/or an errata,since otherwise one has to carry features
> >>>> forward, repeating the if-feature using the original modules
> >>>> prefix:feature-name on every augment of feature-based nodes.
> >>> Well, I agree that it would have been better to state that if a server
> >>> doesn't implement the augment target, then it doesn't implement the
> >>> augment either.  But the text is pretty clear; this is not how it
> >>> works.  This is not appropriate to "fix" in an errata.
> >> I'm missing the part of the text that's clear.  The above quoted
> >> section certainly doesn't say this.  That text is saying "if you
> >> implement a module that augments a set of nodes, then the server's
> >> schema for that original set of nodes now includes the new set of
> >> nodes".  It's referring to schema nodes.
> > It explicitly says that server's *implementation* of the augmented
> > module contains the additional nodes.
> Section "5.6.5.  Implementing a Module", doesn't mention features at
> all.
> Section "5.6.2.  Optional Features" doesn't mention implementation at
> all.  It only writes about portions of a model that are conditional,
> supported, or valid.
> Section "7.20.1.  The "feature" Statement" also doesn't mention
> implementation, it only writes about portions of the model being
> conditional.
> 
> So, I find the text that you are quoting as ambiguous in respect to
> its applicability to features.
> 
> 
> 
> >
> > If you don't advertise a certain module, I don't think you can claim
> > that your implementation contains that module.
> I agree with this.
> 
> >
> > And similarly, if you don't advertise a feature, I don't think you can
> > claim that your implementation implements nodes that are conditional
> > on that feature.
> I'm not convinced that the RFC text supports this view.  The nodes
> could be implemented but conditionally not supported.

The same can be said about a whole module; it could be implemented but
temporarily disabled.

> >> And if those schema nodes are conditional based on if-feature, then
> >> those nodes are still in the schema, but are not supported by a
> >> server unless the if-feature condition evaluates to true.
> >>
> >> I don't see a conflict,
> >> it's just a case that we didn't think about
> >> or write about.
> > This I agree with.
> >
> >> It's a case that's not clearly handled in the spec,
> >> for which reasonable implementations can disagree.  That's a bug
> >> in the spec and it that can be clarified via errata.
> I also think that this needs to be clarified one way or the other.
> 
> I would also prefer it to be allowed to augment a node that is
> conditional on an if-feature without having to restate the if-feature
> condition, in exactly the same way that it is allowed to augment a
> node with a when statement without having to restate the when
> statement in the augmentation.

Just to be clear - I prefer this as well.  I also think the same thing
applies to normal augment w/o features; if you implement module A that
has an augment of B, and you don't implement B, you should
still be able to state that you implement A.

But I don't think it can be done in an errata.  


/martin