Re: [netmod] attributes in draft-lhotka-netmod-yang-json

Martin Bjorklund <mbj@tail-f.com> Wed, 26 March 2014 13:57 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 DB8C91A030D for <netmod@ietfa.amsl.com>; Wed, 26 Mar 2014 06:57:40 -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 vINH-U8sT9cV for <netmod@ietfa.amsl.com>; Wed, 26 Mar 2014 06:57:39 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [109.74.15.94]) by ietfa.amsl.com (Postfix) with ESMTP id 4011A1A00FB for <netmod@ietf.org>; Wed, 26 Mar 2014 06:57:39 -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 443D837C320; Wed, 26 Mar 2014 14:57:37 +0100 (CET)
Date: Wed, 26 Mar 2014 14:57:37 +0100
Message-Id: <20140326.145737.580242632261637255.mbj@tail-f.com>
To: lhotka@nic.cz
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <m2y4zxysna.fsf@ip-94-113-93-91.net.upcbroadband.cz>
References: <CABCOCHQdE5JwJBrQpGx_eFxr8ijGvKr0-_OuTUiPZH_bX+a1FQ@mail.gmail.com> <20140326.143440.588668936751872922.mbj@tail-f.com> <m2y4zxysna.fsf@ip-94-113-93-91.net.upcbroadband.cz>
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/OZzxGgQHMfOGL9FLPxzBPjDGe74
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 13:57:41 -0000

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.


/martin



> 
> Lada 
> 
> >
> > container
> > ---------
> >
> > Encode the attributes within the container.
> >
> >
> >   container baz;
> >
> >   "baz": {
> >      "@baz": {
> >         "inactive": true,
> >         "etag": "..."
> >        }
> >   }
> >
> >
> > leaf-list
> > ---------
> >
> > Encode the attributes as a sibling to the leaf-list, with an array of
> > same length as the leaf-list itself.
> >
> >
> >   leaf-list buzz {
> >      type string;
> >   }
> >
> >   "buzz": [ "val1", "val2", "val3" ],
> >   "@buzz: [ null, 
> >             { "inactive": true,
> >               "etag": "..."
> >             }
> >             null]
> >
> >
> >
> > /martin
> 
> -- 
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: E74E8C0C
>