Re: [netmod] attributes in draft-lhotka-netmod-yang-json
Andy Bierman <andy@yumaworks.com> Fri, 21 March 2014 16:43 UTC
Return-Path: <andy@yumaworks.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 9DF491A09F4 for <netmod@ietfa.amsl.com>; Fri, 21 Mar 2014 09:43:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.278
X-Spam-Level:
X-Spam-Status: No, score=-1.278 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=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 XRZ-ScP-X9oU for <netmod@ietfa.amsl.com>; Fri, 21 Mar 2014 09:43:12 -0700 (PDT)
Received: from mail-qg0-f46.google.com (mail-qg0-f46.google.com [209.85.192.46]) by ietfa.amsl.com (Postfix) with ESMTP id 4A89A1A0794 for <netmod@ietf.org>; Fri, 21 Mar 2014 09:43:12 -0700 (PDT)
Received: by mail-qg0-f46.google.com with SMTP id e89so7787842qgf.5 for <netmod@ietf.org>; Fri, 21 Mar 2014 09:43:02 -0700 (PDT)
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:date :message-id:subject:from:to:cc:content-type; bh=r+YsSq0eun4Ew5w2vSX0zuvz8DqJ5viGqw7ApWFHHlo=; b=a3nVgE1nWmCVYAaKz5+22TyDmhMGWwioYaoMxxetKP6gXeFLfe/0Di6LXUFwyo1qff G9DtlYk8vK7EP9sWTHxFebtxoU961TtUUhkfVDERMyu4zs76qiOmK9szsVg+9GOKlBe+ VFvog2cS9C28QiSgjnOUB23YEup3sN0j+l1chJAQbPI993vd84anBoCMi2Tc2DIspWAP obzRj/RQD7vYJio1IUw8PtqesPb7fGxGdJas2bvbx8rjWPBDLXO4SRyatoFRNMmkS6Cs 5VbpdcrvfkUY2Jk0axGACYYnlo4MrrNf9cqebL0I/gLvjnNHkXluKG5KaZAJFXMk3E9k vvYw==
X-Gm-Message-State: ALoCoQkpNwY1B6VOXYJH9KH2/wON/hFg4mAY4yS9FXAcce4kQoTCRrhm4ZU80pf24owtSi3JtDza
MIME-Version: 1.0
X-Received: by 10.140.27.193 with SMTP id 59mr55099694qgx.18.1395420182453; Fri, 21 Mar 2014 09:43:02 -0700 (PDT)
Received: by 10.140.104.194 with HTTP; Fri, 21 Mar 2014 09:43:02 -0700 (PDT)
In-Reply-To: <CABCOCHSM7CwAPFOZ4qzzTtTRRX0LWE2Gb+ZWzmDpwBGSKRGhOg@mail.gmail.com>
References: <3FADE5E8-88AC-4FD0-A2F6-72F408FAFFC4@juniper.net> <20140320.150426.496532825.mbj@tail-f.com> <CABCOCHT3AJR0u=-GV1eM8geL-F2j7HSBsw0uBb1DYDvZio6eCA@mail.gmail.com> <CABCOCHSM7CwAPFOZ4qzzTtTRRX0LWE2Gb+ZWzmDpwBGSKRGhOg@mail.gmail.com>
Date: Fri, 21 Mar 2014 09:43:02 -0700
Message-ID: <CABCOCHQ3xLk9ZaEUTecuCdrSzjQqM19ckQMceFXR=zvdHF6z5w@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary="001a11c1233a4a3f5904f5209450"
Archived-At: http://mailarchive.ietf.org/arch/msg/netmod/M_mZ34nr4ufu6iTa5HVcWOkmyr0
Cc: "netmod@ietf.org" <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: Fri, 21 Mar 2014 16:43:14 -0000
On Fri, Mar 21, 2014 at 8:37 AM, Andy Bierman <andy@yumaworks.com> wrote: > > > > On Thu, Mar 20, 2014 at 8:25 AM, Andy Bierman <andy@yumaworks.com> wrote: > >> >> >> >> On Thu, Mar 20, 2014 at 7:04 AM, Martin Bjorklund <mbj@tail-f.com> wrote: >> >>> Dean Bogdanovic <deanb@juniper.net> wrote: >>> > Hi, >>> > >>> > In draft yang leaf node is defined as name value pair in json >>> > >>> > If it would be represented, as an object then we can assign attributes >>> to it. >>> > >>> > Example >>> > "host-name" { >>> > "data" : "router", >>> > "attributes" : { "protect" : protect} >>> > } >>> > >>> > We need attributes for several things, so lets try to figure out how >>> to enable >>> > them. >>> >>> I agree that the lack of attributes is a problem with the JSON >>> mapping. >>> >>> The problem with your solution is that it adds noise to the normal >>> case where there are no attributes. We're using another encoding: >>> >>> "host-name": "router", >>> "@host-name": { >>> "protect": "protect", >>> ... >>> } >>> >>> Yep, not very elegant... >>> >>> > > More importantly, it doesn't work for lists or leaf-lists. > The attributes cannot be siblings (or ancestors) of the target data node. > > Consider the following YANG data-stmt, and how an attribute > would be encoded in every data node (as a worse-case example). > > > container top { > list A { > key id; > leaf id { type string; } > leaf-list aa { type int8; } > } > leaf host-name { type string; } > } > > Plain JSON > > { "top" : { > "A" : [ > { "id":"entry-1", > "aa": [42, 19] > }, > { "id":"entry-2", > "aa" : [99, 11] > } ] > }, > "host-name":"router" > oops -- host-name should be up 1 level, sibling of A Same mistake below... Andy } > > Add attribute to each node: > leaf owner { type string; } > > With Owner Attribute using RESTCONF encoding: > > { "top" : { > "@owner":"system", > "A" : [ > { "@owner":"admin1", > "id" : { > "@owner":"admin1", > "id": "entry-1" > }, > "aa" : [ { "@owner":"admin1", "aa": 42 }, > { "@owner":"admin1", "aa": 19 } ] > }, > { "@owner":"admin2", > "id" : { > "@owner":"admin2", > "id": "entry-2" > }, > "aa" : [ { "@owner":"admin2", "aa": 99 }, > { "@owner":"admin2", "aa": 11 } ] > } ] > }, > "host-name" : { "@owner":"system", > "host-name":"router" } > } > > > This is not elegant either, but it works for all YANG node types. > How would your encoding look for this example? > > > > Andy > > > > >> >> This is how RESTCONF encodes these attributes in a leaf: >> (see sec. 3.4.1) >> >> "host-name" : { >> "@protect" : "protect", >> "host-name" : "router" >> } >> >> Lada says that this is a YANG to JSON mapping and YANG has no attributes, >> so the attribute encoding is in RESTCONF. I think it would be better >> if there was 1 mapping, instead of a different mapping in each protocol >> that uses this JSON encoding of YANG data. >> >> I do not think YANG needs to model attributes! >> The protocol may need to use them to tag data with meta-data. >> We do not need to model some leafs as attributes and others >> as child nodes in YANG data models. Use RelaxNG instead >> of YANG to do that. >> >> >> >> >>> /martin >>> >>> >> Andy >> >> >>> _______________________________________________ >>> netmod mailing list >>> netmod@ietf.org >>> https://www.ietf.org/mailman/listinfo/netmod >>> >> >> >
- [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