Re: [CCAMP] Yangdoctors last call review of draft-ietf-ccamp-mw-yang-05

Jan Lindblad <janl@tail-f.com> Mon, 11 June 2018 08:55 UTC

Return-Path: <janl@tail-f.com>
X-Original-To: ccamp@ietfa.amsl.com
Delivered-To: ccamp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 65EFA130DEF; Mon, 11 Jun 2018 01:55:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_PASS=-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 rdAM6CDGWEFH; Mon, 11 Jun 2018 01:55:12 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 447AB130DCB; Mon, 11 Jun 2018 01:55:09 -0700 (PDT)
Received: from [10.147.40.189] (unknown [173.38.220.39]) by mail.tail-f.com (Postfix) with ESMTPSA id A111F1AE0388; Mon, 11 Jun 2018 10:55:05 +0200 (CEST)
From: Jan Lindblad <janl@tail-f.com>
Message-Id: <CF20F357-9463-4ED8-90A6-634F2C7CF3B6@tail-f.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_A054198C-0DF4-40A5-BAB8-013B427C46E1"
Mime-Version: 1.0 (Mac OS X Mail 11.3 \(3445.6.18\))
Date: Mon, 11 Jun 2018 10:55:04 +0200
In-Reply-To: <9C5FD3EFA72E1740A3D41BADDE0B461FCF9DE258@dggemm508-mbx.china.huawei.com>
Cc: "yang-doctors@ietf.org" <yang-doctors@ietf.org>, "ccamp@ietf.org" <ccamp@ietf.org>, "draft-ietf-ccamp-mw-yang.all@ietf.org" <draft-ietf-ccamp-mw-yang.all@ietf.org>, "ietf@ietf.org" <ietf@ietf.org>
To: "Yemin (Amy)" <amy.yemin@huawei.com>
References: <152836670897.30871.16818219844116536782@ietfa.amsl.com> <9C5FD3EFA72E1740A3D41BADDE0B461FCF9DE258@dggemm508-mbx.china.huawei.com>
X-Mailer: Apple Mail (2.3445.6.18)
Archived-At: <https://mailarchive.ietf.org/arch/msg/ccamp/O12_bpnYotr-V01oQ8ddoTm0wfY>
Subject: Re: [CCAMP] Yangdoctors last call review of draft-ietf-ccamp-mw-yang-05
X-BeenThere: ccamp@ietf.org
X-Mailman-Version: 2.1.26
Precedence: list
List-Id: Discussion list for the CCAMP working group <ccamp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ccamp>, <mailto:ccamp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ccamp/>
List-Post: <mailto:ccamp@ietf.org>
List-Help: <mailto:ccamp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ccamp>, <mailto:ccamp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 11 Jun 2018 08:55:16 -0000

Yemin,

> Thanks very much for the comments. I found them are quiet useful to improve the models.
> Please see my reply below in blue. 
> The draft co-authors may add more reply to your comments.

Very good. I added some replies marked [janl] below.

> Next, let's look at module ietf-interface-protection.
>  
> I can't say I understand exactly why this is a separate module. It publishes a single grouping, which is required by ietf-microwave-radio-link, and as far as I understand would probably never be used anywhere else. When the grouping is used a single time in ietf-microwave-radio-link, it is immediately refined.
> Would probably reduce the clutter by merging the two modules and resolving the refine.
> [Amy] They were in one model. During the WG discussion, comment was raised that the interface protection function could be generic and be used by other technologies in future, so we split the models.
> I’m open to discuss about this.

[janl] Ok, I didn't quite see how the grouping would be used anywhere else, but if it indeed is usable elsewhere, having it in a separate module isn't a bad idea. 

> #4) Action external-commands
>  
> There is a single action called external-commands (even in plural). It takes a single argument, which is the name of the operation to execute. No output. To me, a more natural modeling would be to make each of the external commands an action, over time possibly with different input and output.
> [Amy] add output to describe the action result (success, fail, inprogress). But prefer to use one action.
> Change the name to external-command.

[janl] Hmm, I don't quite understand your preference for a single action. I see how this choice closes doors, but no real benefit. This is no big deal, though, what you have works. Just feels less evolvable for no reason.

> Many other ways of doing this properly are also possible. Let me know if you'd like to discuss options.
> [Amy] I think choice is a good way to model those leafs. I suggest to use it.  
> That’s the real value of YANG doctors! Thanks.

[janl] ;-)
 
> #10) Choice more convenient
>  
> There are a few leafs that act as discriminators for when clauses in other leafs. Such constructs might be a little smoother when modeled as a choice instead. I'll take one and show as an example. This power-mode construct:
...
>     choice power-mode {
>       container rtpc {
>         description
>           "Remote Transmit Power Control (RTPC).";
>         reference "ETSI EN 302 217-1";
>         leaf maximum-nominal-power {
>           type power {
>             range "-99..40";
>           }
>           units "dBm";
>           mandatory true;
>           description
>             "Selected output power.";
>           reference "ETSI EN 302 217-1";
>         }
>       }
>       container atpc {
>         description
>           "Automatic Transmit Power Control (ATPC).";
>         reference "ETSI EN 302 217-1";
>  
>         leaf maximum-nominal-power {
>           type power {
>             range "-99..40";
>           }
>           units "dBm";
>           mandatory true;
>           description
>              "Selected maximum output power. Minimum output
>              power is the same as the system
>              capability, available-min-output-power.";
>           reference "ETSI EN 302 217-1";
>         }
>  
>         leaf atpc-lower-threshold  {
>           type power {
>             range "-99..-30";
>           }
>           units "dBm";
>           mandatory true;
>           description
>             "The lower threshold for the input power at far-end
>              used in the ATPC mode.";
>           reference "ETSI EN 302 217-1";
>         }
>         leaf atpc-upper-threshold  {
>           type power {
>             range "-99..-30";
>           }
>           units "dBm";
>           mandatory true;
>           description
>             "The upper threshold for the input power at far-end
>              used in the ATPC mode.";
>           reference "ETSI EN 302 217-1";
>         }
>       }
>       mandatory true;
>       description
>         "A choice of Remote Transmit Power Control (RTPC)
>          or Automatic Transmit Power Control (ATPC).";
> }
>  
> [Amy] Choice is a better way. Is it possible to further refine your proposal?
> Since maximum-nominal-power will be used by both RTPC and ATPC, how about to move it out of the choice, then use maximum-nominal-power in the choice?

[janl] Yes, this is certainly very reasonable. I placed the maximum-nominal-power inside the choice because the description string was giving the leaf different interpretations in each case. In that case I felt it better to have separate leaves with clear descriptions. If you feel the leaf can be shared between the options with a clear definition of its meaning, this is reasonable.

Best Regards,
/jan