Re: [Netconf] [Technical Errata Reported] RFC8040 (5565)

Martin Bjorklund <mbj@tail-f.com> Tue, 18 December 2018 11:47 UTC

Return-Path: <mbj@tail-f.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 5DF9C13111C for <netconf@ietfa.amsl.com>; Tue, 18 Dec 2018 03:47:01 -0800 (PST)
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, SPF_PASS=-0.001, URIBL_BLOCKED=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 OZkHbc7J7_1w for <netconf@ietfa.amsl.com>; Tue, 18 Dec 2018 03:46:59 -0800 (PST)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id BB016130EC0 for <netconf@ietf.org>; Tue, 18 Dec 2018 03:46:58 -0800 (PST)
Received: from localhost (unknown [173.38.220.45]) by mail.tail-f.com (Postfix) with ESMTPSA id 0B9691B03C92; Tue, 18 Dec 2018 12:46:53 +0100 (CET)
Date: Tue, 18 Dec 2018 12:46:53 +0100
Message-Id: <20181218.124653.2050609264975088634.mbj@tail-f.com>
To: bill.wu@huawei.com
Cc: rfc-editor@rfc-editor.org, andy@yumaworks.com, kwatsen@juniper.net, ibagdona@gmail.com, warren@kumari.net, mjethanandani@gmail.com, netconf@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <B8F9A780D330094D99AF023C5877DABA9B1B0305@nkgeml513-mbx.china.huawei.com>
References: <B8F9A780D330094D99AF023C5877DABA9B177661@nkgeml513-mbs.china.huawei.com> <20181203.104808.838283353261944785.mbj@tail-f.com> <B8F9A780D330094D99AF023C5877DABA9B1B0305@nkgeml513-mbx.china.huawei.com>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="utf-8"
Content-Transfer-Encoding: base64
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/ZoNbuJyOAaKTNYgDmj9y33z1WQY>
Subject: Re: [Netconf] [Technical Errata Reported] RFC8040 (5565)
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.29
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, 18 Dec 2018 11:47:02 -0000

Qin Wu <bill.wu@huawei.com> wrote:
> -----邮件原件-----
> 发件人: Martin Bjorklund [mailto:mbj@tail-f.com] 
> 发送时间: 2018年12月3日 17:48
> 收件人: Qin Wu
> 抄送: rfc-editor@rfc-editor.org; andy@yumaworks.com; kwatsen@juniper.net; ibagdona@gmail.com; warren@kumari.net; mjethanandani@gmail.com; netconf@ietf.org
> 主题: Re: [Technical Errata Reported] RFC8040 (5565)
> 
> Qin Wu <bill.wu@huawei.com> wrote:
> > See data-missing definition in RFC6241:
> > "
> >    error-tag:      data-missing
> >    error-type:     application
> >    error-severity: error
> >    error-info:     none
> >    Description:    Request could not be completed because the relevant
> >                    data model content does not exist.  For example,
> >                    a "delete" operation was attempted on
> >                    data that does not exist.
> > 
> > "
> > And status code 409 definition in RFC7231 "
> > 6.5.8.  409 Conflict
> > 
> >    The 409 (Conflict) status code indicates that the request could not
> >    be completed due to a conflict with the current state of the target
> >    resource.  This code is used in situations where the user might be
> >    able to resolve the conflict and resubmit the request.  The server
> >    SHOULD generate a payload that includes enough information for a user
> >    to recognize the source of the conflict.
> > 
> > 6.5.4.  404 Not Found
> > 
> >    The 404 (Not Found) status code indicates that the origin server did
> >    not find a current representation for the target resource or is not
> >    willing to disclose that one exists.  A 404 status code does not
> >    indicate whether this lack of representation is temporary or
> >    permanent; the 410 (Gone) status code is preferred over 404 if the
> >    origin server knows, presumably through some configurable means, that
> >    the condition is likely to be permanent.
> > 
> > "
> > Which make me feel data missing is more related to 404 instead of 409. Wrong?
> 
> 404 means that *the requested resource* doesn't exist.
> 
> The example "delete" operation in 6241 refers to an edit-config with operation "delete".  The corresponding RESTCONF operation is "delete"
> within a YANG PATCH.  In this case, the requested resource exists, so a 404 would not be correct.
> 
> So there are certainly cases where "data-missing" does not mean 404.
> 
> But I guess there are also cases where "data-missing" will actually correspond to a 404.  For example an edit-config that just tries to delete a non-existing node will be a "data-missing", and if the corresponding RESTCONF request is a DELETE on the resource, it will be
> 404 - but if the corresponding RESTCONF request is a YANG PATCH with a "delete" edit, it will be 409.
> 
> 
> So, maybe the proper fix is
> 
>                | data-missing            | 404, 409           |
> 
> [Qin]: Tend to agree, but YANG patch supporting the ability to delete child resources defined in RFC8072 also support return 404,
> See section 2.2 of RFC8072:
> "
>    If the edit does not identify
>    any existing resource instance and the operation for the edit is not
>    "create", then the request MUST NOT be processed and a "404 Not
>    Found" error response MUST be sent by the server. 
> "

This seems to be an error.  RFC 5789 (HTTP PATCH) has this:

   Conflicting state:  Can be specified with a 409 (Conflict) status
      code when the request cannot be applied given the state of the
      resource.  For example, if the client attempted to apply a
      structural modification and the structures assumed to exist did
      not exist (with XML, a patch might specify changing element 'foo'
      to element 'bar' but element 'foo' might not exist).


/martin



> 
> /martin
> 
> 
> 
> > 
> > -Qin
> > -----邮件原件-----
> > 发件人: Martin Bjorklund [mailto:mbj@tail-f.com]
> > 发送时间: 2018年12月3日 16:54
> > 收件人: rfc-editor@rfc-editor.org
> > 抄送: andy@yumaworks.com; kwatsen@juniper.net; ibagdona@gmail.com; 
> > warren@kumari.net; mjethanandani@gmail.com; Qin Wu; netconf@ietf.org
> > 主题: Re: [Technical Errata Reported] RFC8040 (5565)
> > 
> > Hi,
> > 
> > I don't think this errata should be accepted.  404 means that the requested resource doesn't exist, but "data-missing" can be returned e.g. if you try to patch an existing resource of type leafref to point to a non-existing leaf.
> > 
> > 
> > /martin
> > 
> > 
> > RFC Errata System <rfc-editor@rfc-editor.org> wrote:
> > > The following errata report has been submitted for RFC8040, 
> > > "RESTCONF Protocol".
> > > 
> > > --------------------------------------
> > > You may review the report below and at:
> > > http://www.rfc-editor.org/errata/eid5565
> > > 
> > > --------------------------------------
> > > Type: Technical
> > > Reported by: Qin Wu <bill.wu@huawei.com>
> > > 
> > > Section: 7
> > > 
> > > Original Text
> > > -------------
> > >               +-------------------------+------------------+
> > >               | error-tag               | status code      |
> > >               +-------------------------+------------------+
> > >               | in-use                  | 409              |
> > >               | lock-denied             | 409              |
> > >               | resource-denied         | 409              |
> > >               | data-exists             | 409              |
> > >               | data-missing            | 409              |
> > > 
> > > 
> > > Corrected Text
> > > --------------
> > >               +-------------------------+------------------+
> > >               | error-tag               | status code      |
> > >               +-------------------------+------------------+
> > >               | in-use                  | 409              |
> > >               | lock-denied             | 409              |
> > >               | resource-denied         | 409              |
> > >               | data-exists             | 409              |
> > >               | data-missing            | 404              |
> > > 
> > > 
> > > Notes
> > > -----
> > > The <error-tag> data missing should be mapped to status code '404' instead of '409' to get consistent with the defintion of data-missing in RFC6241.
> > > 
> > > Instructions:
> > > -------------
> > > This erratum is currently posted as "Reported". If necessary, please 
> > > use "Reply All" to discuss whether it should be verified or rejected.
> > > When a decision is reached, the verifying party can log in to change 
> > > the status and edit the report, if necessary.
> > > 
> > > --------------------------------------
> > > RFC8040 (draft-ietf-netconf-restconf-18)
> > > --------------------------------------
> > > Title               : RESTCONF Protocol
> > > Publication Date    : January 2017
> > > Author(s)           : A. Bierman, M. Bjorklund, K. Watsen
> > > Category            : PROPOSED STANDARD
> > > Source              : Network Configuration
> > > Area                : Operations and Management
> > > Stream              : IETF
> > > Verifying Party     : IESG
> > >