Re: [Netconf] [yang-doctors] YANG Doctor question: empty mandatory choice?
Robert Wilton <rwilton@cisco.com> Wed, 01 August 2018 16:01 UTC
Return-Path: <rwilton@cisco.com>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EC87E130E44; Wed, 1 Aug 2018 09:01:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.509
X-Spam-Level:
X-Spam-Status: No, score=-14.509 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01, 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 zr3SklOcJPEA; Wed, 1 Aug 2018 09:01:42 -0700 (PDT)
Received: from aer-iport-4.cisco.com (aer-iport-4.cisco.com [173.38.203.54]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CF979130E2E; Wed, 1 Aug 2018 09:01:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=15436; q=dns/txt; s=iport; t=1533139302; x=1534348902; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to; bh=5T/5MYJj3E7nE+R41tBel8fthXnWcJsc+GN1wnUqsKo=; b=TTBo5gGw5tWoIAx80AcSRc819gXrFHuPfUrAuTzC0RuibDhscqS3gDcU kk5SbZiRyWwlL4t8AclqT1RntVcQbLxqHpV3zcSur3wasNF3Nr5hvw5lc SB7Ujhl4RY/hclwmcalCRJqLN+5wFbsmiRDK4cDZGLRjymdGKCSOSK4AN Q=;
X-IronPort-AV: E=Sophos;i="5.51,432,1526342400"; d="scan'208,217";a="5501195"
Received: from aer-iport-nat.cisco.com (HELO aer-core-2.cisco.com) ([173.38.203.22]) by aer-iport-4.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Aug 2018 16:01:40 +0000
Received: from [10.63.23.106] (dhcp-ensft1-uk-vla370-10-63-23-106.cisco.com [10.63.23.106]) by aer-core-2.cisco.com (8.15.2/8.15.2) with ESMTP id w71G1dFT008733; Wed, 1 Aug 2018 16:01:40 GMT
To: Andy Bierman <andy@yumaworks.com>, "Eric Voit (evoit)" <evoit@cisco.com>
Cc: "yang-doctors@ietf.org" <yang-doctors@ietf.org>, "netconf@ietf.org" <netconf@ietf.org>
References: <727ae35abd394a85812168615acce2d3@XCH-RTP-013.cisco.com> <20180729.175356.1841285666617255654.mbj@tail-f.com> <77080682bf90495caec48436453e4750@XCH-RTP-013.cisco.com> <20180730.204142.1505732335534077415.mbj@tail-f.com> <20180731174827.n5r2jebon45s2cxy@anna.jacobs.jacobs-university.de> <b8dc903dc04a46088bcca106ac45c4fc@XCH-RTP-013.cisco.com> <CABCOCHQPYyWgXS8Y_n5PN-AEQ5myQXX5s0KvkjQnfAh4VOMbrA@mail.gmail.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <05ee68cd-ccc0-6803-6c71-b3952ee5608d@cisco.com>
Date: Wed, 01 Aug 2018 17:01:39 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1
MIME-Version: 1.0
In-Reply-To: <CABCOCHQPYyWgXS8Y_n5PN-AEQ5myQXX5s0KvkjQnfAh4VOMbrA@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------C7247EADB1E0C867CE1A1D37"
Content-Language: en-US
X-Outbound-SMTP-Client: 10.63.23.106, dhcp-ensft1-uk-vla370-10-63-23-106.cisco.com
X-Outbound-Node: aer-core-2.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/6v9esquy91IZJKL-07hZnGXU5AE>
Subject: Re: [Netconf] [yang-doctors] YANG Doctor question: empty mandatory choice?
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.27
Precedence: list
List-Id: Network Configuration WG mailing list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf/>
List-Post: <mailto:netconf@ietf.org>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 01 Aug 2018 16:01:45 -0000
On 31/07/2018 21:31, Andy Bierman wrote: > > > On Tue, Jul 31, 2018 at 12:39 PM, Eric Voit (evoit) <evoit@cisco.com > <mailto:evoit@cisco.com>> wrote: > > > From: Juergen Schoenwaelder, July 31, 2018 1:48 PM > > > > On Mon, Jul 30, 2018 at 08:41:42PM +0200, Martin Bjorklund wrote: > > > > > > The empty mandatory choice does provide value since it > requires that > > > some transport-specific parameters are configured. However, > can we > > > assume that all transports require configuration parameters here? > > > > Can you have a receiver without any transport parameters? > > > > > It is probably safest to not have a mandatory choice, and instead > > > ensure that each transport augements the proper params -- and > since > > > this is YANG 1.1, the transport params that are augmented can > actually > > > be marked as mandatory. > > > > Frankly, an empty mandatory choice quite clearly says "this is > incomplete and > > unusable without an augmentation". > > My read above is the YANG doctor's position is that we should > *not* use the empty mandatory choice. Let me know if I got this > wrong. > > > I do not think a consensus call has been done yet, but I agree with > Juergen > and already raised the point that YANG conformance does not handle a > "MUST augment" use-case very well. I think that "empty choice + mandatory true" it is OK from a conformance perspective. The concept seems similar to an programmatic interface, abstract class, or even the abstract identity idea that has been proposed for YANG. If a server implements the module but no augments of the choice then it cannot be configured because the constraint will always fail. Andy, is your concern that tooling will warn that part of the model is unusable? I have to say that much prefer the option of putting "mandatory: true" in the choice than "MUST provide an implementation" in the description because the former is machine readable whilst the latter is not. However, I would also be fine not to have the "mandatory: true", but with the choice description to state something along the lines that the empty choice is to allow for augmentations of different transports, and configured subscriptions may not be usable unless at least one transport case statement is available." But perhaps some implementation will provide the flexibility of defining a single transport for all subscriptions (if this is feasible). One other observation that could affect the decision here is that YANG allows "mandatory: true" to be removed in a future revision in a backwards compatible way, but doesn't allow it to be added. Thanks, Rob > > I prefer the MUST be in the description-stmt for the choice, > instead of "mandatory true". (I prefer SHOULD but if the WG wants MUST) > > > Andy > > > > That would mean that each transport document supporting configured > subscriptions would then augment transport specific parameters to > "/subscriptions/subscription/receivers/receiver". And (assuming > the "single transport" decision of IETF100 isn't changed), that > the identity "transport" could be leveraged to enforce that only a > single transport specific set of credentials are associated with a > receiver. > > A sample YANG augmentation for NETCONF would then look like: > > module ietf-netconf-subscribed-notifications { > > prefix nsn; > > import ietf-netconf-client { prefix ncc; } > import ietf-subscribed-notifications { prefix sn; } > > identity netconf { > base sn:transport; > base sn:inline-address; > description > "NETCONF is used as a transport for notification messages and > state change notifications."; > } > > augment > "/sn:subscriptions/sn:subscription/sn:receivers/sn:receiver" { > when 'derived-from(../../../transport, "nsn:netconf")'; > description > "This augmentation allows NETCONF specific parameters to be > exposed for a receiver."; > leaf netconf-endpoint { > type leafref { > path "/ncc:netconf-client/ncc:initiate/ncc:netconf-server" + > "/ncc:endpoints/ncc:endpoint/ncc:name"; > } > mandatory true; > description > "Remote client which need to initiate the NETCONF > transport if > an existing NETCONF session from that client is not > available."; > } > } > } > > Which results in: > +--rw subscriptions > +--rw subscription* > +--rw transport transport {configured}? > +--rw receivers > +--rw receiver* > +--rw nsn:netconf-endpoint leafref > > Eric > > > > /js > > > > -- > > Juergen Schoenwaelder Jacobs University Bremen gGmbH > > Phone: +49 421 200 3587 Campus Ring 1 | 28759 Bremen | > Germany > > Fax: +49 421 200 3103 > <https://www.jacobs-university.de/ > <https://www.jacobs-university.de/>> > > > > > _______________________________________________ > yang-doctors mailing list > yang-doctors@ietf.org > https://www.ietf.org/mailman/listinfo/yang-doctors
- Re: [Netconf] [yang-doctors] YANG Doctor question… Andy Bierman
- Re: [Netconf] YANG Doctor question: empty mandato… Kent Watsen
- Re: [Netconf] YANG Doctor question: empty mandato… Andy Bierman
- Re: [Netconf] [yang-doctors] YANG Doctor question… Robert Wilton
- Re: [Netconf] [yang-doctors] YANG Doctor question… Andy Bierman
- Re: [Netconf] YANG Doctor question: empty mandato… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Robert Wilton
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Andy Bierman
- [Netconf] YANG Doctor question: empty mandatory c… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Juergen Schoenwaelder
- Re: [Netconf] [yang-doctors] YANG Doctor question… Kent Watsen
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Juergen Schoenwaelder
- Re: [Netconf] [yang-doctors] YANG Doctor question… Juergen Schoenwaelder
- Re: [Netconf] [yang-doctors] YANG Doctor question… Robert Wilton
- Re: [Netconf] [yang-doctors] YANG Doctor question… Robert Wilton
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Juergen Schoenwaelder
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Juergen Schoenwaelder
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Andy Bierman
- Re: [Netconf] [yang-doctors] YANG Doctor question… Kent Watsen
- Re: [Netconf] [yang-doctors] YANG Doctor question… Andy Bierman
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Kent Watsen
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund
- Re: [Netconf] YANG Doctor question: empty mandato… Kent Watsen
- Re: [Netconf] YANG Doctor question: empty mandato… Kent Watsen
- Re: [Netconf] YANG Doctor question: empty mandato… Martin Bjorklund
- Re: [Netconf] [yang-doctors] YANG Doctor question… Juergen Schoenwaelder
- Re: [Netconf] YANG Doctor question: empty mandato… Juergen Schoenwaelder
- Re: [Netconf] YANG Doctor question: empty mandato… Alexander Clemm
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Andy Bierman
- Re: [Netconf] [yang-doctors] YANG Doctor question… Kent Watsen
- Re: [Netconf] [yang-doctors] YANG Doctor question… Andy Bierman
- Re: [Netconf] [yang-doctors] YANG Doctor question… Robert Wilton
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] YANG Doctor question: empty mandato… Kent Watsen
- Re: [Netconf] YANG Doctor question: empty mandato… Andy Bierman
- Re: [Netconf] YANG Doctor question: empty mandato… Einar Nilsen-Nygaard (einarnn)
- Re: [Netconf] YANG Doctor question: empty mandato… Einar Nilsen-Nygaard (einarnn)
- Re: [Netconf] YANG Doctor question: empty mandato… Henk Birkholz
- Re: [Netconf] YANG Doctor question: empty mandato… Andy Bierman
- Re: [Netconf] YANG Doctor question: empty mandato… Andy Bierman
- Re: [Netconf] YANG Doctor question: empty mandato… Kent Watsen
- Re: [Netconf] YANG Doctor question: empty mandato… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund
- Re: [Netconf] YANG Doctor question: empty mandato… Martin Bjorklund
- Re: [Netconf] [yang-doctors] YANG Doctor question… Kent Watsen
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund
- Re: [Netconf] [yang-doctors] YANG Doctor question… tom petch
- Re: [Netconf] [yang-doctors] YANG Doctor question… Kent Watsen
- Re: [Netconf] [yang-doctors] YANG Doctor question… Kent Watsen
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund
- Re: [Netconf] [yang-doctors] YANG Doctor question… Kent Watsen
- Re: [Netconf] [yang-doctors] YANG Doctor question… Eric Voit (evoit)
- Re: [Netconf] [yang-doctors] YANG Doctor question… Martin Bjorklund