Re: [netmod] attributes in draft-lhotka-netmod-yang-json
Martin Bjorklund <mbj@tail-f.com> Wed, 26 March 2014 15:17 UTC
Return-Path: <mbj@tail-f.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EB2511A0113 for <netmod@ietfa.amsl.com>; Wed, 26 Mar 2014 08:17:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.911
X-Spam-Level:
X-Spam-Status: No, score=-1.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 SFPCYtJf9Cyv for <netmod@ietfa.amsl.com>; Wed, 26 Mar 2014 08:17:47 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [109.74.15.94]) by ietfa.amsl.com (Postfix) with ESMTP id E1E9B1A00E3 for <netmod@ietf.org>; Wed, 26 Mar 2014 08:17:46 -0700 (PDT)
Received: from localhost (138.162.241.83.in-addr.dgcsystems.net [83.241.162.138]) by mail.tail-f.com (Postfix) with ESMTPSA id 1A9C43B411D; Wed, 26 Mar 2014 16:17:45 +0100 (CET)
Date: Wed, 26 Mar 2014 16:17:44 +0100
Message-Id: <20140326.161744.477118160786846212.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHSmt-Mr2fe-Xmpajz0v8jg=XOJsY4CMEtCBe1GzTbL6EA@mail.gmail.com>
References: <CABCOCHTg5T+k_LzyNz=bwUKC5AS5gYcBVODL4ZUihUWXQbDbkQ@mail.gmail.com> <20140326.152737.330538996469661145.mbj@tail-f.com> <CABCOCHSmt-Mr2fe-Xmpajz0v8jg=XOJsY4CMEtCBe1GzTbL6EA@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 23.4 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/netmod/J9UGW6e8AtOt0_Ho19oga6V8eyc
Cc: netmod@ietf.org
Subject: Re: [netmod] attributes in draft-lhotka-netmod-yang-json
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Wed, 26 Mar 2014 15:17:50 -0000
Andy Bierman <andy@yumaworks.com> wrote: > On Wed, Mar 26, 2014 at 7:27 AM, Martin Bjorklund <mbj@tail-f.com> wrote: > > > Andy Bierman <andy@yumaworks.com> wrote: > > > On Wed, Mar 26, 2014 at 7:10 AM, Ladislav Lhotka <lhotka@nic.cz> wrote: > > > > > > > > > > > On 26 Mar 2014, at 14:57, Martin Bjorklund <mbj@tail-f.com> wrote: > > > > > > > > > Ladislav Lhotka <lhotka@nic.cz> wrote: > > > > >> Martin Bjorklund <mbj@tail-f.com> writes: > > > > >> > > > > >>> Hi, > > > > >>> > > > > >>> Here's yet another attempt to handle attributes in JSON, without > > > > >>> changing the encoding for the case that there are no attributes > > > > >>> present. > > > > >>> > > > > >>> In all examples, the attributes "inactive" and "etag" are present. > > > > >>> > > > > >>> Attributes are encoded differently depending on the type of object: > > > > >>> > > > > >>> > > > > >>> leaf > > > > >>> ---- > > > > >>> > > > > >>> Encode the attributes as a sibling to the leaf. > > > > >>> > > > > >>> > > > > >>> leaf foo { > > > > >>> type string; > > > > >>> } > > > > >>> > > > > >>> "foo": "some value"; > > > > >>> "@foo": { > > > > >>> "inactive": true, > > > > >>> "etag": "..."; > > > > >>> } > > > > >>> > > > > >>> > > > > >>> list instance > > > > >>> ------------- > > > > >>> > > > > >>> Encode the attributes within the list instance. > > > > >>> > > > > >>> > > > > >>> list bar { > > > > >>> key name; > > > > >>> leaf name { > > > > >>> type string; > > > > >>> } > > > > >>> ... > > > > >>> } > > > > >>> > > > > >>> "bar": [ > > > > >>> { > > > > >>> "@bar": { > > > > >>> "inactive": true, > > > > >>> "etag": "..." > > > > >>> } > > > > >>> "name": "instance name"; > > > > >>> }] > > > > >>> > > > > >> > > > > >> This could be ambiguous: > > > > >> > > > > >> list bar { > > > > >> key name; > > > > >> leaf name { ... } > > > > >> leaf bar { ... } > > > > >> } > > > > >> > > > > >> Then you don't know whether the attributes belong to the list entry > > > > >> or to the contained leaf. > > > > > > > > > > Right. Then we use "@@bar" for the list / container attributes. > > > > > > > > OK, then this scheme is fine with me. > > > > > > > > > > > Looks more complicated than other solution proposals. > > > > Do we agree that we don't want different encodings for values if there > > are attributes or not? I.e., if my code works when no attributes are > > present, it should also work if there are attributes? > > > > > Not if the normal encoding is painful to use. > The use attributes is going to be rare. > I want the expected "plain" encoding when there are no attributes. > Code that generates JSON and does not care about attributes > must not be rendered useless because the JSON is specially encoded > in RESTCONF. We want to leverage wide knowledge of JSON, > not invent our own incompatible version of it. > > > > > If so, do we have any other proposal? > > > > I am all for a simpler solution! > > > > > > Putting attributes at the sibling level does not work for leaf-lists. See my proposal. > Even for leafs, it is difficult to parse. JSON objects are unordered, > so the "@foo" could appear anywhere, even before "foo". Sure. So what? Since they are unordered, you have to parse everything before starting to process anyway. > The schemes > I proposed always keeps the attributes within the node for the attributes > (just like XML). The proposals I have seen either changes the encoding depending on atribute presence, or are very chatty, which would remove the simplicity of using JSON. > One idea I had was to simply disallow attributes for leaf and leaf-list. > They can only go in container or list nodes. This is restrictive but then > there > will not be any dual decoding possibilities. Yes I think this is a bit too restrictive. (We tried in RESTCONF to let leafs just be fields, but now they are their own resources.) /martin
- [netmod] attributes in draft-lhotka-netmod-yang-j… Dean Bogdanovic
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Martin Bjorklund
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Martin Bjorklund
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Ladislav Lhotka
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Ladislav Lhotka
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Ladislav Lhotka
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Martin Bjorklund
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Ladislav Lhotka
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Ladislav Lhotka
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Ladislav Lhotka
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Martin Bjorklund
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Ladislav Lhotka
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Martin Bjorklund
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Ladislav Lhotka
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Martin Bjorklund
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Ladislav Lhotka
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Martin Bjorklund
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Martin Bjorklund
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Martin Bjorklund
- Re: [netmod] attributes in draft-lhotka-netmod-ya… Andy Bierman