Re: [netmod] choice/case in tree diagrams

Robert Wilton <rwilton@cisco.com> Tue, 06 March 2018 09:58 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 13851127076 for <netmod@ietfa.amsl.com>; Tue, 6 Mar 2018 01:58:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level:
X-Spam-Status: No, score=-14.511 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, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, 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 upEPZ7mL4Gkr for <netmod@ietfa.amsl.com>; Tue, 6 Mar 2018 01:58:01 -0800 (PST)
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 B3908126E64 for <netmod@ietf.org>; Tue, 6 Mar 2018 01:58:00 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=7831; q=dns/txt; s=iport; t=1520330280; x=1521539880; h=subject:to:references:from:message-id:date:mime-version: in-reply-to:content-transfer-encoding; bh=K482i0bOW9Mr9tQKkmPc3L9/H/Fj0nOtrtaCPVGo02M=; b=Ao0y+Cn4cpUGsxZAcrlMMu/pwBVRu63rw4v61gaEevArrFwwR5M16/KU hdbSNKUMogewY5z17qyWWv1cOXN9pfp0QQuWZ5UjuxA7VM1gjMuvhNzJS NP4cf5AjOjBYTCoj3vLJQqxWhw9KWHV3MU80fKn2bG4Fms92Z7MiwH7ZF Y=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0COAABeZZ5a/xbLJq1dGQEBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBAYQ2cCiDVIokdI8GgRaUNIIVChgLhD5PAoMbNBgBAgEBAQEBAQJ?= =?us-ascii?q?rJ4UkAQEEAQEhFTYbCw4CCAICJgICJzAGAQwGAgEBF4UAEKhegieEcoN2giEFg?= =?us-ascii?q?Q+EHoQFgg+DBIMuAQGEfIJiBI18jGsJiWaHEgeBZ4ctJoU+i0mGDYEuHjiBUjM?= =?us-ascii?q?aCBsVOoJDgjEcgXtAN4xtAQEB?=
X-IronPort-AV: E=Sophos;i="5.47,431,1515456000"; d="scan'208";a="2408459"
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; 06 Mar 2018 09:57:58 +0000
Received: from [10.63.23.110] (dhcp-ensft1-uk-vla370-10-63-23-110.cisco.com [10.63.23.110]) by aer-core-2.cisco.com (8.14.5/8.14.5) with ESMTP id w269vws1018484; Tue, 6 Mar 2018 09:57:58 GMT
To: Martin Bjorklund <mbj@tail-f.com>, vladimir@transpacket.com, netmod@ietf.org
References: <1520262414.7198.35.camel@nic.cz> <6a1ed43f-398b-4538-52aa-d7f8c219047e@tail-f.com> <c9a60629-a1de-0b5b-77a0-595f614bcad8@transpacket.com> <20180306.104411.829341372037212681.mbj@tail-f.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <ca046d98-f4fd-356e-de7b-a2b2877f0cca@cisco.com>
Date: Tue, 6 Mar 2018 09:57:58 +0000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0
MIME-Version: 1.0
In-Reply-To: <20180306.104411.829341372037212681.mbj@tail-f.com>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/BFES52Q85AQGRgWCmNbKNg3v6NE>
Subject: Re: [netmod] choice/case in tree diagrams
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: Tue, 06 Mar 2018 09:58:03 -0000

+1 for this solution.

Thanks,
Rob


On 06/03/2018 09:44, Martin Bjorklund wrote:
> Hi,
>
> After thinking some more about this, realizing that this document is
> in AUTH48, and looking at the first sentence in the Abstract:
>
>     This document captures the current syntax used in YANG module tree
>     diagrams.
>
> I have reached the conclusion that we probably shouldn't make any
> drastic changes.
>
> The current syntax, with flags for choice but not for case, may look a
> bit odd, but it does follow RFC 7950 where a choice node can have a
> config property, but case cannot.  Also, this syntax has now been used
> for several years w/o causing much confusion.
>
> I suggest the following changes to this document:
>
> OLD:
>
>         <flags> is one of:
>           rw  for configuration data
>           ro  for non-configuration data, output parameters to rpcs
>               and actions, and notification parameters
>           -w  for input parameters to rpcs and actions
>           -u  for uses of a grouping
>           -x  for rpcs and actions
>           -n  for notifications
>           mp  for nodes containing a "mount-point" extension statement
>
> NEW:
>
>         <flags> is one of:
>           rw  for configuration data
>           ro  for non-configuration data, output parameters to rpcs
>               and actions, and notification parameters
>           -w  for input parameters to rpcs and actions
>           -u  for uses of a grouping
>           -x  for rpcs and actions
>           -n  for notifications
>           mp  for nodes containing a "mount-point" extension statement
>
>           case nodes do not have any <flags>.
>
> Then, since the syntax requires whitespace before <name>:
>
>       <status>--<flags> <name><opts> <type> <if-features>
>
> we need to fix the examples:
>
> OLD:
>
>               +--rw (root-type)
>                  +--:(vrf-root)
>
> NEW:
>
>               +--rw (root-type)
>                  +-- :(vrf-root)
>
> (two occurances)
>
>
>
> /martin
>
>
>
> Vladimir Vassilev <vladimir@transpacket.com> wrote:
>>
>> On 03/05/2018 06:40 PM, Per Hedeland wrote:
>>> On 2018-03-05 16:06, Ladislav Lhotka wrote:
>>>> On Mon, 2018-03-05 at 15:49 +0100, Per Hedeland wrote:
>>>>> On 2018-03-05 15:41, Ladislav Lhotka wrote:
>>>>>> On Mon, 2018-03-05 at 15:26 +0100, Martin Bjorklund wrote:
>>>>>>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
>>>>>>>> On Mon, Mar 05, 2018 at 02:54:18PM +0100, Martin Bjorklund wrote:
>>>>>>>>>> So it seems the running code got it right. ;-)
>>>>>>>>> As the author of that code, I think that was purely by accident...
>>>>>>>>>
>>>>>>>>> But I'm not convinced it is the correct solution.  We have one example
>>>>>>>>> in the other thread where someone was confused by the "rw" flag and
>>>>>>>>> thought that it implied that the node would be present in the data
>>>>>>>>> tree.
>>>>>>>>>
>>>>>>>> So what does rw mean?
>>>>>>>>
>>>>>>>> (i)  The schema node has a rw property.
>>>>>>>> (ii) The schema node can be instantiated and the instantiated data
>>>>>>>> node
>>>>>>>>        has a rw property.
>>>>>>>>
>>>>>>>> I think it is difficult to have both at the same time. If the tree is
>>>>>>>> a representation of schema nodes, then (i) seems to make more
>>>>>>>> sense. That said, the explanation in 2.6 is somewhat vague since it
>>>>>>>> says 'data' and not 'nodes' (like everywhere else):
>>>>>>>>
>>>>>>>> OLD:
>>>>>>>>
>>>>>>>>          <flags> is one of:
>>>>>>>>            rw  for configuration data
>>>>>>>>            ro  for non-configuration data, output parameters to rpcs
>>>>>>>>                and actions, and notification parameters
>>>>>>>>
>>>>>>>> NEW:
>>>>>>>>
>>>>>>>>          <flags> is one of:
>>>>>>>>            rw  for configuration data nodes
>>>>>>>>            ro for non-configuration data nodes, output parameters to
>>>>>>>>            rpcs
>>>>>>>>                and actions, and notification parameters
>>>>>>> I think this is ok.  But that means that we also have to add:
>>>>>>>
>>>>>>>              --  for a choice or case node
>>>>>>>
>>>>>>> But in order to be consistent, we should probably have:
>>>>>>>
>>>>>>>              --  for a choice, case, input or output node
>>>>>> But unlike the three other statements, "choice" can have the config
>>>>>> substatement, so "rw/ro" makes sense there.
>>>>> I don't think so - that config statement does not a define a property
>>>>> of
>>>>> the choice node (it can obviously neither be read nor written), only a
>>>>> default for descendant data nodes, as described in section 7.21.1 of
>>>>> RFC
>>>>> 7950.
>>>> It is not a default - if a choice has "config false", then no
>>>> descendant can be
>>>> "config true". One of the benefits of having rw/ro in the ascii tree
>>>> is to see
>>>> where a state data subtree actually starts.
>>> It is a default, but yes, it is also a restriction in the specific
>>> case
>>> of the argument being "false" at a point where the default would
>>> otherwise be "true". And in that case it is equivalent to having
>>> "config
>>> false" on all the descendant data nodes, and they will of course be
>>> flagged as "ro" regardless of whether the "config false" comes from
>>> the
>>> choice or the individual data nodes - and that is where the state
>>> *data*
>>> suntree(s) actually start(s).
>>>
>>> So I guess the question then is whether this specific case motivates
>>> always having flags on specifically choice nodes, while the other
>>> non-data nodes have no flags. Since the 'config' statement is ignored
>>> in
>>> rpc/action input/output and notification, choice nodes there should
>>> then
>>> presumably have "-w"/"ro"/"-n". Personally I think the diagram is
>>> clearer with flags only on the data nodes.
>> When I think about it <flags> do not have any information contents
>> outside of the context of a data tree and its schema. So if we are
>> removing clutter we should probably start there by specifying that
>> <flags> should be ommited under rpc,notification and action.
>>
>> Vladlimir
>>> --Per
>>>
>>>> Lada
>>>>
>>>>> --Per
>>>>>
>>>>>> Lada
>>>>>>
>>>>>>> This means that the correct tree syntax for choice and case will be:
>>>>>>>
>>>>>>>        +-- (subnet)?
>>>>>>>           +-- :(prefix-length)
>>>>>>>           |  +--rw prefix-length?   uint8
>>>>>>>           +-- :(netmask)
>>>>>>>              +--rw netmask?         yang:dotted-quad
>>>>>>>
>>>>>>>
>>>>>>> /martin
>>>>>>>
>>>>>>>
>>>>>>>> The document (as far as I searched for it) does not clearly say that
>>>>>>>> 'node' means 'schema node'. In hindsight, it might have been useful to
>>>>>>>> explicitely import terminology from RFC 7950 and to use it carefully
>>>>>>>> (RFC 7950 has 'schema node' and 'data node' but here we largely talk
>>>>>>>> about 'nodes' - and my assumption is that this means 'schema nodes'.)
>>>>>>> _______________________________________________
>>>>>>> netmod mailing list
>>>>>>> netmod@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/netmod
>>>>> _______________________________________________
>>>>> netmod mailing list
>>>>> netmod@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/netmod
>>> _______________________________________________
>>> netmod mailing list
>>> netmod@ietf.org
>>> https://www.ietf.org/mailman/listinfo/netmod
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
> .
>