Re: [netmod] augment and if-feature

Robert Wilton <rwilton@cisco.com> Wed, 15 March 2017 10:51 UTC

Return-Path: <rwilton@cisco.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 2B5DF129B0E for <netmod@ietfa.amsl.com>; Wed, 15 Mar 2017 03:51:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.522
X-Spam-Level:
X-Spam-Status: No, score=-14.522 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com
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 p9edyyflqDx6 for <netmod@ietfa.amsl.com>; Wed, 15 Mar 2017 03:51:00 -0700 (PDT)
Received: from aer-iport-3.cisco.com (aer-iport-3.cisco.com [173.38.203.53]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 550BF129AF9 for <netmod@ietf.org>; Wed, 15 Mar 2017 03:50:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=4485; q=dns/txt; s=iport; t=1489575059; x=1490784659; h=subject:to:references:cc:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=THrknMwW9CD1ae6POITjFeyiaX6o6B56KQ2p0/pHUkg=; b=aKIjXyTucoYw+UcHdmfA2a99ble0x5uytXT70FB75Zi2MoABOhlG8P4f Fp8HtgGSHLdW9sIRPh9AnF+AdbC+2NGkmqx1wK5MQJFrplUsofMlVLGgN YCOL3WKLZanukKDILUZPDGsyuqxNszL9z0nHwag5Te8WZVd6Q9ukr9D2K E=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0DcAgB/G8lY/xbLJq1dGQEBAQEBAQEBAQEBBwEBAQEBhFxgjmCQY5dKhiICgykVAQIBAQEBAQEBayiFFgEFOEEQCw4KLlcGDQYCAQGJfK99il8BAQEBAQEBAQEBAQEBAQEBASGGToIFaIIChD6FewEEj1uMaJI7ilKGU4s4iA81IoEEIxYIFxWFGB2BY0A1hnUqghMBAQE
X-IronPort-AV: E=Sophos;i="5.36,168,1486425600"; d="scan'208";a="651464403"
Received: from aer-iport-nat.cisco.com (HELO aer-core-2.cisco.com) ([173.38.203.22]) by aer-iport-3.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Mar 2017 10:50:57 +0000
Received: from [10.63.23.115] (dhcp-ensft1-uk-vla370-10-63-23-115.cisco.com [10.63.23.115]) by aer-core-2.cisco.com (8.14.5/8.14.5) with ESMTP id v2FAouxr015265; Wed, 15 Mar 2017 10:50:57 GMT
To: Martin Bjorklund <mbj@tail-f.com>
References: <201703142223.v2EMNpnW074003@idle.juniper.net> <20170315.082814.1668142020606045450.mbj@tail-f.com> <bb5472be-3882-785f-3c53-148bae6959af@cisco.com> <20170315.112044.1525149482580030224.mbj@tail-f.com>
Cc: phil@juniper.net, netmod@ietf.org, joey.boyd@adtran.com
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <bb503c8c-55e2-2a6a-fad5-ed10669a85fe@cisco.com>
Date: Wed, 15 Mar 2017 10:50:57 +0000
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1
MIME-Version: 1.0
In-Reply-To: <20170315.112044.1525149482580030224.mbj@tail-f.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/SalW_XF87x6vzROW0Et5OthgNMI>
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:51:01 -0000


On 15/03/2017 10:20, Martin Bjorklund wrote:
> 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.
Does this just leave the behaviour as undefined then? I.e. it is up to 
the implementation to decide whether they error the augmentation.

Rob

>
>
> /martin
> .
>