Re: [Netconf] IETF Last Call Gen-ART review of draft-ietf-netconf-restconf-15

Andy Bierman <andy@yumaworks.com> Tue, 13 September 2016 16:14 UTC

Return-Path: <andy@yumaworks.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 42AAC12B60A for <netconf@ietfa.amsl.com>; Tue, 13 Sep 2016 09:14:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks-com.20150623.gappssmtp.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 HX8-0QV0srQK for <netconf@ietfa.amsl.com>; Tue, 13 Sep 2016 09:14:11 -0700 (PDT)
Received: from mail-wm0-x231.google.com (mail-wm0-x231.google.com [IPv6:2a00:1450:400c:c09::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1D5F212B6FD for <netconf@ietf.org>; Tue, 13 Sep 2016 08:45:05 -0700 (PDT)
Received: by mail-wm0-x231.google.com with SMTP id c131so119389367wmh.0 for <netconf@ietf.org>; Tue, 13 Sep 2016 08:45:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=/vgN3yn0IUNAD6ikUuntNma7wHELcO+8lcCKtyGxL08=; b=LLr5SbuK/XfS/clBe8yyrxoURVqKmrZVE/9hzJSlcBgEfKiSHHy2IurkZN55XWXUTX 8pirAZtHFpIoiSYz7MWkmmXrccPuU3xkM7jVYKD9wOUT8TyCTvGyMnXL9KlM5dX7v2Y+ yr3yAEnePEfDQ8DE+VxzvINsAgbyAJJ1HyXKEAUOWSLLMWllYdckdhUYMhXzkiN1x7jS 53JFwtypgVxYf5rQspFvE8WO/swGcpMCx76/Bpn1fok+RPyq5P5cHeLPuQsYk+y7Zwb4 TuS/+SWCtJ7TtfWoVozwN3lXh9N1qxKFFdmiY6w3TooDAklmpDysDkElH3b3CJo7HkDa PSKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=/vgN3yn0IUNAD6ikUuntNma7wHELcO+8lcCKtyGxL08=; b=RHk346pe0ZLcXAzhoFESkJo2Bxul3VSpGhRSImdUWH7M0hl0zOO5XDAgBInYBfv3Gl 8rAdyE51OUvLg+IpRRjsCBZR4mFUhFqZNdO/oJqxWS5diExAY4/1crp9PzlPPf1cEIlQ 1YftICagKnOactyGIpds1Cb1liAbEj5ccVtPMFGmogB5glFb4mwL2wPEGsTqUYc247Ku qbIWw/lFL9AbLd8SQYYUJu0Iw65u+VhkzzaYCijOlTSIqViFwjCrf8QIRR2Y+Ne8GKR/ 5AVe0QGHrtqvWe6enGIGU75pm7Yk5zO2fmvlOjBUtPCEiXjvXyET+rVRwr9h30/d5DuR peBA==
X-Gm-Message-State: AE9vXwOzYSFClGrf3lTNJwM4rQn3pCRvaF7VG1m+GkAlzSWnzt3xjBW1u47wF7gLs5Gcbdta+wJVe+1uMDvfFA==
X-Received: by 10.194.122.137 with SMTP id ls9mr20908714wjb.29.1473781502974; Tue, 13 Sep 2016 08:45:02 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.80.141.78 with HTTP; Tue, 13 Sep 2016 08:45:02 -0700 (PDT)
In-Reply-To: <87zinbq4ai.fsf@hobgoblin.ariadne.com>
References: <87zinbq4ai.fsf@hobgoblin.ariadne.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Tue, 13 Sep 2016 08:45:02 -0700
Message-ID: <CABCOCHSUWvSkUZXDzcRi9HChYqVzFV3Ys4tP7MyawO0Yp+0zQQ@mail.gmail.com>
To: "Dale R. Worley" <worley@ariadne.com>
Content-Type: multipart/alternative; boundary="089e01177167f66ef0053c657ed8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/rBdoaHOTaJPBUdRybb4kafXNF3w>
Cc: Netconf <netconf@ietf.org>
Subject: Re: [Netconf] IETF Last Call Gen-ART review of draft-ietf-netconf-restconf-15
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.17
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: Tue, 13 Sep 2016 16:14:14 -0000

On Tue, Sep 13, 2016 at 7:10 AM, Dale R. Worley <worley@ariadne.com> wrote:

> This is a comparison of draft-ietf-netconf-restconf-16 against my
> review for draft-ietf-netconf-restconf-15.  I've removed items that
> have been (IMO) completely resolved.
>
>     * Technical nits
>
>     - In a few places, returned data can include URIs that are intended to
>     be usable by the client to retrieve information from the Restconf
>     server.  These places include the <location> element for accessing an
>     event stream, the Location header of POST responses, and the URLs for
>     retrieving schema resources (section 3.7).  The problem
>     is that implementing this assumes that the server knows a host
>     identifier (domain name or address) that the client can use to access
>     the server.  In general, given the ubiquity of NATs, the server
>     doesn't know this.
>
>     It seems to me that the two possible solutions are for the server to
>     be able to return a URI *relative reference* or for the server to use
>     as the host-part of the URL the value in the Host header of the
>     request (which perforce the server knows the client can use to access
>     the server).  Perhaps this is a known problem with a known solution
>     and so the draft doesn't bother to mention it.  Then again, perhaps in
>     practice the clients and the server are in region of the network
>     containing no internal NATS, and the problem does not arise.
>
>     But it seems to me that this could be a very general problem for
>     implementers and they should be instructed how to deal with it.  I
>     suspect that the authors know the intended resolution of this issue,
>     but it would help if the resolution was stated explicitly.
>


We asked the WG and nobody throught this issue was  important.
It is just an implementation detail for the server to know its own hostname.

I will look into fixing remaining nits within 2 weeks.


Andy




>
> There seems to be no discussion of this issue.
>
>     - Does XRD (RFC 6415) admit relative links as values of the href
>     attribute of the Link element?  Relative links are not usually
>     considered to be "URIs", but rather "URI-references" (RFC 3986 section
>     4.1), and RFC 6415 uses "URI" consistently, not "URI-reference".
>     Also, all examples in RFC 6415 show complete URIs.  If the href
>     attributes have to be full URIs, then the problem with host
>     identifiers described above also arises.
>
> This issue doesn't seem to have been addressed at all in the draft,
> though I have a vague memory of discussion of using templates as an
> alternative.  But all of the XRD examples seem to be incorrect in that
> they use relative URIs as values of the href attribute.
>
>     * General issues
>
>     - Might it be useful to consistently use a trailing-backslash
>     convention?
>
> This is largely done, but there are some additional places where it is
> needed:
>
> In the example in section 6.2, there are several places where
> "</locaton>" appears on a line of its own.  It appears that the
> preceding line was intended to end with "/".
>
> In the example in section 6.3, this XML appears to be missing "/":
>
>     - There seem to be six statements in the draft that the fragment field
>     in RESTCONF resource URIs has no defined purpose, either for some set
>     of resources or for all resources.  (sections 3.4, 3.5, 3.6, 3.8, 5.1
>     (twice)  But of course, the fragment identifier is never presented to
>     the HTTP/HTTPS server for the resource -- see RFC 7230 section 5.1:
>
>        The target URI excludes the reference's fragment component, if any,
>        since fragment identifiers are reserved for client-side processing
>        ([RFC3986], Section 3.5).
>
> There are still several statements like "The fragment field in the
> request URI has no defined purpose if the target resource is a
> datastore resource."  These statements remain meaningless, since by
> the specification of HTTP, the fragment identifier is *never* included
> in a request URI.
>
> The most you can say is, e.g., that the resource returned by fetching
> a datastore resource is never of a media type for which fragment
> identifiers are defined.  But that requires checking that datastore
> resources can never return such types, either now or in the future.
>
>     * Nits
>
>     1.1.5.  Terms
>
>     The term "operation" is used in at least three senses:
>
>     - HTTP request methods (e.g., the title of section 4)
>     ...
>
> Perhaps section 4 could be better titled "RESTCONF Methods", since the
> subsections are labeled with HTTP method names?
>
> 3.5.3.  Encoding Data Resource Identifiers in the Request URI
>
>    Note that double-quote is not a reserved
>    characters and does not need to be percent-encoded.
>
> s/characters/character/
>
>     3.5.3.1.  ABNF For Data Resource Identifiers
>
>            api-path = "/"  |
>                       ("/" api-identifier
>                         0*("/" (api-identifier | list-instance )))
>
> The new ABNF is much better!  However, there is one point that's not
> clear to me:
>
>        string = <a quoted or unquoted string>
>
> This suggests to me that in a path component identifying a list
> instance, one can write the quoted string ".../node="key-value"/...".
> But I'm sure that's not intended, as there is no mention of quoting
> elsewhere in the text.  I suspect that omitting this definition and
> leaving
>
>        key-value = string  ;; constrained chars are percent-encoded
>
> would have the intended meaning.
>
>     4.8.3.  The "fields" Query Parameter
>
>    The server does not return a set separate sub-resources.
>
> I think that the word "of" has been omitted from this sentence.
>
>     6.3.  Subscribing to Receive Notifications
>
>       <location
>         xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring">
>         https://example.com/streams/NETCONF
>       </location>
>
> Shouldn't there be backslashes here?
>
>     8.  RESTCONF module
>
>              The following data-def-stmt sub-statements have special
>              meaning when used within a yang-data-resource extension
>              statement.
>              - The list-stmt is not required to have a key-stmt defined.
>              - The if-feature-stmt is ignored if present.
>              - The config-stmt is ignored if present.
>              - The available identity values for any 'identityref'
>                leaf or leaf-list nodes is limited to the module
>                containing this extension statement, and the modules
>                imported into that module.
>
>     It seems like poor practice to have the extension be described as
>     changing the semantics of Yang.  Better would be to turn these into
>     constraints, so that the valid contents of yang-data are a subset of
>     Yang, but that subset has the same semantics as Yang prescribes:
>
>              - The if-feature-stmt must not be present.
>              - If the config-stmt is present, its value must be 'false'.
>              - The available identity values for any 'identityref'
>                leaf or leaf-list nodes is limited to the module
>                containing this extension statement, and the modules
>                imported into that module. [unchanged!]
>
>     The item "The list-stmt is not required to have a key-stmt defined."
>     is redundant, since everything inside yang-data is not configuration
>     data, and non-configuration lists need not have keys.
>
> None of these (IMO) improvements have been done.
>
>     9.  RESTCONF Monitoring
>
>     The nodes 'description' and 'replay-support' are shown as optional in
>     the tree diagram:
>
>        +--ro restconf-state
>           +--ro streams
>              +--ro stream* [name]
>                 +--ro description?                string
>                 +--ro replay-support?             boolean
>                 +--ro replay-log-creation-time?   yang:date-and-time
>
>     but there is no 'mandatory "false";' for leaf "description" in
>     section 9.3.  Or should it have a default value?  (There is a
>     default value for leaf reply-support, so it is sort-of optional.)
>
>                leaf description {
>                  type string;
>                  description "Description of stream content";
>                  reference
>                    "RFC 5277, Section 3.4, <description> element.";
>                }
>
> 11.3.1.  Media Type application/yang-data-xml
>
>       Fragment identifier considerations: The fragment field in the
>          request URI has no defined purpose.
>
> This needs to be rephrased.  By the definition of HTTP, the fragment
> field is *never* included in a request URI.  What you mean to say is
> something like "Fragment identifiers for this type are not defined.".
>
>     D.2.3.  Edit a Datastore Resource
>
>     "album" sub-resource to eachof 2 "artist" resources:
>
> s/eachof/each of/
>
> Dale
>
> _______________________________________________
> Netconf mailing list
> Netconf@ietf.org
> https://www.ietf.org/mailman/listinfo/netconf
>