
From nobody Mon Jun  1 07:06:11 2015
Return-Path: <dblair@cisco.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 2738F1ACE27 for <netmod@ietfa.amsl.com>; Mon,  1 Jun 2015 07:06:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level: 
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 5Jl3TTAfcKrj for <netmod@ietfa.amsl.com>; Mon,  1 Jun 2015 07:06:08 -0700 (PDT)
Received: from alln-iport-5.cisco.com (alln-iport-5.cisco.com [173.37.142.92]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9B1EE1ACE24 for <netmod@ietf.org>; Mon,  1 Jun 2015 07:06:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=2785; q=dns/txt; s=iport; t=1433167568; x=1434377168; h=from:to:subject:date:message-id:in-reply-to:content-id: content-transfer-encoding:mime-version; bh=tV0FL0UVQmXmL50asSejMVF9vS+ztYFLUAsEjRQklTw=; b=mhZo94sUmTk4KQ+pUnUsK1UBkLdTnv4yPmwO0Npb/4A8rWQ7PdQckfnx HHp5yFont+Rbgyhj+tU59USInjhIfeeJU/wy4ACPtY+gAeWfcUBwbaVH/ 4HMob/LW/L3vV6+hoZ13bOAQx7JtocQtx/UHnxU12GxBRELpYbdGGLjpm U=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0D9AwDoZWxV/5pdJa1TCYMQVF4GvlUJgVAKhS1KAoEvOBQBAQEBAQEBgQqEIwEBBAEBAWsdAQhtCyUCBAESiC0N1nABAQEBAQEEAQEBAQEBARcEi0OEKik6hC0FjAqHAIsSlzIjYYMXb4FGgQEBAQE
X-IronPort-AV: E=Sophos;i="5.13,533,1427760000"; d="scan'208";a="155262422"
Received: from rcdn-core-3.cisco.com ([173.37.93.154]) by alln-iport-5.cisco.com with ESMTP; 01 Jun 2015 14:06:08 +0000
Received: from xhc-rcd-x06.cisco.com (xhc-rcd-x06.cisco.com [173.37.183.80]) by rcdn-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id t51E6753022321 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Mon, 1 Jun 2015 14:06:07 GMT
Received: from xmb-aln-x07.cisco.com ([169.254.2.68]) by xhc-rcd-x06.cisco.com ([173.37.183.80]) with mapi id 14.03.0195.001; Mon, 1 Jun 2015 09:06:07 -0500
From: "Dana Blair (dblair)" <dblair@cisco.com>
To: "Sterne, Jason (Jason)" <jason.sterne@alcatel-lucent.com>, "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [netmod] mandatory ACL type (was "comments on acl-model-02")
Thread-Index: AQHQdfPEZpMxXMUDZEGAEEBhO3kVwp2YDQ6A
Date: Mon, 1 Jun 2015 14:06:07 +0000
Message-ID: <D191DCB3.2E2D9B%dblair@cisco.com>
In-Reply-To: <A125E53CE190A749957C19483DC79F9F5C9EBDB7@US70TWXCHMBA11.zam.alcatel-lucent.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.3.8.130913
x-originating-ip: [10.135.16.25]
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <192168B68DDDAD41A71B1F2E1FE1AF45@emea.cisco.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/lw3Ih72FL_jU4k5r1tMBTp9cpnc>
Subject: Re: [netmod] mandatory ACL type (was "comments on acl-model-02")
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: Mon, 01 Jun 2015 14:06:10 -0000

On 4/13/15, 10:11 AM, "Sterne, Jason (Jason)"
<jason.sterne@alcatel-lucent.com> wrote:

>Hi guys,
>
>Extracting my comments about ACL type into its own thread.  I saw Martin
>also had some comments on this topic.
>
>The ACL type was mandatory in an older version of the draft and I think
>we should put it back as mandatory.  Implementations that don't *need*
>that leaf value can work fine whether they get it during ACL creation or
>not but some implementations need to know the type.

We don=B9t want to make the ACL type mandatory because then we have to a
create a new type for every combination of match criteria.  The model
should support any combination of
match criteria with typing optional to map to pre-existing
implementations.  This is a tradeoff between making the model backward
compatible with existing implementations but
make it flexible enough so that a new match criteria doesn=B9t require a ne=
w
type.

>
>It would also be good to create separate identities for
>IPv4-access-control-list and IPv6-access-control-list instead of bundling
>them into IP-access-control-list. If we're separating into types in the
>model it should be the 3 basic types in the base model:  v4, v6 and enet.

A vendor specific augmentation/implementation could do this, but the model
needs to support inclusion of ipv4 and ipv6 in the same acl.  I=B9m aware o=
f
outstanding customers
requests for combining ipv4 rules and ipv6 rules in the same acl, but most
implementations have not caught up to this.  When it comes to managing
acls there shouldn=B9t be
this distinction between IPv6 and IPv4.  They are both IP addresses.

>
>That would also help if we decide to put some constraints that
>allow/disallow certain matching criteria when the type is a specific
>value (e.g. don't allow a v6 address match in a v4 list).
>  We'd have to be careful about how those constraints are formulated
>though - especially if we want to allow augmentations of the list-type
>for "mixed" ACLs. A new "mixed-v4-enet" type (identity) would also need
>to use the destination-ipv4-network matching criteria (can "when" or
>"must" logic be changed by an augmentation ?  I'm not sure that works).

Yes, would have to be careful, and defining constraints based on existing
implementations could be a very slippery slope.   Vendors should be able
to map to their implementations and/or
have a proprietary augmentation that constrains things more according to
their implementation.   Proprietary augmentations could be proposed, and
reviewed for standardization.

thanks,
Dana

>
>Regards,
>Jason
>
>
>_______________________________________________
>netmod mailing list
>netmod@ietf.org
>https://www.ietf.org/mailman/listinfo/netmod


From nobody Mon Jun  1 11:32:02 2015
Return-Path: <nabil.michraf@gmail.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 164791B30CD for <netmod@ietfa.amsl.com>; Mon,  1 Jun 2015 11:31:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level: 
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_PASS=-0.001] 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 HD7bBISQojld for <netmod@ietfa.amsl.com>; Mon,  1 Jun 2015 11:31:52 -0700 (PDT)
Received: from mail-la0-x22d.google.com (mail-la0-x22d.google.com [IPv6:2a00:1450:4010:c03::22d]) (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 EFBE91B30C3 for <netmod@ietf.org>; Mon,  1 Jun 2015 11:31:51 -0700 (PDT)
Received: by laei3 with SMTP id i3so20432229lae.3 for <netmod@ietf.org>; Mon, 01 Jun 2015 11:31:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;  h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=2K3Bmz+V6hEE0RJdllKaTnAHaOGYq28gii9IlwRIxqQ=; b=dx1v+/Yhlsor83nLDs/bE9qMB042VmyCu5eamvOkc7j1dhH6iNKNaGP8TjEo3MY/FW ow4y4sqv+CJQ9SLaMhUO+rlNx8fWfFsFHxU6bK+amezhUlyq6rTLqfz4DghRX2Y4Czir zKW4drgEZLxBUDiEcSReFKDySuFUSROl2o35QEAOQM+8Ep05mPWiGm9h0ek2BFfdWQEi kSGPPQpaY9rCmJEF8qHYpQ+lXqOjeGicwhRkxZCdTPBDIy8QSrmaxg/6PLOSKkgmBgN2 GC+0jLj3n3pdm3yf6q9109OYsXbj9IYY/CwOXKJfyK2VB4jO6Xct03PVjgLLfb13bhld 4bdA==
MIME-Version: 1.0
X-Received: by 10.112.219.201 with SMTP id pq9mr1722022lbc.109.1433183510396;  Mon, 01 Jun 2015 11:31:50 -0700 (PDT)
Received: by 10.25.19.85 with HTTP; Mon, 1 Jun 2015 11:31:50 -0700 (PDT)
In-Reply-To: <D191DCB3.2E2D9B%dblair@cisco.com>
References: <A125E53CE190A749957C19483DC79F9F5C9EBDB7@US70TWXCHMBA11.zam.alcatel-lucent.com> <D191DCB3.2E2D9B%dblair@cisco.com>
Date: Mon, 1 Jun 2015 11:31:50 -0700
Message-ID: <CAF6LO0_kTQ-SncSWypzG1qy_Rw4RemTzoK=OoBVFcXq=zqBivw@mail.gmail.com>
From: Nabil Michraf <nabil.michraf@gmail.com>
To: "Dana Blair (dblair)" <dblair@cisco.com>
Content-Type: multipart/alternative; boundary=001a11c25cac09059c0517790a60
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/npB0BbzKisC_3XDYm93qiRcy5s4>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] mandatory ACL type (was "comments on acl-model-02")
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: Mon, 01 Jun 2015 18:31:58 -0000

--001a11c25cac09059c0517790a60
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi all,

Can you please clarify if we are talking about
https://www.ietf.org/id/draft-ietf-netmod-acl-model-02.txt or some other
draft?
I just want to make sure I am looking at the right ACL model version.

Thank you,
Nabil

On Mon, Jun 1, 2015 at 7:06 AM, Dana Blair (dblair) <dblair@cisco.com>
wrote:

>
>
> On 4/13/15, 10:11 AM, "Sterne, Jason (Jason)"
> <jason.sterne@alcatel-lucent.com> wrote:
>
> >Hi guys,
> >
> >Extracting my comments about ACL type into its own thread.  I saw Martin
> >also had some comments on this topic.
> >
> >The ACL type was mandatory in an older version of the draft and I think
> >we should put it back as mandatory.  Implementations that don't *need*
> >that leaf value can work fine whether they get it during ACL creation or
> >not but some implementations need to know the type.
>
> We don=C2=B9t want to make the ACL type mandatory because then we have to=
 a
> create a new type for every combination of match criteria.  The model
> should support any combination of
> match criteria with typing optional to map to pre-existing
> implementations.  This is a tradeoff between making the model backward
> compatible with existing implementations but
> make it flexible enough so that a new match criteria doesn=C2=B9t require=
 a new
> type.
>
> >
> >It would also be good to create separate identities for
> >IPv4-access-control-list and IPv6-access-control-list instead of bundlin=
g
> >them into IP-access-control-list. If we're separating into types in the
> >model it should be the 3 basic types in the base model:  v4, v6 and enet=
.
>
> A vendor specific augmentation/implementation could do this, but the mode=
l
> needs to support inclusion of ipv4 and ipv6 in the same acl.  I=C2=B9m aw=
are of
> outstanding customers
> requests for combining ipv4 rules and ipv6 rules in the same acl, but mos=
t
> implementations have not caught up to this.  When it comes to managing
> acls there shouldn=C2=B9t be
> this distinction between IPv6 and IPv4.  They are both IP addresses.
>
> >
> >That would also help if we decide to put some constraints that
> >allow/disallow certain matching criteria when the type is a specific
> >value (e.g. don't allow a v6 address match in a v4 list).
> >  We'd have to be careful about how those constraints are formulated
> >though - especially if we want to allow augmentations of the list-type
> >for "mixed" ACLs. A new "mixed-v4-enet" type (identity) would also need
> >to use the destination-ipv4-network matching criteria (can "when" or
> >"must" logic be changed by an augmentation ?  I'm not sure that works).
>
> Yes, would have to be careful, and defining constraints based on existing
> implementations could be a very slippery slope.   Vendors should be able
> to map to their implementations and/or
> have a proprietary augmentation that constrains things more according to
> their implementation.   Proprietary augmentations could be proposed, and
> reviewed for standardization.
>
> thanks,
> Dana
>
> >
> >Regards,
> >Jason
> >
> >
> >_______________________________________________
> >netmod mailing list
> >netmod@ietf.org
> >https://www.ietf.org/mailman/listinfo/netmod
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a11c25cac09059c0517790a60
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,<div><br></div><div>Can you please clarify if we ar=
e talking about=C2=A0<a href=3D"https://www.ietf.org/id/draft-ietf-netmod-a=
cl-model-02.txt">https://www.ietf.org/id/draft-ietf-netmod-acl-model-02.txt=
</a> or some other draft?<div>I just want to make sure I am looking at the =
right ACL model version.</div><div><br></div><div>Thank you,</div><div>Nabi=
l<br><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Mon, Jun =
1, 2015 at 7:06 AM, Dana Blair (dblair) <span dir=3D"ltr">&lt;<a href=3D"ma=
ilto:dblair@cisco.com" target=3D"_blank">dblair@cisco.com</a>&gt;</span> wr=
ote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style=
:solid;padding-left:1ex"><br>
<br>
On 4/13/15, 10:11 AM, &quot;Sterne, Jason (Jason)&quot;<br>
<span class=3D"">&lt;<a href=3D"mailto:jason.sterne@alcatel-lucent.com">jas=
on.sterne@alcatel-lucent.com</a>&gt; wrote:<br>
<br>
&gt;Hi guys,<br>
&gt;<br>
&gt;Extracting my comments about ACL type into its own thread.=C2=A0 I saw =
Martin<br>
&gt;also had some comments on this topic.<br>
&gt;<br>
&gt;The ACL type was mandatory in an older version of the draft and I think=
<br>
&gt;we should put it back as mandatory.=C2=A0 Implementations that don&#39;=
t *need*<br>
&gt;that leaf value can work fine whether they get it during ACL creation o=
r<br>
&gt;not but some implementations need to know the type.<br>
<br>
</span>We don=C2=B9t want to make the ACL type mandatory because then we ha=
ve to a<br>
create a new type for every combination of match criteria.=C2=A0 The model<=
br>
should support any combination of<br>
match criteria with typing optional to map to pre-existing<br>
implementations.=C2=A0 This is a tradeoff between making the model backward=
<br>
compatible with existing implementations but<br>
make it flexible enough so that a new match criteria doesn=C2=B9t require a=
 new<br>
<span class=3D"">type.<br>
<br>
&gt;<br>
&gt;It would also be good to create separate identities for<br>
&gt;IPv4-access-control-list and IPv6-access-control-list instead of bundli=
ng<br>
&gt;them into IP-access-control-list. If we&#39;re separating into types in=
 the<br>
&gt;model it should be the 3 basic types in the base model:=C2=A0 v4, v6 an=
d enet.<br>
<br>
</span>A vendor specific augmentation/implementation could do this, but the=
 model<br>
needs to support inclusion of ipv4 and ipv6 in the same acl.=C2=A0 I=C2=B9m=
 aware of<br>
outstanding customers<br>
requests for combining ipv4 rules and ipv6 rules in the same acl, but most<=
br>
implementations have not caught up to this.=C2=A0 When it comes to managing=
<br>
acls there shouldn=C2=B9t be<br>
this distinction between IPv6 and IPv4.=C2=A0 They are both IP addresses.<b=
r>
<span class=3D""><br>
&gt;<br>
&gt;That would also help if we decide to put some constraints that<br>
&gt;allow/disallow certain matching criteria when the type is a specific<br=
>
&gt;value (e.g. don&#39;t allow a v6 address match in a v4 list).<br>
&gt;=C2=A0 We&#39;d have to be careful about how those constraints are form=
ulated<br>
&gt;though - especially if we want to allow augmentations of the list-type<=
br>
&gt;for &quot;mixed&quot; ACLs. A new &quot;mixed-v4-enet&quot; type (ident=
ity) would also need<br>
&gt;to use the destination-ipv4-network matching criteria (can &quot;when&q=
uot; or<br>
&gt;&quot;must&quot; logic be changed by an augmentation ?=C2=A0 I&#39;m no=
t sure that works).<br>
<br>
</span>Yes, would have to be careful, and defining constraints based on exi=
sting<br>
implementations could be a very slippery slope.=C2=A0 =C2=A0Vendors should =
be able<br>
to map to their implementations and/or<br>
have a proprietary augmentation that constrains things more according to<br=
>
their implementation.=C2=A0 =C2=A0Proprietary augmentations could be propos=
ed, and<br>
reviewed for standardization.<br>
<br>
thanks,<br>
Dana<br>
<div class=3D""><div class=3D"h5"><br>
&gt;<br>
&gt;Regards,<br>
&gt;Jason<br>
&gt;<br>
&gt;<br>
&gt;_______________________________________________<br>
&gt;netmod mailing list<br>
&gt;<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
&gt;<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_bla=
nk">https://www.ietf.org/mailman/listinfo/netmod</a><br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_blank">=
https://www.ietf.org/mailman/listinfo/netmod</a><br>
</div></div></blockquote></div><br></div></div></div></div>

--001a11c25cac09059c0517790a60--


From nobody Mon Jun  1 14:00:15 2015
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 8E60D1B2BC7 for <netmod@ietfa.amsl.com>; Mon,  1 Jun 2015 14:00:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.979
X-Spam-Level: 
X-Spam-Status: No, score=-1.979 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 5Bj2YUq_SBHt for <netmod@ietfa.amsl.com>; Mon,  1 Jun 2015 14:00:11 -0700 (PDT)
Received: from mail-lb0-f179.google.com (mail-lb0-f179.google.com [209.85.217.179]) (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 302561B2B68 for <netmod@ietf.org>; Mon,  1 Jun 2015 14:00:11 -0700 (PDT)
Received: by lbcmx3 with SMTP id mx3so92270344lbc.1 for <netmod@ietf.org>; Mon, 01 Jun 2015 14:00:09 -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 :content-transfer-encoding; bh=IsAE2K6RztG9FC0AGm9Ty1vpa1g2kpDoIumA2Do15TQ=; b=jqTrLoG5SUKpE/KH1yJdGYIvijl8kTtA2Y7NN990Q/WH3HO7FLn5fChkR7TfY2QtHU ZOOKPNHioDVrCezlMUpUMN4/vbyQc3QdjeEVqxhM5o9YujKhbj2VwnjIKMLkfdxVFlQE hyQgtrsy5C1FTU4JYW8aTViEALabJNJTQ6vqs6v9OiPgb91xxzS8s89Euc/0GCWZKpO9 GDiUz/XnQjkRJMhPD/5AvtKyK8Epj9rE6PZrj4LnxEr296DAviNEkkRAkD3o46IX5ufA uuhh4TM+bFcepG7U3iDyosgM+qV29ePI2UAq3wEiZy+dDdQe3kar9L6wpGkjOqFFBvti TM1Q==
X-Gm-Message-State: ALoCoQnlrDFe7HIhMy1OLEhqnI6kUorTPbcVHTlipeNYqcUgJWiDUv2nXq+y623SAxZKoXWU1/7y
MIME-Version: 1.0
X-Received: by 10.152.115.207 with SMTP id jq15mr14913954lab.119.1433192409739;  Mon, 01 Jun 2015 14:00:09 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Mon, 1 Jun 2015 14:00:09 -0700 (PDT)
In-Reply-To: <CAF6LO0_kTQ-SncSWypzG1qy_Rw4RemTzoK=OoBVFcXq=zqBivw@mail.gmail.com>
References: <A125E53CE190A749957C19483DC79F9F5C9EBDB7@US70TWXCHMBA11.zam.alcatel-lucent.com> <D191DCB3.2E2D9B%dblair@cisco.com> <CAF6LO0_kTQ-SncSWypzG1qy_Rw4RemTzoK=OoBVFcXq=zqBivw@mail.gmail.com>
Date: Mon, 1 Jun 2015 14:00:09 -0700
Message-ID: <CABCOCHQ_8OSVVW8E_wT_7Fdnj-KkXevH+cBaxzoxkXvwwEQKrQ@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Nabil Michraf <nabil.michraf@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/1fJiEOrEV6eQAzRQqI615mrQ6-w>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] mandatory ACL type (was "comments on acl-model-02")
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: Mon, 01 Jun 2015 21:00:13 -0000

Hi,


That appears to be the current version on the data-tracker.
I agree with you that the access-control-list-type leaf should
be mandatory.

I noticed that the example in Figure 2 has an extra 'top'
container and the namespace for 'access-lists' is missing.


Andy

On Mon, Jun 1, 2015 at 11:31 AM, Nabil Michraf <nabil.michraf@gmail.com> wr=
ote:
> Hi all,
>
> Can you please clarify if we are talking about
> https://www.ietf.org/id/draft-ietf-netmod-acl-model-02.txt or some other
> draft?
> I just want to make sure I am looking at the right ACL model version.
>
> Thank you,
> Nabil
>
> On Mon, Jun 1, 2015 at 7:06 AM, Dana Blair (dblair) <dblair@cisco.com>
> wrote:
>>
>>
>>
>> On 4/13/15, 10:11 AM, "Sterne, Jason (Jason)"
>> <jason.sterne@alcatel-lucent.com> wrote:
>>
>> >Hi guys,
>> >
>> >Extracting my comments about ACL type into its own thread.  I saw Marti=
n
>> >also had some comments on this topic.
>> >
>> >The ACL type was mandatory in an older version of the draft and I think
>> >we should put it back as mandatory.  Implementations that don't *need*
>> >that leaf value can work fine whether they get it during ACL creation o=
r
>> >not but some implementations need to know the type.
>>
>> We don=C2=B9t want to make the ACL type mandatory because then we have t=
o a
>> create a new type for every combination of match criteria.  The model
>> should support any combination of
>> match criteria with typing optional to map to pre-existing
>> implementations.  This is a tradeoff between making the model backward
>> compatible with existing implementations but
>> make it flexible enough so that a new match criteria doesn=C2=B9t requir=
e a new
>> type.
>>
>> >
>> >It would also be good to create separate identities for
>> >IPv4-access-control-list and IPv6-access-control-list instead of bundli=
ng
>> >them into IP-access-control-list. If we're separating into types in the
>> >model it should be the 3 basic types in the base model:  v4, v6 and ene=
t.
>>
>> A vendor specific augmentation/implementation could do this, but the mod=
el
>> needs to support inclusion of ipv4 and ipv6 in the same acl.  I=C2=B9m a=
ware of
>> outstanding customers
>> requests for combining ipv4 rules and ipv6 rules in the same acl, but mo=
st
>> implementations have not caught up to this.  When it comes to managing
>> acls there shouldn=C2=B9t be
>> this distinction between IPv6 and IPv4.  They are both IP addresses.
>>
>> >
>> >That would also help if we decide to put some constraints that
>> >allow/disallow certain matching criteria when the type is a specific
>> >value (e.g. don't allow a v6 address match in a v4 list).
>> >  We'd have to be careful about how those constraints are formulated
>> >though - especially if we want to allow augmentations of the list-type
>> >for "mixed" ACLs. A new "mixed-v4-enet" type (identity) would also need
>> >to use the destination-ipv4-network matching criteria (can "when" or
>> >"must" logic be changed by an augmentation ?  I'm not sure that works).
>>
>> Yes, would have to be careful, and defining constraints based on existin=
g
>> implementations could be a very slippery slope.   Vendors should be able
>> to map to their implementations and/or
>> have a proprietary augmentation that constrains things more according to
>> their implementation.   Proprietary augmentations could be proposed, and
>> reviewed for standardization.
>>
>> thanks,
>> Dana
>>
>> >
>> >Regards,
>> >Jason
>> >
>> >
>> >_______________________________________________
>> >netmod mailing list
>> >netmod@ietf.org
>> >https://www.ietf.org/mailman/listinfo/netmod
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>


From nobody Tue Jun  2 23:26:37 2015
Return-Path: <asechoud@cisco.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 8C13E1B358B for <netmod@ietfa.amsl.com>; Tue,  2 Jun 2015 23:26:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level: 
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 ixZS--gC8beH for <netmod@ietfa.amsl.com>; Tue,  2 Jun 2015 23:26:34 -0700 (PDT)
Received: from rcdn-iport-8.cisco.com (rcdn-iport-8.cisco.com [173.37.86.79]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C999C1B3588 for <netmod@ietf.org>; Tue,  2 Jun 2015 23:26:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=3245; q=dns/txt; s=iport; t=1433312796; x=1434522396; h=from:to:cc:subject:date:message-id:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=98IXewzaZf8F/6mGUDERJ2yXpWJroSTgI4PraBTCXrA=; b=XHR1iQjR3XRRBz/8Du5Yt0HfC9hasKAE2H2kEvbqJyCByqQ9cmrRL1LP Osu2a2UhZX/41IEnr3+/NVCwjW9NN64hZ4qkb/p1K6CPhsGSZBGYXqpmM z5sm6vImUKJspgdMfZyxSwYyNUwigAIFgyw+694xjf0t0gAiRBLMzWkme 4=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0B3BQDjnG5V/5NdJa1YA4MQVF4GvguCPwqFLUoCgUZMAQEBAQEBgQuEIwEBBAEBATc0Cw4EAQgOAggeKwwLJQIEDgWILQ3aIgEBAQEBAQEBAQEBAQEBAQEBAQEBARcEiz+EdhAHEYQcBZBTgj+EOYZlgS6Dc45Kg1kjg3hvgUaBAQEBAQ
X-IronPort-AV: E=Sophos;i="5.13,545,1427760000"; d="scan'208";a="17041999"
Received: from rcdn-core-11.cisco.com ([173.37.93.147]) by rcdn-iport-8.cisco.com with ESMTP; 03 Jun 2015 06:26:35 +0000
Received: from xhc-aln-x13.cisco.com (xhc-aln-x13.cisco.com [173.36.12.87]) by rcdn-core-11.cisco.com (8.14.5/8.14.5) with ESMTP id t536QXZB001756 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Wed, 3 Jun 2015 06:26:34 GMT
Received: from xmb-rcd-x07.cisco.com ([169.254.7.91]) by xhc-aln-x13.cisco.com ([173.36.12.87]) with mapi id 14.03.0195.001; Wed, 3 Jun 2015 01:26:33 -0500
From: "Aseem Choudhary (asechoud)" <asechoud@cisco.com>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
Thread-Topic: [netmod] diffserv model questions
Thread-Index: AQHQncY8Oez9ejavnkimcIsreBO22g==
Date: Wed, 3 Jun 2015 06:26:33 +0000
Message-ID: <D193E99E.D4D2B%asechoud@cisco.com>
In-Reply-To: <D180F96C.D0666%asechoud@cisco.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.2.3.120616
x-originating-ip: [10.24.138.171]
Content-Type: text/plain; charset="us-ascii"
Content-ID: <D8FA316837B8D44DBB0E0A9B321C70A4@emea.cisco.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/DjoGMguc8JM9D8o18rTNKEgb2pk>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] diffserv model questions
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, 03 Jun 2015 06:26:36 -0000

Hi Juergen,

New draft is posted.

https://tools.ietf.org/html/draft-asechoud-netmod-diffserv-model-02

Let us know of any further comments.

Regards,
Aseem

On 5/19/15, 3:49 PM, "Aseem Choudhary (asechoud)" <asechoud@cisco.com>
wrote:

>
>
>On 5/19/15, 1:39 PM, "Juergen Schoenwaelder"
><j.schoenwaelder@jacobs-university.de> wrote:
>
>>On Tue, May 19, 2015 at 07:57:26PM +0000, Aseem Choudhary (asechoud)
>>wrote:
>>> Hi Juergen,
>>>=20
>>> Please find the replies inline.
>>>=20
>>> -thanks,
>>> Aseem
>>>=20
>>> On 5/18/15, 10:20 AM, "Juergen Schoenwaelder"
>>> <j.schoenwaelder@jacobs-university.de> wrote:
>>>=20
>>> >Hi,
>>> >
>>> >what is the purpose of the feature policy-template-support in
>>> >draft-asechoud-netmod-diffserv-model-01.txt? Can I use the model
>>> >without this feature?
>>> >
>>> >I also note that no implementable object is left in
>>> >ietf-diffserv-policy if I do not support the feature
>>> >policy-template-support. Is this useful?
>>>=20
>>> [AC] ietf-diffserv-policy module defines policy as a template. The
>>>other
>>> option is to configure & apply it directly under target as defined in
>>> ietf-diffserv-target module.
>>
>>OK, but why is there a feature since this 'policy' is an extension
>>defined in a separate YANG model?
>
>[AC] OK, I see the point you are making, but there are some changes
>regarding it in next version which will alleviate your concern.
>>
>>> >Is it a bug or a feature to support inline classifier definitions? Is
>>> >it correct that actions are always 'inline' so to say? Is this a bug
>>> >or a feature?
>>>=20
>>> [AC] Classifier can be defined inline or can be defined as a separate
>>> template and referred in the policy definition.
>>
>>Yes, but is this a bug or a feature? From an implementation
>>perspective, this sounds like extra cost. So what is the benefit of
>>having both options?
>
>[AC] There are pros and cons of defining either way: When defined as a
>separate template, it becomes reusable objects. Any change in the object
>updates the referencing objects too.
>     While when defined inline, it is local change only. Any modification
>has to be done on every instance.
>    There are use-cases where users may use template and others where they
>define inline. There are vendors which support either/or/both. Also,
>Inline is defined as a feature.
>
>>
>>> All the actions are defined inline. This is the most common use-case.
>>
>>Hm. Why are classifiers and actions treated differently? Perhaps some
>>discussion of the design decisions somewhere in the document would be
>>useful.
>
>[AC]  Actions are typically not reusable objects. Like metering rate or
>RED thresholds are specific values vs classification of voice, video or
>data.
>      I will take this point of adding to the document.
>>
>>/js
>>
>>--=20
>>Juergen Schoenwaelder           Jacobs University Bremen gGmbH
>>Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
>>Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>
>_______________________________________________
>netmod mailing list
>netmod@ietf.org
>https://www.ietf.org/mailman/listinfo/netmod


From nobody Wed Jun  3 07:14:03 2015
Return-Path: <lhotka@nic.cz>
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 8BC7B1A88C1 for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 07:14:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.5
X-Spam-Level: 
X-Spam-Status: No, score=-0.5 tagged_above=-999 required=5 tests=[BAYES_05=-0.5] 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 2BCEjvPk9w7I for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 07:14:00 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id C63EB1A88B6 for <netmod@ietf.org>; Wed,  3 Jun 2015 07:13:56 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 1B7BB1CC0293; Wed,  3 Jun 2015 16:13:58 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Norm Strahle <nstrahle@juniper.net>, "netmod\@ietf.org" <netmod@ietf.org>
In-Reply-To: <BY1PR0501MB11115EAA21C76AC317852796CFB60@BY1PR0501MB1111.namprd05.prod.outlook.com>
References: <BY1PR0501MB11115EAA21C76AC317852796CFB60@BY1PR0501MB1111.namprd05.prod.outlook.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Wed, 03 Jun 2015 16:13:54 +0200
Message-ID: <m2sia83mn1.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/PZVOX3wRItuWVD0LXFdXm0rzxYE>
Subject: Re: [netmod] need input on diffserv Yang model
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, 03 Jun 2015 14:14:02 -0000

Hi Norm,

Norm Strahle <nstrahle@juniper.net> writes:

> Hey folks,
>
> The diffserv group looking at some alternatives for supporting
> various vendor implementations.
>
> The main component in differv model is the policy. Basically it looks
> something like:
>
>     policy
>         classifier-1
>             action-1
>             action-2
>             child-policy
>         classifier-n
>             action-x
>             action-y
>             child-policy
>         etc.
>
> A classifier will classify on things like address, port, dscp. Example actions
> are: discard, mark dscp, meter, schedule and queue. A child policy can
> be attached under a classifier to add further classification and
> corresponding actions. As shown here, the policy is fairly flexible and
> extensible. For example, one could have multiple schedulers in a single
> policy under different classifiers, one could have n-number of child
> policies, etc.
>
> Two issues we are running into are:
> - in a base model, how do we limit various combinations of classifier/action/
>    child-policy for vendors that don't support them

This is a typical situation, and there are three possible approaches
that often need to be combined:

- For parameters supported only by a single vendor, put them into a
  separate vendor-specific module, and augment the generic data model
  with them. Every device will this typically advertise the generic
  module(s) and the vendor-specific one.

- For parameters that are supported by some vendors, define an
  appropriate feature, and use "if-feature" statement.

- For parameters that should normally be supported, devices that don't
  comply may declare a deviation (although it turns out that most
  vendors hate to do so and consider it bad PR). 

> - how do we limit the model to not support things that don't make
>    sense in general, e.g. a child policy with a scheduler underneath a policy
>    with queue

Using "must" statements if possible, otherwise by specifying the rules
in a description.

Lada

>
> We are discussing some approaches, and are looking to a wider audiance for
> suggestions.  Some approaches we are considering for some of the issues:
>  - if-feature conditions to allow some vendors to not support some functionality
>  - "must" statements to limit some combinations of classifer/action/child-policy
>  - alternatively using more explicit modules (i.e. less flexible) to restrict
>    what capabilities are available
>  - using standard and vendor-specific extensions to define additional
>    capabilities.
>
> Likely some combination of some/all of these will be needed.
>
> We are looking at two alternatives for defining queues and schedulers.
>  - The first approach is using the generic policy definition above. Queues
>   would be defined in a child policy underneath an action/classifier with
>   a scheduler.
>  - The second approach would be to define explicit queue policy module and
>   a separate scheduler module (in addition to the scheduler action). The
>   queue policy could be referenced by either a scheduler action (supported
>   by some vendors) or a scheduler module attached directly to an interface
>   (supported by other vendors).
>
> The advantages of the first approach is that we are defining a very general
> and consistent approach to a policy module. The difficulty is that some
> vendors do not support child policies, schedulers as actions, and may be
> more restrictive as to how one can configure queues as an action. Should
> a controller request any of the combinations of capabilities that are not
> supported by a particular router, the router would have to fail the config.
>
> The advantage of the second approach is that the rules for applying a schedule
> or queue policy would be much more explicit leading to fewer invalid
> combinations of configuration that a router vendor could support.
> Additional levels of functionality could be supported with if-feature
> or extensions. The disadvantage is that the policy module is not as
> generic.
>
> So, to generalize, I believe the choice is between a more flexible/generic
> module with routers failing configurations that are not valid, or a more
> restrictive/limited/explicit base module where invalid configurations are
> rare.
>
> Sorry for the long explanation, but hopefully the explanation is clear.
>
> Thanks for your inputs.
> Norm
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Wed Jun  3 11:58:22 2015
Return-Path: <bclaise@cisco.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 24B191B29A4 for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 11:58:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.51
X-Spam-Level: 
X-Spam-Status: No, score=-14.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 Z2Ol0yC1yr0G for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 11:58:19 -0700 (PDT)
Received: from alln-iport-2.cisco.com (alln-iport-2.cisco.com [173.37.142.89]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 624481B2850 for <netmod@ietf.org>; Wed,  3 Jun 2015 11:58:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=4826; q=dns/txt; s=iport; t=1433357899; x=1434567499; h=message-id:date:from:mime-version:to:subject:references: in-reply-to; bh=wLKsCm7+Q++jKLidR7RIbE/IBEnkjm88pEHlE6gtzrc=; b=XPloJ3P79a8jZSop8aJ+fxS2nPxmzdPLvZmSHAd5E07uvopMuwjb285i FhKepaAsk6AyfoCtJe16grEbSGBDioNxbVhb8Bg4CWCkb5K2EqNQlj4eN 67c8AYGOiUWKEi3APSnNRnnOt7t7kCdIdiJKP7y96UOxPMJzMIMsHnttc U=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0A9BACRTW9V/4UNJK1bgxBUXoMeuzoJgVyFdQKBRTgUAQEBAQEBAYEKhCIBAQEEI1QBERwDAQIKFgsCAgkDAgECATsCCAYNBgIBAYgpDbdmo2kBAQEBAQEBAQEBAQEBAQEBAQEBGYtDhHUYBoJigUUFjEWEEIZ4hmaBLj6DNYJej0UkgjuBXR4xAYJGAQEB
X-IronPort-AV: E=Sophos;i="5.13,548,1427760000";  d="scan'208,217";a="155979652"
Received: from alln-core-11.cisco.com ([173.36.13.133]) by alln-iport-2.cisco.com with ESMTP; 03 Jun 2015 18:58:18 +0000
Received: from [10.156.48.57] (dhcp-10-156-48-57.cisco.com [10.156.48.57]) by alln-core-11.cisco.com (8.14.5/8.14.5) with ESMTP id t53IwI8f012135 for <netmod@ietf.org>; Wed, 3 Jun 2015 18:58:18 GMT
Message-ID: <556F4E4A.8000700@cisco.com>
Date: Wed, 03 Jun 2015 11:58:18 -0700
From: Benoit Claise <bclaise@cisco.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: NETMOD Working Group <netmod@ietf.org>
References: <20150603185534.20140.53505.idtracker@ietfa.amsl.com>
In-Reply-To: <20150603185534.20140.53505.idtracker@ietfa.amsl.com>
X-Forwarded-Message-Id: <20150603185534.20140.53505.idtracker@ietfa.amsl.com>
Content-Type: multipart/alternative; boundary="------------040309030103070805030205"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/mLwNkx2nrTQcUUm5lkqSpCrnuIY>
Subject: [netmod] Fwd: New Version Notification - draft-bogdanovic-netmod-yang-model-classification-03.txt
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, 03 Jun 2015 18:58:21 -0000

This is a multi-part message in MIME format.
--------------040309030103070805030205
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

FYI.

Regards, Benoit


-------- Forwarded Message --------
Subject: 	New Version Notification - 
draft-bogdanovic-netmod-yang-model-classification-03.txt
Date: 	Wed, 3 Jun 2015 11:55:34 -0700
From: 	internet-drafts@ietf.org
To: 
draft-bogdanovic-netmod-yang-model-classification.shepherd@ietf.org, 
deanb@juniper.net, 
draft-bogdanovic-netmod-yang-model-classification.ad@ietf.org, 
bclaise@cisco.com, 
draft-bogdanovic-netmod-yang-model-classification@ietf.org, 
camoberg@cisco.com, joelja@bogus.com



A new version (-03) has been submitted for draft-bogdanovic-netmod-yang-model-classification:
https://www.ietf.org/internet-drafts/draft-bogdanovic-netmod-yang-model-classification-03.txt


The IETF datatracker page for this Internet-Draft is:
https://datatracker.ietf.org/doc/draft-bogdanovic-netmod-yang-model-classification/

Diff from previous version:
https://www.ietf.org/rfcdiff?url2=draft-bogdanovic-netmod-yang-model-classification-03

Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

IETF Secretariat.

.




--------------040309030103070805030205
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    FYI.<br>
    <br>
    Regards, Benoit<br>
    <div class="moz-forward-container"><br>
      <br>
      -------- Forwarded Message --------
      <table class="moz-email-headers-table" border="0" cellpadding="0"
        cellspacing="0">
        <tbody>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Subject:
            </th>
            <td>New Version Notification -
              draft-bogdanovic-netmod-yang-model-classification-03.txt</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Date: </th>
            <td>Wed, 3 Jun 2015 11:55:34 -0700</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">From: </th>
            <td><a class="moz-txt-link-abbreviated" href="mailto:internet-drafts@ietf.org">internet-drafts@ietf.org</a></td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">To: </th>
            <td><a class="moz-txt-link-abbreviated" href="mailto:draft-bogdanovic-netmod-yang-model-classification.shepherd@ietf.org">draft-bogdanovic-netmod-yang-model-classification.shepherd@ietf.org</a>,
              <a class="moz-txt-link-abbreviated" href="mailto:deanb@juniper.net">deanb@juniper.net</a>,
              <a class="moz-txt-link-abbreviated" href="mailto:draft-bogdanovic-netmod-yang-model-classification.ad@ietf.org">draft-bogdanovic-netmod-yang-model-classification.ad@ietf.org</a>,
              <a class="moz-txt-link-abbreviated" href="mailto:bclaise@cisco.com">bclaise@cisco.com</a>,
              <a class="moz-txt-link-abbreviated" href="mailto:draft-bogdanovic-netmod-yang-model-classification@ietf.org">draft-bogdanovic-netmod-yang-model-classification@ietf.org</a>,
              <a class="moz-txt-link-abbreviated" href="mailto:camoberg@cisco.com">camoberg@cisco.com</a>, <a class="moz-txt-link-abbreviated" href="mailto:joelja@bogus.com">joelja@bogus.com</a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <pre>A new version (-03) has been submitted for draft-bogdanovic-netmod-yang-model-classification:
<a class="moz-txt-link-freetext" href="https://www.ietf.org/internet-drafts/draft-bogdanovic-netmod-yang-model-classification-03.txt">https://www.ietf.org/internet-drafts/draft-bogdanovic-netmod-yang-model-classification-03.txt</a>


The IETF datatracker page for this Internet-Draft is:
<a class="moz-txt-link-freetext" href="https://datatracker.ietf.org/doc/draft-bogdanovic-netmod-yang-model-classification/">https://datatracker.ietf.org/doc/draft-bogdanovic-netmod-yang-model-classification/</a>

Diff from previous version:
<a class="moz-txt-link-freetext" href="https://www.ietf.org/rfcdiff?url2=draft-bogdanovic-netmod-yang-model-classification-03">https://www.ietf.org/rfcdiff?url2=draft-bogdanovic-netmod-yang-model-classification-03</a>

Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

IETF Secretariat.

.

</pre>
      <br>
    </div>
    <br>
  </body>
</html>

--------------040309030103070805030205--


From nobody Wed Jun  3 12:38:18 2015
Return-Path: <reid@snmp.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 8DA121A8881 for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 12:38:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.912
X-Spam-Level: 
X-Spam-Status: No, score=-1.912 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_PASS=-0.001, 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 SBbw3yxi_rBO for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 12:38:14 -0700 (PDT)
Received: from mailbox.snmp.com (mailbox.snmp.com [192.147.142.80]) by ietfa.amsl.com (Postfix) with ESMTP id 12FAE1A877F for <netmod@ietf.org>; Wed,  3 Jun 2015 12:38:14 -0700 (PDT)
Received: from mainfs.snmp.com (mainfs.snmp.com [192.147.142.124]) by mailbox.snmp.com (8.9.3p2-20030922/m.0080228) with ESMTP id PAA07116; Wed, 3 Jun 2015 15:38:12 -0400 (EDT)
Received: from mainfs.snmp.com (localhost [127.0.0.1]) by mainfs.snmp.com (8.14.5/8.14.5) with ESMTP id t53Jc8pQ067911; Wed, 3 Jun 2015 15:38:08 -0400 (EDT) (envelope-from reid@snmp.com)
Message-Id: <201506031938.t53Jc8pQ067911@mainfs.snmp.com>
To: Martin Bjorklund <mbj@tail-f.com>
From: David Reid <reid@snmp.com>
In-reply-to: Your message of Wed, 27 May 2015 18:41:39 +0200. <20150527.184139.1637425437174998580.mbj@tail-f.com>
Date: Wed, 03 Jun 2015 15:38:08 -0400
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/7rhIagBZ8Jw7B62f_vaNBhEn9ts>
Cc: xiao.yuqing@zte.com.cn, netmod@ietf.org
Subject: Re: [netmod] A question about updating model
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: David Reid <reid@snmp.com>
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, 03 Jun 2015 19:38:16 -0000

> > Hi all,
> >    If I want to add a new child data node to a container node or list 
> > node, in order to keep backward compatiable,
> > should this child node be added to the end of son nodes of parent node?
> >  For example, 
> >  container a {
> >      leaf b;
> >      leaf c;
> >      leaf d;
> >  }
> >  If I want to add leaf e as a's child node, leaf e must be the last 
> >child of container a?
> 
> No it doesn't have to be added in order.  See section 10 of RFC 6020.

The last part of section 10 says:

   In statements that have any data definition statements as
   substatements, those data definition substatements MUST NOT be
   reordered.

If e were added between b and c, would that be considered a reorder since
c and d would be moved down.

In general, I think adding nodes in the middle is a bad idea.

-David Reid


From nobody Wed Jun  3 12:39:16 2015
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 77E3B1A92E5 for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 12:39:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 7Q9QsjU1wJmn for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 12:39:12 -0700 (PDT)
Received: from mail-la0-f45.google.com (mail-la0-f45.google.com [209.85.215.45]) (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 BEF321A1A3E for <netmod@ietf.org>; Wed,  3 Jun 2015 12:39:11 -0700 (PDT)
Received: by laei3 with SMTP id i3so16214318lae.3 for <netmod@ietf.org>; Wed, 03 Jun 2015 12:39:10 -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=SnnLQHBogx0y7Yv47Vv6MybCA/boukmo7ghIblwGLFY=; b=MCB0SBM5R36QGcHTe86UctuLeiGan59/DA8JTuV/uFVM+hCMepswFE6/nndvb/P7NE /4cSO49KWXP0iqaduYYQ65ozoRYOlJ8asSCCOG38T4eeNEHXsMBWX17L4zF3rg3i1owN 2S37T9NDFStD0avVd9WuKhG5WL5HkmkkwiBbGYvub+SunY7o6bw6j7RDVpa4vnJAPgsD j1AzrSmN9suYxZrp61wSeeBLw7Z2iXstOnTYGQG0lJeireyAh9GQRlCwlX6c89KPmYUL HIJeALCIEH8l+PRUuKB4c5/P5RhUjSQJxZakHGkCMYbr0JjVj4wlC5G6v5Ab4PJSPjiq +WZQ==
X-Gm-Message-State: ALoCoQmqvTCxZ6fodk+cane/6QRt2cVoqEXeyF+CJtFwkd0NmY/maUgnU8pBi2ilfZnb/EJBAPnr
MIME-Version: 1.0
X-Received: by 10.112.97.194 with SMTP id ec2mr17240834lbb.88.1433360350123; Wed, 03 Jun 2015 12:39:10 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 3 Jun 2015 12:39:10 -0700 (PDT)
In-Reply-To: <556F4E4A.8000700@cisco.com>
References: <20150603185534.20140.53505.idtracker@ietfa.amsl.com> <556F4E4A.8000700@cisco.com>
Date: Wed, 3 Jun 2015 12:39:10 -0700
Message-ID: <CABCOCHRjLKmLpTPr+RL8eNT7mMi7BMSZcYFJoL92zPKeYxy1=w@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Benoit Claise <bclaise@cisco.com>
Content-Type: multipart/alternative; boundary=001a1133b85481334f0517a23682
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/RM1G6KxhrPK5ueLotsIf7vV2xJ8>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Fwd: New Version Notification - draft-bogdanovic-netmod-yang-model-classification-03.txt
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, 03 Jun 2015 19:39:14 -0000

--001a1133b85481334f0517a23682
Content-Type: text/plain; charset=UTF-8

Hi,

I have a few questions about this draft.
It's not that clear what problem it is trying to solve.

   YANG is also gaining wide acceptance as the de-facto standard
   modeling language in the broader industry.

Actually, YANG is a standards-track RFC so 'de-facto' is not correct.

In sec. 2 the difference between Network Element YANG Models and
Network Service YANG Models seems to imply that a service cannot
exist on just one NE.  I think the 2-layer framework is useful for
IETF purposes, but YANG models are not constrained to 2 layers
or just networking parameters. The whole draft seems very router-centric,
which is fine for the routing area, but not generic YANG.

I don't see the difference between a Proprietary YANG Model and
a Vendor Configuration Model.  This seems to place CLI at the same
level as YANG models.

      Vendor Configuration Model: It describes all configurable
      capabilities of the device and what device vendor exposes for
      configuration.  The vendor configuration model can be CLI or YANG-
      based.

IMO, the standards going forward need to focus on YANG, not schema-less CLI.
I don't see any role for proprietary CLI in the standards architecture.

The standard configuration model is a subset of vendor configuration model.

Isn't this backwards?  Seems like the total set of standard modules will
likely be a
superset of a particular vendor's configuration model.  Actually the
standard and
proprietary models may not overlap at all.

I think the 4 types of YANG models (or YANG modules?) are important
and we should have a common understanding on how they relate to each other.
I think that draft has a lot of potential to do that.

Not sure the terminology is right. We usually talk about one conceptual
data model
that is comprised of multiple YANG modules.  So this draft describes module
types
not really model types.


Andy


On Wed, Jun 3, 2015 at 11:58 AM, Benoit Claise <bclaise@cisco.com> wrote:

>  FYI.
>
> Regards, Benoit
>
>
> -------- Forwarded Message --------  Subject: New Version Notification -
> draft-bogdanovic-netmod-yang-model-classification-03.txt  Date: Wed, 3
> Jun 2015 11:55:34 -0700  From: internet-drafts@ietf.org  To:
> draft-bogdanovic-netmod-yang-model-classification.shepherd@ietf.org,
> deanb@juniper.net,
> draft-bogdanovic-netmod-yang-model-classification.ad@ietf.org,
> bclaise@cisco.com,
> draft-bogdanovic-netmod-yang-model-classification@ietf.org,
> camoberg@cisco.com, joelja@bogus.com
>
> A new version (-03) has been submitted for draft-bogdanovic-netmod-yang-model-classification:https://www.ietf.org/internet-drafts/draft-bogdanovic-netmod-yang-model-classification-03.txt
>
>
> The IETF datatracker page for this Internet-Draft is:https://datatracker.ietf.org/doc/draft-bogdanovic-netmod-yang-model-classification/
>
> Diff from previous version:https://www.ietf.org/rfcdiff?url2=draft-bogdanovic-netmod-yang-model-classification-03
>
> Please note that it may take a couple of minutes from the time of submission
> until the htmlized version and diff are available at tools.ietf.org.
>
> IETF Secretariat.
>
> .
>
>
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>
>

--001a1133b85481334f0517a23682
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<div><br></div><div>I have a few questions about this d=
raft.</div><div>It&#39;s not that clear what problem it is trying to solve.=
</div><div><br></div><div><pre style=3D"color:rgb(0,0,0);word-wrap:break-wo=
rd;white-space:pre-wrap">   YANG is also gaining wide acceptance as the de-=
facto standard
   modeling language in the broader industry.</pre>Actually, YANG is a stan=
dards-track RFC so &#39;de-facto&#39; is not correct.<br><br>In sec. 2 the =
difference between Network Element YANG Models and <br>Network Service YANG=
 Models seems to imply that a service cannot</div><div>exist on just one NE=
.=C2=A0 I think the 2-layer framework is useful for</div><div>IETF purposes=
, but YANG models are not constrained to 2 layers</div><div>or just network=
ing parameters. The whole draft seems very router-centric,</div><div>which =
is fine for the routing area, but not generic YANG.<br><br>I don&#39;t see =
the difference between a Proprietary YANG Model and</div><div>a Vendor Conf=
iguration Model.=C2=A0 This seems to place CLI at the same</div><div>level =
as YANG models.</div><div><pre style=3D"color:rgb(0,0,0);word-wrap:break-wo=
rd;white-space:pre-wrap">      Vendor Configuration Model: It describes all=
 configurable
      capabilities of the device and what device vendor exposes for
      configuration.  The vendor configuration model can be CLI or YANG-
      based.
</pre></div><div>IMO, the standards going forward need to focus on YANG, no=
t schema-less CLI.<br>I don&#39;t see any role for proprietary CLI in the s=
tandards architecture.<br></div><div><br></div><div><span style=3D"color:rg=
b(0,0,0);white-space:pre-wrap">   The standard configuration model is a sub=
set of vendor configuration </span><span style=3D"color:rgb(0,0,0);white-sp=
ace:pre-wrap">model. </span></div><div><span style=3D"color:rgb(0,0,0);whit=
e-space:pre-wrap"><br></span></div><div>Isn&#39;t this backwards?=C2=A0 See=
ms like the total set of standard modules will likely be a</div><div>supers=
et of a particular vendor&#39;s configuration model.=C2=A0 Actually the sta=
ndard and</div><div>proprietary models may not overlap at all.</div><div><b=
r></div><div>I think the 4 types of YANG models (or YANG modules?) are impo=
rtant</div><div>and we should have a common understanding on how they relat=
e to each other.</div><div>I think that draft has a lot of potential to do =
that.</div><div><br></div><div>Not sure the terminology is right. We usuall=
y talk about one conceptual data model</div><div>that is comprised of multi=
ple YANG modules.=C2=A0 So this draft describes module types</div><div>not =
really model types.</div><div><br></div><div><br></div><div>Andy</div><div>=
<br></div></div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">O=
n Wed, Jun 3, 2015 at 11:58 AM, Benoit Claise <span dir=3D"ltr">&lt;<a href=
=3D"mailto:bclaise@cisco.com" target=3D"_blank">bclaise@cisco.com</a>&gt;</=
span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8e=
x;border-left:1px #ccc solid;padding-left:1ex">
 =20

   =20
 =20
  <div bgcolor=3D"#FFFFFF" text=3D"#000000">
    FYI.<br>
    <br>
    Regards, Benoit<br>
    <div><br>
      <br>
      -------- Forwarded Message --------
      <table border=3D"0" cellpadding=3D"0" cellspacing=3D"0">
        <tbody>
          <tr>
            <th align=3D"RIGHT" nowrap valign=3D"BASELINE">Subject:
            </th>
            <td>New Version Notification -
              draft-bogdanovic-netmod-yang-model-classification-03.txt</td>
          </tr>
          <tr>
            <th align=3D"RIGHT" nowrap valign=3D"BASELINE">Date: </th>
            <td>Wed, 3 Jun 2015 11:55:34 -0700</td>
          </tr>
          <tr>
            <th align=3D"RIGHT" nowrap valign=3D"BASELINE">From: </th>
            <td><a href=3D"mailto:internet-drafts@ietf.org" target=3D"_blan=
k">internet-drafts@ietf.org</a></td>
          </tr>
          <tr>
            <th align=3D"RIGHT" nowrap valign=3D"BASELINE">To: </th>
            <td><a href=3D"mailto:draft-bogdanovic-netmod-yang-model-classi=
fication.shepherd@ietf.org" target=3D"_blank">draft-bogdanovic-netmod-yang-=
model-classification.shepherd@ietf.org</a>,
              <a href=3D"mailto:deanb@juniper.net" target=3D"_blank">deanb@=
juniper.net</a>,
              <a href=3D"mailto:draft-bogdanovic-netmod-yang-model-classifi=
cation.ad@ietf.org" target=3D"_blank">draft-bogdanovic-netmod-yang-model-cl=
assification.ad@ietf.org</a>,
              <a href=3D"mailto:bclaise@cisco.com" target=3D"_blank">bclais=
e@cisco.com</a>,
              <a href=3D"mailto:draft-bogdanovic-netmod-yang-model-classifi=
cation@ietf.org" target=3D"_blank">draft-bogdanovic-netmod-yang-model-class=
ification@ietf.org</a>,
              <a href=3D"mailto:camoberg@cisco.com" target=3D"_blank">camob=
erg@cisco.com</a>, <a href=3D"mailto:joelja@bogus.com" target=3D"_blank">jo=
elja@bogus.com</a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <pre>A new version (-03) has been submitted for draft-bogdanovic-netm=
od-yang-model-classification:
<a href=3D"https://www.ietf.org/internet-drafts/draft-bogdanovic-netmod-yan=
g-model-classification-03.txt" target=3D"_blank">https://www.ietf.org/inter=
net-drafts/draft-bogdanovic-netmod-yang-model-classification-03.txt</a>


The IETF datatracker page for this Internet-Draft is:
<a href=3D"https://datatracker.ietf.org/doc/draft-bogdanovic-netmod-yang-mo=
del-classification/" target=3D"_blank">https://datatracker.ietf.org/doc/dra=
ft-bogdanovic-netmod-yang-model-classification/</a>

Diff from previous version:
<a href=3D"https://www.ietf.org/rfcdiff?url2=3Ddraft-bogdanovic-netmod-yang=
-model-classification-03" target=3D"_blank">https://www.ietf.org/rfcdiff?ur=
l2=3Ddraft-bogdanovic-netmod-yang-model-classification-03</a>

Please note that it may take a couple of minutes from the time of submissio=
n
until the htmlized version and diff are available at <a href=3D"http://tool=
s.ietf.org" target=3D"_blank">tools.ietf.org</a>.

IETF Secretariat.

.

</pre>
      <br>
    </div>
    <br>
  </div>

<br>_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_blank">=
https://www.ietf.org/mailman/listinfo/netmod</a><br>
<br></blockquote></div><br></div>

--001a1133b85481334f0517a23682--


From nobody Wed Jun  3 16:58:22 2015
Return-Path: <tnadeau@lucidvision.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 7532E1B309B; Wed,  3 Jun 2015 16:58:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.012
X-Spam-Level: 
X-Spam-Status: No, score=-2.012 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_PASS=-0.001, 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 zuXRSdDtD5Iw; Wed,  3 Jun 2015 16:58:18 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 07CCD1B309A; Wed,  3 Jun 2015 16:58:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1433375894; bh=sByF5Atok9PH7XbIGbVaZT8IPY7w0yXTMW57l7Y/2T4=; h=From:Subject:Date:Cc:To; b=gpLfGAfKao9C3yRmBkebGxBajiFrkkeA5t1vH0MmneejlCVnALu3508oWRFOwLAXV Az39z8lheuYHGfS4hHnwnQS+k8AKQPlHSfgykMu0E5AOFdC0hTyIlHKYof8mymQd41 tA2LEJg11mCXW9JAmNQd0t+4G0OkGibZqDc0aKws=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=50.255.148.181; 
From: Nadeau Thomas <tnadeau@lucidvision.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Date: Wed, 3 Jun 2015 19:58:12 -0400
Message-Id: <D54EFEEE-DC49-4D00-90AF-44FBA7712EBF@lucidvision.com>
To: NETMOD Working Group <netmod@ietf.org>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-MyRbl: Color=Yellow Age=0 Spam=0 Notspam=15 Stars=0 Good=0 Friend=0 Surbl=0 Catch=0 r=0 ip=50.255.148.181
X-IP-stats: Notspam Incoming Last 0, First 20, in=164, out=0, spam=0 Known=true ip=50.255.148.181
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/B59DN8EFPYdMgf3TYUJZpwJksh0>
Cc: The IESG <iesg-secretary@ietf.org>
Subject: [netmod] NETMOD Interim Meeting
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, 03 Jun 2015 23:58:19 -0000

	The NETMOD Working Group will host a 2-hour interim meeting on =
Thursday 6/18/2015 (10am-noon Eastern). The agenda will be to split the =
2 hours in half, one hour for each of the the opstate and =
model-structure drafts. =20

	Coordinates for meeting materials will follow closer to the =
meeting date.

	Tom and Kent



From nobody Wed Jun  3 21:07:38 2015
Return-Path: <nstrahle@juniper.net>
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 D7E611A9089 for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 21:07:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 zE9GISZAoF0G for <netmod@ietfa.amsl.com>; Wed,  3 Jun 2015 21:07:35 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0133.outbound.protection.outlook.com [207.46.100.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 646B71B30CD for <netmod@ietf.org>; Wed,  3 Jun 2015 21:07:35 -0700 (PDT)
Received: from BY1PR0501MB1111.namprd05.prod.outlook.com (25.160.103.145) by BY1PR0501MB1111.namprd05.prod.outlook.com (25.160.103.145) with Microsoft SMTP Server (TLS) id 15.1.172.22; Thu, 4 Jun 2015 04:07:33 +0000
Received: from BY1PR0501MB1111.namprd05.prod.outlook.com ([25.160.103.145]) by BY1PR0501MB1111.namprd05.prod.outlook.com ([25.160.103.145]) with mapi id 15.01.0172.012; Thu, 4 Jun 2015 04:07:33 +0000
From: Norm Strahle <nstrahle@juniper.net>
To: Ladislav Lhotka <lhotka@nic.cz>, "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [netmod] need input on diffserv Yang model
Thread-Index: AdCcFjiBpihULBRfSJKIcfXzi9C37gB8U1EAABwH7cA=
Date: Thu, 4 Jun 2015 04:07:32 +0000
Message-ID: <BY1PR0501MB1111F4DEDD4098D1905B9536CFB30@BY1PR0501MB1111.namprd05.prod.outlook.com>
References: <BY1PR0501MB11115EAA21C76AC317852796CFB60@BY1PR0501MB1111.namprd05.prod.outlook.com> <m2sia83mn1.fsf@birdie.labs.nic.cz>
In-Reply-To: <m2sia83mn1.fsf@birdie.labs.nic.cz>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: spf=none (sender IP is ) smtp.mailfrom=nstrahle@juniper.net; 
x-originating-ip: [66.129.241.11]
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR0501MB1111;
x-microsoft-antispam-prvs: <BY1PR0501MB1111E2DF44495FA2468F5F25CFB30@BY1PR0501MB1111.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(520003)(3002001); SRVR:BY1PR0501MB1111; BCL:0; PCL:0;  RULEID:; SRVR:BY1PR0501MB1111; 
x-forefront-prvs: 0597911EE1
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(51914003)(189002)(377454003)(199003)(13464003)(164054003)(51704005)(86362001)(105586002)(102836002)(87936001)(77156002)(15975445007)(2656002)(40100003)(107886002)(122556002)(92566002)(2900100001)(68736005)(74316001)(62966003)(19580395003)(19580405001)(99286002)(2950100001)(64706001)(5001830100001)(101416001)(46102003)(189998001)(5002640100001)(81156007)(5001860100001)(5001960100002)(4001540100001)(5890100001)(2501003)(575784001)(54356999)(76176999)(97736004)(106356001)(76576001)(50986999)(33656002)(5001770100001)(66066001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY1PR0501MB1111; H:BY1PR0501MB1111.namprd05.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; 
received-spf: None (protection.outlook.com: juniper.net does not designate permitted sender hosts)
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2015 04:07:32.5847 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0501MB1111
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/dAThdzJOr7-rx5YbywwQ_8ivu3w>
Subject: Re: [netmod] need input on diffserv Yang model
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: Thu, 04 Jun 2015 04:07:38 -0000

Thanks for the feedback, Lada. Some good guidelines and help us with some o=
f our issues.  There is one fairly large issue that I would like to give a =
couple of examples on and ask for more feedback from yourself and others on=
 this.

As I mention, the policy module looks as follows:

     policy
         classifier-1
             action-1
             action-2
             child-policy
	etc.

In the specific example, to create a scheduler with queues, it would look l=
ike:

	Policy=20
		Classifier-1
			Action scheduler-1
			Child policy queue-policy-1

In this manner a child policy is used to stitch a set of queues to a schedu=
ler. So, to support scheduling/queueing using the current model, a vendor m=
ust support the child policy concept.  All vendors support queuing scheduli=
ng, and thus, to support using the current model, must support the child po=
licy concept. However, Juniper for example, would support the child policy =
only in this instance, but not in the case of say, a child policy with mete=
rs, where as Cisco would support that. So, how if we have a generic model o=
f:

     policy
         classifier-1
             action-1
             child-policy

But all vendors do not support all actions with child polices, but are requ=
ired to support child policies for the basic functionality of stitching que=
ues/schedulers.

Since some vendors support this flexibility and some don't, it becomes hard=
 to use "must" statements and "if-feature" for this particular case, as com=
binations are not always a "must" for all vendors, and the "if-feature" is =
difficult, as it is not one feature, but a combination of features that may=
 or may not be valid.

Two options have been proposed. The first is to stick with the flexible mod=
el, and if a controller sends a policy that is not supported by one vendor,=
 e.g. and invalid child policy, then the vendor would "fail" the config.  M=
y feeling is that this is not correct - i.e. if a capability is advertised =
then the device should support it.

The second option is to restrict the policy definition to be less flexible,=
 and more explicit in its definition. This could be done as follows:

 - define a separate queue policy - i.e. a policy whose only actions are qu=
euing actions.=20
 - define a separate scheduler module that could be bound to an interface a=
nd can reference a queue policy. So, this is the equivalent of having child=
 policy, but only in a very explicit and supported place.
 - define a scheduler action, that could be "if-featured" so that vendors t=
hat support schedulers as actions could do that as well.  And the scheduler=
 action could reference a queue policy
 - make child policies an "if-feature" this allows vendors that support to =
use. However, it is no longer required to support queuing/scheduling, since=
 the scheduler module can reference a queue policy directly without support=
ing the generic notion of a child policy.

The second option makes it clear to a controller as to what is supported - =
i.e. no guesswork on what combinations of actions/child-polices will work. =
 It also provides support schedulers as both an action and a unique module,=
 so it resolves the conflict in scheduler/queue configuration between route=
r vendors. The queue policy is common for all router vendors (though maybe =
some if-feature for internal capabilities).

So, my preference, if not already obvious, is option 2. But we could defini=
tely use input from the wider netmod group on this issue.  Please ask quest=
ions for clarification on the above if needed.

Thanks,
Norm =20

-----Original Message-----
From: Ladislav Lhotka [mailto:lhotka@nic.cz]=20
Sent: Wednesday, June 03, 2015 10:14 AM
To: Norm Strahle; netmod@ietf.org
Subject: Re: [netmod] need input on diffserv Yang model

Hi Norm,

Norm Strahle <nstrahle@juniper.net> writes:

> Hey folks,
>
> The diffserv group looking at some alternatives for supporting various=20
> vendor implementations.
>
> The main component in differv model is the policy. Basically it looks=20
> something like:
>
>     policy
>         classifier-1
>             action-1
>             action-2
>             child-policy
>         classifier-n
>             action-x
>             action-y
>             child-policy
>         etc.
>
> A classifier will classify on things like address, port, dscp. Example=20
> actions
> are: discard, mark dscp, meter, schedule and queue. A child policy can=20
> be attached under a classifier to add further classification and=20
> corresponding actions. As shown here, the policy is fairly flexible=20
> and extensible. For example, one could have multiple schedulers in a=20
> single policy under different classifiers, one could have n-number of=20
> child policies, etc.
>
> Two issues we are running into are:
> - in a base model, how do we limit various combinations of classifier/act=
ion/
>    child-policy for vendors that don't support them

This is a typical situation, and there are three possible approaches that o=
ften need to be combined:

- For parameters supported only by a single vendor, put them into a
  separate vendor-specific module, and augment the generic data model
  with them. Every device will this typically advertise the generic
  module(s) and the vendor-specific one.

- For parameters that are supported by some vendors, define an
  appropriate feature, and use "if-feature" statement.

- For parameters that should normally be supported, devices that don't
  comply may declare a deviation (although it turns out that most
  vendors hate to do so and consider it bad PR).=20

> - how do we limit the model to not support things that don't make
>    sense in general, e.g. a child policy with a scheduler underneath a po=
licy
>    with queue

Using "must" statements if possible, otherwise by specifying the rules in a=
 description.

Lada

>
> We are discussing some approaches, and are looking to a wider audiance=20
> for suggestions.  Some approaches we are considering for some of the issu=
es:
>  - if-feature conditions to allow some vendors to not support some=20
> functionality
>  - "must" statements to limit some combinations of=20
> classifer/action/child-policy
>  - alternatively using more explicit modules (i.e. less flexible) to rest=
rict
>    what capabilities are available
>  - using standard and vendor-specific extensions to define additional
>    capabilities.
>
> Likely some combination of some/all of these will be needed.
>
> We are looking at two alternatives for defining queues and schedulers.
>  - The first approach is using the generic policy definition above. Queue=
s
>   would be defined in a child policy underneath an action/classifier with
>   a scheduler.
>  - The second approach would be to define explicit queue policy module an=
d
>   a separate scheduler module (in addition to the scheduler action). The
>   queue policy could be referenced by either a scheduler action (supporte=
d
>   by some vendors) or a scheduler module attached directly to an interfac=
e
>   (supported by other vendors).
>
> The advantages of the first approach is that we are defining a very=20
> general and consistent approach to a policy module. The difficulty is=20
> that some vendors do not support child policies, schedulers as=20
> actions, and may be more restrictive as to how one can configure=20
> queues as an action. Should a controller request any of the=20
> combinations of capabilities that are not supported by a particular route=
r, the router would have to fail the config.
>
> The advantage of the second approach is that the rules for applying a=20
> schedule or queue policy would be much more explicit leading to fewer=20
> invalid combinations of configuration that a router vendor could support.
> Additional levels of functionality could be supported with if-feature=20
> or extensions. The disadvantage is that the policy module is not as=20
> generic.
>
> So, to generalize, I believe the choice is between a more=20
> flexible/generic module with routers failing configurations that are=20
> not valid, or a more restrictive/limited/explicit base module where=20
> invalid configurations are rare.
>
> Sorry for the long explanation, but hopefully the explanation is clear.
>
> Thanks for your inputs.
> Norm
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Thu Jun  4 01:24:56 2015
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 F26E21B2C78 for <netmod@ietfa.amsl.com>; Thu,  4 Jun 2015 01:24:54 -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 OuqOi4j0-upB for <netmod@ietfa.amsl.com>; Thu,  4 Jun 2015 01:24:53 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 79E901B2BE4 for <netmod@ietf.org>; Thu,  4 Jun 2015 01:24:53 -0700 (PDT)
Received: from localhost (unknown [173.38.220.52]) by mail.tail-f.com (Postfix) with ESMTPSA id 1E1671AE043B; Thu,  4 Jun 2015 10:24:51 +0200 (CEST)
Date: Thu, 04 Jun 2015 10:24:50 +0200 (CEST)
Message-Id: <20150604.102450.235177548226188.mbj@tail-f.com>
To: reid@snmp.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <201506031938.t53Jc8pQ067911@mainfs.snmp.com>
References: <20150527.184139.1637425437174998580.mbj@tail-f.com> <201506031938.t53Jc8pQ067911@mainfs.snmp.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/CiVOMEDXfbQKKbgTXTznZh2HQQw>
Cc: xiao.yuqing@zte.com.cn, netmod@ietf.org
Subject: Re: [netmod] A question about updating model
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: Thu, 04 Jun 2015 08:24:55 -0000

David Reid <reid@snmp.com> wrote:
> > > Hi all,
> > >    If I want to add a new child data node to a container node or list 
> > > node, in order to keep backward compatiable,
> > > should this child node be added to the end of son nodes of parent node?
> > >  For example, 
> > >  container a {
> > >      leaf b;
> > >      leaf c;
> > >      leaf d;
> > >  }
> > >  If I want to add leaf e as a's child node, leaf e must be the last 
> > >child of container a?
> > 
> > No it doesn't have to be added in order.  See section 10 of RFC 6020.
> 
> The last part of section 10 says:
> 
>    In statements that have any data definition statements as
>    substatements, those data definition substatements MUST NOT be
>    reordered.
> 
> If e were added between b and c, would that be considered a reorder since
> c and d would be moved down.
>
> In general, I think adding nodes in the middle is a bad idea.

Hmm.  The rule is not clear.  In fact, one can argue that it is
wrong:

For rpc and notifications, where the order matters, this rule makes
sense.  But for config or state it really doesn't matter, and you
should be free to add the new nodes wherever you like.

But the rule refer to "data definition statements".  If you follow the
terminology, a "data definition statement" "defines new data nodes".

And a "data node" is "A node [...] that can be instantiated in a data
tree".

And a "data tree" is "The instantiated tree of configuration and state data
on a device".

So the rule applies to config and state (which it shouldn't), but not
to rpc and notifications (which it should).

---

The terminology needs some work. A "data definition statement" is
really supposed to mean: One of container, leaf, leaf-list, list,
choice, case, augment, uses, and anyxml.




/martin


From nobody Thu Jun  4 01:48:55 2015
Return-Path: <lhotka@nic.cz>
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 CA8291B303D for <netmod@ietfa.amsl.com>; Thu,  4 Jun 2015 01:48:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.361
X-Spam-Level: 
X-Spam-Status: No, score=-0.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] 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 CQewXmhCSFUd for <netmod@ietfa.amsl.com>; Thu,  4 Jun 2015 01:48:52 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C610F1B3037 for <netmod@ietf.org>; Thu,  4 Jun 2015 01:48:51 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 3302E140515; Thu,  4 Jun 2015 10:48:50 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1433407730; bh=SeZ9UQBMR6se/SAdtFieMosP9+WQj0wTJrBpIm7x1RI=; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc: Content-Transfer-Encoding:Message-Id:References:To; b=Y6IMAviBIUaGgMt8ynGuptYPifg6zm04obnSeMuYtSlI0BPNnCuiAo6o11e78/iEO wS2O4+IomslPa4SMKUYhWaIfhzy9L4OOytOsbgmAbiWl7DtDQ0zppV22l1rCx4JMQ5 2lXWy9UwtbMVkYAy9YA/Smqe/IFUSaiHQQzYQ8ZA=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150604.102450.235177548226188.mbj@tail-f.com>
Date: Thu, 4 Jun 2015 10:48:53 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <E4428A61-71A8-46E6-AE58-7EA7F864A35E@nic.cz>
References: <20150527.184139.1637425437174998580.mbj@tail-f.com> <201506031938.t53Jc8pQ067911@mainfs.snmp.com> <20150604.102450.235177548226188.mbj@tail-f.com>
To: =?utf-8?Q?Martin_Bj=C3=B6rklund?= <mbj@tail-f.com>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.6 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/TCIBV0vpwISf_zDFIEloXZMjDbg>
Cc: xiao.yuqing@zte.com.cn, netmod@ietf.org
Subject: Re: [netmod] A question about updating model
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: Thu, 04 Jun 2015 08:48:53 -0000

> On 04 Jun 2015, at 10:24, Martin Bjorklund <mbj@tail-f.com> wrote:
>=20
> David Reid <reid@snmp.com> wrote:
>>>> Hi all,
>>>>   If I want to add a new child data node to a container node or =
list=20
>>>> node, in order to keep backward compatiable,
>>>> should this child node be added to the end of son nodes of parent =
node?
>>>> For example,=20
>>>> container a {
>>>>     leaf b;
>>>>     leaf c;
>>>>     leaf d;
>>>> }
>>>> If I want to add leaf e as a's child node, leaf e must be the last=20=

>>>> child of container a?
>>>=20
>>> No it doesn't have to be added in order.  See section 10 of RFC =
6020.
>>=20
>> The last part of section 10 says:
>>=20
>>   In statements that have any data definition statements as
>>   substatements, those data definition substatements MUST NOT be
>>   reordered.
>>=20
>> If e were added between b and c, would that be considered a reorder =
since
>> c and d would be moved down.
>>=20
>> In general, I think adding nodes in the middle is a bad idea.
>=20
> Hmm.  The rule is not clear.  In fact, one can argue that it is
> wrong:
>=20
> For rpc and notifications, where the order matters, this rule makes
> sense.  But for config or state it really doesn't matter, and you

But in fact one can also augment an rpc or notification, and according =
to sec. 7.5.12 the new nodes =E2=80=9Care encoded as
subelements to the augmented node, in any order=E2=80=9D. So the element =
order in such an rpc/notification is not fixed anymore and the receiving =
side must be prepared to receive that data in any order.

So I wonder whether the rules about fixed element order in rpcs and =
notifications really make sense. What=E2=80=99s quite clear though is =
that they cause serious complications to YANG processing software =
because rpcs/notifications often need special handling.

Lada

> should be free to add the new nodes wherever you like.
>=20
> But the rule refer to "data definition statements".  If you follow the
> terminology, a "data definition statement" "defines new data nodes".
>=20
> And a "data node" is "A node [...] that can be instantiated in a data
> tree".
>=20
> And a "data tree" is "The instantiated tree of configuration and state =
data
> on a device".
>=20
> So the rule applies to config and state (which it shouldn't), but not
> to rpc and notifications (which it should).
>=20
> ---
>=20
> The terminology needs some work. A "data definition statement" is
> really supposed to mean: One of container, leaf, leaf-list, list,
> choice, case, augment, uses, and anyxml.
>=20
>=20
>=20
>=20
> /martin
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Thu Jun  4 03:01:23 2015
Return-Path: <lhotka@nic.cz>
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 AA3EC1A0231 for <netmod@ietfa.amsl.com>; Thu,  4 Jun 2015 03:01:21 -0700 (PDT)
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] 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 WN-Pa949Co0a for <netmod@ietfa.amsl.com>; Thu,  4 Jun 2015 03:01:18 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id DAAD31A008B for <netmod@ietf.org>; Thu,  4 Jun 2015 03:01:17 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 901D31CC004A; Thu,  4 Jun 2015 12:01:21 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Norm Strahle <nstrahle@juniper.net>, "netmod\@ietf.org" <netmod@ietf.org>
In-Reply-To: <BY1PR0501MB1111F4DEDD4098D1905B9536CFB30@BY1PR0501MB1111.namprd05.prod.outlook.com>
References: <BY1PR0501MB11115EAA21C76AC317852796CFB60@BY1PR0501MB1111.namprd05.prod.outlook.com> <m2sia83mn1.fsf@birdie.labs.nic.cz> <BY1PR0501MB1111F4DEDD4098D1905B9536CFB30@BY1PR0501MB1111.namprd05.prod.outlook.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Thu, 04 Jun 2015 12:01:18 +0200
Message-ID: <m2y4jzbxn5.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/EuUwQnCwbPrg1DFr5W29pU6mTBM>
Subject: Re: [netmod] need input on diffserv Yang model
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: Thu, 04 Jun 2015 10:01:21 -0000

Norm Strahle <nstrahle@juniper.net> writes:

> Thanks for the feedback, Lada. Some good guidelines and help us with some of our issues.  There is one fairly large issue that I would like to give a couple of examples on and ask for more feedback from yourself and others on this.
>
> As I mention, the policy module looks as follows:
>
>      policy
>          classifier-1
>              action-1
>              action-2
>              child-policy
> 	etc.
>
> In the specific example, to create a scheduler with queues, it would look like:
>
> 	Policy 
> 		Classifier-1
> 			Action scheduler-1
> 			Child policy queue-policy-1
>
> In this manner a child policy is used to stitch a set of queues to a scheduler. So, to support scheduling/queueing using the current model, a vendor must support the child policy concept.  All vendors support queuing scheduling, and thus, to support using the current model, must support the child policy concept. However, Juniper for example, would support the child policy only in this instance, but not in the case of say, a child policy with meters, where as Cisco would support that. So, how if we have a generic model of:
>
>      policy
>          classifier-1
>              action-1
>              child-policy
>
> But all vendors do not support all actions with child polices, but are
> required to support child policies for the basic functionality of
> stitching queues/schedulers.

One option is to introduce "type" leaf for policies and encode different
combinations of policy functions into it. Using the identity datatype
for this leaf could make it quite flexible (and probably even more so in
YANG 1.1 where multiple inheritance of identities will be allowed).

Then you could use must or when constraints referring to the type for
specifying parameters of each policy type.

Lada

>
> Since some vendors support this flexibility and some don't, it becomes hard to use "must" statements and "if-feature" for this particular case, as combinations are not always a "must" for all vendors, and the "if-feature" is difficult, as it is not one feature, but a combination of features that may or may not be valid.
>
> Two options have been proposed. The first is to stick with the flexible model, and if a controller sends a policy that is not supported by one vendor, e.g. and invalid child policy, then the vendor would "fail" the config.  My feeling is that this is not correct - i.e. if a capability is advertised then the device should support it.
>
> The second option is to restrict the policy definition to be less flexible, and more explicit in its definition. This could be done as follows:
>
>  - define a separate queue policy - i.e. a policy whose only actions are queuing actions. 
>  - define a separate scheduler module that could be bound to an interface and can reference a queue policy. So, this is the equivalent of having child policy, but only in a very explicit and supported place.
>  - define a scheduler action, that could be "if-featured" so that vendors that support schedulers as actions could do that as well.  And the scheduler action could reference a queue policy
>  - make child policies an "if-feature" this allows vendors that support to use. However, it is no longer required to support queuing/scheduling, since the scheduler module can reference a queue policy directly without supporting the generic notion of a child policy.
>
> The second option makes it clear to a controller as to what is supported - i.e. no guesswork on what combinations of actions/child-polices will work.  It also provides support schedulers as both an action and a unique module, so it resolves the conflict in scheduler/queue configuration between router vendors. The queue policy is common for all router vendors (though maybe some if-feature for internal capabilities).
>
> So, my preference, if not already obvious, is option 2. But we could definitely use input from the wider netmod group on this issue.  Please ask questions for clarification on the above if needed.
>
> Thanks,
> Norm  
>
> -----Original Message-----
> From: Ladislav Lhotka [mailto:lhotka@nic.cz] 
> Sent: Wednesday, June 03, 2015 10:14 AM
> To: Norm Strahle; netmod@ietf.org
> Subject: Re: [netmod] need input on diffserv Yang model
>
> Hi Norm,
>
> Norm Strahle <nstrahle@juniper.net> writes:
>
>> Hey folks,
>>
>> The diffserv group looking at some alternatives for supporting various 
>> vendor implementations.
>>
>> The main component in differv model is the policy. Basically it looks 
>> something like:
>>
>>     policy
>>         classifier-1
>>             action-1
>>             action-2
>>             child-policy
>>         classifier-n
>>             action-x
>>             action-y
>>             child-policy
>>         etc.
>>
>> A classifier will classify on things like address, port, dscp. Example 
>> actions
>> are: discard, mark dscp, meter, schedule and queue. A child policy can 
>> be attached under a classifier to add further classification and 
>> corresponding actions. As shown here, the policy is fairly flexible 
>> and extensible. For example, one could have multiple schedulers in a 
>> single policy under different classifiers, one could have n-number of 
>> child policies, etc.
>>
>> Two issues we are running into are:
>> - in a base model, how do we limit various combinations of classifier/action/
>>    child-policy for vendors that don't support them
>
> This is a typical situation, and there are three possible approaches that often need to be combined:
>
> - For parameters supported only by a single vendor, put them into a
>   separate vendor-specific module, and augment the generic data model
>   with them. Every device will this typically advertise the generic
>   module(s) and the vendor-specific one.
>
> - For parameters that are supported by some vendors, define an
>   appropriate feature, and use "if-feature" statement.
>
> - For parameters that should normally be supported, devices that don't
>   comply may declare a deviation (although it turns out that most
>   vendors hate to do so and consider it bad PR). 
>
>> - how do we limit the model to not support things that don't make
>>    sense in general, e.g. a child policy with a scheduler underneath a policy
>>    with queue
>
> Using "must" statements if possible, otherwise by specifying the rules in a description.
>
> Lada
>
>>
>> We are discussing some approaches, and are looking to a wider audiance 
>> for suggestions.  Some approaches we are considering for some of the issues:
>>  - if-feature conditions to allow some vendors to not support some 
>> functionality
>>  - "must" statements to limit some combinations of 
>> classifer/action/child-policy
>>  - alternatively using more explicit modules (i.e. less flexible) to restrict
>>    what capabilities are available
>>  - using standard and vendor-specific extensions to define additional
>>    capabilities.
>>
>> Likely some combination of some/all of these will be needed.
>>
>> We are looking at two alternatives for defining queues and schedulers.
>>  - The first approach is using the generic policy definition above. Queues
>>   would be defined in a child policy underneath an action/classifier with
>>   a scheduler.
>>  - The second approach would be to define explicit queue policy module and
>>   a separate scheduler module (in addition to the scheduler action). The
>>   queue policy could be referenced by either a scheduler action (supported
>>   by some vendors) or a scheduler module attached directly to an interface
>>   (supported by other vendors).
>>
>> The advantages of the first approach is that we are defining a very 
>> general and consistent approach to a policy module. The difficulty is 
>> that some vendors do not support child policies, schedulers as 
>> actions, and may be more restrictive as to how one can configure 
>> queues as an action. Should a controller request any of the 
>> combinations of capabilities that are not supported by a particular router, the router would have to fail the config.
>>
>> The advantage of the second approach is that the rules for applying a 
>> schedule or queue policy would be much more explicit leading to fewer 
>> invalid combinations of configuration that a router vendor could support.
>> Additional levels of functionality could be supported with if-feature 
>> or extensions. The disadvantage is that the policy module is not as 
>> generic.
>>
>> So, to generalize, I believe the choice is between a more 
>> flexible/generic module with routers failing configurations that are 
>> not valid, or a more restrictive/limited/explicit base module where 
>> invalid configurations are rare.
>>
>> Sorry for the long explanation, but hopefully the explanation is clear.
>>
>> Thanks for your inputs.
>> Norm
>>
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>
> --
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: E74E8C0C

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Thu Jun  4 15:11:16 2015
Return-Path: <iesg-secretary@ietf.org>
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 38E1F1A0A6A; Thu,  4 Jun 2015 15:11:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.9
X-Spam-Level: 
X-Spam-Status: No, score=-101.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, USER_IN_WHITELIST=-100] 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 nBG0_8JqN7ai; Thu,  4 Jun 2015 15:11:14 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 440821A0378; Thu,  4 Jun 2015 15:11:14 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: IESG Secretary <iesg-secretary@ietf.org>
To: "IETF Announcement List" <ietf-announce@ietf.org>
X-Test-IDTracker: no
X-IETF-IDTracker: 6.0.3.p2
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20150604221114.32564.53802.idtracker@ietfa.amsl.com>
Date: Thu, 04 Jun 2015 15:11:14 -0700
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/d5qmByz35nJ3TAscwWx6PpXAwWg>
Cc: netmod@ietf.org
Subject: [netmod] NETMOD WG Virtual Interim Meeting: June 18, 2015
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: ietf@ietf.org
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: Thu, 04 Jun 2015 22:11:15 -0000

The NETCONF Data Modeling Language (NETMOD) Working Group will host a 2-
hour interim meeting on Thursday, June 18, 2015 from 1000-1200 EDT 
(1400-1600 UTC). The agenda will be to split the 2 hours in half, one 
hour for each of the the opstate and model-structure drafts.

Coordinates for meeting materials will follow on the NETMOD mailng list 
closer to the meeting date.


From nobody Thu Jun  4 19:44:15 2015
Return-Path: <bill.wu@huawei.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 92FF11AC3EA; Thu,  4 Jun 2015 19:44:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.01
X-Spam-Level: 
X-Spam-Status: No, score=-3.01 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, J_CHICKENPOX_12=0.6, J_CHICKENPOX_52=0.6, RCVD_IN_DNSWL_MED=-2.3, 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 NirxnHnaPX8L; Thu,  4 Jun 2015 19:44:05 -0700 (PDT)
Received: from lhrrgout.huawei.com (lhrrgout.huawei.com [194.213.3.17]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2F7051A92F4; Thu,  4 Jun 2015 19:44:04 -0700 (PDT)
Received: from 172.18.7.190 (EHLO lhreml404-hub.china.huawei.com) ([172.18.7.190]) by lhrrg02-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id BTL02257; Fri, 05 Jun 2015 02:44:02 +0000 (GMT)
Received: from NKGEML403-HUB.china.huawei.com (10.98.56.34) by lhreml404-hub.china.huawei.com (10.201.5.218) with Microsoft SMTP Server (TLS) id 14.3.158.1; Fri, 5 Jun 2015 03:44:00 +0100
Received: from NKGEML501-MBS.china.huawei.com ([169.254.2.89]) by nkgeml403-hub.china.huawei.com ([10.98.56.34]) with mapi id 14.03.0158.001; Fri, 5 Jun 2015 10:43:57 +0800
From: Qin Wu <bill.wu@huawei.com>
To: Benoit Claise <bclaise@cisco.com>, NETMOD Working Group <netmod@ietf.org>
Thread-Topic: [netmod] Fwd: New Version Notification - draft-bogdanovic-netmod-yang-model-classification-03.txt
Thread-Index: AQHQni9H7tDMWY529EOTEs/7N77Gfp2dMmvg
Date: Fri, 5 Jun 2015 02:43:56 +0000
Message-ID: <B8F9A780D330094D99AF023C5877DABA8475A93E@nkgeml501-mbs.china.huawei.com>
References: <20150603185534.20140.53505.idtracker@ietfa.amsl.com> <556F4E4A.8000700@cisco.com>
In-Reply-To: <556F4E4A.8000700@cisco.com>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.138.41.180]
Content-Type: multipart/alternative; boundary="_000_B8F9A780D330094D99AF023C5877DABA8475A93Enkgeml501mbschi_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/aR8HoU13Kflj02kU4xkRkVZ0Xrc>
Cc: "l3sm@ietf.org" <l3sm@ietf.org>
Subject: Re: [netmod] Fwd: New Version Notification - draft-bogdanovic-netmod-yang-model-classification-03.txt
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, 05 Jun 2015 02:44:12 -0000

--_000_B8F9A780D330094D99AF023C5877DABA8475A93Enkgeml501mbschi_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

VGhhbmtzIGZvciB1cGRhdGUuIFRoZSBwcm9wb3NlZCBjaGFuZ2VzIGxvb2sgZ3JlYXQuDQpJZiBt
eSB1bmRlcnN0YW5kaW5nIGlzIGNvcnJlY3QsIGRyYWZ0LWJvZ2Rhbm92aWMtbmV0bW9kLXlhbmct
bW9kZWwtY2xhc3NpZmljYXRpb24tMDIgaXMgbm90IG9ubHkgYSBnb29kIGJhc2lzIGZvciBMM1NN
IHdvcmsgYnV0IGFsc28gbGF5IG91dCBhIGdvb2QgcGF0aCBmb3IgWUFORyBBcmNoaXRlY3R1cmUg
d29yay4NCkhlcmUgYXJlICBhIGZldyBjb21tZW50cyBvbiBkcmFmdC1ib2dkYW5vdmljLW5ldG1v
ZC15YW5nLW1vZGVsLWNsYXNzaWZpY2F0aW9uLTAzOg0KDQoxLiAgICAgICBTZWN0aW9uIDIsIHRo
ZSAxc3QgcGFyYWdyYXBoOg0KW1Fpbl06SSB0aGluayB3aGF0ZXZlciBhcHByb2FjaCB3ZSB0YWtl
LCBoaWdoIGxldmVsIG1vZGVsIHNob3VsZCBiZSBidWlsdCBvbiB0b3Agb2YgbG93ZXIgbGF5ZXIg
bW9kZWwuIHVzdWFsbHkgZm9yIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiBzZXJ2aWNlIGFuZCBuZXR3
b3JrIG1hbmFnZW1lbnQgc3lzdGVtLCB3ZSBtYXkgY29uc2lkZXIgdG9wIGRvd24gYXBwcm9hY2gs
IGZvciB0aGUgaW50ZXJmYWNlIGJldHdlZW4gbmV0d29yayBtYW5hZ2VtZW50IHN5c3RlbSBhbmQg
bmV0d29yayBlbGVtZW50LCB3ZSB0YWtlIGJvdHRvbSB1cCBhcHByb2FjaCwgdGhlIHF1ZXN0aW9u
IGlzIGNhbiB0b3AgZG93biBhcHByb2FjaCBiZSBhbHNvIHVzZWQgZm9yIG1vZGVsaW5nIG5ldHdv
cmsgdGVjaG5vbG9neSBpbiB0aGUgc291dGhib3VuZCBpbnRlcmZhY2U/IEUuZy4sIHdlIGZpcnN0
IGhhdmUgYSBnZW5lcmljIGNvcmUgcm91dGluZyBkYXRhIG1vZGVsIGFuZCB0aGVuIHdlIGhhdmUg
dGVjaG5vbG9neSBzcGVjaWZpYyByb3V0aW5nIG1vZGVsLGUuZy4sIElTSVMgZGF0YSBtb2RlbCwg
T1NQRiBtb2RlbGluZywgaW4gdGhpcyBjYXNlLCBpdCBzZWVtcyB0byBtZSB3ZSBtYXAgZ2VuZXJp
YyBvciB0ZWNobm9sb2d5IGluZGVwZW5kZW50IG1vZGVsIGludG8gdGVjaG5vbG9neSBzcGVjaWZp
YyBtb2RlbC4NCg0KMi4gICAgICAgU2VjdGlvbiAyLCB0aGUgMm5kIHBhcmFncmFwaDoNCg0KW1Fp
bl06IHMvZGV2ZWxvbWVudC9kZXZlbG9wbWVudA0KDQozLiAgU2VjdGlvbiAyLCB0aGUgNHRoIHBh
cmFncmFwaCBzYWlkOg0K4oCcDQpMYXllcmluZyBvZiBtb2RlbHMgYWxsb3cgZm9yIHJldXNhYmls
aXR5IG9mDQpleGlzdGluZyBsb3dlciBsYXllciBtb2RlbHMgaW4gaGlnaGVyIGxldmVsIG1vZGVs
cyB3aGlsZSBsaW1pdGluZw0KZHVwbGljYXRpb24gb2YgZmVhdHVyZXMgYWNyb3NzIGxheWVycy4N
CuKAnQ0KW1Fpbl06IElmIG15IHVuZGVyc3RhbmRpbmcgaXMgY29ycmVjdCwgdGhlIGxvd2VyIGxh
eWVyIG1vZGVsIGlzIGNvcnJlc3BvbmRpbmcgdG8gZ2VuZXJpYyBtb2RlbCBoYXZpbmcgY29tbW9u
IGJ1aWxkaW5nIGJsb2NrcywgdGhlIGhpZ2hlciBsZXZlbCBtb2RlbCBpcyBjb3JyZXNwb25kaW5n
IHRvIHRlY2hub2xvZ3kgc3BlY2lmaWMgbW9kZWwgd2hpY2ggZXh0ZW5kIGZyb20gZ2VuZXJpYyBt
b2RlbCwgYnV0IEkgYW0gbm90IHN1cmUgaGlnaGVyIGxldmVsIG1vZGVsIGNhbiBiZSBjb3JyZXNw
b25kaW5nIHRvIHNlcnZpY2UgbW9kZWwgc2luY2Ugc2VydmljZSBtb2RlbCBqdXN0IG1hcCBzZXJ2
aWNlIHJlcXVpcmVtZW50IHRvIHNwZWNpZmljIG5ldHdvcmsgdGVjaG5vbG9neSBtb2RlbCwgYnV0
IG5vdCBzdXJlIGhvdyB0aGUgc2VydmljZSBtb2RlbCBpcyByZWFsbHkgcmV1c2luZyBleGlzdGlu
ZyBsb3dlciBsYXllciBtb2RlbC4NCg0KNC4gIFNlY3Rpb24gMi4xLCB0aGUgMXN0IHBhcmFncmFw
aDoNCltRaW5dOiBzLyB0aGUgTmV0d29yayBFbGVtZW50IGRhdGEgbW9kZWxzIG9mIHRoZSBwYXJ0
aWNpcGF0aW5nIG5ldHdvcmsgZWxlbWVudHMvZGF0YSBtb2RlbHMgb2YgdGhlIHBhcnRpY2lwYXRp
bmcgbmV0d29yayBlbGVtZW50cw0KDQo1LiAgU2VjdGlvbiAzLCB0aGUgMXN0IHBhcmFncmFwaDoN
CltRaW5dOiB3aGF0IGRvZXMg4oCcYXQgdmVyeSBoaWdoIGxldmVs4oCdIG1lYW5zPyBwcm9wcmll
dGFyeSBhbmQgc3RhbmRhcmQgbW9kZWwgYmVpbmcgY2F0ZWdvcml6ZWQgaW50byBoaWdoIGxldmVs
IG1vZGVsIG9yIG1vZGVsIGJlaW5nIGRpdmlkZWQgaW50byB0d28gdHlwZSBvZiBtb2RlbHMgaW4g
dGhlIGdlbmVyYWwgc2Vuc2U/IEkgdGhpbmsgaXQgaXMgdGhlIGxhdHRlci4gSWYgdGhlIGFuc3dl
ciBpcyB5ZXMsIGhvdyBhYm91dCBjaGFuZ2Ug4oCdQXQgdmVyeSBoaWdoIGxldmVs4oCdIHRvIOKA
nCBHZW5lcmFsbHkg4oCdb3Igc29tZXRoaW5nIGVsc2UgeW91IHRoaW5rIGFwcHJvcHJpYXRlPw0K
DQo2LiAgU2VjdGlvbiAzLCB0aGUgMm5kIHBhcmFncmFwaCBzYWlkOg0K4oCcDQpTdGFuZGFyZCBZ
QU5HIE1vZGVsOiBZQU5HIG1vZGVsIGRlZmluZWQgYnkgYW4gU3RhbmRhcmQgRGV2ZWxvcG1lbnQN
CiAgICAgIG9yZ2FuaXphdGlvbiAoU0RPKSwgZS5nLiAgSUVURiwgSUVFRS4NCg0KU3RhbmRhcmQg
RXh0ZW5zaW9uIFlBTkcgTW9kZWw6IFlBTkcgTW9kZWwgdGhhdCBkZXNjcmliZXMgYQ0KICAgICBz
dGFuZGFyZCBleHRlbnNpb24sIGV4YW1wbGUgcm91dGUgZmlsdGVyLCB0byBzdGFuZGFyZCBmaWx0
ZXIgWUFORw0KICAgICBtb2RlbC4NCuKAnQ0KDQpbUWluXTogTm90IHN1cmUgcm91dGVyIGZpbHRl
ciB0byBzdGFuZGFyZCBmaWx0ZXIgWUFORyBtb2RlbCBpcyBhIGdvb2QgZXhhbXBsZSBmb3Igc3Rh
bmRhcmQgZXh0ZW5zaW9uIFlBTkcgbW9kZWwsIEkgdGhpbmsgaWYgd2UgY2hvb3NlIGNvcmUgcm91
dGluZyBkYXRhIG1vZGVsIGFzIHN0YW5kYXJkIFlBTkcgbW9kZWwsICB0aGVuIHN0YW5kYXJkIGV4
dGVuc2lvbiBZQU5HIG1vZGVsIHRvIGNvcmUgcm91dGluZyBkYXRhIG1vZGVsIGlzIE9TUEYgWUFO
RyBkYXRhIG1vZGVsIG9yIElTSVMgWUFORyBkYXRhIG1vZGVsLg0KDQpJdCBpcyBiZXR0ZXIgdG8g
ZGVzY3JpYmUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHN0YW5kYXJkIFlBTkcgbW9kZWwgYW5k
IFN0YW5kYXJkIEV4dGVuc2lvbiBZQU5HIG1vZGVsIGluIHRoZSB0ZXh0LiBJIHRoaW5rIFN0YW5k
YXJkIFlBTkcgbW9kZWwgaXMgdGhlIGJhc2lzIHRvIGJ1aWxkIFN0YW5kYXJkIEV4dGVuc2lvbiBZ
QU5HIG1vZGVsLCBTdGFuZGFyZCBZQU5HIG1vZGVsIGNhbiBiZSByZWdhcmRlZCBhcyBHZW5lcmlj
IG1vZGVsIG9yIGxvd2VzdCBsZXZlbCBtb2RlbCwgc3RhbmRhcmQgZXh0ZW5zaW9uIG1vZGVsIHdp
bGwgZXh0ZW5kIGZyb20gc3RhbmRhcmQgbW9kZWwgd2l0aCB0ZWNobm9sb2d5IHNwZWNpZmljIGFu
ZCBjYW4gYmUgcmVnYXJkZWQgYXMgdGVjaG5vbG9neSBzcGVjaWZpYyBtb2RlbCBvciBoaWdoZXIg
bGV2ZWwgbW9kZWwuDQoNCjcuICBTZWN0aW9uIDMsIHRoZSAybmQgcGFyYWdyYXBoIHNhaWQ6DQri
gJwNClZlbmRvciBDb25maWd1cmF0aW9uIE1vZGVsOiBJdCBkZXNjcmliZXMgYWxsIGNvbmZpZ3Vy
YWJsZQ0KICAgICAgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2UgYW5kIHdoYXQgZGV2aWNlIHZl
bmRvciBleHBvc2VzIGZvcg0KICAgICAgY29uZmlndXJhdGlvbi4gIFRoZSB2ZW5kb3IgY29uZmln
dXJhdGlvbiBtb2RlbCBjYW4gYmUgQ0xJIG9yIFlBTkctDQogICAgICBiYXNlZC4NCuKAnQ0KW1Fp
bl06IFdoZW4gd2Ugc2F5IHByb3ByaWV0YXJ5IGV4dGVuc2lvbnMgdG8gc3RhbmRhcmQgWUFORyBt
b2RlbCBtdXN0IGNvbXBsZW1lbnQgdGhlIFN0YW5kYXJkIFlBTkcgTW9kZWxzIHRvIHJlcHJlc2Vu
dCBhIFZlbmRvciBDb25maWd1cmF0aW9uIE1vZGVsLCBob3cgcHJvcHJpZXRhcnkgZXh0ZW5zaW9u
cyB0byBzdGFuZGFyZCBZQU5HIG1vZGVsIGlzIHJlbGF0ZWQgdG8gVmVuZG9yIENvbmZpZ3VyYXRp
b24gbW9kZWw/DQpDYW4geW91IGdpdmUgYSBzcGVjaWFsIGV4YW1wbGUgZm9yIFZlbmRvciBDb25m
aWd1cmF0aW9uIG1vZGVsPyBIb3cgVmVuZG9yIENvbmZpZ3VyYXRpb24gbW9kZWwgaXMgcmVsYXRl
ZCB0byBJbnZlbnRvcnkgbW9kZWwgb3IgbmV0d29yayBjYXBhYmlsaXR5IG1vZGVsP0lzIHZlbmRv
ciBjb25maWd1cmF0aW9uIG1vZGVsIGFsc28gUHJvcHJpZXRhcnkgWUFORyBNb2RlbCBvciB2ZW5k
b3Igc3BlY2lmaWMgbW9kZWw/DQoNCg0KOC4gICAgICAgU2VjdGlvbiAzLjQsIHRoZSAxc3QgcGFy
YWdyYXBoDQpbUWluXTogSXMgdmVuZG9yIGNvbmZpZ3VyYXRpb24gbW9kZWwgbG93ZXN0IG1vZGVs
IGluIHRoZSBZQU5HIG1vZGVsIGxheWVyaW5nIG9yIHN1cGVyc2V0IG9mIGFsbCB0eXBlIG9mIFlB
TkcgbW9kZWxzIGluY2x1ZGluZyBTdGFuZGFyZCBZQU5HIG1vZGVsLCBTdGFuZGFyZCBFeHRlbnNp
b24gWUFORyBtb2RlbCwgUHJvcHJpZXRhcnkgRXh0ZW5zaW9uIHRvIFN0YW5kYXJkIFlBTkcgTW9k
ZWwsIFByb3ByaWV0YXJ5IFlBTkcgTW9kZWw/DQoNCg0KUmVnYXJkcyENCi1RaW4NCuWPkeS7tuS6
ujogbmV0bW9kIFttYWlsdG86bmV0bW9kLWJvdW5jZXNAaWV0Zi5vcmddIOS7o+ihqCBCZW5vaXQg
Q2xhaXNlDQrlj5HpgIHml7bpl7Q6IDIwMTXlubQ25pyINOaXpSAyOjU4DQrmlLbku7bkuro6IE5F
VE1PRCBXb3JraW5nIEdyb3VwDQrkuLvpopg6IFtuZXRtb2RdIEZ3ZDogTmV3IFZlcnNpb24gTm90
aWZpY2F0aW9uIC0gZHJhZnQtYm9nZGFub3ZpYy1uZXRtb2QteWFuZy1tb2RlbC1jbGFzc2lmaWNh
dGlvbi0wMy50eHQNCg0KRllJLg0KDQpSZWdhcmRzLCBCZW5vaXQNCg0KDQotLS0tLS0tLSBGb3J3
YXJkZWQgTWVzc2FnZSAtLS0tLS0tLQ0KU3ViamVjdDoNCg0KTmV3IFZlcnNpb24gTm90aWZpY2F0
aW9uIC0gZHJhZnQtYm9nZGFub3ZpYy1uZXRtb2QteWFuZy1tb2RlbC1jbGFzc2lmaWNhdGlvbi0w
My50eHQNCg0KRGF0ZToNCg0KV2VkLCAzIEp1biAyMDE1IDExOjU1OjM0IC0wNzAwDQoNCkZyb206
DQoNCmludGVybmV0LWRyYWZ0c0BpZXRmLm9yZzxtYWlsdG86aW50ZXJuZXQtZHJhZnRzQGlldGYu
b3JnPg0KDQpUbzoNCg0KZHJhZnQtYm9nZGFub3ZpYy1uZXRtb2QteWFuZy1tb2RlbC1jbGFzc2lm
aWNhdGlvbi5zaGVwaGVyZEBpZXRmLm9yZzxtYWlsdG86ZHJhZnQtYm9nZGFub3ZpYy1uZXRtb2Qt
eWFuZy1tb2RlbC1jbGFzc2lmaWNhdGlvbi5zaGVwaGVyZEBpZXRmLm9yZz4sIGRlYW5iQGp1bmlw
ZXIubmV0PG1haWx0bzpkZWFuYkBqdW5pcGVyLm5ldD4sIGRyYWZ0LWJvZ2Rhbm92aWMtbmV0bW9k
LXlhbmctbW9kZWwtY2xhc3NpZmljYXRpb24uYWRAaWV0Zi5vcmc8bWFpbHRvOmRyYWZ0LWJvZ2Rh
bm92aWMtbmV0bW9kLXlhbmctbW9kZWwtY2xhc3NpZmljYXRpb24uYWRAaWV0Zi5vcmc+LCBiY2xh
aXNlQGNpc2NvLmNvbTxtYWlsdG86YmNsYWlzZUBjaXNjby5jb20+LCBkcmFmdC1ib2dkYW5vdmlj
LW5ldG1vZC15YW5nLW1vZGVsLWNsYXNzaWZpY2F0aW9uQGlldGYub3JnPG1haWx0bzpkcmFmdC1i
b2dkYW5vdmljLW5ldG1vZC15YW5nLW1vZGVsLWNsYXNzaWZpY2F0aW9uQGlldGYub3JnPiwgY2Ft
b2JlcmdAY2lzY28uY29tPG1haWx0bzpjYW1vYmVyZ0BjaXNjby5jb20+LCBqb2VsamFAYm9ndXMu
Y29tPG1haWx0bzpqb2VsamFAYm9ndXMuY29tPg0KDQoNCg0KQSBuZXcgdmVyc2lvbiAoLTAzKSBo
YXMgYmVlbiBzdWJtaXR0ZWQgZm9yIGRyYWZ0LWJvZ2Rhbm92aWMtbmV0bW9kLXlhbmctbW9kZWwt
Y2xhc3NpZmljYXRpb246DQoNCmh0dHBzOi8vd3d3LmlldGYub3JnL2ludGVybmV0LWRyYWZ0cy9k
cmFmdC1ib2dkYW5vdmljLW5ldG1vZC15YW5nLW1vZGVsLWNsYXNzaWZpY2F0aW9uLTAzLnR4dA0K
DQoNCg0KDQoNClRoZSBJRVRGIGRhdGF0cmFja2VyIHBhZ2UgZm9yIHRoaXMgSW50ZXJuZXQtRHJh
ZnQgaXM6DQoNCmh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2RyYWZ0LWJvZ2Rhbm92
aWMtbmV0bW9kLXlhbmctbW9kZWwtY2xhc3NpZmljYXRpb24vDQoNCg0KDQpEaWZmIGZyb20gcHJl
dmlvdXMgdmVyc2lvbjoNCg0KaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjZGlmZj91cmwyPWRyYWZ0
LWJvZ2Rhbm92aWMtbmV0bW9kLXlhbmctbW9kZWwtY2xhc3NpZmljYXRpb24tMDMNCg0KDQoNClBs
ZWFzZSBub3RlIHRoYXQgaXQgbWF5IHRha2UgYSBjb3VwbGUgb2YgbWludXRlcyBmcm9tIHRoZSB0
aW1lIG9mIHN1Ym1pc3Npb24NCg0KdW50aWwgdGhlIGh0bWxpemVkIHZlcnNpb24gYW5kIGRpZmYg
YXJlIGF2YWlsYWJsZSBhdCB0b29scy5pZXRmLm9yZy4NCg0KDQoNCklFVEYgU2VjcmV0YXJpYXQu
DQoNCg0KDQouDQoNCg0KDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo=

--_000_B8F9A780D330094D99AF023C5877DABA8475A93Enkgeml501mbschi_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy
bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt
YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv
ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTIgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPCFbaWYg
IXN1cHBvcnRBbm5vdGF0aW9uc10+PHN0eWxlIGlkPSJkeW5Db20iIHR5cGU9InRleHQvY3NzIj48
IS0tIC0tPjwvc3R5bGU+PHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+PCEtLQ0KZnVuY3Rp
b24gbXNvQ29tbWVudFNob3coYW5jaG9yX2lkLCBjb21faWQpDQp7DQoJaWYobXNvQnJvd3NlckNo
ZWNrKCkpIA0KCQl7DQoJCWMgPSBkb2N1bWVudC5hbGwoY29tX2lkKTsNCgkJYSA9IGRvY3VtZW50
LmFsbChhbmNob3JfaWQpOw0KCQlpZiAobnVsbCAhPSBjICYmIG51bGwgPT0gYy5sZW5ndGggJiYg
bnVsbCAhPSBhICYmIG51bGwgPT0gYS5sZW5ndGgpDQoJCQl7DQoJCQl2YXIgY3cgPSBjLm9mZnNl
dFdpZHRoOw0KCQkJdmFyIGNoID0gYy5vZmZzZXRIZWlnaHQ7DQoJCQl2YXIgYXcgPSBhLm9mZnNl
dFdpZHRoOw0KCQkJdmFyIGFoID0gYS5vZmZzZXRIZWlnaHQ7DQoJCQl2YXIgeCAgPSBhLm9mZnNl
dExlZnQ7DQoJCQl2YXIgeSAgPSBhLm9mZnNldFRvcDsNCgkJCXZhciBlbCA9IGE7DQoJCQl3aGls
ZSAoZWwudGFnTmFtZSAhPSAiQk9EWSIpIA0KCQkJCXsNCgkJCQllbCA9IGVsLm9mZnNldFBhcmVu
dDsNCgkJCQl4ID0geCArIGVsLm9mZnNldExlZnQ7DQoJCQkJeSA9IHkgKyBlbC5vZmZzZXRUb3A7
DQoJCQkJfQ0KCQkJdmFyIGJ3ID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDsNCgkJCXZhciBi
aCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0Ow0KCQkJdmFyIGJzbCA9IGRvY3VtZW50LmJv
ZHkuc2Nyb2xsTGVmdDsNCgkJCXZhciBic3QgPSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsNCgkJ
CWlmICh4ICsgY3cgKyBhaCAvIDIgPiBidyArIGJzbCAmJiB4ICsgYXcgLSBhaCAvIDIgLSBjdyA+
PSBic2wgKSANCgkJCQl7IGMuc3R5bGUubGVmdCA9IHggKyBhdyAtIGFoIC8gMiAtIGN3OyB9DQoJ
CQllbHNlIA0KCQkJCXsgYy5zdHlsZS5sZWZ0ID0geCArIGFoIC8gMjsgfQ0KCQkJaWYgKHkgKyBj
aCArIGFoIC8gMiA+IGJoICsgYnN0ICYmIHkgKyBhaCAvIDIgLSBjaCA+PSBic3QgKSANCgkJCQl7
IGMuc3R5bGUudG9wID0geSArIGFoIC8gMiAtIGNoOyB9DQoJCQllbHNlIA0KCQkJCXsgYy5zdHls
ZS50b3AgPSB5ICsgYWggLyAyOyB9DQoJCQljLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7
DQp9CX0JfQ0KZnVuY3Rpb24gbXNvQ29tbWVudEhpZGUoY29tX2lkKSANCnsNCglpZihtc29Ccm93
c2VyQ2hlY2soKSkNCgkJew0KCQljID0gZG9jdW1lbnQuYWxsKGNvbV9pZCk7DQoJCWlmIChudWxs
ICE9IGMgJiYgbnVsbCA9PSBjLmxlbmd0aCkNCgkJew0KCQljLnN0eWxlLnZpc2liaWxpdHkgPSAi
aGlkZGVuIjsNCgkJYy5zdHlsZS5sZWZ0ID0gLTEwMDA7DQoJCWMuc3R5bGUudG9wID0gLTEwMDA7
DQoJCX0gfSANCn0NCmZ1bmN0aW9uIG1zb0Jyb3dzZXJDaGVjaygpDQp7DQoJbXMgPSBuYXZpZ2F0
b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJNU0lFIik7DQoJdmVycyA9IG5hdmlnYXRvci5hcHBWZXJz
aW9uLnN1YnN0cmluZyhtcyArIDUsIG1zICsgNik7DQoJaWU0ID0gKG1zID4gMCkgJiYgKHBhcnNl
SW50KHZlcnMpID49IDQpOw0KCXJldHVybiBpZTQ7DQp9DQppZiAobXNvQnJvd3NlckNoZWNrKCkp
DQp7DQoJZG9jdW1lbnQuc3R5bGVTaGVldHMuZHluQ29tLmFkZFJ1bGUoIi5tc29jb21hbmNob3Ii
LCJiYWNrZ3JvdW5kOiBpbmZvYmFja2dyb3VuZCIpOw0KCWRvY3VtZW50LnN0eWxlU2hlZXRzLmR5
bkNvbS5hZGRSdWxlKCIubXNvY29tb2ZmIiwiZGlzcGxheTogbm9uZSIpOw0KCWRvY3VtZW50LnN0
eWxlU2hlZXRzLmR5bkNvbS5hZGRSdWxlKCIubXNvY29tdHh0IiwidmlzaWJpbGl0eTogaGlkZGVu
Iik7DQoJZG9jdW1lbnQuc3R5bGVTaGVldHMuZHluQ29tLmFkZFJ1bGUoIi5tc29jb210eHQiLCJw
b3NpdGlvbjogYWJzb2x1dGUiKTsNCglkb2N1bWVudC5zdHlsZVNoZWV0cy5keW5Db20uYWRkUnVs
ZSgiLm1zb2NvbXR4dCIsInRvcDogLTEwMDAiKTsNCglkb2N1bWVudC5zdHlsZVNoZWV0cy5keW5D
b20uYWRkUnVsZSgiLm1zb2NvbXR4dCIsImxlZnQ6IC0xMDAwIik7DQoJZG9jdW1lbnQuc3R5bGVT
aGVldHMuZHluQ29tLmFkZFJ1bGUoIi5tc29jb210eHQiLCJ3aWR0aDogMzMlIik7DQoJZG9jdW1l
bnQuc3R5bGVTaGVldHMuZHluQ29tLmFkZFJ1bGUoIi5tc29jb210eHQiLCJiYWNrZ3JvdW5kOiBp
bmZvYmFja2dyb3VuZCIpOw0KCWRvY3VtZW50LnN0eWxlU2hlZXRzLmR5bkNvbS5hZGRSdWxlKCIu
bXNvY29tdHh0IiwiY29sb3I6IGluZm90ZXh0Iik7DQoJZG9jdW1lbnQuc3R5bGVTaGVldHMuZHlu
Q29tLmFkZFJ1bGUoIi5tc29jb210eHQiLCJib3JkZXItdG9wOiAxcHQgc29saWQgdGhyZWVkbGln
aHRzaGFkb3ciKTsNCglkb2N1bWVudC5zdHlsZVNoZWV0cy5keW5Db20uYWRkUnVsZSgiLm1zb2Nv
bXR4dCIsImJvcmRlci1yaWdodDogMnB0IHNvbGlkIHRocmVlZHNoYWRvdyIpOw0KCWRvY3VtZW50
LnN0eWxlU2hlZXRzLmR5bkNvbS5hZGRSdWxlKCIubXNvY29tdHh0IiwiYm9yZGVyLWJvdHRvbTog
MnB0IHNvbGlkIHRocmVlZHNoYWRvdyIpOw0KCWRvY3VtZW50LnN0eWxlU2hlZXRzLmR5bkNvbS5h
ZGRSdWxlKCIubXNvY29tdHh0IiwiYm9yZGVyLWxlZnQ6IDFwdCBzb2xpZCB0aHJlZWRsaWdodHNo
YWRvdyIpOw0KCWRvY3VtZW50LnN0eWxlU2hlZXRzLmR5bkNvbS5hZGRSdWxlKCIubXNvY29tdHh0
IiwicGFkZGluZzogM3B0IDNwdCAzcHQgM3B0Iik7DQoJZG9jdW1lbnQuc3R5bGVTaGVldHMuZHlu
Q29tLmFkZFJ1bGUoIi5tc29jb210eHQiLCJ6LWluZGV4OiAxMDAiKTsNCn0NCi8vIC0tPjwvc2Ny
aXB0PjwhW2VuZGlmXT48c3R5bGU+PCEtLQ0KLyogRm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQt
ZmFjZQ0KCXtmb250LWZhbWlseTrlrovkvZM7DQoJcGFub3NlLTE6MiAxIDYgMCAzIDEgMSAxIDEg
MTt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOw0KCXBhbm9zZS0x
OjIgNCA1IDMgNSA0IDYgMyAyIDQ7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDYWxpYnJp
Ow0KCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1m
YW1pbHk6IlxA5a6L5L2TIjsNCglwYW5vc2UtMToyIDEgNiAwIDMgMSAxIDEgMSAxO30NCi8qIFN0
eWxlIERlZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9y
bWFsDQoJe21hcmdpbjowY207DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZvbnQtc2l6ZTox
Mi4wcHQ7DQoJZm9udC1mYW1pbHk65a6L5L2TOw0KCWNvbG9yOmJsYWNrO30NCnAuTXNvQ29tbWVu
dFRleHQsIGxpLk1zb0NvbW1lbnRUZXh0LCBkaXYuTXNvQ29tbWVudFRleHQNCgl7bXNvLXN0eWxl
LXByaW9yaXR5Ojk5Ow0KCW1zby1zdHlsZS1saW5rOiLmibnms6jmloflrZcgQ2hhciI7DQoJbWFy
Z2luOjBjbTsNCgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJZm9udC1zaXplOjEwLjVwdDsNCglm
b250LWZhbWlseToiQ2FsaWJyaSIsInNhbnMtc2VyaWYiO30NCnNwYW4uTXNvQ29tbWVudFJlZmVy
ZW5jZQ0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7fQ0KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGlu
aw0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6Ymx1ZTsNCgl0ZXh0LWRlY29yYXRp
b246dW5kZXJsaW5lO30NCmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZA0KCXtt
c28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6cHVycGxlOw0KCXRleHQtZGVjb3JhdGlvbjp1
bmRlcmxpbmU7fQ0KcHJlDQoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsNCgltc28tc3R5bGUtbGlu
azoiSFRNTCDpooTorr7moLzlvI8gQ2hhciI7DQoJbWFyZ2luOjBjbTsNCgltYXJnaW4tYm90dG9t
Oi4wMDAxcHQ7DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseTrlrovkvZM7DQoJY29s
b3I6YmxhY2s7fQ0KcC5Nc29BY2V0YXRlLCBsaS5Nc29BY2V0YXRlLCBkaXYuTXNvQWNldGF0ZQ0K
CXttc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJbXNvLXN0eWxlLWxpbms6IuaJueazqOahhuaWh+ac
rCBDaGFyIjsNCgltYXJnaW46MGNtOw0KCW1hcmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250LXNp
emU6OS4wcHQ7DQoJZm9udC1mYW1pbHk65a6L5L2TOw0KCWNvbG9yOmJsYWNrO30NCnAuTXNvTGlz
dFBhcmFncmFwaCwgbGkuTXNvTGlzdFBhcmFncmFwaCwgZGl2Lk1zb0xpc3RQYXJhZ3JhcGgNCgl7
bXNvLXN0eWxlLXByaW9yaXR5OjM0Ow0KCW1hcmdpbjowY207DQoJbWFyZ2luLWJvdHRvbTouMDAw
MXB0Ow0KCXRleHQtaW5kZW50OjIxLjBwdDsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFt
aWx5OuWui+S9kzsNCgljb2xvcjpibGFjazt9DQpzcGFuLkhUTUxDaGFyDQoJe21zby1zdHlsZS1u
YW1lOiJIVE1MIOmihOiuvuagvOW8jyBDaGFyIjsNCgltc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJ
bXNvLXN0eWxlLWxpbms6IkhUTUwg6aKE6K6+5qC85byPIjsNCglmb250LWZhbWlseToiQ291cmll
ciBOZXciOw0KCWNvbG9yOmJsYWNrO30NCnNwYW4uRW1haWxTdHlsZTE5DQoJe21zby1zdHlsZS10
eXBlOnBlcnNvbmFsLXJlcGx5Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7
DQoJY29sb3I6IzFGNDk3RDt9DQpzcGFuLkNoYXINCgl7bXNvLXN0eWxlLW5hbWU6IuaJueazqOaW
h+WtlyBDaGFyIjsNCgltc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJbXNvLXN0eWxlLWxpbms65om5
5rOo5paH5a2XOw0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7fQ0Kc3Bhbi5D
aGFyMA0KCXttc28tc3R5bGUtbmFtZToi5om55rOo5qGG5paH5pysIENoYXIiOw0KCW1zby1zdHls
ZS1wcmlvcml0eTo5OTsNCgltc28tc3R5bGUtbGluazrmibnms6jmoYbmlofmnKw7DQoJZm9udC1m
YW1pbHk65a6L5L2TOw0KCWNvbG9yOmJsYWNrO30NCi5Nc29DaHBEZWZhdWx0DQoJe21zby1zdHls
ZS10eXBlOmV4cG9ydC1vbmx5Ow0KCWZvbnQtc2l6ZToxMC4wcHQ7fQ0KQHBhZ2UgV29yZFNlY3Rp
b24xDQoJe3NpemU6NjEyLjBwdCA3OTIuMHB0Ow0KCW1hcmdpbjo3Mi4wcHQgOTAuMHB0IDcyLjBw
dCA5MC4wcHQ7fQ0KZGl2LldvcmRTZWN0aW9uMQ0KCXtwYWdlOldvcmRTZWN0aW9uMTt9DQovKiBM
aXN0IERlZmluaXRpb25zICovDQpAbGlzdCBsMA0KCXttc28tbGlzdC1pZDo2NDUzNTgyNTk7DQoJ
bXNvLWxpc3QtdHlwZTpoeWJyaWQ7DQoJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOi0xNDc0NjU2MTA0
IC02NDkwMzY3NjYgNjc2OTg3MTMgNjc2OTg3MTUgNjc2OTg3MDMgNjc2OTg3MTMgNjc2OTg3MTUg
Njc2OTg3MDMgNjc2OTg3MTMgNjc2OTg3MTU7fQ0KQGxpc3QgbDA6bGV2ZWwxDQoJe21zby1sZXZl
bC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgltYXJn
aW4tbGVmdDoxOC4wcHQ7DQoJdGV4dC1pbmRlbnQ6LTE4LjBwdDt9DQpvbA0KCXttYXJnaW4tYm90
dG9tOjBjbTt9DQp1bA0KCXttYXJnaW4tYm90dG9tOjBjbTt9DQotLT48L3N0eWxlPjwhLS1baWYg
Z3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVkZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0i
MTAyNiIgLz4NCjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86
c2hhcGVsYXlvdXQgdjpleHQ9ImVkaXQiPg0KPG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEi
IC8+DQo8L286c2hhcGVsYXlvdXQ+PC94bWw+PCFbZW5kaWZdLS0+DQo8L2hlYWQ+DQo8Ym9keSBi
Z2NvbG9yPSJ3aGl0ZSIgbGFuZz0iWkgtQ04iIGxpbms9ImJsdWUiIHZsaW5rPSJwdXJwbGUiPg0K
PGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxh
bmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjVwdDtmb250LWZhbWlseTomcXVvdDtDYWxp
YnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+VGhhbmtzIGZv
ciB1cGRhdGUuIFRoZSBwcm9wb3NlZCBjaGFuZ2VzIGxvb2sgZ3JlYXQuPG86cD48L286cD48L3Nw
YW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm
b250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fu
cy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5JZiBteSB1bmRlcnN0YW5kaW5nIGlzIGNvcnJl
Y3QsIGRyYWZ0LWJvZ2Rhbm92aWMtbmV0bW9kLXlhbmctbW9kZWwtY2xhc3NpZmljYXRpb24tMDIg
aXMgbm90IG9ubHkgYSBnb29kIGJhc2lzIGZvciBMM1NNIHdvcmsgYnV0IGFsc28gbGF5IG91dCBh
DQogZ29vZCBwYXRoIGZvciBZQU5HIEFyY2hpdGVjdHVyZSB3b3JrLjwvc3Bhbj48c3BhbiBsYW5n
PSJFTi1VUyI+PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90
O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5IZXJl
IGFyZSZuYnNwOyBhIGZldyBjb21tZW50cyBvbiBkcmFmdC1ib2dkYW5vdmljLW5ldG1vZC15YW5n
LW1vZGVsLWNsYXNzaWZpY2F0aW9uLTAzOjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTguMHB0O3RleHQtaW5kZW50
Oi0xOC4wcHQ7bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPg0KPCFbaWYgIXN1cHBvcnRMaXN0c10+
PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZx
dW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48
c3BhbiBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj4xLjxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZx
dW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7DQo8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gbGFuZz0iRU4tVVMi
IHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss
JnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5TZWN0aW9uIDIsIHRoZSAxPHN1
cD5zdDwvc3VwPiBwYXJhZ3JhcGg6PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPltRaW5dOkkgdGhpbmsgd2hhdGV2ZXIgYXBwcm9h
Y2ggd2UgdGFrZSwgaGlnaCBsZXZlbCBtb2RlbCBzaG91bGQgYmUgYnVpbHQgb24gdG9wIG9mIGxv
d2VyIGxheWVyIG1vZGVsLiB1c3VhbGx5IGZvciB0aGUgaW50ZXJmYWNlIGJldHdlZW4gc2Vydmlj
ZSBhbmQgbmV0d29yayBtYW5hZ2VtZW50IHN5c3RlbSwgd2UgbWF5IGNvbnNpZGVyIHRvcCBkb3du
IGFwcHJvYWNoLCBmb3IgdGhlDQogaW50ZXJmYWNlIGJldHdlZW4gbmV0d29yayBtYW5hZ2VtZW50
IHN5c3RlbSBhbmQgbmV0d29yayBlbGVtZW50LCB3ZSB0YWtlIGJvdHRvbSB1cCBhcHByb2FjaCwg
dGhlIHF1ZXN0aW9uIGlzIGNhbiB0b3AgZG93biBhcHByb2FjaCBiZSBhbHNvIHVzZWQgZm9yIG1v
ZGVsaW5nIG5ldHdvcmsgdGVjaG5vbG9neSBpbiB0aGUgc291dGhib3VuZCBpbnRlcmZhY2U/IEUu
Zy4sIHdlIGZpcnN0IGhhdmUgYSBnZW5lcmljIGNvcmUgcm91dGluZyBkYXRhIG1vZGVsDQogYW5k
IHRoZW4gd2UgaGF2ZSB0ZWNobm9sb2d5IHNwZWNpZmljIHJvdXRpbmcgbW9kZWwsZS5nLiwgSVNJ
UyBkYXRhIG1vZGVsLCBPU1BGIG1vZGVsaW5nLCBpbiB0aGlzIGNhc2UsIGl0IHNlZW1zIHRvIG1l
IHdlIG1hcCBnZW5lcmljIG9yIHRlY2hub2xvZ3kgaW5kZXBlbmRlbnQgbW9kZWwgaW50byB0ZWNo
bm9sb2d5IHNwZWNpZmljIG1vZGVsLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN
c29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTguMHB0O3RleHQtaW5kZW50Oi0x
OC4wcHQ7bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPg0KPCFbaWYgIXN1cHBvcnRMaXN0c10+PHNw
YW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90
O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48c3Bh
biBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj4yLjxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90
O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7DQo8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gbGFuZz0iRU4tVVMiIHN0
eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1
b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5TZWN0aW9uIDIsIHRoZSAybmQgcGFy
YWdyYXBoOjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Db21tZW50VGV4dCI+
PHNwYW4gbGFuZz0iRU4tVVMiPltRaW5dOiBzL2RldmVsb21lbnQvZGV2ZWxvcG1lbnQ8bzpwPjwv
bzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9Im1hcmdp
bi1sZWZ0OjE4LjBwdDt0ZXh0LWluZGVudDotMTguMHB0O21zby1saXN0OmwwIGxldmVsMSBsZm8x
Ij4NCjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuIGxhbmc9IkVOLVVTIj48c3BhbiBzdHlsZT0i
bXNvLWxpc3Q6SWdub3JlIj4zLjxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90O1RpbWVzIE5l
dyBSb21hbiZxdW90OyI+Jm5ic3A7DQo8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNw
YW4gbGFuZz0iRU4tVVMiPlNlY3Rpb24gMiwgdGhlIDQ8c3VwPnRoPC9zdXA+IHBhcmFncmFwaCBz
YWlkOjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPuKAnDxzcGFu
IGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48c3BhbiBsYW5nPSJFTi1VUyI+TGF5ZXJpbmcgb2YgbW9kZWxzIGFsbG93IGZvciByZXVzYWJp
bGl0eSBvZjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu
IGxhbmc9IkVOLVVTIj5leGlzdGluZyBsb3dlciBsYXllciBtb2RlbHMgaW4gaGlnaGVyIGxldmVs
IG1vZGVscyB3aGlsZSBsaW1pdGluZzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5kdXBsaWNhdGlvbiBvZiBmZWF0dXJlcyBhY3Jv
c3MgbGF5ZXJzLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPuKA
nTxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+W1Fpbl06IElmIG15IHVuZGVyc3RhbmRpbmcgaXMg
Y29ycmVjdCwgdGhlIGxvd2VyIGxheWVyIG1vZGVsIGlzIGNvcnJlc3BvbmRpbmcgdG8gZ2VuZXJp
YyBtb2RlbCBoYXZpbmcgY29tbW9uIGJ1aWxkaW5nIGJsb2NrcywgdGhlIGhpZ2hlciBsZXZlbCBt
b2RlbCBpcyBjb3JyZXNwb25kaW5nIHRvIHRlY2hub2xvZ3kgc3BlY2lmaWMgbW9kZWwgd2hpY2gg
ZXh0ZW5kIGZyb20gZ2VuZXJpYw0KIG1vZGVsLCBidXQgSSBhbSBub3Qgc3VyZSBoaWdoZXIgbGV2
ZWwgbW9kZWwgY2FuIGJlIGNvcnJlc3BvbmRpbmcgdG8gc2VydmljZSBtb2RlbCBzaW5jZSBzZXJ2
aWNlIG1vZGVsIGp1c3QgbWFwIHNlcnZpY2UgcmVxdWlyZW1lbnQgdG8gc3BlY2lmaWMgbmV0d29y
ayB0ZWNobm9sb2d5IG1vZGVsLCBidXQgbm90IHN1cmUgaG93IHRoZSBzZXJ2aWNlIG1vZGVsIGlz
IHJlYWxseSByZXVzaW5nIGV4aXN0aW5nIGxvd2VyIGxheWVyIG1vZGVsLjxvOnA+PC9vOnA+PC9z
cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6
MTguMHB0O3RleHQtaW5kZW50Oi0xOC4wcHQ7bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPg0KPCFb
aWYgIXN1cHBvcnRMaXN0c10+PHNwYW4gbGFuZz0iRU4tVVMiPjxzcGFuIHN0eWxlPSJtc28tbGlz
dDpJZ25vcmUiPjQuPHNwYW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFu
JnF1b3Q7Ij4mbmJzcDsNCjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBsYW5n
PSJFTi1VUyI+U2VjdGlvbiAyLjEsIHRoZSAxPHN1cD5zdDwvc3VwPiBwYXJhZ3JhcGg6PG86cD48
L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMi
PltRaW5dOiBzLyB0aGUgTmV0d29yayBFbGVtZW50IGRhdGEgbW9kZWxzIG9mIHRoZSBwYXJ0aWNp
cGF0aW5nIG5ldHdvcmsgZWxlbWVudHMvZGF0YSBtb2RlbHMgb2YgdGhlIHBhcnRpY2lwYXRpbmcg
bmV0d29yayBlbGVtZW50czxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29MaXN0
UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTguMHB0O3RleHQtaW5kZW50Oi0xOC4wcHQ7
bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPg0KPCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4gbGFu
Zz0iRU4tVVMiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPjUuPHNwYW4gc3R5bGU9ImZv
bnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDsNCjwvc3Bhbj48L3Nw
YW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBsYW5nPSJFTi1VUyI+U2VjdGlvbiAzLCB0aGUgMTxz
dXA+c3Q8L3N1cD4gcGFyYWdyYXBoOjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5bUWluXTogd2hhdCBkb2VzIOKAnGF0IHZlcnkg
aGlnaCBsZXZlbOKAnSBtZWFucz8gcHJvcHJpZXRhcnkgYW5kIHN0YW5kYXJkIG1vZGVsIGJlaW5n
IGNhdGVnb3JpemVkIGludG8gaGlnaCBsZXZlbCBtb2RlbCBvciBtb2RlbCBiZWluZyBkaXZpZGVk
IGludG8gdHdvIHR5cGUgb2YgbW9kZWxzIGluIHRoZSBnZW5lcmFsIHNlbnNlPyBJIHRoaW5rIGl0
IGlzIHRoZSBsYXR0ZXIuIElmIHRoZQ0KIGFuc3dlciBpcyB5ZXMsIGhvdyBhYm91dCBjaGFuZ2Ug
4oCdQXQgdmVyeSBoaWdoIGxldmVs4oCdIHRvIOKAnCBHZW5lcmFsbHkg4oCdb3Igc29tZXRoaW5n
IGVsc2UgeW91IHRoaW5rIGFwcHJvcHJpYXRlPzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTguMHB0O3RleHQtaW5k
ZW50Oi0xOC4wcHQ7bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPg0KPCFbaWYgIXN1cHBvcnRMaXN0
c10+PHNwYW4gbGFuZz0iRU4tVVMiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPjYuPHNw
YW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDsN
Cjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBsYW5nPSJFTi1VUyI+U2VjdGlv
biAzLCB0aGUgMjxzdXA+bmQ8L3N1cD4gcGFyYWdyYXBoIHNhaWQ6PG86cD48L286cD48L3NwYW4+
PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPuKAnDxvOnA+PC9v
OnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5T
dGFuZGFyZCBZQU5HIE1vZGVsOiBZQU5HIG1vZGVsIGRlZmluZWQgYnkgYW4gU3RhbmRhcmQgRGV2
ZWxvcG1lbnQ8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh
biBsYW5nPSJFTi1VUyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG9yZ2FuaXphdGlv
biAoU0RPKSwgZS5nLiZuYnNwOyBJRVRGLCBJRUVFLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwv
c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+U3RhbmRh
cmQgRXh0ZW5zaW9uIFlBTkcgTW9kZWw6IFlBTkcgTW9kZWwgdGhhdCBkZXNjcmliZXMgYTxvOnA+
PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVT
Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RhbmRhcmQgZXh0ZW5zaW9uLCBleGFtcGxlIHJv
dXRlIGZpbHRlciwgdG8gc3RhbmRhcmQgZmlsdGVyIFlBTkc8bzpwPjwvbzpwPjwvc3Bhbj48L3A+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+Jm5ic3A7Jm5ic3A7Jm5i
c3A7ICZuYnNwO21vZGVsLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxzcGFuIGxhbmc9IkVOLVVTIj7igJ08bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz
cz0iTXNvQ29tbWVudFRleHQiPjxzcGFuIGxhbmc9IkVOLVVTIj5bUWluXTogTm90IHN1cmUgcm91
dGVyIGZpbHRlciB0byBzdGFuZGFyZCBmaWx0ZXIgWUFORyBtb2RlbCBpcyBhIGdvb2QgZXhhbXBs
ZSBmb3Igc3RhbmRhcmQgZXh0ZW5zaW9uIFlBTkcgbW9kZWwsIEkgdGhpbmsgaWYgd2UgY2hvb3Nl
IGNvcmUgcm91dGluZyBkYXRhIG1vZGVsIGFzIHN0YW5kYXJkIFlBTkcgbW9kZWwsJm5ic3A7IHRo
ZW4gc3RhbmRhcmQgZXh0ZW5zaW9uIFlBTkcNCiBtb2RlbCB0byBjb3JlIHJvdXRpbmcgZGF0YSBt
b2RlbCBpcyBPU1BGIFlBTkcgZGF0YSBtb2RlbCBvciBJU0lTIFlBTkcgZGF0YSBtb2RlbC48bzpw
PjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvQ29tbWVudFRleHQiPjxzcGFuIGxhbmc9
IkVOLVVTIj5JdCBpcyBiZXR0ZXIgdG8gZGVzY3JpYmUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVu
IHN0YW5kYXJkIFlBTkcgbW9kZWwgYW5kIFN0YW5kYXJkIEV4dGVuc2lvbiBZQU5HIG1vZGVsIGlu
IHRoZSB0ZXh0LiBJIHRoaW5rIFN0YW5kYXJkIFlBTkcgbW9kZWwgaXMgdGhlIGJhc2lzIHRvIGJ1
aWxkIFN0YW5kYXJkIEV4dGVuc2lvbiBZQU5HIG1vZGVsLCBTdGFuZGFyZCBZQU5HDQogbW9kZWwg
Y2FuIGJlIHJlZ2FyZGVkIGFzIEdlbmVyaWMgbW9kZWwgb3IgbG93ZXN0IGxldmVsIG1vZGVsLCBz
dGFuZGFyZCBleHRlbnNpb24gbW9kZWwgd2lsbCBleHRlbmQgZnJvbSBzdGFuZGFyZCBtb2RlbCB3
aXRoIHRlY2hub2xvZ3kgc3BlY2lmaWMgYW5kIGNhbiBiZSByZWdhcmRlZCBhcyB0ZWNobm9sb2d5
IHNwZWNpZmljIG1vZGVsIG9yIGhpZ2hlciBsZXZlbCBtb2RlbC48bzpwPjwvbzpwPjwvc3Bhbj48
L3A+DQo8cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjE4LjBw
dDt0ZXh0LWluZGVudDotMTguMHB0O21zby1saXN0OmwwIGxldmVsMSBsZm8xIj4NCjwhW2lmICFz
dXBwb3J0TGlzdHNdPjxzcGFuIGxhbmc9IkVOLVVTIj48c3BhbiBzdHlsZT0ibXNvLWxpc3Q6SWdu
b3JlIj43LjxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90
OyI+Jm5ic3A7DQo8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gbGFuZz0iRU4t
VVMiPlNlY3Rpb24gMywgdGhlIDI8c3VwPm5kPC9zdXA+IHBhcmFncmFwaCBzYWlkOjxvOnA+PC9v
OnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj7i
gJw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5n
PSJFTi1VUyI+VmVuZG9yIENvbmZpZ3VyYXRpb24gTW9kZWw6IEl0IGRlc2NyaWJlcyBhbGwgY29u
ZmlndXJhYmxlPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4gbGFuZz0iRU4tVVMiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBjYXBhYmlsaXRp
ZXMgb2YgdGhlIGRldmljZSBhbmQgd2hhdCBkZXZpY2UgdmVuZG9yIGV4cG9zZXMgZm9yPG86cD48
L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMi
PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBjb25maWd1cmF0aW9uLiZuYnNwOyBUaGUg
dmVuZG9yIGNvbmZpZ3VyYXRpb24gbW9kZWwgY2FuIGJlIENMSSBvciBZQU5HLTxvOnA+PC9vOnA+
PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj4mbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYmFzZWQuPG86cD48L286cD48L3NwYW4+PC9wPg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPuKAnTxvOnA+PC9vOnA+PC9z
cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5bUWluXTog
V2hlbiB3ZSBzYXkgcHJvcHJpZXRhcnkgZXh0ZW5zaW9ucyB0byBzdGFuZGFyZCBZQU5HIG1vZGVs
IG11c3QgY29tcGxlbWVudCB0aGUgU3RhbmRhcmQgWUFORyBNb2RlbHMgdG8gcmVwcmVzZW50IGEg
VmVuZG9yIENvbmZpZ3VyYXRpb24gTW9kZWwsIGhvdyBwcm9wcmlldGFyeSBleHRlbnNpb25zIHRv
IHN0YW5kYXJkIFlBTkcgbW9kZWwgaXMgcmVsYXRlZCB0byBWZW5kb3INCiBDb25maWd1cmF0aW9u
IG1vZGVsPzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu
IGxhbmc9IkVOLVVTIj5DYW4geW91IGdpdmUgYSBzcGVjaWFsIGV4YW1wbGUgZm9yIFZlbmRvciBD
b25maWd1cmF0aW9uIG1vZGVsPyBIb3cgVmVuZG9yIENvbmZpZ3VyYXRpb24gbW9kZWwgaXMgcmVs
YXRlZCB0byBJbnZlbnRvcnkgbW9kZWwgb3IgbmV0d29yayBjYXBhYmlsaXR5IG1vZGVsP0lzIHZl
bmRvciBjb25maWd1cmF0aW9uIG1vZGVsIGFsc28gUHJvcHJpZXRhcnkgWUFORyBNb2RlbCBvciB2
ZW5kb3INCiBzcGVjaWZpYyBtb2RlbD88bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9y
OiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29MaXN0
UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTguMHB0O3RleHQtaW5kZW50Oi0xOC4wcHQ7
bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPg0KPCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4gbGFu
Zz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGli
cmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48c3BhbiBzdHls
ZT0ibXNvLWxpc3Q6SWdub3JlIj44LjxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90O1RpbWVz
IE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQo8
L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm
b250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fu
cy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5TZWN0aW9uIDMuNCwgdGhlIDE8c3VwPnN0PC9z
dXA+IHBhcmFncmFwaDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjVwdDtmb250LWZhbWlseTom
cXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+
W1Fpbl06PC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIj4gSXMgdmVuZG9yIGNvbmZpZ3VyYXRpb24g
bW9kZWwgbG93ZXN0IG1vZGVsIGluIHRoZSBZQU5HIG1vZGVsIGxheWVyaW5nIG9yIHN1cGVyc2V0
IG9mIGFsbCB0eXBlIG9mIFlBTkcgbW9kZWxzIGluY2x1ZGluZw0KIFN0YW5kYXJkIFlBTkcgbW9k
ZWwsIFN0YW5kYXJkIEV4dGVuc2lvbiBZQU5HIG1vZGVsLCBQcm9wcmlldGFyeSBFeHRlbnNpb24g
dG8gU3RhbmRhcmQgWUFORyBNb2RlbCwgUHJvcHJpZXRhcnkgWUFORyBNb2RlbD88bzpwPjwvbzpw
Pjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5
bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVv
dDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFu
PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9u
dC1zaXplOjEwLjVwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMt
c2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6
MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZx
dW90Oztjb2xvcjojMUY0OTdEIj5SZWdhcmRzITxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjVw
dDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7
Y29sb3I6IzFGNDk3RCI+LVFpbjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXY+DQo8ZGl2IHN0
eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNCNUM0REYgMS4wcHQ7cGFkZGluZzoz
LjBwdCAwY20gMGNtIDBjbSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48c3BhbiBzdHlsZT0i
Zm9udC1zaXplOjEwLjBwdDtjb2xvcjp3aW5kb3d0ZXh0Ij7lj5Hku7bkuro8c3BhbiBsYW5nPSJF
Ti1VUyI+Ojwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1z
aXplOjEwLjBwdDtjb2xvcjp3aW5kb3d0ZXh0Ij4gbmV0bW9kIFttYWlsdG86bmV0bW9kLWJvdW5j
ZXNAaWV0Zi5vcmddDQo8L3NwYW4+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Y29s
b3I6d2luZG93dGV4dCI+5Luj6KGoIDwvc3Bhbj48L2I+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl
PSJmb250LXNpemU6MTAuMHB0O2NvbG9yOndpbmRvd3RleHQiPkJlbm9pdCBDbGFpc2U8YnI+DQo8
L3NwYW4+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Y29sb3I6d2luZG93dGV4dCI+
5Y+R6YCB5pe26Ze0PHNwYW4gbGFuZz0iRU4tVVMiPjo8L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBs
YW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Y29sb3I6d2luZG93dGV4dCI+IDIw
MTU8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Y29sb3I6d2luZG93dGV4dCI+
5bm0PHNwYW4gbGFuZz0iRU4tVVMiPjY8L3NwYW4+5pyIPHNwYW4gbGFuZz0iRU4tVVMiPjQ8L3Nw
YW4+5pelPHNwYW4gbGFuZz0iRU4tVVMiPg0KIDI6NTg8YnI+DQo8L3NwYW4+PGI+5pS25Lu25Lq6
PHNwYW4gbGFuZz0iRU4tVVMiPjo8L3NwYW4+PC9iPjxzcGFuIGxhbmc9IkVOLVVTIj4gTkVUTU9E
IFdvcmtpbmcgR3JvdXA8YnI+DQo8L3NwYW4+PGI+5Li76aKYPHNwYW4gbGFuZz0iRU4tVVMiPjo8
L3NwYW4+PC9iPjxzcGFuIGxhbmc9IkVOLVVTIj4gW25ldG1vZF0gRndkOiBOZXcgVmVyc2lvbiBO
b3RpZmljYXRpb24gLSBkcmFmdC1ib2dkYW5vdmljLW5ldG1vZC15YW5nLW1vZGVsLWNsYXNzaWZp
Y2F0aW9uLTAzLnR4dDxvOnA+PC9vOnA+PC9zcGFuPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjwvZGl2
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9v
OnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5G
WUkuPGJyPg0KPGJyPg0KUmVnYXJkcywgQmVub2l0PG86cD48L286cD48L3NwYW4+PC9wPg0KPGRp
dj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48YnI+DQo8YnI+DQot
LS0tLS0tLSBGb3J3YXJkZWQgTWVzc2FnZSAtLS0tLS0tLSA8bzpwPjwvbzpwPjwvc3Bhbj48L3A+
DQo8dGFibGUgY2xhc3M9Ik1zb05vcm1hbFRhYmxlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIw
IiBjZWxscGFkZGluZz0iMCI+DQo8dGJvZHk+DQo8dHI+DQo8dGQgbm93cmFwPSIiIHZhbGlnbj0i
dG9wIiBzdHlsZT0icGFkZGluZzowY20gMGNtIDBjbSAwY20iPg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGI+PHNwYW4gbGFuZz0i
RU4tVVMiPlN1YmplY3Q6DQo8bzpwPjwvbzpwPjwvc3Bhbj48L2I+PC9wPg0KPC90ZD4NCjx0ZCBz
dHlsZT0icGFkZGluZzowY20gMGNtIDBjbSAwY20iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4gbGFuZz0iRU4tVVMiPk5ldyBWZXJzaW9uIE5vdGlmaWNhdGlvbiAtIGRyYWZ0LWJvZ2Rhbm92
aWMtbmV0bW9kLXlhbmctbW9kZWwtY2xhc3NpZmljYXRpb24tMDMudHh0PG86cD48L286cD48L3Nw
YW4+PC9wPg0KPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQgbm93cmFwPSIiIHZhbGlnbj0idG9wIiBz
dHlsZT0icGFkZGluZzowY20gMGNtIDBjbSAwY20iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxp
Z249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGI+PHNwYW4gbGFuZz0iRU4tVVMi
PkRhdGU6DQo8bzpwPjwvbzpwPjwvc3Bhbj48L2I+PC9wPg0KPC90ZD4NCjx0ZCBzdHlsZT0icGFk
ZGluZzowY20gMGNtIDBjbSAwY20iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0i
RU4tVVMiPldlZCwgMyBKdW4gMjAxNSAxMTo1NTozNCAtMDcwMDxvOnA+PC9vOnA+PC9zcGFuPjwv
cD4NCjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIG5vd3JhcD0iIiB2YWxpZ249InRvcCIgc3R5bGU9
InBhZGRpbmc6MGNtIDBjbSAwY20gMGNtIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJy
aWdodCIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxiPjxzcGFuIGxhbmc9IkVOLVVTIj5Gcm9t
Og0KPG86cD48L286cD48L3NwYW4+PC9iPjwvcD4NCjwvdGQ+DQo8dGQgc3R5bGU9InBhZGRpbmc6
MGNtIDBjbSAwY20gMGNtIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVT
Ij48YSBocmVmPSJtYWlsdG86aW50ZXJuZXQtZHJhZnRzQGlldGYub3JnIj5pbnRlcm5ldC1kcmFm
dHNAaWV0Zi5vcmc8L2E+PG86cD48L286cD48L3NwYW4+PC9wPg0KPC90ZD4NCjwvdHI+DQo8dHI+
DQo8dGQgbm93cmFwPSIiIHZhbGlnbj0idG9wIiBzdHlsZT0icGFkZGluZzowY20gMGNtIDBjbSAw
Y20iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgYWxpZ249InJpZ2h0IiBzdHlsZT0idGV4dC1hbGln
bjpyaWdodCI+PGI+PHNwYW4gbGFuZz0iRU4tVVMiPlRvOg0KPG86cD48L286cD48L3NwYW4+PC9i
PjwvcD4NCjwvdGQ+DQo8dGQgc3R5bGU9InBhZGRpbmc6MGNtIDBjbSAwY20gMGNtIj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48YSBocmVmPSJtYWlsdG86ZHJhZnQt
Ym9nZGFub3ZpYy1uZXRtb2QteWFuZy1tb2RlbC1jbGFzc2lmaWNhdGlvbi5zaGVwaGVyZEBpZXRm
Lm9yZyI+ZHJhZnQtYm9nZGFub3ZpYy1uZXRtb2QteWFuZy1tb2RlbC1jbGFzc2lmaWNhdGlvbi5z
aGVwaGVyZEBpZXRmLm9yZzwvYT4sDQo8YSBocmVmPSJtYWlsdG86ZGVhbmJAanVuaXBlci5uZXQi
PmRlYW5iQGp1bmlwZXIubmV0PC9hPiwgPGEgaHJlZj0ibWFpbHRvOmRyYWZ0LWJvZ2Rhbm92aWMt
bmV0bW9kLXlhbmctbW9kZWwtY2xhc3NpZmljYXRpb24uYWRAaWV0Zi5vcmciPg0KZHJhZnQtYm9n
ZGFub3ZpYy1uZXRtb2QteWFuZy1tb2RlbC1jbGFzc2lmaWNhdGlvbi5hZEBpZXRmLm9yZzwvYT4s
IDxhIGhyZWY9Im1haWx0bzpiY2xhaXNlQGNpc2NvLmNvbSI+DQpiY2xhaXNlQGNpc2NvLmNvbTwv
YT4sIDxhIGhyZWY9Im1haWx0bzpkcmFmdC1ib2dkYW5vdmljLW5ldG1vZC15YW5nLW1vZGVsLWNs
YXNzaWZpY2F0aW9uQGlldGYub3JnIj4NCmRyYWZ0LWJvZ2Rhbm92aWMtbmV0bW9kLXlhbmctbW9k
ZWwtY2xhc3NpZmljYXRpb25AaWV0Zi5vcmc8L2E+LCA8YSBocmVmPSJtYWlsdG86Y2Ftb2JlcmdA
Y2lzY28uY29tIj4NCmNhbW9iZXJnQGNpc2NvLmNvbTwvYT4sIDxhIGhyZWY9Im1haWx0bzpqb2Vs
amFAYm9ndXMuY29tIj5qb2VsamFAYm9ndXMuY29tPC9hPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N
CjwvdGQ+DQo8L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz
dHlsZT0ibWFyZ2luLWJvdHRvbToxMi4wcHQiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNw
OzwvbzpwPjwvc3Bhbj48L3A+DQo8cHJlPjxzcGFuIGxhbmc9IkVOLVVTIj5BIG5ldyB2ZXJzaW9u
ICgtMDMpIGhhcyBiZWVuIHN1Ym1pdHRlZCBmb3IgZHJhZnQtYm9nZGFub3ZpYy1uZXRtb2QteWFu
Zy1tb2RlbC1jbGFzc2lmaWNhdGlvbjo8bzpwPjwvbzpwPjwvc3Bhbj48L3ByZT4NCjxwcmU+PHNw
YW4gbGFuZz0iRU4tVVMiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmlldGYub3JnL2ludGVybmV0LWRy
YWZ0cy9kcmFmdC1ib2dkYW5vdmljLW5ldG1vZC15YW5nLW1vZGVsLWNsYXNzaWZpY2F0aW9uLTAz
LnR4dCI+aHR0cHM6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWJvZ2Rhbm92
aWMtbmV0bW9kLXlhbmctbW9kZWwtY2xhc3NpZmljYXRpb24tMDMudHh0PC9hPjxvOnA+PC9vOnA+
PC9zcGFuPjwvcHJlPg0KPHByZT48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48
L3NwYW4+PC9wcmU+DQo8cHJlPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwv
c3Bhbj48L3ByZT4NCjxwcmU+PHNwYW4gbGFuZz0iRU4tVVMiPlRoZSBJRVRGIGRhdGF0cmFja2Vy
IHBhZ2UgZm9yIHRoaXMgSW50ZXJuZXQtRHJhZnQgaXM6PG86cD48L286cD48L3NwYW4+PC9wcmU+
DQo8cHJlPjxzcGFuIGxhbmc9IkVOLVVTIj48YSBocmVmPSJodHRwczovL2RhdGF0cmFja2VyLmll
dGYub3JnL2RvYy9kcmFmdC1ib2dkYW5vdmljLW5ldG1vZC15YW5nLW1vZGVsLWNsYXNzaWZpY2F0
aW9uLyI+aHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvZHJhZnQtYm9nZGFub3ZpYy1u
ZXRtb2QteWFuZy1tb2RlbC1jbGFzc2lmaWNhdGlvbi88L2E+PG86cD48L286cD48L3NwYW4+PC9w
cmU+DQo8cHJlPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3By
ZT4NCjxwcmU+PHNwYW4gbGFuZz0iRU4tVVMiPkRpZmYgZnJvbSBwcmV2aW91cyB2ZXJzaW9uOjxv
OnA+PC9vOnA+PC9zcGFuPjwvcHJlPg0KPHByZT48c3BhbiBsYW5nPSJFTi1VUyI+PGEgaHJlZj0i
aHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjZGlmZj91cmwyPWRyYWZ0LWJvZ2Rhbm92aWMtbmV0bW9k
LXlhbmctbW9kZWwtY2xhc3NpZmljYXRpb24tMDMiPmh0dHBzOi8vd3d3LmlldGYub3JnL3JmY2Rp
ZmY/dXJsMj1kcmFmdC1ib2dkYW5vdmljLW5ldG1vZC15YW5nLW1vZGVsLWNsYXNzaWZpY2F0aW9u
LTAzPC9hPjxvOnA+PC9vOnA+PC9zcGFuPjwvcHJlPg0KPHByZT48c3BhbiBsYW5nPSJFTi1VUyI+
PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wcmU+DQo8cHJlPjxzcGFuIGxhbmc9IkVOLVVTIj5Q
bGVhc2Ugbm90ZSB0aGF0IGl0IG1heSB0YWtlIGEgY291cGxlIG9mIG1pbnV0ZXMgZnJvbSB0aGUg
dGltZSBvZiBzdWJtaXNzaW9uPG86cD48L286cD48L3NwYW4+PC9wcmU+DQo8cHJlPjxzcGFuIGxh
bmc9IkVOLVVTIj51bnRpbCB0aGUgaHRtbGl6ZWQgdmVyc2lvbiBhbmQgZGlmZiBhcmUgYXZhaWxh
YmxlIGF0IHRvb2xzLmlldGYub3JnLjxvOnA+PC9vOnA+PC9zcGFuPjwvcHJlPg0KPHByZT48c3Bh
biBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wcmU+DQo8cHJlPjxzcGFu
IGxhbmc9IkVOLVVTIj5JRVRGIFNlY3JldGFyaWF0LjxvOnA+PC9vOnA+PC9zcGFuPjwvcHJlPg0K
PHByZT48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wcmU+DQo8
cHJlPjxzcGFuIGxhbmc9IkVOLVVTIj4uPG86cD48L286cD48L3NwYW4+PC9wcmU+DQo8cHJlPjxz
cGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3ByZT4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48
L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpw
PiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1zby1lbGVtZW50
OmNvbW1lbnQtbGlzdCI+PCFbaWYgIXN1cHBvcnRBbm5vdGF0aW9uc10+DQo8aHIgY2xhc3M9Im1z
b2NvbW9mZiIgYWxpZ249ImxlZnQiIHNpemU9IjEiIHdpZHRoPSIzMyUiPg0KPCFbZW5kaWZdPjwv
ZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K

--_000_B8F9A780D330094D99AF023C5877DABA8475A93Enkgeml501mbschi_--


From nobody Fri Jun  5 08:17:59 2015
Return-Path: <eric.osborne@level3.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 8902D1B30D6 for <netmod@ietfa.amsl.com>; Fri,  5 Jun 2015 08:17:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.703
X-Spam-Level: 
X-Spam-Status: No, score=-0.703 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 XT0jKh-KtZsD for <netmod@ietfa.amsl.com>; Fri,  5 Jun 2015 08:17:56 -0700 (PDT)
Received: from mail1.bemta7.messagelabs.com (mail1.bemta7.messagelabs.com [216.82.254.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0A4951B30D2 for <netmod@ietf.org>; Fri,  5 Jun 2015 08:17:55 -0700 (PDT)
Received: from [216.82.253.163] by server-12.bemta-7.messagelabs.com id 66/A0-16335-2ADB1755; Fri, 05 Jun 2015 15:17:54 +0000
X-Env-Sender: eric.osborne@level3.com
X-Msg-Ref: server-9.tower-166.messagelabs.com!1433517473!14832729!1
X-Originating-IP: [209.245.18.37]
X-StarScan-Received: 
X-StarScan-Version: 6.13.16; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 13879 invoked from network); 5 Jun 2015 15:17:53 -0000
Received: from bge23000.messagelabs1.prod.broomfield1.level3.net (HELO messagelabs1.level3.com) (209.245.18.37) by server-9.tower-166.messagelabs.com with DHE-RSA-AES256-SHA encrypted SMTP;  5 Jun 2015 15:17:53 -0000
Received: from USIDCWVEHT02.corp.global.level3.com (usidcwveht02.corp.global.level3.com [10.1.142.32]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "USIDCWVEHT02.corp.global.level3.com", Issuer "VIDCCERT0001" (not verified)) by messagelabs1.level3.com (Postfix) with ESMTPS id 902D51DEBA; Fri,  5 Jun 2015 15:17:53 +0000 (GMT)
Received: from USADCWVEHT01.corp.global.level3.com (10.2.36.141) by USIDCWVEHT02.corp.global.level3.com (10.1.142.32) with Microsoft SMTP Server (TLS) id 14.3.195.1; Fri, 5 Jun 2015 09:17:53 -0600
Received: from USIDCWVEMBX03.corp.global.level3.com ([fe80::e849:4e57:cb74:ed58]) by usadcwveht01.corp.global.level3.com ([::1]) with mapi id 14.03.0210.002; Fri, 5 Jun 2015 11:17:52 -0400
From: "Osborne, Eric" <eric.osborne@level3.com>
To: "netmod@ietf.org" <netmod@ietf.org>, "draft-bogdanovic-netmod-yang-model-classification@tools.ietf.org" <draft-bogdanovic-netmod-yang-model-classification@tools.ietf.org>
Thread-Topic: Comments on draft-bogdanovic-netmod-yang-model-classification-03
Thread-Index: AdCfoBahPlj64CYfQL64A+4wnaZ7Tg==
Date: Fri, 5 Jun 2015 15:17:51 +0000
Message-ID: <63CB93BC589C1B4BAFDB41A0A19B7ACD1A3199FF@USIDCWVEMBX03.corp.global.level3.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.141.13]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/eUHIMwvf6YsqDirMshXR2FBhy08>
Subject: [netmod] Comments on draft-bogdanovic-netmod-yang-model-classification-03
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, 05 Jun 2015 15:17:58 -0000

General comments: the doc is pretty straightforward in many of its aims but=
 parts of it are confusing.  Certain sections need some copyediting and an =
infusion of 'the'.  It also barely touches on the idea of config models vs =
state data and ops, and this distinction is (I think) pretty lost at some p=
oints.  Do Standard models include config, state and ops?  Or are Standard =
models just some subset?  Do they *have* to be a subset?  Adding more discu=
ssion around the interplay of [standard, standard extension, proprietary, v=
endor] * [config, state, ops] would be interesting.

Specific comments:

1)
---
o  Based on the level of abstraction in the model

   o  Based on the applicability of the model

   The two categories are covered in the next two sections.

2.  First Dimension: YANG Data Model Layering
.....
3.  Second Dimension: Model Type
-----

The section titles should match the bulleted list.  Maybe the first dimensi=
on should be 'Model Abstraction Levels' and the second should be 'Model App=
licability'?


2)=20
Figure 1 lists both 'BGP' and 'Routing'.  I'm guessing from context that 'R=
outing' really means 'RIB' or something, and I know there's been a lot of d=
iscussion I've been very vigorously disregarding, but maybe 'Routing' in th=
is doc should read 'RIB' so as to not let the reader think it's shorthand f=
or 'Routing Protocol'?  Or if you intend for 'Routing' to mean 'Routing Pro=
tocol', then shouldn't BGP be subordinate to it?


3)=20
--

   As an example, the Network Service model included in
   http://datatracker.ietf.org/doc/draft-l3vpn-service-yang/ provides an
---

Fix the reference to [I-D-l3vpn-service-yang] or whatever the right format =
is.



4)=20
Section 3 gets a little tricky.  It seems to imply that the service models =
are built after the vendor models are built, and that the service models ca=
n only be built out of the pieces provided by vendor models.  While this ma=
kes sense on its face (you can't use a component to build a service if that=
 component doesn't exist), it reads like SDOs are beholden to the vendors e=
xposing the right bits before the SDOs can do anything.  Surely there's goi=
ng to be some give and take here, where SDOs (or customers! ahem..) isssue =
standard service models and the vendors need to come up with config models =
to support them?  It's also not clear exactly what turf 'vendor config mode=
ls' is grabbing.  If we have a standard ACL model, for example, do I also n=
eed a vendor ACL config model?


5)
I'm not sure what value the discussion around routing protocol config (p. 8=
+) provides.  Does this schism of protocol vs vrf centricity apply to state=
 and ops too?  Is it specific to config?  It's called out here but there's =
no conclusion, it just says "here's a thing".  Why is this thing more impor=
tant than all the other things that could be mentioned?  Also, you may want=
 to remove CLI from the discussion of centricity; it's clear that this is a=
n IOS-vs-JunOS section.  If you're going to show both models, use YANG or p=
seudo-YANG to describe both.


6)
I don't get section 3.5.  Why is it there?  Just as a placeholder to say "t=
his might happen"?  Shouldn't any discussion of vendor models either
	a) stay away from telling vendors what to do, or
	b) encourage vendors to get off of proprietary models ASAP once there's a =
standard one?=20
That's sort of what "while waiting..." means, but I think this section eith=
er should be much bigger or not be there.


7)
I don't like the last paragraph of section 5.  What is it saying?  That the=
 IETF can take the Linux kernel and write a standard model for it?=20
I guess maybe it's trying to say "IETF must be the place where all models a=
re blessed if they're about IETF technology"?
Is the RIB IETF technology?  What about an ACL? =20
Does the IETF not recognize other sources of models for IP-and-SDN stuff?




eric


From nobody Sun Jun  7 09:46:11 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 594071AC3E6 for <netmod@ietfa.amsl.com>; Sun,  7 Jun 2015 09:46:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.16
X-Spam-Level: 
X-Spam-Status: No, score=-1.16 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 15IlKZ83yUCi for <netmod@ietfa.amsl.com>; Sun,  7 Jun 2015 09:46:07 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2E13F1AC3E5 for <netmod@ietf.org>; Sun,  7 Jun 2015 09:46:07 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 8097EE74 for <netmod@ietf.org>; Sun,  7 Jun 2015 18:46:04 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 7sG9imBHGL0p for <netmod@ietf.org>; Sun,  7 Jun 2015 18:46:02 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS for <netmod@ietf.org>; Sun,  7 Jun 2015 18:46:03 +0200 (CEST)
Received: from localhost (demetrius1.jacobs-university.de [212.201.44.46]) by hermes.jacobs-university.de (Postfix) with ESMTP id 464A02002C for <netmod@ietf.org>; Sun,  7 Jun 2015 18:46:04 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius1.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id 6WSyUdCUr8ch; Sun,  7 Jun 2015 18:46:02 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 145A820013; Sun,  7 Jun 2015 18:46:01 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 13B57343FD02; Sun,  7 Jun 2015 18:45:58 +0200 (CEST)
Date: Sun, 7 Jun 2015 18:45:58 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: netmod@ietf.org
Message-ID: <20150607164558.GA26801@elstar.local>
Mail-Followup-To: netmod@ietf.org
References: <20150519095931.GA49981@elstar.local>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20150519095931.GA49981@elstar.local>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/bEJxcOgx0vHJND5HvmokQk2JP-I>
Subject: Re: [netmod] VRFY :45: better conformance mechanism
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: Sun, 07 Jun 2015 16:46:09 -0000

On Tue, May 19, 2015 at 11:59:31AM +0200, Juergen Schoenwaelder wrote:
> Hi,
> 
> after long discussions in physical meetings, virtual meetings, and on
> the mailing list, I believe we have reached rough consensus to adopt
> Y45-04 in order to resolve import ambiguities (aka typedef drift and
> grouping drift) and we will leave it to YANG extensions (to be worked
> on in the future) to provide means to define explicit conformance
> requirements (instead of trying to derive conformance requirements
> from import relationships alone). A recent poll of core contributors
> on this issue can be found here:
> 
> http://www.ietf.org/mail-archive/web/netmod/current/msg12560.html
> 
> Please speak up by Monday 2015-05-25 if you disagree with this
> proposal and your position is not yet included in the email message
> pointed to above.
> 
> For more details, see the issues list available here:
> 
>      http://svn.tools.ietf.org/svn/wg/netmod/yang-1.1/
>

I have reviewed the final round of discussion and I have not seen
additional comments that strengthen the objection raised by Andy.

During the discussion, it was observed by Lada that a YANG 1.1 module
using multiple imports by revision can be translated into a set of
YANG 1.0 submodules (each using import by revision) resulting in same
behaviour, namely that different leafs in the module use different
versions of a typedef (or expand from different version of a
grouping).

I have moved Y45 to the EDIT state (adopted solution Y45-04 with rough
consensus).

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Sun Jun  7 23:14:54 2015
Return-Path: <calle@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 327D41B2C41 for <netmod@ietfa.amsl.com>; Sun,  7 Jun 2015 23:14:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.789
X-Spam-Level: 
X-Spam-Status: No, score=0.789 tagged_above=-999 required=5 tests=[BAYES_50=0.8, 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 G24ylRDDo7Sz for <netmod@ietfa.amsl.com>; Sun,  7 Jun 2015 23:14:50 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id DEEBD1B2C3C for <netmod@ietf.org>; Sun,  7 Jun 2015 23:14:47 -0700 (PDT)
Received: from [10.24.235.51] (unknown [128.107.241.189]) by mail.tail-f.com (Postfix) with ESMTPSA id EC7BA1AE043B; Mon,  8 Jun 2015 08:14:45 +0200 (CEST)
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Carl Moberg <calle@tail-f.com>
In-Reply-To: <63CB93BC589C1B4BAFDB41A0A19B7ACD1A3199FF@USIDCWVEMBX03.corp.global.level3.com>
Date: Sun, 7 Jun 2015 23:14:52 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <5909454E-7EDF-49B5-83EB-F47095D7E925@tail-f.com>
References: <63CB93BC589C1B4BAFDB41A0A19B7ACD1A3199FF@USIDCWVEMBX03.corp.global.level3.com>
To: "Osborne, Eric" <eric.osborne@level3.com>
X-Mailer: Apple Mail (2.2098)
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/nFjQBVEzZ4trx3DFH1Rjo08K63Q>
Cc: "draft-bogdanovic-netmod-yang-model-classification@tools.ietf.org" <draft-bogdanovic-netmod-yang-model-classification@tools.ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Comments on draft-bogdanovic-netmod-yang-model-classification-03
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: Mon, 08 Jun 2015 06:14:53 -0000

Eric,

 Thanks for the feedback, comments inline below.

> On Jun 5, 2015, at 8:17 AM, Osborne, Eric <eric.osborne@level3.com> =
wrote:
>=20
> General comments: the doc is pretty straightforward in many of its =
aims but parts of it are confusing.  Certain sections need some =
copyediting and an infusion of 'the'.  It also barely touches on the =
idea of config models vs state data and ops, and this distinction is (I =
think) pretty lost at some points.  Do Standard models include config, =
state and ops?  Or are Standard models just some subset?  Do they *have* =
to be a subset?  Adding more discussion around the interplay of =
[standard, standard extension, proprietary, vendor] * [config, state, =
ops] would be interesting.
>=20
> Specific comments:
>=20
> 1)
> ---
> o  Based on the level of abstraction in the model
>=20
>   o  Based on the applicability of the model
>=20
>   The two categories are covered in the next two sections.
>=20
> 2.  First Dimension: YANG Data Model Layering
> .....
> 3.  Second Dimension: Model Type
> -----
>=20
> The section titles should match the bulleted list.  Maybe the first =
dimension should be 'Model Abstraction Levels' and the second should be =
'Model Applicability=E2=80=99?


Since the content of section 2 is all around =E2=80=9Clayering=E2=80=9D, =
I did the following:

    <t>This document presents a set of concepts and terms to form a =
useful
      taxonomy for consistent classification of YANG models in two =
dimensions:
      <list style=3D"symbols">
        <t>The layering of models based on their abstraction levels</t>
        <t>The type of model based on the nature and intent of the =
content</t>

> 2)=20
> Figure 1 lists both 'BGP' and 'Routing'.  I'm guessing from context =
that 'Routing' really means 'RIB' or something, and I know there's been =
a lot of discussion I've been very vigorously disregarding, but maybe =
'Routing' in this doc should read 'RIB' so as to not let the reader =
think it's shorthand for 'Routing Protocol'?  Or if you intend for =
'Routing' to mean 'Routing Protocol', then shouldn't BGP be subordinate =
to it?

 Good catch, switched the labels to "MPLS", "BGP", "IPv4 & IPv6" and =
=E2=80=9CEthernet"

>=20
> 3)=20
> --
>=20
>   As an example, the Network Service model included in
>   http://datatracker.ietf.org/doc/draft-l3vpn-service-yang/ provides =
an
> ---
>=20
> Fix the reference to [I-D-l3vpn-service-yang] or whatever the right =
format is.

 Fixed, thanks.

 Will submit a pull-request based on the above.

 Again; thanks!

>=20
> 4)=20
> Section 3 gets a little tricky.  It seems to imply that the service =
models are built after the vendor models are built, and that the service =
models can only be built out of the pieces provided by vendor models.  =
While this makes sense on its face (you can't use a component to build a =
service if that component doesn't exist), it reads like SDOs are =
beholden to the vendors exposing the right bits before the SDOs can do =
anything.  Surely there's going to be some give and take here, where =
SDOs (or customers! ahem..) isssue standard service models and the =
vendors need to come up with config models to support them?  It's also =
not clear exactly what turf 'vendor config models' is grabbing.  If we =
have a standard ACL model, for example, do I also need a vendor ACL =
config model?
>=20
>=20
> 5)
> I'm not sure what value the discussion around routing protocol config =
(p. 8+) provides.  Does this schism of protocol vs vrf centricity apply =
to state and ops too?  Is it specific to config?  It's called out here =
but there's no conclusion, it just says "here's a thing".  Why is this =
thing more important than all the other things that could be mentioned?  =
Also, you may want to remove CLI from the discussion of centricity; it's =
clear that this is an IOS-vs-JunOS section.  If you're going to show =
both models, use YANG or pseudo-YANG to describe both.
>=20
>=20
> 6)
> I don't get section 3.5.  Why is it there?  Just as a placeholder to =
say "this might happen"?  Shouldn't any discussion of vendor models =
either
> 	a) stay away from telling vendors what to do, or
> 	b) encourage vendors to get off of proprietary models ASAP once =
there's a standard one?=20
> That's sort of what "while waiting..." means, but I think this section =
either should be much bigger or not be there.
>=20
>=20
> 7)
> I don't like the last paragraph of section 5.  What is it saying?  =
That the IETF can take the Linux kernel and write a standard model for =
it?=20
> I guess maybe it's trying to say "IETF must be the place where all =
models are blessed if they're about IETF technology"?
> Is the RIB IETF technology?  What about an ACL? =20
> Does the IETF not recognize other sources of models for IP-and-SDN =
stuff?
>=20
>=20
>=20
>=20
> eric


From nobody Mon Jun  8 05:08:12 2015
Return-Path: <balazs.lengyel@ericsson.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 C6E091A6F33 for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 05:08:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.777
X-Spam-Level: 
X-Spam-Status: No, score=-0.777 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, MIME_HTML_ONLY=0.723, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] 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 xu9x5tON3g3i for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 05:08:09 -0700 (PDT)
Received: from sessmg22.ericsson.net (sessmg22.ericsson.net [193.180.251.58]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 232291A6F2E for <netmod@ietf.org>; Mon,  8 Jun 2015 05:08:08 -0700 (PDT)
X-AuditID: c1b4fb3a-f79ec6d000006dc0-f2-557585a7487e
Received: from ESESSHC012.ericsson.se (Unknown_Domain [153.88.253.125]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id B1.C0.28096.7A585755; Mon,  8 Jun 2015 14:08:07 +0200 (CEST)
Received: from [159.107.134.49] (153.88.183.153) by smtp.internal.ericsson.com (153.88.183.56) with Microsoft SMTP Server id 14.3.210.2; Mon, 8 Jun 2015 14:08:06 +0200
Message-ID: <557585A5.70809@ericsson.com>
Date: Mon, 8 Jun 2015 14:08:05 +0200
From: Balazs Lengyel <balazs.lengyel@ericsson.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: "netmod@ietf.org" <netmod@ietf.org>
References: <20150608.134455.313442052302110328.mbj@tail-f.com>
In-Reply-To: <20150608.134455.313442052302110328.mbj@tail-f.com>
X-Forwarded-Message-Id: <20150608.134455.313442052302110328.mbj@tail-f.com>
Content-Type: text/html; charset="windows-1252"
Content-Transfer-Encoding: 7bit
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprJLMWRmVeSWpSXmKPExsUyM+Jvre7y1tJQg4+fJS3mX2xkdWD0WLLk J1MAYxSXTUpqTmZZapG+XQJXxtlz8gUXhStOP/RqYNzB18XIySEhYCLRvvUKE4QtJnHh3nq2 LkYuDiGBo4wS/5YfZYVwVjNKrP/5CSjDwcEroCnR9kUVpIFFQEVi272/bCA2m4CRxNT+8ywg tqhAlMTUx+vAbF4BQYmTM5+A2SIC6hIzd64HqxcGWnxj9kewxUIC9hIPp08GszkFHCTWz90G dZC3xLLrPWD1zAL6Etfv3GeFsOUltr+dwwzRqyHx8MJf1gmMgrOQrJuFpGUWkpYFjMyrGEWL U4uLc9ONjPRSizKTi4vz8/TyUks2MQLD8uCW31Y7GA8+dzzEKMDBqMTD+2BfSagQa2JZcWXu IUZpDhYlcd4Zm/NChQTSE0tSs1NTC1KL4otKc1KLDzEycXBKNTDOZlv+LcT67JtMVX396Yu8 fU9IPgvW2LXjvKL/l2Uh8So39zN4rWp583lKjto789v5n6qzpz55PDVooezahA0/BSvva7U1 6PssaolfnnJ0XdByzfh3dySiNyeFcR+R1zM2+Xhbb+mGe4v9TK9Z92rmzJ+jlrFulUC1+rR3 Wqkf0+7+syhPf3tLiaU4I9FQi7moOBEA/DEkiiwCAAA=
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/wXG9Cf1UV8g8HROHPDjXuiV9pEs>
Subject: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 12:08:11 -0000

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=windows-1252">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    I propose a small clarification to the yang draft as described
    below.<br>
    regards Balazs<br>
    <div class="moz-forward-container"><br>
      -------- Forwarded Message --------
      <table class="moz-email-headers-table" border="0" cellpadding="0"
        cellspacing="0">
        <tbody>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Subject:
            </th>
            <td>Re: Leafref and require-instance=false</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Date: </th>
            <td>Mon, 8 Jun 2015 13:44:55 +0200</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">From: </th>
            <td>Martin Bjorklund <a class="moz-txt-link-rfc2396E" href="mailto:mbj@tail-f.com">&lt;mbj@tail-f.com&gt;</a></td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">To: </th>
            <td><a class="moz-txt-link-abbreviated" href="mailto:balazs.lengyel@ericsson.com">balazs.lengyel@ericsson.com</a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <pre>Balazs Lengyel <a class="moz-txt-link-rfc2396E" href="mailto:balazs.lengyel@ericsson.com">&lt;balazs.lengyel@ericsson.com&gt;</a> wrote:
&gt; Hello Martin,
&gt; Any thoughts on this?
&gt; regards Balazs
&gt; 
&gt; 
&gt; Hello Martin,
&gt; If I have a leafref with require-instance=false which references an
&gt; uint8 with range 1..10, and the leafref contains the value 20, can
&gt; this be a valid configuration?
&gt; As I see it, there is nothing in the draft that says this is not
&gt; allowed.
&gt; 
&gt; IMHO this should not be valid. You could add something like:
&gt; "The leafref must have a value that is a possible allowed value for
&gt; the referenced leaf."

I agree, this makes sense!


/martin
</pre>
      <br>
      <pre class="moz-signature" cols="72">-- 
Balazs Lengyel                       Ericsson Hungary Ltd.
Senior Specialist
ECN: 831 7320                        
Mobile: +36-70-330-7909              email: <a class="moz-txt-link-abbreviated" href="mailto:Balazs.Lengyel@ericsson.com">Balazs.Lengyel@ericsson.com</a> 
</pre>
      <br>
    </div>
    <br>
  </body>
</html>


From nobody Mon Jun  8 05:11:47 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 CB1621A6F38 for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 05:11:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 zDEolE_mWsNA for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 05:11:44 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1ACFA1A6F2E for <netmod@ietf.org>; Mon,  8 Jun 2015 05:11:44 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id CAE3C1204; Mon,  8 Jun 2015 14:11:42 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 3WMJCEVYU1GU; Mon,  8 Jun 2015 14:11:41 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Mon,  8 Jun 2015 14:11:41 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id 8E7612002B; Mon,  8 Jun 2015 14:11:41 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id EPfr4GSORkRt; Mon,  8 Jun 2015 14:11:42 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 0E32A20013; Mon,  8 Jun 2015 14:11:37 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 802E53442069; Mon,  8 Jun 2015 14:11:36 +0200 (CEST)
Date: Mon, 8 Jun 2015 14:11:35 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Balazs Lengyel <balazs.lengyel@ericsson.com>
Message-ID: <20150608121133.GC29405@elstar.local>
Mail-Followup-To: Balazs Lengyel <balazs.lengyel@ericsson.com>, "netmod@ietf.org" <netmod@ietf.org>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <557585A5.70809@ericsson.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/dKCBX45UJpmt40zkm9D4zWK23tI>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: Mon, 08 Jun 2015 12:11:46 -0000

RFC 6020 section 9.9:

   The leafref type is used to reference a particular leaf instance in
   the data tree.  The "path" substatement (Section 9.9.2) selects a set
   of leaf instances, and the leafref value space is the set of values
   of these leaf instances.

I think the last statement above already clarifies this, no?

/js

On Mon, Jun 08, 2015 at 02:08:05PM +0200, Balazs Lengyel wrote:
>    Hello,
>    I propose a small clarification to the yang draft as described below.
>    regards Balazs
>    -------- Forwarded Message --------
> 
>    Subject: Re: Leafref and require-instance=false
>       Date: Mon, 8 Jun 2015 13:44:55 +0200
>       From: Martin Bjorklund [1]<mbj@tail-f.com>
>         To: [2]balazs.lengyel@ericsson.com
> 
>  Balazs Lengyel [3]<balazs.lengyel@ericsson.com> wrote:
>  > Hello Martin,
>  > Any thoughts on this?
>  > regards Balazs
>  >
>  >
>  > Hello Martin,
>  > If I have a leafref with require-instance=false which references an
>  > uint8 with range 1..10, and the leafref contains the value 20, can
>  > this be a valid configuration?
>  > As I see it, there is nothing in the draft that says this is not
>  > allowed.
>  >
>  > IMHO this should not be valid. You could add something like:
>  > "The leafref must have a value that is a possible allowed value for
>  > the referenced leaf."
> 
>  I agree, this makes sense!
> 
> 
>  /martin
> 
>  --
>  Balazs Lengyel                       Ericsson Hungary Ltd.
>  Senior Specialist
>  ECN: 831 7320
>  Mobile: +36-70-330-7909              email: [4]Balazs.Lengyel@ericsson.com
> 
> References
> 
>    Visible links
>    1. mailto:mbj@tail-f.com
>    2. mailto:balazs.lengyel@ericsson.com
>    3. mailto:balazs.lengyel@ericsson.com
>    4. mailto:Balazs.Lengyel@ericsson.com

> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Mon Jun  8 06:22:18 2015
Return-Path: <lhotka@nic.cz>
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 1ACAC1A873D for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 06:22:17 -0700 (PDT)
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] 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 0uBi2WuTXf9L for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 06:22:14 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id A4B061A873C for <netmod@ietf.org>; Mon,  8 Jun 2015 06:22:13 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id DF8331CC00E8; Mon,  8 Jun 2015 15:22:18 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Balazs Lengyel <balazs.lengyel@ericsson.com>
In-Reply-To: <20150608121133.GC29405@elstar.local>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Mon, 08 Jun 2015 15:22:11 +0200
Message-ID: <m2ioayqqrg.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/DJiAxiMaHPUoMfnIop1mJusXkw0>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 13:22:17 -0000

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:

> RFC 6020 section 9.9:
>
>    The leafref type is used to reference a particular leaf instance in
>    the data tree.  The "path" substatement (Section 9.9.2) selects a set
>    of leaf instances, and the leafref value space is the set of values
>    of these leaf instances.
>
> I think the last statement above already clarifies this, no?

I think this is a stricter constraint that addresses the
"require-instance true" case : possible leafref values are limited to
those that instances of the referenced leaf really have.

6020bis should IMO say something like this:

The "path" substatement (Section 9.9.2) selects a set of leaf
instances. If the "require-instance" property (Section 9.9.3) is set to
"true", the leafref value space is the set of values of these leaf
instances.  Otherwise, the leafref value MUST be a valid value of the
data type that is defined for the referenced leaf.

Lada

>
> /js
>
> On Mon, Jun 08, 2015 at 02:08:05PM +0200, Balazs Lengyel wrote:
>>    Hello,
>>    I propose a small clarification to the yang draft as described below.
>>    regards Balazs
>>    -------- Forwarded Message --------
>> 
>>    Subject: Re: Leafref and require-instance=false
>>       Date: Mon, 8 Jun 2015 13:44:55 +0200
>>       From: Martin Bjorklund [1]<mbj@tail-f.com>
>>         To: [2]balazs.lengyel@ericsson.com
>> 
>>  Balazs Lengyel [3]<balazs.lengyel@ericsson.com> wrote:
>>  > Hello Martin,
>>  > Any thoughts on this?
>>  > regards Balazs
>>  >
>>  >
>>  > Hello Martin,
>>  > If I have a leafref with require-instance=false which references an
>>  > uint8 with range 1..10, and the leafref contains the value 20, can
>>  > this be a valid configuration?
>>  > As I see it, there is nothing in the draft that says this is not
>>  > allowed.
>>  >
>>  > IMHO this should not be valid. You could add something like:
>>  > "The leafref must have a value that is a possible allowed value for
>>  > the referenced leaf."
>> 
>>  I agree, this makes sense!
>> 
>> 
>>  /martin
>> 
>>  --
>>  Balazs Lengyel                       Ericsson Hungary Ltd.
>>  Senior Specialist
>>  ECN: 831 7320
>>  Mobile: +36-70-330-7909              email: [4]Balazs.Lengyel@ericsson.com
>> 
>> References
>> 
>>    Visible links
>>    1. mailto:mbj@tail-f.com
>>    2. mailto:balazs.lengyel@ericsson.com
>>    3. mailto:balazs.lengyel@ericsson.com
>>    4. mailto:Balazs.Lengyel@ericsson.com
>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>
>
> -- 
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Mon Jun  8 06:27:27 2015
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 1C9F91A8745 for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 06:27:26 -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 0nDCshD84d7G for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 06:27:24 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 5CE5F1A8731 for <netmod@ietf.org>; Mon,  8 Jun 2015 06:27:24 -0700 (PDT)
Received: from localhost (unknown [173.38.220.44]) by mail.tail-f.com (Postfix) with ESMTPSA id 192AD1AE043B; Mon,  8 Jun 2015 15:27:21 +0200 (CEST)
Date: Mon, 08 Jun 2015 15:27:20 +0200 (CEST)
Message-Id: <20150608.152720.215073006408180105.mbj@tail-f.com>
To: lhotka@nic.cz
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <m2ioayqqrg.fsf@birdie.labs.nic.cz>
References: <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/VD2XdzH6LMvnR8K29KLlzmSrscw>
Cc: netmod@ietf.org
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 13:27:26 -0000

Ladislav Lhotka <lhotka@nic.cz> wrote:
> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
> 
> > RFC 6020 section 9.9:
> >
> >    The leafref type is used to reference a particular leaf instance in
> >    the data tree.  The "path" substatement (Section 9.9.2) selects a set
> >    of leaf instances, and the leafref value space is the set of values
> >    of these leaf instances.
> >
> > I think the last statement above already clarifies this, no?
> 
> I think this is a stricter constraint that addresses the
> "require-instance true" case : possible leafref values are limited to
> those that instances of the referenced leaf really have.
> 
> 6020bis should IMO say something like this:
> 
> The "path" substatement (Section 9.9.2) selects a set of leaf
> instances. If the "require-instance" property (Section 9.9.3) is set to
> "true", the leafref value space is the set of values of these leaf
> instances.  Otherwise, the leafref value MUST be a valid value of the
> data type that is defined for the referenced leaf.

You were quicker than me ;)  I agree with this.


/martin



> 
> Lada
> 
> >
> > /js
> >
> > On Mon, Jun 08, 2015 at 02:08:05PM +0200, Balazs Lengyel wrote:
> >>    Hello,
> >>    I propose a small clarification to the yang draft as described below.
> >>    regards Balazs
> >>    -------- Forwarded Message --------
> >> 
> >>    Subject: Re: Leafref and require-instance=false
> >>       Date: Mon, 8 Jun 2015 13:44:55 +0200
> >>       From: Martin Bjorklund [1]<mbj@tail-f.com>
> >>         To: [2]balazs.lengyel@ericsson.com
> >> 
> >>  Balazs Lengyel [3]<balazs.lengyel@ericsson.com> wrote:
> >>  > Hello Martin,
> >>  > Any thoughts on this?
> >>  > regards Balazs
> >>  >
> >>  >
> >>  > Hello Martin,
> >>  > If I have a leafref with require-instance=false which references an
> >>  > uint8 with range 1..10, and the leafref contains the value 20, can
> >>  > this be a valid configuration?
> >>  > As I see it, there is nothing in the draft that says this is not
> >>  > allowed.
> >>  >
> >>  > IMHO this should not be valid. You could add something like:
> >>  > "The leafref must have a value that is a possible allowed value for
> >>  > the referenced leaf."
> >> 
> >>  I agree, this makes sense!
> >> 
> >> 
> >>  /martin
> >> 
> >>  --
> >>  Balazs Lengyel                       Ericsson Hungary Ltd.
> >>  Senior Specialist
> >>  ECN: 831 7320
> >>  Mobile: +36-70-330-7909              email: [4]Balazs.Lengyel@ericsson.com
> >> 
> >> References
> >> 
> >>    Visible links
> >>    1. mailto:mbj@tail-f.com
> >>    2. mailto:balazs.lengyel@ericsson.com
> >>    3. mailto:balazs.lengyel@ericsson.com
> >>    4. mailto:Balazs.Lengyel@ericsson.com
> >
> >> _______________________________________________
> >> netmod mailing list
> >> netmod@ietf.org
> >> https://www.ietf.org/mailman/listinfo/netmod
> >
> >
> > -- 
> > Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> > Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> > Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
> >
> > _______________________________________________
> > netmod mailing list
> > netmod@ietf.org
> > https://www.ietf.org/mailman/listinfo/netmod
> 
> -- 
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: E74E8C0C
> 
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
> 


From nobody Mon Jun  8 07:22:32 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 41EDC1A88FE for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 07:22:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 XtJ3LVgYPumP for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 07:22:17 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3877B1A88EC for <netmod@ietf.org>; Mon,  8 Jun 2015 07:22:17 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id E3E6F1159; Mon,  8 Jun 2015 16:22:15 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id R26PHChY5OtU; Mon,  8 Jun 2015 16:22:14 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Mon,  8 Jun 2015 16:22:14 +0200 (CEST)
Received: from localhost (demetrius4.jacobs-university.de [212.201.44.49]) by hermes.jacobs-university.de (Postfix) with ESMTP id 72F0E20013; Mon,  8 Jun 2015 16:22:14 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius4.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id uwLplKUtV39U; Mon,  8 Jun 2015 16:22:18 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id B602C2002C; Mon,  8 Jun 2015 16:22:12 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 6FEB93442901; Mon,  8 Jun 2015 16:22:09 +0200 (CEST)
Date: Mon, 8 Jun 2015 16:22:08 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150608142208.GB29788@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Balazs Lengyel <balazs.lengyel@ericsson.com>, "netmod@ietf.org" <netmod@ietf.org>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <m2ioayqqrg.fsf@birdie.labs.nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/BFDzDIcIFGuvyOfz3CJ1NW8diLE>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: Mon, 08 Jun 2015 14:22:25 -0000

On Mon, Jun 08, 2015 at 03:22:11PM +0200, Ladislav Lhotka wrote:
> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
> 
> > RFC 6020 section 9.9:
> >
> >    The leafref type is used to reference a particular leaf instance in
> >    the data tree.  The "path" substatement (Section 9.9.2) selects a set
> >    of leaf instances, and the leafref value space is the set of values
> >    of these leaf instances.
> >
> > I think the last statement above already clarifies this, no?
> 
> I think this is a stricter constraint that addresses the
> "require-instance true" case : possible leafref values are limited to
> those that instances of the referenced leaf really have.
> 
> 6020bis should IMO say something like this:
> 
> The "path" substatement (Section 9.9.2) selects a set of leaf
> instances. If the "require-instance" property (Section 9.9.3) is set to
> "true", the leafref value space is the set of values of these leaf
> instances.  Otherwise, the leafref value MUST be a valid value of the
> data type that is defined for the referenced leaf.

This makes sense.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Mon Jun  8 07:40:31 2015
Return-Path: <kwatsen@juniper.net>
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 547611A896F for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 07:40:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 QLcAs0c01hHc for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 07:40:28 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0105.outbound.protection.outlook.com [65.55.169.105]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 271901A8A25 for <netmod@ietf.org>; Mon,  8 Jun 2015 07:40:12 -0700 (PDT)
Received: from BN1PR05MB456.namprd05.prod.outlook.com (10.141.59.26) by BN1PR05MB454.namprd05.prod.outlook.com (10.141.59.17) with Microsoft SMTP Server (TLS) id 15.1.172.22; Mon, 8 Jun 2015 14:40:11 +0000
Received: from BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.222]) by BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.222]) with mapi id 15.01.0172.012; Mon, 8 Jun 2015 14:40:11 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, "Ladislav Lhotka" <lhotka@nic.cz>
Thread-Topic: [netmod] Fwd: Re: Leafref and require-instance=false
Thread-Index: AQHQoePNawRjqNXwQE6VxwbBWPYy0Z2ihL+AgAATuoCAABC/AP//wfmA
Date: Mon, 8 Jun 2015 14:40:10 +0000
Message-ID: <D19B1FC7.AB14C%kwatsen@juniper.net>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz> <20150608142208.GB29788@elstar.local>
In-Reply-To: <20150608142208.GB29788@elstar.local>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: jacobs-university.de; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR05MB454;
x-microsoft-antispam-prvs: <BN1PR05MB454E21F6661A05135485C7AA5BF0@BN1PR05MB454.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(520003)(5005006)(3002001); SRVR:BN1PR05MB454; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB454; 
x-forefront-prvs: 060166847D
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(2473001)(50986999)(5002640100001)(40100003)(54356999)(76176999)(122556002)(66066001)(2656002)(87936001)(83506001)(36756003)(106116001)(46102003)(99286002)(86362001)(5001770100001)(4001350100001)(92566002)(5001960100002)(5001920100001)(189998001)(2900100001)(2950100001)(62966003)(102836002)(77156002)(93886004); DIR:OUT; SFP:1102; SCL:1; SRVR:BN1PR05MB454; H:BN1PR05MB456.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="us-ascii"
Content-ID: <24BBB6377683E84184265BA3D09BDEA9@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jun 2015 14:40:10.9672 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR05MB454
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/V7KFuICQDIZxDXR0-s0LvK1XQnw>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 14:40:29 -0000

> Otherwise, the leafref value MUST be a valid value of the
> data type that is defined for the referenced leaf.


Is it a MUST or a SHOULD?

Obviously, if it's not a valid value, a match will never occur, but that's
a user error, no?

It comes down to a validation warning versus a validation error.  I argue
that the validation should not fail in this case.


Kent


From nobody Mon Jun  8 08:16:26 2015
Return-Path: <lhotka@nic.cz>
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 300F11B2ECA for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 08:16:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.661
X-Spam-Level: 
X-Spam-Status: No, score=-0.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, T_RP_MATCHES_RCVD=-0.01] 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 0i_AOHzCHfsh for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 08:16:24 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CD45F1B2ED9 for <netmod@ietf.org>; Mon,  8 Jun 2015 08:14:54 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 5384113F6AD; Mon,  8 Jun 2015 17:14:53 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1433776493; bh=/ivRWwmqZ+WEOlfhx33XYMjYRAs1FdgOPEvb33wJlgA=; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc: Content-Transfer-Encoding:Message-Id:References:To; b=OPMZSE2Z7yzxDzv1D7/mszbzGHSAJIH2S+vd+Y/qY+wvampEAYda6mziTOtvuLFf1 qdOVMcPXxo32UlqdOsuMHO8hn6ElvRafGiMMDUd5+oV+EKz8sv44Rym3uj1V3sI3j0 EBDFd5LaVas8nZaDL+Sz28u3ECGOYdT9sFgPi4fw=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <D19B1FC7.AB14C%kwatsen@juniper.net>
Date: Mon, 8 Jun 2015 17:14:54 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz> <20150608142208.GB29788@elstar.local> <D19B1FC7.AB14C%kwatsen@juniper.net>
To: Kent Watsen <kwatsen@juniper.net>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.6 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/8pcYrq-E1N3HVcBFrnZzMAUgSZE>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 15:16:26 -0000

> On 08 Jun 2015, at 16:40, Kent Watsen <kwatsen@juniper.net> wrote:
>=20
>=20
>> Otherwise, the leafref value MUST be a valid value of the
>> data type that is defined for the referenced leaf.
>=20
>=20
> Is it a MUST or a SHOULD?
>=20
> Obviously, if it's not a valid value, a match will never occur, but =
that's
> a user error, no?

I think the two leafs are coupled through the path statement and so the =
values of both should conform to the same type. If I extend Balazs=E2=80=99=
 example with uint8 and 1..10 range:

1. Would a leafref value of 256 be acceptable?

2. How about "foo"?

Lada

>=20
> It comes down to a validation warning versus a validation error.  I =
argue
> that the validation should not fail in this case.
>=20
>=20
> Kent
>=20

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Mon Jun  8 08:40:34 2015
Return-Path: <kwatsen@juniper.net>
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 337701B2F5A for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 08:40:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 e7yqgWDaN49p for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 08:40:27 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0140.outbound.protection.outlook.com [65.55.169.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 130181B2F6B for <netmod@ietf.org>; Mon,  8 Jun 2015 08:39:31 -0700 (PDT)
Received: from BN1PR05MB456.namprd05.prod.outlook.com (10.141.59.26) by BN1PR05MB453.namprd05.prod.outlook.com (10.141.59.11) with Microsoft SMTP Server (TLS) id 15.1.172.22; Mon, 8 Jun 2015 15:39:30 +0000
Received: from BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.222]) by BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.222]) with mapi id 15.01.0172.012; Mon, 8 Jun 2015 15:39:30 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Ladislav Lhotka <lhotka@nic.cz>
Thread-Topic: [netmod] Fwd: Re: Leafref and require-instance=false
Thread-Index: AQHQoePNawRjqNXwQE6VxwbBWPYy0Z2ihL+AgAATuoCAABC/AP//wfmAgABMxgD//8PNgA==
Date: Mon, 8 Jun 2015 15:39:30 +0000
Message-ID: <D19B2D9D.AB21C%kwatsen@juniper.net>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz> <20150608142208.GB29788@elstar.local> <D19B1FC7.AB14C%kwatsen@juniper.net> <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz>
In-Reply-To: <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: nic.cz; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR05MB453;
x-microsoft-antispam-prvs: <BN1PR05MB453BBD97FF57FF30D3D96B9A5BF0@BN1PR05MB453.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(520003)(5005006)(3002001); SRVR:BN1PR05MB453; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB453; 
x-forefront-prvs: 060166847D
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(2473001)(51704005)(92566002)(5002640100001)(54356999)(36756003)(46102003)(87936001)(93886004)(99286002)(106116001)(76176999)(122556002)(50986999)(40100003)(86362001)(2656002)(5001920100001)(4001350100001)(66066001)(102836002)(110136002)(83506001)(77156002)(2950100001)(62966003)(5001960100002)(189998001)(2900100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BN1PR05MB453; H:BN1PR05MB456.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <BA3CB83CCBB0034CA18F068CA8C30DAB@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jun 2015 15:39:30.0260 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR05MB453
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/pA52QS_0HTqJfmY4ZohJZxM_l3o>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 15:40:33 -0000

>I think the two leafs are coupled through the path statement and so the
>values of both should conform to the same type. If I extend Balazs=B9
>example with uint8 and 1..10 range:
>
>1. Would a leafref value of 256 be acceptable?
>
>2. How about "foo"?


I agree it doesn't makes sense, but is the configuration invalid?

The leafref is marked require-instance=3Dfalse, it just means a matching
condition will never succeed.

Would a configuration be invalid if a "when" expression could never
evaluate to true?


Kent


From nobody Mon Jun  8 09:03:55 2015
Return-Path: <lhotka@nic.cz>
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 F3CF71A9231 for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 09:03:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.661
X-Spam-Level: 
X-Spam-Status: No, score=-0.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, T_RP_MATCHES_RCVD=-0.01] 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 SaOwwqnhT5Lb for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 09:03:44 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BDE3A1A9100 for <netmod@ietf.org>; Mon,  8 Jun 2015 09:02:35 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 290C81402AB; Mon,  8 Jun 2015 18:02:34 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1433779354; bh=4ShBYzt1MYdms/Q8/d2xF9sdN4diibCmkw2f13EY34Y=; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc: Content-Transfer-Encoding:Message-Id:References:To; b=MDEF3D28b9NYhbUDI6sR1nzmZxZkF/rDuqvUeXbuVaHQf6tTbVcQvUk5QOKNloHtu 09PqclldHQK5Ij0J+jrqGw0EjUuDGrzUZtHnNvshqjIvPJMVwsHuEpjOCZHSxYIckl ZN1im3R1Dcac7ipEvgibhspa3LjmCs2vBBAl8mXA=
Content-Type: text/plain; charset=windows-1252
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <D19B2D9D.AB21C%kwatsen@juniper.net>
Date: Mon, 8 Jun 2015 18:02:34 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <499DCA01-0661-4E0B-9F37-AF6C301915AD@nic.cz>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz> <20150608142208.GB29788@elstar.local> <D19B1FC7.AB14C%kwatsen@juniper.net> <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz> <D19B2D9D.AB21C%kwatsen@juniper.net>
To: Kent Watsen <kwatsen@juniper.net>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.6 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/mIhYoeodZP_feTLRHon_y8syYBc>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 16:03:51 -0000

> On 08 Jun 2015, at 17:39, Kent Watsen <kwatsen@juniper.net> wrote:
>=20
>=20
>=20
>=20
>> I think the two leafs are coupled through the path statement and so =
the
>> values of both should conform to the same type. If I extend Balazs=B9
>> example with uint8 and 1..10 range:
>>=20
>> 1. Would a leafref value of 256 be acceptable?
>>=20
>> 2. How about "foo"?
>=20
>=20
> I agree it doesn't makes sense, but is the configuration invalid?

It=92s a matter of definition but IMO it should be defined as invalid. =
For example, an implementor can use the type information for allocating =
an internal data type for the leafref.


>=20
> The leafref is marked require-instance=3Dfalse, it just means a =
matching
> condition will never succeed.
>=20
> Would a configuration be invalid if a "when" expression could never
> evaluate to true?

We should distinguish between syntactic (schema & datatypes) and =
semantic errors (must & when, and actually also a violation of =
require-instance=3Dtrue for leafrefs).

Lada

>=20
>=20
> Kent
>=20

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Mon Jun  8 09:14:12 2015
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 720421A911A for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 09:14:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.979
X-Spam-Level: 
X-Spam-Status: No, score=-1.979 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 KbBLIsrpbRl1 for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 09:14:09 -0700 (PDT)
Received: from mail-la0-f44.google.com (mail-la0-f44.google.com [209.85.215.44]) (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 C87ED1A9119 for <netmod@ietf.org>; Mon,  8 Jun 2015 09:14:08 -0700 (PDT)
Received: by laew7 with SMTP id w7so100774304lae.1 for <netmod@ietf.org>; Mon, 08 Jun 2015 09:14:07 -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 :content-transfer-encoding; bh=aRfR46Uh0gSbv/V6pZWbSTXJj+6Yv+JDY3xIvaL6a+o=; b=j9viENf63Ij4WW0sFrkY3fKk9hmVaooF2/48AuQTzukMMtOML80yx0wH3mnTdgD89W wIsPgHh4EkBpt6Y6jxzZ02tpZcsoMMHOLap6J8qaj0O7nbpk8OTVbu7coNJrUZN97/ui 1RYBGbw7mPRIs/K6DRafMt0Ml/ZOqay6tXlFF0Jbfvn6ZPh1sS7Z+re2/Xj3iVwzr0ME 6GO3fWqkgdmZJbPax73wNneEP8bEowGsedhR+beT7S0WpiTxTfZIPMeY+79rcLH3rnNW E4s6hUvnCnkjAFvcXD0hRj/k5GxrHNXRnDLIVdvdI6Ukb/opFE1n8zDQx7DhCH26A2Gz kMBA==
X-Gm-Message-State: ALoCoQnHHPcZgNOOdzZntwvEcGaiq2YEOHIlp5jgamswd2MwGc40Q7tt6duAtx7CUaU/reFF9sjB
MIME-Version: 1.0
X-Received: by 10.112.186.35 with SMTP id fh3mr12533661lbc.82.1433780047146; Mon, 08 Jun 2015 09:14:07 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Mon, 8 Jun 2015 09:14:07 -0700 (PDT)
In-Reply-To: <D19B2D9D.AB21C%kwatsen@juniper.net>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz> <20150608142208.GB29788@elstar.local> <D19B1FC7.AB14C%kwatsen@juniper.net> <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz> <D19B2D9D.AB21C%kwatsen@juniper.net>
Date: Mon, 8 Jun 2015 09:14:07 -0700
Message-ID: <CABCOCHQM13UceNkEtop-GNuCPGXuy_T7-2Kf6ud482JqgxGrqg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Kent Watsen <kwatsen@juniper.net>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/dNoBTg7uidDvsHVioZsRVy5zKj8>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 16:14:11 -0000

On Mon, Jun 8, 2015 at 8:39 AM, Kent Watsen <kwatsen@juniper.net> wrote:
>
>
>
>>I think the two leafs are coupled through the path statement and so the
>>values of both should conform to the same type. If I extend Balazs=C2=B9
>>example with uint8 and 1..10 range:
>>
>>1. Would a leafref value of 256 be acceptable?
>>
>>2. How about "foo"?
>
>
> I agree it doesn't makes sense, but is the configuration invalid?
>
> The leafref is marked require-instance=3Dfalse, it just means a matching
> condition will never succeed.
>

If require-instance =3D false then the node must conform to
the data type for the leaf.  This means the typedef used
in the implemented version.

> Would a configuration be invalid if a "when" expression could never
> evaluate to true?
>

The node would never appear in a configuration.
A must-stmt then is always false would make the config invalid.


>
> Kent
>


Andy

> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


From nobody Mon Jun  8 09:33:20 2015
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 A67961B3056 for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 09:33:18 -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 3g1UExz4LaLK for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 09:33:16 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 03E2E1B305D for <netmod@ietf.org>; Mon,  8 Jun 2015 09:33:16 -0700 (PDT)
Received: from localhost (unknown [173.38.220.47]) by mail.tail-f.com (Postfix) with ESMTPSA id 5370F1AE043B; Mon,  8 Jun 2015 18:33:14 +0200 (CEST)
Date: Mon, 08 Jun 2015 18:33:13 +0200 (CEST)
Message-Id: <20150608.183313.2041065005969287387.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHQM13UceNkEtop-GNuCPGXuy_T7-2Kf6ud482JqgxGrqg@mail.gmail.com>
References: <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz> <D19B2D9D.AB21C%kwatsen@juniper.net> <CABCOCHQM13UceNkEtop-GNuCPGXuy_T7-2Kf6ud482JqgxGrqg@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/SLlGV6E8ixOKNJpRhuIxipURrBo>
Cc: netmod@ietf.org
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 16:33:18 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Mon, Jun 8, 2015 at 8:39 AM, Kent Watsen <kwatsen@juniper.net> wro=
te:
> >
> >
> >
> >>I think the two leafs are coupled through the path statement and so=
 the
> >>values of both should conform to the same type. If I extend Balazs=B9=

> >>example with uint8 and 1..10 range:
> >>
> >>1. Would a leafref value of 256 be acceptable?
> >>
> >>2. How about "foo"?
> >
> >
> > I agree it doesn't makes sense, but is the configuration invalid?
> >
> > The leafref is marked require-instance=3Dfalse, it just means a mat=
ching
> > condition will never succeed.
> >
> =

> If require-instance =3D false then the node must conform to
> the data type for the leaf.  This means the typedef used
> in the implemented version.

+1


/martin


From nobody Mon Jun  8 09:37:54 2015
Return-Path: <kwatsen@juniper.net>
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 040081B3077 for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 09:37:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 8iBfNY-fP48I for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 09:37:49 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0779.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::1:779]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9609E1A911A for <netmod@ietf.org>; Mon,  8 Jun 2015 09:37:49 -0700 (PDT)
Received: from BN1PR05MB456.namprd05.prod.outlook.com (10.141.59.26) by BN1PR05MB453.namprd05.prod.outlook.com (10.141.59.11) with Microsoft SMTP Server (TLS) id 15.1.172.22; Mon, 8 Jun 2015 16:37:33 +0000
Received: from BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.222]) by BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.222]) with mapi id 15.01.0172.012; Mon, 8 Jun 2015 16:37:33 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Martin Bjorklund <mbj@tail-f.com>, "andy@yumaworks.com" <andy@yumaworks.com>
Thread-Topic: [netmod] Fwd: Re: Leafref and require-instance=false
Thread-Index: AQHQoePNawRjqNXwQE6VxwbBWPYy0Z2ihL+AgAATuoCAABC/AP//wfmAgABMxgD//8PNgIAATL6AgAAFVoD//74jgA==
Date: Mon, 8 Jun 2015 16:37:32 +0000
Message-ID: <D19B3CB2.AB337%kwatsen@juniper.net>
References: <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz> <D19B2D9D.AB21C%kwatsen@juniper.net> <CABCOCHQM13UceNkEtop-GNuCPGXuy_T7-2Kf6ud482JqgxGrqg@mail.gmail.com> <20150608.183313.2041065005969287387.mbj@tail-f.com>
In-Reply-To: <20150608.183313.2041065005969287387.mbj@tail-f.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: tail-f.com; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR05MB453;
x-microsoft-antispam-prvs: <BN1PR05MB45359F92B32B2D34B71A0DAA5BF0@BN1PR05MB453.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(520003)(5005006)(3002001); SRVR:BN1PR05MB453; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB453; 
x-forefront-prvs: 060166847D
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(377454003)(2473001)(164054003)(479174004)(51704005)(24454002)(54356999)(92566002)(5002640100001)(36756003)(46102003)(2501003)(87936001)(93886004)(99286002)(106116001)(122556002)(76176999)(50986999)(40100003)(86362001)(2656002)(19580405001)(5001920100001)(4001350100001)(66066001)(102836002)(83506001)(5001770100001)(77156002)(2950100001)(62966003)(5001960100002)(19580395003)(189998001)(2900100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BN1PR05MB453; H:BN1PR05MB456.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="us-ascii"
Content-ID: <3289ABD4E15D4248A46F1820EF640D75@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jun 2015 16:37:32.6206 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR05MB453
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/nCAE2Wh39DlG8rJdcgxxRPNDXhc>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 16:37:53 -0000

On 6/8/15, 12:33 PM, "Martin Bjorklund" <mbj@tail-f.com> wrote:
>Andy Bierman <andy@yumaworks.com> wrote:
>> On Mon, Jun 8, 2015 at 8:39 AM, Kent Watsen <kwatsen@juniper.net> wrote:
>>> The leafref is marked require-instance=3Dfalse, it just means a matchin=
g
>> > condition will never succeed.
>> >
>>=20
>> If require-instance =3D false then the node must conform to
>> the data type for the leaf.  This means the typedef used
>> in the implemented version.
>
>+1


OK, fine, a MUST it is then.

Thanks,
Kent


From nobody Mon Jun  8 11:49:56 2015
Return-Path: <lhotka@nic.cz>
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 0E99E1B31B4 for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 11:49:55 -0700 (PDT)
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] 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 wK5i0y7IoXnd for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 11:49:53 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 159031B31B1 for <netmod@ietf.org>; Mon,  8 Jun 2015 11:49:53 -0700 (PDT)
Received: from localhost (unknown [172.29.2.202]) by trail.lhotka.name (Postfix) with ESMTPSA id 9DA741CC00E8; Mon,  8 Jun 2015 20:49:59 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Andy Bierman <andy@yumaworks.com>, Kent Watsen <kwatsen@juniper.net>
In-Reply-To: <CABCOCHQM13UceNkEtop-GNuCPGXuy_T7-2Kf6ud482JqgxGrqg@mail.gmail.com>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz> <20150608142208.GB29788@elstar.local> <D19B1FC7.AB14C%kwatsen@juniper.net> <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz> <D19B2D9D.AB21C%kwatsen@juniper.net> <CABCOCHQM13UceNkEtop-GNuCPGXuy_T7-2Kf6ud482JqgxGrqg@mail.gmail.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Mon, 08 Jun 2015 20:49:50 +0200
Message-ID: <m2fv62yr01.fsf@nic.cz>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/TuVTBNgG1arns3NESVD6iTIcM7Q>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 18:49:55 -0000

Andy Bierman <andy@yumaworks.com> writes:

> On Mon, Jun 8, 2015 at 8:39 AM, Kent Watsen <kwatsen@juniper.net> wrote:
>>
>>
>>
>>>I think the two leafs are coupled through the path statement and so the
>>>values of both should conform to the same type. If I extend Balazs=C2=B9
>>>example with uint8 and 1..10 range:
>>>
>>>1. Would a leafref value of 256 be acceptable?
>>>
>>>2. How about "foo"?
>>
>>
>> I agree it doesn't makes sense, but is the configuration invalid?
>>
>> The leafref is marked require-instance=3Dfalse, it just means a matching
>> condition will never succeed.
>>
>
> If require-instance =3D false then the node must conform to
> the data type for the leaf.  This means the typedef used
> in the implemented version.
>
>> Would a configuration be invalid if a "when" expression could never
>> evaluate to true?
>>
>
> The node would never appear in a configuration.
> A must-stmt then is always false would make the config invalid.

What's actually relevant to the subject of this thread (and supports
Kent's point somewhat) is this example:

leaf foo {
  type uint8;
  must ". <=3D 10";
}
leaf bar {
  type leafref {
    require-instance false;
    path "../foo";
  }
}

Should <bar>20</bar> be flagged as invalid? IMO no. At first sight it
looks exactly like Balazs' example but in fact it is different - if
there is no "foo", the must expression doesn't apply.

Lada


>
>
>>
>> Kent
>>
>
>
> Andy
>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod

--=20
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Mon Jun  8 12:15:12 2015
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 9281F1A014B for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 12:15:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.979
X-Spam-Level: 
X-Spam-Status: No, score=-1.979 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 UGoZw0N5OHbr for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 12:15:08 -0700 (PDT)
Received: from mail-la0-f41.google.com (mail-la0-f41.google.com [209.85.215.41]) (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 6FBF71A00FA for <netmod@ietf.org>; Mon,  8 Jun 2015 12:15:08 -0700 (PDT)
Received: by laar3 with SMTP id r3so54980620laa.3 for <netmod@ietf.org>; Mon, 08 Jun 2015 12:15:07 -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 :content-transfer-encoding; bh=TkYL5MsPMsFr2FlVjysLDj3yXdt363bssDxfGkNAFKw=; b=IVl/ZdWEd625DIa2/FCBjXU9LyANwaM4Du9R4TMpYzgQyNX3uwltRcBTr6mv7SdGmU DV4TQU2jLl55DapewV09PlP9ud2F5bhzcBdpgGhvC74Sskl/qWBxBPGaxPY+GvT5Ixye WtY6zFTzdgfD5aUAKA1Qm37E5iMjQ+r/h963KkzUvVYSaaZO8nNGjnrQC7hxGTPT14b4 2bte653OonhNzMMVkUxGwnth+1DDsQj06GU4WOcDZFR17kNSapL/W8C9AEIy0h+ZGG6Y w9Jkn6cqsC1/qKHOAgTyp2wxhGKIUcSvGlfro+jaNKzE1DmFnH1EOso1t4u01bhFqP/6 ruQw==
X-Gm-Message-State: ALoCoQm06xGyf0fVbhzEHQ7eSVkh4k4lrbgeIgE3QAoNewIgtg6Wng3T7yorkOIsCcF2iVWh3jpB
MIME-Version: 1.0
X-Received: by 10.112.77.234 with SMTP id v10mr18505183lbw.119.1433790907015;  Mon, 08 Jun 2015 12:15:07 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Mon, 8 Jun 2015 12:15:06 -0700 (PDT)
In-Reply-To: <m2fv62yr01.fsf@nic.cz>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz> <20150608142208.GB29788@elstar.local> <D19B1FC7.AB14C%kwatsen@juniper.net> <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz> <D19B2D9D.AB21C%kwatsen@juniper.net> <CABCOCHQM13UceNkEtop-GNuCPGXuy_T7-2Kf6ud482JqgxGrqg@mail.gmail.com> <m2fv62yr01.fsf@nic.cz>
Date: Mon, 8 Jun 2015 12:15:06 -0700
Message-ID: <CABCOCHSur6nm7axgrv9wO=A7hx2e3WRrFLYNW21k8ZpubwoRhw@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Ladislav Lhotka <lhotka@nic.cz>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/fegYdmdBddruP1vYthmWLwqDyGg>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 19:15:10 -0000

On Mon, Jun 8, 2015 at 11:49 AM, Ladislav Lhotka <lhotka@nic.cz> wrote:
> Andy Bierman <andy@yumaworks.com> writes:
>
>> On Mon, Jun 8, 2015 at 8:39 AM, Kent Watsen <kwatsen@juniper.net> wrote:
>>>
>>>
>>>
>>>>I think the two leafs are coupled through the path statement and so the
>>>>values of both should conform to the same type. If I extend Balazs=C2=
=B9
>>>>example with uint8 and 1..10 range:
>>>>
>>>>1. Would a leafref value of 256 be acceptable?
>>>>
>>>>2. How about "foo"?
>>>
>>>
>>> I agree it doesn't makes sense, but is the configuration invalid?
>>>
>>> The leafref is marked require-instance=3Dfalse, it just means a matchin=
g
>>> condition will never succeed.
>>>
>>
>> If require-instance =3D false then the node must conform to
>> the data type for the leaf.  This means the typedef used
>> in the implemented version.
>>
>>> Would a configuration be invalid if a "when" expression could never
>>> evaluate to true?
>>>
>>
>> The node would never appear in a configuration.
>> A must-stmt then is always false would make the config invalid.
>
> What's actually relevant to the subject of this thread (and supports
> Kent's point somewhat) is this example:
>
> leaf foo {
>   type uint8;
>   must ". <=3D 10";
> }
> leaf bar {
>   type leafref {
>     require-instance false;
>     path "../foo";
>   }
> }
>
> Should <bar>20</bar> be flagged as invalid? IMO no. At first sight it
> looks exactly like Balazs' example but in fact it is different - if
> there is no "foo", the must expression doesn't apply.
>

I don't see where a range "1..20" is introduced.
The "leaf bar" has the same type as /foo,
so that is uint8.

I see your point... does "require-instance false"
mean it could be a valid value for the leaf, but
no instances happen to exist with that value?

Or does it mean valid for the same data-type but the instance
may never exist?

I think "valid for the data type" is correct.
The must-stmt says valid for the leaf to exist.
That is a separate test.

> Lada

Andy

>
>
>>
>>
>>>
>>> Kent
>>>
>>
>>
>> Andy
>>
>>> _______________________________________________
>>> netmod mailing list
>>> netmod@ietf.org
>>> https://www.ietf.org/mailman/listinfo/netmod
>
> --
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: E74E8C0C


From nobody Mon Jun  8 12:17:08 2015
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 786961A00FA for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 12:17:02 -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 A7osI5tAC1Ai for <netmod@ietfa.amsl.com>; Mon,  8 Jun 2015 12:16:57 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 692F11A0105 for <netmod@ietf.org>; Mon,  8 Jun 2015 12:16:56 -0700 (PDT)
Received: from localhost (unknown [173.38.220.47]) by mail.tail-f.com (Postfix) with ESMTPSA id 659D21AE043B; Mon,  8 Jun 2015 21:16:54 +0200 (CEST)
Date: Mon, 08 Jun 2015 21:16:53 +0200 (CEST)
Message-Id: <20150608.211653.635854985382785468.mbj@tail-f.com>
To: lhotka@nic.cz
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <m2fv62yr01.fsf@nic.cz>
References: <D19B2D9D.AB21C%kwatsen@juniper.net> <CABCOCHQM13UceNkEtop-GNuCPGXuy_T7-2Kf6ud482JqgxGrqg@mail.gmail.com> <m2fv62yr01.fsf@nic.cz>
X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/WmGXha8vH55CERSvTo5CPwNsAz4>
Cc: netmod@ietf.org
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Mon, 08 Jun 2015 19:17:04 -0000

Ladislav Lhotka <lhotka@nic.cz> wrote:
> Andy Bierman <andy@yumaworks.com> writes:
> =

> > On Mon, Jun 8, 2015 at 8:39 AM, Kent Watsen <kwatsen@juniper.net> w=
rote:
> >>
> >>
> >>
> >>>I think the two leafs are coupled through the path statement and s=
o the
> >>>values of both should conform to the same type. If I extend Balazs=
=B9
> >>>example with uint8 and 1..10 range:
> >>>
> >>>1. Would a leafref value of 256 be acceptable?
> >>>
> >>>2. How about "foo"?
> >>
> >>
> >> I agree it doesn't makes sense, but is the configuration invalid?
> >>
> >> The leafref is marked require-instance=3Dfalse, it just means a ma=
tching
> >> condition will never succeed.
> >>
> >
> > If require-instance =3D false then the node must conform to
> > the data type for the leaf.  This means the typedef used
> > in the implemented version.
> >
> >> Would a configuration be invalid if a "when" expression could neve=
r
> >> evaluate to true?
> >>
> >
> > The node would never appear in a configuration.
> > A must-stmt then is always false would make the config invalid.
> =

> What's actually relevant to the subject of this thread (and supports
> Kent's point somewhat) is this example:
> =

> leaf foo {
>   type uint8;
>   must ". <=3D 10";
> }
> leaf bar {
>   type leafref {
>     require-instance false;
>     path "../foo";
>   }
> }
> =

> Should <bar>20</bar> be flagged as invalid? IMO no.

No!  "flagged as invalid" is not precise enough - note that
<foo>20</foo> is ok in some circumstances, e.g., it is ok to have
<foo>20</foo> in the candidate.  However <foo>20</foo> can never be
part of a valid configuration.

<bar>20</bar> is always ok.


/martin


From nobody Tue Jun  9 06:57:33 2015
Return-Path: <lhotka@nic.cz>
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 B09F91B2C39 for <netmod@ietfa.amsl.com>; Tue,  9 Jun 2015 06:57:31 -0700 (PDT)
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] 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 V1r_80K7hAg9 for <netmod@ietfa.amsl.com>; Tue,  9 Jun 2015 06:57:29 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 681A81B2C2C for <netmod@ietf.org>; Tue,  9 Jun 2015 06:57:29 -0700 (PDT)
Received: from localhost (unknown [217.31.205.2]) by trail.lhotka.name (Postfix) with ESMTPSA id 544001CC00E8; Tue,  9 Jun 2015 15:57:34 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Andy Bierman <andy@yumaworks.com>
In-Reply-To: <CABCOCHSur6nm7axgrv9wO=A7hx2e3WRrFLYNW21k8ZpubwoRhw@mail.gmail.com>
References: <20150608.134455.313442052302110328.mbj@tail-f.com> <557585A5.70809@ericsson.com> <20150608121133.GC29405@elstar.local> <m2ioayqqrg.fsf@birdie.labs.nic.cz> <20150608142208.GB29788@elstar.local> <D19B1FC7.AB14C%kwatsen@juniper.net> <D0948A4C-0B21-4851-9F80-348D81E6EBF9@nic.cz> <D19B2D9D.AB21C%kwatsen@juniper.net> <CABCOCHQM13UceNkEtop-GNuCPGXuy_T7-2Kf6ud482JqgxGrqg@mail.gmail.com> <m2fv62yr01.fsf@nic.cz> <CABCOCHSur6nm7axgrv9wO=A7hx2e3WRrFLYNW21k8ZpubwoRhw@mail.gmail.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 09 Jun 2015 15:57:25 +0200
Message-ID: <m2mw092ddm.fsf@Birdie.labs.office.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/JIxtEK9upNSa6SW6DJufxWQkWC4>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Fwd: Re: Leafref and require-instance=false
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: Tue, 09 Jun 2015 13:57:31 -0000

Andy Bierman <andy@yumaworks.com> writes:

> On Mon, Jun 8, 2015 at 11:49 AM, Ladislav Lhotka <lhotka@nic.cz> wrote:
>> Andy Bierman <andy@yumaworks.com> writes:
>>
>>> On Mon, Jun 8, 2015 at 8:39 AM, Kent Watsen <kwatsen@juniper.net> wrote:
>>>>
>>>>
>>>>
>>>>>I think the two leafs are coupled through the path statement and so the
>>>>>values of both should conform to the same type. If I extend Balazs=C2=
=B9
>>>>>example with uint8 and 1..10 range:
>>>>>
>>>>>1. Would a leafref value of 256 be acceptable?
>>>>>
>>>>>2. How about "foo"?
>>>>
>>>>
>>>> I agree it doesn't makes sense, but is the configuration invalid?
>>>>
>>>> The leafref is marked require-instance=3Dfalse, it just means a matchi=
ng
>>>> condition will never succeed.
>>>>
>>>
>>> If require-instance =3D false then the node must conform to
>>> the data type for the leaf.  This means the typedef used
>>> in the implemented version.
>>>
>>>> Would a configuration be invalid if a "when" expression could never
>>>> evaluate to true?
>>>>
>>>
>>> The node would never appear in a configuration.
>>> A must-stmt then is always false would make the config invalid.
>>
>> What's actually relevant to the subject of this thread (and supports
>> Kent's point somewhat) is this example:
>>
>> leaf foo {
>>   type uint8;
>>   must ". <=3D 10";
>> }
>> leaf bar {
>>   type leafref {
>>     require-instance false;
>>     path "../foo";
>>   }
>> }
>>
>> Should <bar>20</bar> be flagged as invalid? IMO no. At first sight it
>> looks exactly like Balazs' example but in fact it is different - if
>> there is no "foo", the must expression doesn't apply.
>>
>
> I don't see where a range "1..20" is introduced.
> The "leaf bar" has the same type as /foo,
> so that is uint8.
>
> I see your point... does "require-instance false"
> mean it could be a valid value for the leaf, but
> no instances happen to exist with that value?
>
> Or does it mean valid for the same data-type but the instance
> may never exist?
>
> I think "valid for the data type" is correct.
> The must-stmt says valid for the leaf to exist.
> That is a separate test.

Agreed. Lada

>
>> Lada
>
> Andy
>
>>
>>
>>>
>>>
>>>>
>>>> Kent
>>>>
>>>
>>>
>>> Andy
>>>
>>>> _______________________________________________
>>>> netmod mailing list
>>>> netmod@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/netmod
>>
>> --
>> Ladislav Lhotka, CZ.NIC Labs
>> PGP Key ID: E74E8C0C

--=20
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun  9 07:16:38 2015
Return-Path: <lhotka@nic.cz>
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 4A3C51B2CE0 for <netmod@ietfa.amsl.com>; Tue,  9 Jun 2015 07:16:37 -0700 (PDT)
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] 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 j4AYScIJseAb for <netmod@ietfa.amsl.com>; Tue,  9 Jun 2015 07:16:36 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 519671B2CCE for <netmod@ietf.org>; Tue,  9 Jun 2015 07:16:36 -0700 (PDT)
Received: from localhost (unknown [217.31.205.2]) by trail.lhotka.name (Postfix) with ESMTPSA id 0EED11CC00E8 for <netmod@ietf.org>; Tue,  9 Jun 2015 16:16:44 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: netmod@ietf.org
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 09 Jun 2015 16:16:35 +0200
Message-ID: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/1jMStSGvFWytMhcIu5qeEttXGag>
Subject: [netmod] anydata
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: Tue, 09 Jun 2015 14:16:37 -0000

Hi,

RFC 6020bis says in Sec. 7.10: The "anydata" statement is used to
represent an unknown set of nodes that can be modelled with YANG." I'd
like to clarify what this means with respect to namespaces.

1. Is it allowed that the XML content (value) of an anydata node have no
   namespace? That is:

   anydata foo;

   <foo>
     <bar xmlns=""/>
   </foo>

   I assume it is not allowed.

2. For a namespace URI that's used for anydata content, is it required
   that there exist a YANG module defining this URI as its namespace?

   I assume it is not required.

Thanks, Lada

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun  9 13:22:23 2015
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 9403A1B30C7 for <netmod@ietfa.amsl.com>; Tue,  9 Jun 2015 13:22:22 -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 zWkzTzGCv5JS for <netmod@ietfa.amsl.com>; Tue,  9 Jun 2015 13:22:21 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 462B91B30C3 for <netmod@ietf.org>; Tue,  9 Jun 2015 13:22:21 -0700 (PDT)
Received: from localhost (unknown [213.136.39.104]) by mail.tail-f.com (Postfix) with ESMTPSA id D58B51AE0375; Tue,  9 Jun 2015 22:22:19 +0200 (CEST)
Date: Tue, 09 Jun 2015 22:23:47 +0200 (CEST)
Message-Id: <20150609.222347.408776138911568221.mbj@tail-f.com>
To: lhotka@nic.cz
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz>
References: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/ceIYHYWWZ6OZv18Wy8CyJJJes8A>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
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: Tue, 09 Jun 2015 20:22:22 -0000

Ladislav Lhotka <lhotka@nic.cz> wrote:
> Hi,
> 
> RFC 6020bis says in Sec. 7.10: The "anydata" statement is used to
> represent an unknown set of nodes that can be modelled with YANG." I'd
> like to clarify what this means with respect to namespaces.
> 
> 1. Is it allowed that the XML content (value) of an anydata node have no
>    namespace? That is:
> 
>    anydata foo;
> 
>    <foo>
>      <bar xmlns=""/>
>    </foo>
> 
>    I assume it is not allowed.

Right, b/c this cannot be encoded with the encoding rules for anydata,
which says that the element's namespace is the module's XML namespace
(and this cannot be "").

> 2. For a namespace URI that's used for anydata content, is it required
>    that there exist a YANG module defining this URI as its namespace?
> 
>    I assume it is not required.

Yes.

I don't see how it could be enforced?  How can you tell if a YANG
module exists?

I do want to be able to have a generic model like:

   list logged-notification {
     ...
     anydata notif;
   }

and implement this in a server that doesn't necessarily know the data
model of every possible notification.


/martin


From nobody Tue Jun  9 13:57:21 2015
Return-Path: <shares@ndzh.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 F17B61A1A68; Tue,  9 Jun 2015 13:57:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -97.154
X-Spam-Level: 
X-Spam-Status: No, score=-97.154 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, DOS_OUTLOOK_TO_MX=2.845, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100, WEIRD_PORT=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 cnufbTCZrb4o; Tue,  9 Jun 2015 13:57:17 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) by ietfa.amsl.com (Postfix) with ESMTP id 7B04A1A1A73; Tue,  9 Jun 2015 13:57:14 -0700 (PDT)
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=184.157.82.115; 
From: "Susan Hares" <shares@ndzh.com>
To: <i2rs@ietf.org>
Date: Tue, 9 Jun 2015 16:57:03 -0400
Message-ID: <023301d0a2f6$d6ad71d0$84085570$@ndzh.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0234_01D0A2D5.4F9EDF10"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AdCi9dfrchnV+DzOQ52VhnCsPsYx9w==
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com 
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/soUNEwbDudmjElolv88mAlz_lXI>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: [netmod] I2RS Interim on 6/10/2015 at 10:00 - Discussion of I2RS Requirements to be sent to NETCONF on 6/10/2015
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: Tue, 09 Jun 2015 20:57:20 -0000

This is a multipart message in MIME format.

------=_NextPart_000_0234_01D0A2D5.4F9EDF10
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

The I2SR Protocol Requirements will be passed to NETCONF later this week 

 

https://datatracker.ietf.org/doc/draft-haas-i2rs-ephemeral-state-reqs
(adopted by I2RS WG) 

http://datatracker.ietf.org/doc/draft-haas-i2rs-netmod-netconf-requirements
: withdrawn 

http://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub-requirements/ ( WG
LC completed, consensus)  

http://datatracker.ietf.org/doc/draft-ietf-i2rs-traceability/  WG LC
complete, consensus  

 

Come and discuss these at the I2RS Interim before the documents are passed
to NETCONF. 

 

Sue Hares 

==================

 

I2RS interim 6/10/2015 

 

Agenda: 

 

0) Agenda Bashing [10:00 - 10:05] 

1) DiscussionI2RS Protocol requirements for ephemeral state   [10:05 -
10:20] 

https://datatracker.ietf.org/doc/draft-haas-i2rs-ephemeral-state-reqs

        presenter (Jeff Haas)    

 

2) Review of WG Adoption and WG LC 

Discussion on  All requirements including the following drafts [10:20-10:30]


 

http://datatracker.ietf.org/doc/draft-haas-i2rs-netmod-netconf-requirements
- withdrawn 

http://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub-requirements/ ( WG
LC completed, consensus)  

http://datatracker.ietf.org/doc/draft-ietf-i2rs-traceability/  WG LC
complete, consensus 

 

3) draft-hares-i2rs-auth-transaction-00.txt  (WG Adoption 6/10 to 6/24)
[10:30-10:45] 

 

4) Open Discussion [10:45 to 11:15]

 

  http://etherpad.tools.ietf.org:9000/p/i2rs-interim-Jun-10-2015-minutes

[Jeff and Sue will be active in the discussions.  We appreciate any extra
note-takers]

 Meeting blue sheets: 

 
http://etherpad.tools.ietf.org:9000/p/i2rs-interim-jun-10-2015-vBlueSheets

[Please sign up on the virtual Blue Sheets. ]

  

                                  

 I2RS Interim 6/7 

Wednesday, June 10, 2015 

9:30 am  |  Eastern Daylight Time (New York, GMT-04:00)  |  2 hrs 

 

 

Join WebEx meeting

https://ietf.webex.com/ietf/j.php?MTID=m82ee9ad7a04c2334cb77af58f195cf48

 

Meeting number:            648 859 109 

Meeting password:         choice.is.yours

 

Join by phone

1-877-668-4493 Call-in toll free number (US/Canada)

1-650-479-3208 Call-in toll number (US/Canada)

Access code: 648 859 109

 

 

--------------------------------

 


------=_NextPart_000_0234_01D0A2D5.4F9EDF10
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 14 =
(filtered medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal>The I2SR =
Protocol Requirements will be passed to NETCONF later this week =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal><a =
href=3D"https://datatracker.ietf.org/doc/draft-haas-i2rs-ephemeral-state-=
reqs">https://datatracker.ietf.org/doc/draft-haas-i2rs-ephemeral-state-re=
qs</a> (adopted by I2RS WG) <o:p></o:p></p><p =
class=3DMsoNormal>http://datatracker.ietf.org/doc/draft-haas-i2rs-netmod-=
netconf-requirements : withdrawn <o:p></o:p></p><p =
class=3DMsoNormal>http://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub=
-requirements/ ( WG LC completed, consensus)&nbsp; <o:p></o:p></p><p =
class=3DMsoNormal>http://datatracker.ietf.org/doc/draft-ietf-i2rs-traceab=
ility/&nbsp; WG LC complete, consensus &nbsp;<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Come and =
discuss these at the I2RS Interim before the documents are passed to =
NETCONF. <o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Sue Hares <o:p></o:p></p><p =
class=3DMsoNormal>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<=
o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>I2RS interim 6/10/2015 <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Agenda: =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>0) Agenda Bashing [10:00 &#8211; 10:05] =
<o:p></o:p></p><p class=3DMsoNormal>1) DiscussionI2RS Protocol =
requirements for ephemeral state&nbsp; &nbsp;[10:05 &#8211; 10:20] =
<o:p></o:p></p><p =
class=3DMsoNormal>https://datatracker.ietf.org/doc/draft-haas-i2rs-epheme=
ral-state-reqs<o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; presenter =
(Jeff Haas)&nbsp;&nbsp;&nbsp; <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>2) Review of =
WG Adoption and WG LC <o:p></o:p></p><p class=3DMsoNormal>Discussion =
on&nbsp; All requirements including the following drafts =
[10:20-10:30]&nbsp;&nbsp; <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>http://datatracker.ietf.org/doc/draft-haas-i2rs-netmod-=
netconf-requirements&nbsp; - withdrawn <o:p></o:p></p><p =
class=3DMsoNormal>http://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub=
-requirements/ ( WG LC completed, consensus)&nbsp; <o:p></o:p></p><p =
class=3DMsoNormal>http://datatracker.ietf.org/doc/draft-ietf-i2rs-traceab=
ility/&nbsp; WG LC complete, consensus <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>3) =
draft-hares-i2rs-auth-transaction-00.txt&nbsp; (WG Adoption 6/10 to =
6/24) [10:30-10:45] <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>4) Open =
Discussion [10:45 to 11:15]<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal> =
<o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;&nbsp;http://etherpad.tools.ietf.org:9000/p/i2rs-=
interim-Jun-10-2015-minutes<o:p></o:p></p><p class=3DMsoNormal> [Jeff =
and Sue will be active in the discussions.&nbsp; We appreciate any extra =
note-takers]<o:p></o:p></p><p class=3DMsoNormal> <o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;Meeting blue sheets: <o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;&nbsp;&nbsp;http://etherpad.tools.ietf.org:9000/p=
/i2rs-interim-jun-10-2015-vBlueSheets<o:p></o:p></p><p =
class=3DMsoNormal> [Please sign up on the virtual Blue Sheets. =
]<o:p></o:p></p><p class=3DMsoNormal>&nbsp; <o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;I2RS Interim 6/7 <o:p></o:p></p><p =
class=3DMsoNormal>Wednesday, June 10, 2015 <o:p></o:p></p><p =
class=3DMsoNormal>9:30 am&nbsp; |&nbsp; Eastern Daylight Time (New York, =
GMT-04:00)&nbsp; |&nbsp; 2 hrs <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Join WebEx =
meeting<o:p></o:p></p><p class=3DMsoNormal> =
https://ietf.webex.com/ietf/j.php?MTID=3Dm82ee9ad7a04c2334cb77af58f195cf4=
8<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal> <o:p></o:p></p><p class=3DMsoNormal>Meeting number: =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 648 859 109 =
<o:p></o:p></p><p class=3DMsoNormal>Meeting =
password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
choice.is.yours<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Join by =
phone<o:p></o:p></p><p class=3DMsoNormal>1-877-668-4493 Call-in toll =
free number (US/Canada)<o:p></o:p></p><p =
class=3DMsoNormal>1-650-479-3208 Call-in toll number =
(US/Canada)<o:p></o:p></p><p class=3DMsoNormal>Access code: 648 859 =
109<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>--------------------------------<o:p></o:p></p><p =
class=3DMsoNormal> <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div></body></html>
------=_NextPart_000_0234_01D0A2D5.4F9EDF10--


From nobody Tue Jun  9 14:32:18 2015
Return-Path: <shares@ndzh.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 53FB81A1B21; Tue,  9 Jun 2015 14:32:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -97.155
X-Spam-Level: 
X-Spam-Status: No, score=-97.155 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, DOS_OUTLOOK_TO_MX=2.845, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100] 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 UYu0fEIRb4aH; Tue,  9 Jun 2015 14:32:05 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) by ietfa.amsl.com (Postfix) with ESMTP id 3C7BB1A1B05; Tue,  9 Jun 2015 14:32:05 -0700 (PDT)
X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=184.157.82.115; 
From: "Susan Hares" <shares@ndzh.com>
To: <i2rs@ietf.org>
Date: Tue, 9 Jun 2015 17:31:54 -0400
Message-ID: <026e01d0a2fb$b52d99e0$1f88cda0$@ndzh.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_026F_01D0A2DA.2E1DA790"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AdCi90273nYdXGB4SLeA1ZmD/g423g==
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com 
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/arIz38IXVo89kJ6JTopthbm2QXQ>
Cc: 'Alia Atlas' <akatlas@juniper.net>, netconf@ietf.org, netmod@ietf.org
Subject: [netmod] WG documents for I2RS Protocol - WG calls 5/27 to 6/9
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: Tue, 09 Jun 2015 21:32:07 -0000

This is a multipart message in MIME format.

------=_NextPart_000_026F_01D0A2DA.2E1DA790
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

The following I2RS Protocol Requirements will be passed to NETCONF later
this week 

 

https://datatracker.ietf.org/doc/draft-haas-i2rs-ephemeral-state-reqs
(adopted by I2RS WG) 

   (will be sent as draft-ietf-i2rs-ephemeral-state-reqs) 

http://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub-requirements/ ( WG
LC completed, consensus)  

http://datatracker.ietf.org/doc/draft-ietf-i2rs-traceability/  WG LC
complete, consensus  

 

Come and discuss these at the I2RS Interim before the documents are passed
to NETCONF. 

 

Below are 10 requirements that NETCONF SHOULD meet.  There has been debate
on the I2RS list whether NETCONF can provide requirement 2.  If you have an
opinion on these requirements,  the interim tomorrow is your chance to
provide feedback before the requirements go to NETCONF.  

 

Sue Hares

=============================================

 

 1.   The I2RS protocol SHOULD support highly reliable notifications (but
not perfectly reliable notifications) from an I2RS agent to an  I2RS client.

 2.   The I2RS protocol SHOULD support a high bandwidth, asynchronous
interface, with real-time guarantees on getting data from an I2RS  agent by
an I2RS client. 

3.  The I2RS protocol will operate on data models which may be protocol
independent or protocol dependent.

 

4. I2RS Agent needs to record the client identity when a node is created or
modified. The I2RS Agent needs to be able to read the client identity of a
node and use the client identity's associated priority to resolve conflicts.
The secondary identity is useful for traceability and may also be recorded.

 5.   Client identity will have only one priority for the client identity. A
collision on writes is considered an error, but priority is utilized to
compare requests from two different clients in order to modify an existing
node entry.  Only an entry from a client which is higher priority can modify
an existing entry (First entry wins). Priority only has meaning at the time
of use.  

6.   The Agent identity and the Client identity should be passed outside of
the I2RS protocol in a authentication and authorization  protocol (AAA).
Client priority may be passed in the AAA protocol.  The values of identities
are originally set by operators, and not  standardized.  

 7.  An I2RS Client and I2RS Agent mutually authenticate each other based on
pre-established authenticated identities.  

 8. Secondary identity data is read-only meta-data that is recorded by the
I2RS agent associated with a data model's node is written, updated or
deleted. Just like the primary identity, the secondary identity is only
recorded when the data node is written or updated or deleted.  

 9.   I2RS agent can have a lower priority I2RS client attempting to modify
a higher priority client's entry in a data model.  The filtering out of
lower priority clients attempting to write or modify a higher priority
client's entry in a data model SHOULD be effectively handled and not put an
undue strain on the I2RS agent.  

Note:  Jeff's suggests that priority is kept at the NACM at the client level
(rather than the path level or the group level) will allow these lower
priority clients to be filtered out using an extended NACM approach. This is
only a suggestion of a method to provide the requirement 9.  

10.  The I2RS protocol MUST support the use of a secure transport. However,
certain functions such as notifications MAY use a non-secure transport.
Each model or service (notification, logging) must define within the model
or service the valid uses of a non-secure transport.

 

 


------=_NextPart_000_026F_01D0A2DA.2E1DA790
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 14 =
(filtered medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal>The =
following I2RS Protocol Requirements will be passed to NETCONF later =
this week <o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal><a =
href=3D"https://datatracker.ietf.org/doc/draft-haas-i2rs-ephemeral-state-=
reqs">https://datatracker.ietf.org/doc/draft-haas-i2rs-ephemeral-state-re=
qs</a> (adopted by I2RS WG) <o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;&nbsp;&nbsp;(will be sent as =
draft-ietf-i2rs-ephemeral-state-reqs) <o:p></o:p></p><p =
class=3DMsoNormal>http://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub=
-requirements/ ( WG LC completed, consensus)&nbsp; <o:p></o:p></p><p =
class=3DMsoNormal>http://datatracker.ietf.org/doc/draft-ietf-i2rs-traceab=
ility/&nbsp; WG LC complete, consensus &nbsp;<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Come and =
discuss these at the I2RS Interim before the documents are passed to =
NETCONF. <o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Below are 10 requirements that NETCONF SHOULD =
meet.&nbsp; There has been debate on the I2RS list whether NETCONF can =
provide requirement 2.&nbsp; If you have an opinion on these =
requirements, &nbsp;the interim tomorrow is your chance to provide =
feedback before the requirements go to NETCONF. &nbsp;<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Sue =
Hares<o:p></o:p></p><p =
class=3DMsoNormal>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>&nbsp;1.&nbsp; &nbsp;The I2RS protocol SHOULD support =
highly reliable notifications (but not perfectly reliable notifications) =
from an I2RS agent to an&nbsp; I2RS client.<br><br>&nbsp;2.&nbsp; =
&nbsp;The I2RS protocol SHOULD support a high bandwidth, asynchronous =
interface, with real-time guarantees on getting data from an I2RS&nbsp; =
agent by an I2RS client. <br><br>3.&nbsp; The I2RS protocol will operate =
on data models which may be protocol independent or protocol =
dependent.<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal style=3D'margin-bottom:12.0pt'>4. I2RS Agent needs to =
record the client identity when a node is created or modified. The I2RS =
Agent needs to be able to read the client identity of a node and use the =
client identity's associated priority to resolve conflicts.&nbsp;&nbsp; =
The secondary identity is useful for traceability and may also be =
recorded.<o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-bottom:12.0pt'>&nbsp;5.&nbsp; &nbsp;Client identity will =
have only one priority for the client identity. A collision on writes is =
considered an error, but priority is utilized to compare requests from =
two different clients in order to modify an existing node entry.&nbsp; =
Only an entry from a client which is higher priority can modify an =
existing entry (First entry wins). Priority only has meaning at the time =
of use. &nbsp;<br><br>6.&nbsp; &nbsp;The Agent identity and the Client =
identity should be passed outside of the I2RS protocol in a =
authentication and authorization&nbsp; protocol (AAA).&nbsp; Client =
priority may be passed in the AAA protocol.&nbsp; The values of =
identities are originally set by operators, and not&nbsp; standardized. =
&nbsp;<br><br>&nbsp;7.&nbsp; An I2RS Client and I2RS Agent mutually =
authenticate each other based on pre-established authenticated =
identities. &nbsp;<br><br>&nbsp;8. Secondary identity data is read-only =
meta-data that is recorded by the I2RS agent associated with a data =
model's node is written, updated or deleted. Just like the primary =
identity, the secondary identity is only recorded when the data node is =
written or updated or deleted.&nbsp; <br><br>&nbsp;9.&nbsp; &nbsp;I2RS =
agent can have a lower priority I2RS client attempting to modify a =
higher priority client's entry in a data model.&nbsp; The filtering out =
of lower priority clients attempting to write or modify a higher =
priority client's entry in a data model SHOULD be effectively handled =
and not put an<br>undue strain on the I2RS agent.&nbsp; =
<br><br>Note:&nbsp; Jeff's suggests that priority is kept at the NACM at =
the client level (rather than the path level or the group level) will =
allow these lower priority clients to be filtered out using an extended =
NACM approach. This is only a suggestion of a method to provide the =
requirement 9.&nbsp; <o:p></o:p></p><p class=3DMsoNormal>10.&nbsp; The =
I2RS protocol MUST support the use of a secure transport. However, =
certain functions such as notifications MAY use a non-secure =
transport.&nbsp; Each model or service (notification, logging) must =
define within the model or service the valid uses of a non-secure =
transport.<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div></body></html>
------=_NextPart_000_026F_01D0A2DA.2E1DA790--


From nobody Wed Jun 10 00:05:11 2015
Return-Path: <lhotka@nic.cz>
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 AFF1E1A8952 for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 00:05:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.361
X-Spam-Level: 
X-Spam-Status: No, score=-0.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] 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 2JeYM-KYapsp for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 00:05:08 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 25C141A886C for <netmod@ietf.org>; Wed, 10 Jun 2015 00:05:08 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id A49E3140A76; Wed, 10 Jun 2015 09:05:06 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1433919906; bh=Q3fKoytb9gerqO7V3dZv9iRMtPFxYsrlygvdgVlOX+g=; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc: Content-Transfer-Encoding:Message-Id:References:To; b=Y5+YzmYHC9T9wwzOgPkjKgmYrrjtRbmF2WaIxq5o+W1wLUA7MQrSL2KYYJ1w7Lj7C rDxjJiDHd2PWCQt0xQomV6oH33mLLHLTp1PFfTVaa8LFjZiIv5/s+4hpprjJhD7vhE aZvCS4lIpCZbnlDEYpKaRO34r7SgXWvrj3HxMm8w=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150609.222347.408776138911568221.mbj@tail-f.com>
Date: Wed, 10 Jun 2015 09:05:07 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz>
References: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz> <20150609.222347.408776138911568221.mbj@tail-f.com>
To: =?utf-8?Q?Martin_Bj=C3=B6rklund?= <mbj@tail-f.com>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.6 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/fjal8aEAnt0kZspbKSjregAxlpw>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
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, 10 Jun 2015 07:05:10 -0000

> On 09 Jun 2015, at 22:23, Martin Bjorklund <mbj@tail-f.com> wrote:
>=20
> Ladislav Lhotka <lhotka@nic.cz> wrote:
>> Hi,
>>=20
>> RFC 6020bis says in Sec. 7.10: The "anydata" statement is used to
>> represent an unknown set of nodes that can be modelled with YANG." =
I'd
>> like to clarify what this means with respect to namespaces.
>>=20
>> 1. Is it allowed that the XML content (value) of an anydata node have =
no
>>   namespace? That is:
>>=20
>>   anydata foo;
>>=20
>>   <foo>
>>     <bar xmlns=3D""/>
>>   </foo>
>>=20
>>   I assume it is not allowed.
>=20
> Right, b/c this cannot be encoded with the encoding rules for anydata,
> which says that the element's namespace is the module's XML namespace
> (and this cannot be "").
>=20
>> 2. For a namespace URI that's used for anydata content, is it =
required
>>   that there exist a YANG module defining this URI as its namespace?
>>=20
>>   I assume it is not required.
>=20
> Yes.
>=20
> I don't see how it could be enforced?  How can you tell if a YANG
> module exists?

For example, it could be required that the server advertises such a =
module so as to be known at run time. I am not proposing this, just =
verifying that everybody interprets =E2=80=9Ccan be modelled=E2=80=9D =
the same way.

It is also important for the JSON encoding - it means there won=E2=80=99t =
necessarily be a way for mapping XML-encoded instance to JSON and vice =
versa.

Lada

>=20
> I do want to be able to have a generic model like:
>=20
>   list logged-notification {
>     ...
>     anydata notif;
>   }
>=20
> and implement this in a server that doesn't necessarily know the data
> model of every possible notification.
>=20
>=20
> /martin

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 10 00:22:20 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 6A92B1AC42D for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 00:22:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 WovQwcW6Alzv for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 00:22:18 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3181A1AC428 for <netmod@ietf.org>; Wed, 10 Jun 2015 00:22:18 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 9B01F136F; Wed, 10 Jun 2015 09:22:16 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id N5b7PJuRQkuG; Wed, 10 Jun 2015 09:22:14 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Wed, 10 Jun 2015 09:22:16 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id 41ECD2002B; Wed, 10 Jun 2015 09:22:16 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id 68R5ZvDIapFo; Wed, 10 Jun 2015 09:22:22 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id A953820013; Wed, 10 Jun 2015 09:22:14 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id C13EE344D2AB; Wed, 10 Jun 2015 09:22:12 +0200 (CEST)
Date: Wed, 10 Jun 2015 09:22:11 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150610072210.GA36374@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Martin =?iso-8859-1?Q?Bj=F6rklund?= <mbj@tail-f.com>, netmod@ietf.org
References: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz> <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/pnWesH47kWgTEp2kkLsI9fQZFmM>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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, 10 Jun 2015 07:22:19 -0000

On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
> 
> It is also important for the JSON encoding - it means there wonâ€™t necessarily be a way for mapping XML-encoded instance to JSON and vice versa.
>

Because of two different namespace identifiers. So here we go.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Wed Jun 10 00:56:55 2015
Return-Path: <lhotka@nic.cz>
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 DDA661ACD09 for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 00:56:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.361
X-Spam-Level: 
X-Spam-Status: No, score=-0.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] 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 1ZqhDMbAwclx for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 00:56:53 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F2A821A1AC1 for <netmod@ietf.org>; Wed, 10 Jun 2015 00:56:52 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 689C9140515; Wed, 10 Jun 2015 09:56:51 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1433923011; bh=5w6BbilUjf/lbIsKySswwYwvagI/no0ZDboYRF81fV4=; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc: Content-Transfer-Encoding:Message-Id:References:To; b=o3OtyehdtuKTvRCQEg2K2a2WY3dCel+zvC0FJSSSLOgcAJMrMylvDMRCwf74WgpFX id/3N1hsM9e/B/9A364xUxxA/AcYOZq/8OyIW7jqYitQaN6VudGO+aNCaCcbIa0Q4f 19tvFX+xP6wsfm8xNc+8UtnRzNPl8voR2dcGx37Y=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150610072210.GA36374@elstar.local>
Date: Wed, 10 Jun 2015 09:56:51 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <3F57CCBC-04FD-4A74-8477-DB6E77B667C6@nic.cz>
References: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz> <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local>
To: =?utf-8?Q?J=C3=BCrgen_Sch=C3=B6nw=C3=A4lder?= <j.schoenwaelder@jacobs-university.de>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.6 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/RJPvASABw_AFAKtp5t7bbDUhwYc>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
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, 10 Jun 2015 07:56:55 -0000

> On 10 Jun 2015, at 09:22, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>=20
> On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
>>=20
>> It is also important for the JSON encoding - it means there won=E2=80=99=
t necessarily be a way for mapping XML-encoded instance to JSON and vice =
versa.
>>=20
>=20
> Because of two different namespace identifiers. So here we go.

Yes, three in fact. Blame XML for this.

Lada

>=20
> /js
>=20
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 10 01:36:01 2015
Return-Path: <internet-drafts@ietf.org>
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 38D081ACD90; Wed, 10 Jun 2015 01:35:58 -0700 (PDT)
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] 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 GyFjAfyt2gxu; Wed, 10 Jun 2015 01:35:57 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 2C3721ACD89; Wed, 10 Jun 2015 01:35:57 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: internet-drafts@ietf.org
To: <i-d-announce@ietf.org>
X-Test-IDTracker: no
X-IETF-IDTracker: 6.0.3.p2
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20150610083557.19153.89619.idtracker@ietfa.amsl.com>
Date: Wed, 10 Jun 2015 01:35:57 -0700
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/C7qg60v_FAJRLDUMn6q8Ft07upM>
Cc: netmod@ietf.org
Subject: [netmod] I-D Action: draft-ietf-netmod-yang-metadata-01.txt
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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, 10 Jun 2015 08:35:58 -0000

A New Internet-Draft is available from the on-line Internet-Drafts directories.
 This draft is a work item of the NETCONF Data Modeling Language Working Group of the IETF.

        Title           : Defining and Using Metadata with YANG
        Author          : Ladislav Lhotka
	Filename        : draft-ietf-netmod-yang-metadata-01.txt
	Pages           : 16
	Date            : 2015-06-10

Abstract:
   This document defines a YANG extension statement that allows for
   defining syntax of metadata annotions in YANG modules.  The document
   also specifies XML and JSON encoding of annotations and other rules
   for annotating instances of YANG data nodes.


The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draft-ietf-netmod-yang-metadata/

There's also a htmlized version available at:
https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01

A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url2=draft-ietf-netmod-yang-metadata-01


Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/


From nobody Wed Jun 10 02:01:27 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 862A31ACDB7 for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 02:01:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 qe56RQfWQOmK for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 02:01:24 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D05571ACDA3 for <netmod@ietf.org>; Wed, 10 Jun 2015 02:01:23 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id CE7CC15CF; Wed, 10 Jun 2015 11:01:21 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id vvM-EBm16tSD; Wed, 10 Jun 2015 11:01:16 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Wed, 10 Jun 2015 11:01:18 +0200 (CEST)
Received: from localhost (demetrius1.jacobs-university.de [212.201.44.46]) by hermes.jacobs-university.de (Postfix) with ESMTP id E8E4F2002B; Wed, 10 Jun 2015 11:01:17 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius1.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id ZJF-9xEpYx6W; Wed, 10 Jun 2015 11:01:10 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 3743320036; Wed, 10 Jun 2015 11:01:13 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 26B48344D60D; Wed, 10 Jun 2015 11:01:12 +0200 (CEST)
Date: Wed, 10 Jun 2015 11:01:11 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150610090110.GB36604@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Martin =?iso-8859-1?Q?Bj=F6rklund?= <mbj@tail-f.com>, netmod@ietf.org
References: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz> <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local> <3F57CCBC-04FD-4A74-8477-DB6E77B667C6@nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <3F57CCBC-04FD-4A74-8477-DB6E77B667C6@nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/F1wRwncV-dt1DpaNV4KxZKcbv5w>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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, 10 Jun 2015 09:01:25 -0000

On Wed, Jun 10, 2015 at 09:56:51AM +0200, Ladislav Lhotka wrote:
> 
> > On 10 Jun 2015, at 09:22, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> > 
> > On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
> >> 
> >> It is also important for the JSON encoding - it means there wonâ€™t necessarily be a way for mapping XML-encoded instance to JSON and vice versa.
> >> 
> > 
> > Because of two different namespace identifiers. So here we go.
> 
> Yes, three in fact. Blame XML for this.
>

No, I am not blaming XML. There are only two namespace identifiers;
XML uses a URI, you insist that JSON uses a YANG module name. The fact
that these _two_ namespace identifiers are different requires to have
YANG modules at hand in order to do a conversion between XML encoded
YANG instance data and JSON encoded YANG instance data. This is
something created by NETMOD (since JSON does not really have
namespaces), not something to blame others for.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Wed Jun 10 02:26:42 2015
Return-Path: <lhotka@nic.cz>
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 0FD131ACDF8 for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 02:26:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.361
X-Spam-Level: 
X-Spam-Status: No, score=-0.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] 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 J0JIF3aWlHnr for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 02:26:40 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 48D6D1ACDF7 for <netmod@ietf.org>; Wed, 10 Jun 2015 02:26:40 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id BF672140875; Wed, 10 Jun 2015 11:26:38 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1433928398; bh=mxdOwO6dOj+m1vMjju31WP4fsh8mDYxCYh/UxTtD938=; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc: Content-Transfer-Encoding:Message-Id:References:To; b=CIB5SrIBT9fewVMz/SMyp4EKeousde47wKPffXmgxDZgp7heQf6dzzOctcs4P3yJu GhCADzTvOnWs1jDxRDo5FN9wMWZQHUFzNJXI0dEYYwuq5xr/hH581WCQ1vJRcsqq4w ydLWfp5kMPRmMXeNf2XQrXzENdAH/iQeBXUhNP4U=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150610090110.GB36604@elstar.local>
Date: Wed, 10 Jun 2015 11:26:38 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <F212FC1C-F8EC-49C1-A82E-23EDF1E0D955@nic.cz>
References: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz> <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local> <3F57CCBC-04FD-4A74-8477-DB6E77B667C6@nic.cz> <20150610090110.GB36604@elstar.local>
To: =?utf-8?Q?J=C3=BCrgen_Sch=C3=B6nw=C3=A4lder?= <j.schoenwaelder@jacobs-university.de>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.6 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/oiGIjojN_X5_Tg_t49nymImK6dc>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
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, 10 Jun 2015 09:26:42 -0000

> On 10 Jun 2015, at 11:01, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>=20
> On Wed, Jun 10, 2015 at 09:56:51AM +0200, Ladislav Lhotka wrote:
>>=20
>>> On 10 Jun 2015, at 09:22, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>>>=20
>>> On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
>>>>=20
>>>> It is also important for the JSON encoding - it means there won=E2=80=
=99t necessarily be a way for mapping XML-encoded instance to JSON and =
vice versa.
>>>>=20
>>>=20
>>> Because of two different namespace identifiers. So here we go.
>>=20
>> Yes, three in fact. Blame XML for this.
>>=20
>=20
> No, I am not blaming XML. There are only two namespace identifiers;
> XML uses a URI, you insist that JSON uses a YANG module name. The fact
> that these _two_ namespace identifiers are different requires to have
> YANG modules at hand in order to do a conversion between XML encoded
> YANG instance data and JSON encoded YANG instance data. This is
> something created by NETMOD (since JSON does not really have
> namespaces), not something to blame others for.

=46rom JSON point of view, the module name is an ideal namespace ID =
because it is a YANG identifier. Putting URIs to JSON text is a =
non-starter, and we have already discussed this.

The use of URIs as namespace identifiers and URI-prefix duality in XML =
has been recognized as a design mistake by XML creators:

http://blog.jclark.com/2010/01/xml-namespaces.html

Lada


>=20
> /js
>=20
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 10 03:08:05 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 C3C611ACE4D for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 03:08:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 2Pzp81VhG0rs for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 03:08:02 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 454D01ACE47 for <netmod@ietf.org>; Wed, 10 Jun 2015 03:08:02 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id A23D015CB; Wed, 10 Jun 2015 12:08:00 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id k7elEtrDXoTh; Wed, 10 Jun 2015 12:07:57 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Wed, 10 Jun 2015 12:07:59 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id 8791F2002B; Wed, 10 Jun 2015 12:07:59 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id bkvNrwxjO1M9; Wed, 10 Jun 2015 12:08:05 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 06B2A20013; Wed, 10 Jun 2015 12:07:58 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 3607A344D8B8; Wed, 10 Jun 2015 12:07:57 +0200 (CEST)
Date: Wed, 10 Jun 2015 12:07:56 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150610100755.GA36881@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Martin =?iso-8859-1?Q?Bj=F6rklund?= <mbj@tail-f.com>, netmod@ietf.org
References: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz> <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local> <3F57CCBC-04FD-4A74-8477-DB6E77B667C6@nic.cz> <20150610090110.GB36604@elstar.local> <F212FC1C-F8EC-49C1-A82E-23EDF1E0D955@nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <F212FC1C-F8EC-49C1-A82E-23EDF1E0D955@nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/0vKWPPeyECuB__oNgLioeDRssfs>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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, 10 Jun 2015 10:08:04 -0000

On Wed, Jun 10, 2015 at 11:26:38AM +0200, Ladislav Lhotka wrote:
> 
> > On 10 Jun 2015, at 11:01, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> > 
> > On Wed, Jun 10, 2015 at 09:56:51AM +0200, Ladislav Lhotka wrote:
> >> 
> >>> On 10 Jun 2015, at 09:22, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> >>> 
> >>> On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
> >>>> 
> >>>> It is also important for the JSON encoding - it means there wonâ€™t necessarily be a way for mapping XML-encoded instance to JSON and vice versa.
> >>>> 
> >>> 
> >>> Because of two different namespace identifiers. So here we go.
> >> 
> >> Yes, three in fact. Blame XML for this.
> >> 
> > 
> > No, I am not blaming XML. There are only two namespace identifiers;
> > XML uses a URI, you insist that JSON uses a YANG module name. The fact
> > that these _two_ namespace identifiers are different requires to have
> > YANG modules at hand in order to do a conversion between XML encoded
> > YANG instance data and JSON encoded YANG instance data. This is
> > something created by NETMOD (since JSON does not really have
> > namespaces), not something to blame others for.
> 
> From JSON point of view, the module name is an ideal namespace ID because it is a YANG identifier. Putting URIs to JSON text is a non-starter, and we have already discussed this.
> 
> The use of URIs as namespace identifiers and URI-prefix duality in XML has been recognized as a design mistake by XML creators:
> 
> http://blog.jclark.com/2010/01/xml-namespaces.html
>

There are odd things in XML, there are odd things in JSON, but this is
not our scope. We are only responsible for any odd things we create.

The decision that the JSON encoding and the XML encoding of YANG
instance data uses different namespace identifiers is the
responsibility of this WG.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Wed Jun 10 03:29:14 2015
Return-Path: <lhotka@nic.cz>
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 552831ACE74 for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 03:29:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.361
X-Spam-Level: 
X-Spam-Status: No, score=-0.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] 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 YcKmbuxytluD for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 03:29:11 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9492D1ACE73 for <netmod@ietf.org>; Wed, 10 Jun 2015 03:29:11 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 918D4140515; Wed, 10 Jun 2015 12:29:09 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1433932149; bh=Gcq5wwLyD8P1ily9nx6y/VuoIkY3OgxIEn+KwIvEfrA=; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc: Content-Transfer-Encoding:Message-Id:References:To; b=jdEzaLMNxs/dQ8oOSgcFhGPxpC3HHEtyr8PVt9ke810cbEKWcI5dEELMAP8vc08Ia nKaP2JbG/qngRPUtUobDrXjNeOQtjnBvsnNSNHfibmO/AdY6mEx7WFWTAyjJqxHg8J uZkSFueztRif85eoGX+VGlderB0B0ITF3LzYuy0g=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150610100755.GA36881@elstar.local>
Date: Wed, 10 Jun 2015 12:29:09 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <9772DA97-0A06-460A-9F4A-43BA58452773@nic.cz>
References: <m2k2vd2cho.fsf@Birdie.labs.office.nic.cz> <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local> <3F57CCBC-04FD-4A74-8477-DB6E77B667C6@nic.cz> <20150610090110.GB36604@elstar.local> <F212FC1C-F8EC-49C1-A82E-23EDF1E0D955@nic.cz> <20150610100755.GA36881@elstar.local>
To: =?utf-8?Q?J=C3=BCrgen_Sch=C3=B6nw=C3=A4lder?= <j.schoenwaelder@jacobs-university.de>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.6 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/u93sJiGnuqi_H9h3YGJYhi2pxOc>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
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, 10 Jun 2015 10:29:13 -0000

> On 10 Jun 2015, at 12:07, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>=20
> On Wed, Jun 10, 2015 at 11:26:38AM +0200, Ladislav Lhotka wrote:
>>=20
>>> On 10 Jun 2015, at 11:01, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>>>=20
>>> On Wed, Jun 10, 2015 at 09:56:51AM +0200, Ladislav Lhotka wrote:
>>>>=20
>>>>> On 10 Jun 2015, at 09:22, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>>>>>=20
>>>>> On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
>>>>>>=20
>>>>>> It is also important for the JSON encoding - it means there =
won=E2=80=99t necessarily be a way for mapping XML-encoded instance to =
JSON and vice versa.
>>>>>>=20
>>>>>=20
>>>>> Because of two different namespace identifiers. So here we go.
>>>>=20
>>>> Yes, three in fact. Blame XML for this.
>>>>=20
>>>=20
>>> No, I am not blaming XML. There are only two namespace identifiers;
>>> XML uses a URI, you insist that JSON uses a YANG module name. The =
fact
>>> that these _two_ namespace identifiers are different requires to =
have
>>> YANG modules at hand in order to do a conversion between XML encoded
>>> YANG instance data and JSON encoded YANG instance data. This is
>>> something created by NETMOD (since JSON does not really have
>>> namespaces), not something to blame others for.
>>=20
>> =46rom JSON point of view, the module name is an ideal namespace ID =
because it is a YANG identifier. Putting URIs to JSON text is a =
non-starter, and we have already discussed this.
>>=20
>> The use of URIs as namespace identifiers and URI-prefix duality in =
XML has been recognized as a design mistake by XML creators:
>>=20
>> http://blog.jclark.com/2010/01/xml-namespaces.html
>>=20
>=20
> There are odd things in XML, there are odd things in JSON, but this is
> not our scope. We are only responsible for any odd things we create.
>=20
> The decision that the JSON encoding and the XML encoding of YANG
> instance data uses different namespace identifiers is the
> responsibility of this WG.

Do you want to suggest an alternative?

Lada

>=20
> /js
>=20
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 10 04:38:30 2015
Return-Path: <balazs.lengyel@ericsson.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 E47001A004E for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 04:38:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level: 
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] 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 7lDyk0X2UaFt for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 04:38:27 -0700 (PDT)
Received: from sessmg22.ericsson.net (sessmg22.ericsson.net [193.180.251.58]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 58ADF1ACEC6 for <netmod@ietf.org>; Wed, 10 Jun 2015 04:38:27 -0700 (PDT)
X-AuditID: c1b4fb3a-f79ec6d000006dc0-4c-557821b17038
Received: from ESESSHC022.ericsson.se (Unknown_Domain [153.88.253.125]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 4D.80.28096.1B128755; Wed, 10 Jun 2015 13:38:25 +0200 (CEST)
Received: from [159.107.96.118] (153.88.183.153) by smtp.internal.ericsson.com (153.88.183.86) with Microsoft SMTP Server id 14.3.210.2; Wed, 10 Jun 2015 13:38:24 +0200
Message-ID: <557821B0.3000503@ericsson.com>
Date: Wed, 10 Jun 2015 13:38:24 +0200
From: Balazs Lengyel <balazs.lengyel@ericsson.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: "netmod@ietf.org" <netmod@ietf.org>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBJMWRmVeSWpSXmKPExsUyM+Jvre5GxYpQg973ahbzLzayOjB6LFny kymAMYrLJiU1J7MstUjfLoErY8uzdYwFW7gq+nbcYW1gnM7excjJISFgItG9eSUzhC0mceHe erYuRi4OIYGjjBI7pp1ihHDWMEpc+rqECaSKV0Bb4vW2GWA2i4CqxO9rKxhBbDYBI4mp/edZ QGxRgSiJqY/XsUDUC0qcnPkEzBYRUJeYuRNkAyeHMFD9iTUQNcwCFhIz559nhLDlJba/nQN2 kZCAhsTDC39ZJzDyzUIyahaSlllIWhYwMq9iFC1OLS7OTTcy0kstykwuLs7P08tLLdnECAyq g1t+W+1gPPjc8RCjAAejEg+vwqzyUCHWxLLiytxDjNIcLErivDM254UKCaQnlqRmp6YWpBbF F5XmpBYfYmTi4JRqYOxc/Gv7SY5svl8796fM2PHmNl/gaYWnDO/+XgrpnKD3VYjv13LxIrba 7vjyvaplzk6PPNRitx30ytY78/Gae1Wp8dHnUTN+Nf2eeEu5MvKb9fS814kLAyQPLA/dF6fd bbF5y8apd5IffIrxm9pybdeu7f4HGeZalc0Kc2GQ9FzF7/3sjWLOknlKLMUZiYZazEXFiQCH qiV3CwIAAA==
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/LbqL7NesIvk_GU8vVuBXDS5oYl4>
Subject: [netmod] Inner lists in unique - are they allowed?
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, 10 Jun 2015 11:38:29 -0000

Hello,
I have the following model

     list rootlist1 {
         description  dd;
         key rootlist1Key1;
         unique "rootlist1StrAtt1 innerContainer/innerLeaf1 
innerContainer/innerList/innerUnique1";
         leaf rootlist1Key1 {  type string;}
         leaf rootlist1StrAtt1 {  type string;}
         container innerContainer{
             leaf innerLeaf1 { type string;}
             list innerList {
                 key innerKey;
                 leaf innerKey { type uint8;}
                 leaf innerUnique1 { type uint16;}
             }
         }
     }

 From PYANG I get teh error message:

the identifier "innerList" in the unique argument references a list; 
this is not legal

However the standard does not mention that lists are not allowed.
innerContainer/innerList/innerUnique1 follows the 
descendant-schema-nodeid and it refers to a leaf at the end.

So is referencing the leaf within the innerList allowed or not? If not 
this should be described in the draft.

SImilarly can a leaf under a choice/case be part of the unique? IMO the 
RFC/draft allows it, but I would not.
regards Balazs

-- 
Balazs Lengyel                       Ericsson Hungary Ltd.
Senior Specialist
ECN: 831 7320
Mobile: +36-70-330-7909              email: Balazs.Lengyel@ericsson.com


From nobody Wed Jun 10 06:05:07 2015
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 C39A11A1BFF for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 06:05:05 -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 WC_aDQ4hTfYH for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 06:05:01 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 49C231A1BEC for <netmod@ietf.org>; Wed, 10 Jun 2015 06:05:01 -0700 (PDT)
Received: from localhost (unknown [173.38.220.52]) by mail.tail-f.com (Postfix) with ESMTPSA id 6229C1AE0763; Wed, 10 Jun 2015 15:04:59 +0200 (CEST)
Date: Wed, 10 Jun 2015 15:04:58 +0200 (CEST)
Message-Id: <20150610.150458.1855243092215885444.mbj@tail-f.com>
To: j.schoenwaelder@jacobs-university.de
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <20150610072210.GA36374@elstar.local>
References: <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local>
X-Mailer: Mew version 6.5 on Emacs 23.4 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=utf-8
Content-Transfer-Encoding: base64
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/kUpP6AkzmXJ5gLck75JttBflsXA>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
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, 10 Jun 2015 13:05:05 -0000

SnVlcmdlbiBTY2hvZW53YWVsZGVyIDxqLnNjaG9lbndhZWxkZXJAamFjb2JzLXVuaXZlcnNpdHku
ZGU+IHdyb3RlOg0KPiBPbiBXZWQsIEp1biAxMCwgMjAxNSBhdCAwOTowNTowN0FNICswMjAwLCBM
YWRpc2xhdiBMaG90a2Egd3JvdGU6DQo+ID4gDQo+ID4gSXQgaXMgYWxzbyBpbXBvcnRhbnQgZm9y
IHRoZSBKU09OIGVuY29kaW5nIC0gaXQgbWVhbnMgdGhlcmUgd29u4oCZdA0KPiBuZWNlc3Nhcmls
eSBiZSBhIHdheSBmb3IgbWFwcGluZyBYTUwtZW5jb2RlZCBpbnN0YW5jZSB0byBKU09OIGFuZA0K
PiB2aWNlIHZlcnNhLg0KPiA+DQo+IA0KPiBCZWNhdXNlIG9mIHR3byBkaWZmZXJlbnQgbmFtZXNw
YWNlIGlkZW50aWZpZXJzLiBTbyBoZXJlIHdlIGdvLg0KDQpUaGVyZSBhcmUgb3RoZXIgcmVhc29u
cyBhcyB3ZWxsLCBlLmcuLCA8Zm9vPjQyPC9mb28+IG1pZ2h0IGJlIGVuY29kZWQNCmFzOg0KDQog
ICJmb28iOiA0Mg0KDQpvcg0KDQogICJmb28iOiAiNDIiDQoNCm9yDQoNCiAgImZvbyI6IFs0Ml0N
Cg0Kb3INCg0KICAiZm9vIjogWyI0MiJdDQogIA0KZGVwZW5kaW5nIG9uIHRoZSBkYXRhIG1vZGVs
Lg0KDQoNClRoZSBKU09OIGVuY29kaW5nIHByb2Nlc3MgbmVlZHMgdGhlIGRhdGEgbW9kZWwuDQoN
Cg0KDQovbWFydGluDQo=


From nobody Wed Jun 10 06:24:12 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 F164F1B29CA for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 06:24:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 ADykHjHbJbRB for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 06:24:03 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 14B6D1ACEF4 for <netmod@ietf.org>; Wed, 10 Jun 2015 06:23:55 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 513081697; Wed, 10 Jun 2015 15:23:53 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id GWxDyYucgzRc; Wed, 10 Jun 2015 15:23:50 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Wed, 10 Jun 2015 15:23:52 +0200 (CEST)
Received: from localhost (demetrius4.jacobs-university.de [212.201.44.49]) by hermes.jacobs-university.de (Postfix) with ESMTP id A776F2002B; Wed, 10 Jun 2015 15:23:52 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius4.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id AwnjbU8wt-Xy; Wed, 10 Jun 2015 15:24:01 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 2085220013; Wed, 10 Jun 2015 15:23:51 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 386FC344E016; Wed, 10 Jun 2015 15:23:50 +0200 (CEST)
Date: Wed, 10 Jun 2015 15:23:49 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Martin Bjorklund <mbj@tail-f.com>
Message-ID: <20150610132348.GA37464@elstar.local>
Mail-Followup-To: Martin Bjorklund <mbj@tail-f.com>, lhotka@nic.cz, netmod@ietf.org
References: <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local> <20150610.150458.1855243092215885444.mbj@tail-f.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <20150610.150458.1855243092215885444.mbj@tail-f.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/4z9IRxHt5CBwF-IzJcbRc3jyJj8>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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, 10 Jun 2015 13:24:11 -0000

On Wed, Jun 10, 2015 at 03:04:58PM +0200, Martin Bjorklund wrote:
> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> > On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
> > > 
> > > It is also important for the JSON encoding - it means there wonâ€™t
> > necessarily be a way for mapping XML-encoded instance to JSON and
> > vice versa.
> > >
> > 
> > Because of two different namespace identifiers. So here we go.
> 
> There are other reasons as well, e.g., <foo>42</foo> might be encoded
> as:
> 
>   "foo": 42
> 
> or
> 
>   "foo": "42"
> 
> or
> 
>   "foo": [42]
> 
> or
> 
>   "foo": ["42"]
>   
> depending on the data model.
> 
> The JSON encoding process needs the data model.

Unless the receiver can be expected to do conversion as needed. (I
know Lada does not like that, no need to tell me again.)

/js

PS: Looking at large numbers and small numbers, the receiver may have
    to be prepared to do some conversion anyway.

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Wed Jun 10 06:24:19 2015
Return-Path: <lhotka@nic.cz>
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 D47421B29CA for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 06:24:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.361
X-Spam-Level: 
X-Spam-Status: No, score=-0.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] 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 CCEDm0yRK4Rm for <netmod@ietfa.amsl.com>; Wed, 10 Jun 2015 06:24:11 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3FBCE1B29C5 for <netmod@ietf.org>; Wed, 10 Jun 2015 06:24:08 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id E8D70140AD5; Wed, 10 Jun 2015 15:24:05 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1433942645; bh=COl20D8R09+PSaVjnKg1ALtmHowG3xTZr5w6c8+amSY=; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc: Content-Transfer-Encoding:Message-Id:References:To; b=trL+wMb6zQd2h/SVhHrr6Fbj9WvgOMyOPbQvnTWDpXnUn68D9TSeITH+8LZAIytAt tHVwUI6/EECXcQhNQUiRYmKAdIBY+PCYwiG+eTrRL10TrHUEj6w+Qet8RdLlJI9K/S W4RUBsIfkVuN4iR44hnY6S0Ue47iM/34br+D9UW0=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150610.150458.1855243092215885444.mbj@tail-f.com>
Date: Wed, 10 Jun 2015 15:24:06 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <0EABDB1A-952C-4947-94E5-6AB2AE1129EB@nic.cz>
References: <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local> <20150610.150458.1855243092215885444.mbj@tail-f.com>
To: =?utf-8?Q?Martin_Bj=C3=B6rklund?= <mbj@tail-f.com>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.6 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/_OTS4QuhqCkPG4tqHHSvypI_i2Y>
Cc: netmod@ietf.org
Subject: Re: [netmod] anydata
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, 10 Jun 2015 13:24:13 -0000

> On 10 Jun 2015, at 15:04, Martin Bjorklund <mbj@tail-f.com> wrote:
>=20
> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
>> On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
>>>=20
>>> It is also important for the JSON encoding - it means there won=E2=80=99=
t
>> necessarily be a way for mapping XML-encoded instance to JSON and
>> vice versa.
>>>=20
>>=20
>> Because of two different namespace identifiers. So here we go.
>=20
> There are other reasons as well, e.g., <foo>42</foo> might be encoded
> as:
>=20
>  "foo": 42
>=20
> or
>=20
>  "foo": "42"
>=20
> or
>=20
>  "foo": [42]
>=20
> or
>=20
>  "foo": ["42"]
>=20
> depending on the data model.
>=20
>=20
> The JSON encoding process needs the data model.


Sure, but we just agreed the data model may not be available for anydata =
content. So anydata also doesn't guarantee a universal XML-JSON mapping.

Lada

>=20
>=20
>=20
> /martin

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Fri Jun 12 02:51:01 2015
Return-Path: <internet-drafts@ietf.org>
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 78E471A8BC3; Fri, 12 Jun 2015 02:50:58 -0700 (PDT)
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] 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 5WxfXRzl8VQN; Fri, 12 Jun 2015 02:50:53 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 7233E1A8BB2; Fri, 12 Jun 2015 02:50:53 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: internet-drafts@ietf.org
To: <i-d-announce@ietf.org>
X-Test-IDTracker: no
X-IETF-IDTracker: 6.0.3.p2
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20150612095053.6044.25669.idtracker@ietfa.amsl.com>
Date: Fri, 12 Jun 2015 02:50:53 -0700
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/V938SBLUNuhoLu402zTjt3_0M18>
Cc: netmod@ietf.org
Subject: [netmod] I-D Action: draft-ietf-netmod-yang-json-04.txt
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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, 12 Jun 2015 09:50:58 -0000

A New Internet-Draft is available from the on-line Internet-Drafts directories.
 This draft is a work item of the NETCONF Data Modeling Language Working Group of the IETF.

        Title           : JSON Encoding of Data Modeled with YANG
        Author          : Ladislav Lhotka
	Filename        : draft-ietf-netmod-yang-json-04.txt
	Pages           : 19
	Date            : 2015-06-12

Abstract:
   This document defines encoding rules for representing configuration,
   state data, RPC input and output parameters, and notifications
   defined using YANG as JavaScript Object Notation (JSON) text.


The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draft-ietf-netmod-yang-json/

There's also a htmlized version available at:
https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04

A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url2=draft-ietf-netmod-yang-json-04


Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/


From nobody Fri Jun 12 03:02:57 2015
Return-Path: <lhotka@nic.cz>
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 6EC2E1A9009 for <netmod@ietfa.amsl.com>; Fri, 12 Jun 2015 03:02:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.661
X-Spam-Level: 
X-Spam-Status: No, score=-0.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, T_RP_MATCHES_RCVD=-0.01] 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 acG3mVZzRef1 for <netmod@ietfa.amsl.com>; Fri, 12 Jun 2015 03:02:52 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 72A111A900A for <netmod@ietf.org>; Fri, 12 Jun 2015 03:02:52 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id E3DBE180BD0 for <netmod@ietf.org>; Fri, 12 Jun 2015 12:02:50 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434103370; bh=gQ0FvmCOvuleg4t8lOqV/ZGG/V0V+P3F/kHNjXnljOY=; h=From:Date:To; b=O9ZQDRUH/o7xSMVudJfMtwvU7asYfMgiKkQ366cN6T3ogqWAwCZPYTuXgqUHpBmdz cjKx1VH6SkGeUgRuGYz7TDUCqx6wJG50OJao3EStz/66m9C5EA9R84ksqSOv0M0sCd +gWJmV49APwYnMWd61ay0MPtpL/tr0xTDdTDXolo=
From: Ladislav Lhotka <lhotka@nic.cz>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Message-Id: <DD27FC50-BBD0-4633-8E65-EC1CBF16B92C@nic.cz>
Date: Fri, 12 Jun 2015 12:02:51 +0200
To: NETMOD Working Group <netmod@ietf.org>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail1
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/FLZItrxt4sKfwEjg3DUxiN6Frww>
Subject: [netmod] new revisions of yang-json and yang-metadata
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, 12 Jun 2015 10:02:56 -0000

Hi,

I submitted new revisions of the =E2=80=9Cyang-json=E2=80=9D and =
=E2=80=9Cyang-metadata=E2=80=9D documents:

- https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04

- https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01

Both use rfc6020bis as a normative reference and address the new anydata =
node, as per consensus in Dallas.

I am not aware of any open issues so, in my view, both documents should =
be ready for WGLC.

Lada

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Fri Jun 12 09:09:01 2015
Return-Path: <shares@ndzh.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 640E41A1B48; Fri, 12 Jun 2015 09:09:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -99.054
X-Spam-Level: 
X-Spam-Status: No, score=-99.054 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DOS_OUTLOOK_TO_MX=2.845, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100] 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 nvWhBZBX-631; Fri, 12 Jun 2015 09:08:59 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) by ietfa.amsl.com (Postfix) with ESMTP id C0B711A1B34; Fri, 12 Jun 2015 09:08:58 -0700 (PDT)
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=184.157.82.115; 
From: "Susan Hares" <shares@ndzh.com>
To: <netmod@ietf.org>, "'BESS'" <bess@ietf.org>
Date: Fri, 12 Jun 2015 12:08:44 -0400
Message-ID: <015d01d0a52a$0ecf4ae0$2c6de0a0$@ndzh.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_015E_01D0A508.87C0B820"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AdClKSVk8LId/SNmTHmTvlEumjiivg==
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com 
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/8ucXj2rM7O-HInMs3BHkpKIogas>
Subject: [netmod] IDR interim to discuss status of BGP interims
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, 12 Jun 2015 16:09:00 -0000

This is a multipart message in MIME format.

------=_NextPart_000_015E_01D0A508.87C0B820
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

The IDR interim on 6/15 at 10:00 - 11:30am will walk through the BGP Yang
modules.  It may be of interest to people in your working groups.  Below is
the agendas and web-ex dial-in. 

 

Updates to the agenda and slides will be posted at 

 

http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceedings.html

 

Any questions should be addressed to me or send to the idr@ietf.org mail
list. 

 

Sue Hares (co-chair IDR) 

shares@ndzh.com 

============

 

IDR interim meeting 6/15 10:00 - 11:30am ET 

 

Agenda: 

 

10:00 - 10:05   Bash Agenda

10:05 - 10:30  Presentation of Merged BGP Yang module

                                                   (Keyur Patel, Anees
Shaikh, Rob Shakir) 

 

Open Config reference: 

http://www.openconfig.net/data-models/project-updates/updatedbgpandpolicymod
els

 

10:30 - 10:50       Discussion of Merged BGP Module 

10:50 - 11:10   I2RS BGP Model (Susan Hares)

11:10 - 11:30       Discussion of I2RS BGP module 

 

Web-Ex: 

https://ietf.webex.com/ietf/j.php?MTID=mbb2d89722983f9d24990ba043332a856

 

Meeting number:            649 169 095 

Meeting password:         yang.for.life

 

Join by phone

1-877-668-4493 Call-in toll free number (US/Canada)

1-650-479-3208 Call-in toll number (US/Canada)

Access code: 649 169 095


------=_NextPart_000_015E_01D0A508.87C0B820
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 14 =
(filtered medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal>The IDR =
interim on 6/15 at 10:00 &#8211; 11:30am will walk through the BGP Yang =
modules.&nbsp; It may be of interest to people in your working =
groups.&nbsp; Below is the agendas and web-ex dial-in. <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Updates to =
the agenda and slides will be posted at <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal><a =
href=3D"http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceeding=
s.html">http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceeding=
s.html</a><o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Any questions should be addressed to me or send to the =
<a href=3D"mailto:idr@ietf.org">idr@ietf.org</a> mail list. =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Sue Hares (co-chair IDR) <o:p></o:p></p><p =
class=3DMsoNormal><a href=3D"mailto:shares@ndzh.com">shares@ndzh.com</a> =
<o:p></o:p></p><p =
class=3DMsoNormal>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>IDR interim =
meeting 6/15 10:00 - 11:30am ET <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Agenda: =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>10:00 - 10:05&nbsp;&nbsp; Bash Agenda<o:p></o:p></p><p =
class=3DMsoNormal>10:05 - 10:30&nbsp; Presentation of Merged BGP Yang =
module<o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp; &nbsp;&nbsp; (Keyur Patel, Anees Shaikh, Rob Shakir) =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Open Config reference: <o:p></o:p></p><p =
class=3DMsoNormal>http://www.openconfig.net/data-models/project-updates/u=
pdatedbgpandpolicymodels<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>10:30 - =
10:50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Discussion of Merged BGP =
Module <o:p></o:p></p><p class=3DMsoNormal>10:50 - 11:10&nbsp;&nbsp; =
I2RS BGP Model (Susan Hares)<o:p></o:p></p><p class=3DMsoNormal>11:10 - =
11:30 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Discussion of I2RS BGP module =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Web-Ex: <o:p></o:p></p><p =
class=3DMsoNormal>https://ietf.webex.com/ietf/j.php?MTID=3Dmbb2d89722983f=
9d24990ba043332a856<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Meeting =
number: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 649 =
169 095 <o:p></o:p></p><p class=3DMsoNormal>Meeting =
password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
yang.for.life<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Join by phone<o:p></o:p></p><p =
class=3DMsoNormal>1-877-668-4493 Call-in toll free number =
(US/Canada)<o:p></o:p></p><p class=3DMsoNormal>1-650-479-3208 Call-in =
toll number (US/Canada)<o:p></o:p></p><p class=3DMsoNormal>Access code: =
649 169 095<o:p></o:p></p><p class=3DMsoNormal> =
<o:p></o:p></p></div></body></html>
------=_NextPart_000_015E_01D0A508.87C0B820--


From nobody Fri Jun 12 09:57:39 2015
Return-Path: <tnadeau@lucidvision.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 A6C161AC43A; Fri, 12 Jun 2015 09:57:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.011
X-Spam-Level: 
X-Spam-Status: No, score=-2.011 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, SPF_HELO_PASS=-0.001, 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 iHZDg8AfBidv; Fri, 12 Jun 2015 09:57:36 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0233D1A8824; Fri, 12 Jun 2015 09:57:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1434128246; bh=wzXQmZho7Fq7qs8W8D5NbkANjYGxxwDnVK/8raZsdzI=; h=Subject:From:In-Reply-To:Date:Cc:References:To; b=U88J/Vl4fQW3is5o+OG8d2Xys7gYTEuzjQ7lLM2TeXWtrpia0wXDEMY1tGykz+LeZ uFA7jBKkeWAfF8rKRY1D5M9eRBVaaZmctiq0smsLSFrrCEtK2JtUhkBRG0FpLMo2jS tHHt93oxYgBtANCVaM7z2s2xFK2J6eOwDRBqZrnc=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=50.255.148.181; 
Content-Type: multipart/alternative; boundary="Apple-Mail=_A6FE2DC5-F95F-406B-B2A5-FD520885AC34"
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Nadeau Thomas <tnadeau@lucidvision.com>
In-Reply-To: <015d01d0a52a$0ecf4ae0$2c6de0a0$@ndzh.com>
Date: Fri, 12 Jun 2015 12:57:31 -0400
Message-Id: <F97ABE7A-E402-4EE6-B7F3-C9F0328FC495@lucidvision.com>
References: <015d01d0a52a$0ecf4ae0$2c6de0a0$@ndzh.com>
To: Susan Hares <shares@ndzh.com>
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-MyRbl: Color=Yellow Age=0 Spam=0 Notspam=20 Stars=0 Good=0 Friend=2 Surbl=0 Catch=0 r=0 ip=50.255.148.181
X-IP-stats: Notspam Incoming Last 0, First 28, in=244, out=0, spam=0 Known=true ip=50.255.148.181
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/lqqnE51qQut1mI-kunvhE3S6_Dw>
Cc: rtg-yang-coord@ietf.org, BESS <bess@ietf.org>, NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] IDR interim to discuss status of BGP interims
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, 12 Jun 2015 16:57:37 -0000

--Apple-Mail=_A6FE2DC5-F95F-406B-B2A5-FD520885AC34
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8


Adding rtg-yang-coord

> On Jun 12, 2015:12:08 PM, at 12:08 PM, Susan Hares <shares@ndzh.com> =
wrote:
>=20
> The IDR interim on 6/15 at 10:00 =E2=80=93 11:30am will walk through =
the BGP Yang modules.  It may be of interest to people in your working =
groups.  Below is the agendas and web-ex dial-in.=20
> =20
> Updates to the agenda and slides will be posted at=20
> =20
> =
http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceedings.html =
<http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceedings.html>
> =20
> Any questions should be addressed to me or send to the idr@ietf.org =
<mailto:idr@ietf.org> mail list.=20
> =20
> Sue Hares (co-chair IDR)=20
> shares@ndzh.com <mailto:shares@ndzh.com>
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> =20
> IDR interim meeting 6/15 10:00 - 11:30am ET=20
> =20
> Agenda:=20
> =20
> 10:00 - 10:05   Bash Agenda
> 10:05 - 10:30  Presentation of Merged BGP Yang module
>                                                    (Keyur Patel, Anees =
Shaikh, Rob Shakir)=20
> =20
> Open Config reference:=20
> =
http://www.openconfig.net/data-models/project-updates/updatedbgpandpolicym=
odels =
<http://www.openconfig.net/data-models/project-updates/updatedbgpandpolicy=
models>
> =20
> 10:30 - 10:50       Discussion of Merged BGP Module=20
> 10:50 - 11:10   I2RS BGP Model (Susan Hares)
> 11:10 - 11:30       Discussion of I2RS BGP module=20
> =20
> Web-Ex:=20
> =
https://ietf.webex.com/ietf/j.php?MTID=3Dmbb2d89722983f9d24990ba043332a856=
 =
<https://ietf.webex.com/ietf/j.php?MTID=3Dmbb2d89722983f9d24990ba043332a85=
6>
> =20
> Meeting number:            649 169 095=20
> Meeting password:         yang.for.life
> =20
> Join by phone
> 1-877-668-4493 Call-in toll free number (US/Canada)
> 1-650-479-3208 Call-in toll number (US/Canada)
> Access code: 649 169 095
> _______________________________________________
> netmod mailing list
> netmod@ietf.org <mailto:netmod@ietf.org>
> https://www.ietf.org/mailman/listinfo/netmod =
<https://www.ietf.org/mailman/listinfo/netmod>

--Apple-Mail=_A6FE2DC5-F95F-406B-B2A5-FD520885AC34
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D""><div class=3D""><br class=3D""></div>Adding =
rtg-yang-coord<div class=3D""><br class=3D""><div><blockquote =
type=3D"cite" class=3D""><div class=3D"">On Jun 12, 2015:12:08 PM, at =
12:08 PM, Susan Hares &lt;<a href=3D"mailto:shares@ndzh.com" =
class=3D"">shares@ndzh.com</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><div =
class=3D"WordSection1" style=3D"page: WordSection1; font-family: =
Helvetica; font-size: 16px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: auto; text-align: start; text-indent: 0px; text-transform: =
none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-stroke-width: 0px;"><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">The IDR =
interim on 6/15 at 10:00 =E2=80=93 11:30am will walk through the BGP =
Yang modules.&nbsp; It may be of interest to people in your working =
groups.&nbsp; Below is the agendas and web-ex dial-in.<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">Updates =
to the agenda and slides will be posted at<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><a =
href=3D"http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceedings=
.html" style=3D"color: purple; text-decoration: underline;" =
class=3D"">http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceedi=
ngs.html</a><o:p class=3D""></o:p></div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><o:p class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">Any questions should be addressed to me or send to the<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:idr@ietf.org" style=3D"color: purple; text-decoration: =
underline;" class=3D"">idr@ietf.org</a><span =
class=3D"Apple-converted-space">&nbsp;</span>mail list.<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">Sue Hares =
(co-chair IDR)<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><a =
href=3D"mailto:shares@ndzh.com" style=3D"color: purple; text-decoration: =
underline;" class=3D"">shares@ndzh.com</a><o:p class=3D""></o:p></div><div=
 style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: =
Calibri, sans-serif;" class=3D"">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">IDR =
interim meeting 6/15 10:00 - 11:30am ET<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">Agenda:<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">10:00 - =
10:05&nbsp;&nbsp; Bash Agenda<o:p class=3D""></o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: =
Calibri, sans-serif;" class=3D"">10:05 - 10:30&nbsp; Presentation of =
Merged BGP Yang module<o:p class=3D""></o:p></div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp; (Keyur Patel, Anees Shaikh, Rob Shakir)<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">Open =
Config reference:<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><a =
href=3D"http://www.openconfig.net/data-models/project-updates/updatedbgpan=
dpolicymodels" style=3D"color: purple; text-decoration: underline;" =
class=3D"">http://www.openconfig.net/data-models/project-updates/updatedbg=
pandpolicymodels</a><o:p class=3D""></o:p></div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><o:p class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">10:30 - 10:50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Discussion =
of Merged BGP Module<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">10:50 - =
11:10&nbsp;&nbsp; I2RS BGP Model (Susan Hares)<o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">11:10 - =
11:30 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Discussion of I2RS BGP module<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">Web-Ex:<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><a =
href=3D"https://ietf.webex.com/ietf/j.php?MTID=3Dmbb2d89722983f9d24990ba04=
3332a856" style=3D"color: purple; text-decoration: underline;" =
class=3D"">https://ietf.webex.com/ietf/j.php?MTID=3Dmbb2d89722983f9d24990b=
a043332a856</a><o:p class=3D""></o:p></div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><o:p class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">Meeting number: =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 649 169 =
095<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">Meeting =
password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
yang.for.life<o:p class=3D""></o:p></div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><o:p class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">Join by phone<o:p class=3D""></o:p></div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">1-877-668-4493 Call-in toll free number (US/Canada)<o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">1-650-479-3208 Call-in toll number (US/Canada)<o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">Access =
code: 649 169 095<o:p class=3D""></o:p></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><o:p class=3D""></o:p></div></div><span style=3D"font-family: =
Helvetica; font-size: 16px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: auto; text-align: start; text-indent: 0px; text-transform: =
none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; float: none; display: inline =
!important;" =
class=3D"">_______________________________________________</span><br =
style=3D"font-family: Helvetica; font-size: 16px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 16px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px; float: none; display: inline =
!important;" class=3D"">netmod mailing list</span><br =
style=3D"font-family: Helvetica; font-size: 16px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px;" class=3D""><a =
href=3D"mailto:netmod@ietf.org" style=3D"color: purple; text-decoration: =
underline; font-family: Helvetica; font-size: 16px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px;" class=3D"">netmod@ietf.org</a><br =
style=3D"font-family: Helvetica; font-size: 16px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px;" class=3D""><a =
href=3D"https://www.ietf.org/mailman/listinfo/netmod" style=3D"color: =
purple; text-decoration: underline; font-family: Helvetica; font-size: =
16px; font-style: normal; font-variant: normal; font-weight: normal; =
letter-spacing: normal; line-height: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; =
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" =
class=3D"">https://www.ietf.org/mailman/listinfo/netmod</a></div></blockqu=
ote></div><br class=3D""></div></body></html>=

--Apple-Mail=_A6FE2DC5-F95F-406B-B2A5-FD520885AC34--


From nobody Fri Jun 12 23:47:16 2015
Return-Path: <internet-drafts@ietf.org>
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 AC7781A032D; Fri, 12 Jun 2015 23:47:14 -0700 (PDT)
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] 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 MZLOsPLDOmjV; Fri, 12 Jun 2015 23:47:13 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 68EDF1A020D; Fri, 12 Jun 2015 23:47:13 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: internet-drafts@ietf.org
To: <i-d-announce@ietf.org>
X-Test-IDTracker: no
X-IETF-IDTracker: 6.0.3.p3
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20150613064713.3660.66956.idtracker@ietfa.amsl.com>
Date: Fri, 12 Jun 2015 23:47:13 -0700
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/DKyPFjG_EA0lvTEYmzbdSuWMCDM>
Cc: netmod@ietf.org
Subject: [netmod] I-D Action: draft-ietf-netmod-rfc6087bis-03.txt
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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: Sat, 13 Jun 2015 06:47:14 -0000

A New Internet-Draft is available from the on-line Internet-Drafts directories.
 This draft is a work item of the NETCONF Data Modeling Language Working Group of the IETF.

        Title           : Guidelines for Authors and Reviewers of YANG Data Model Documents
        Author          : Andy Bierman
	Filename        : draft-ietf-netmod-rfc6087bis-03.txt
	Pages           : 50
	Date            : 2015-06-12

Abstract:
   This memo provides guidelines for authors and reviewers of Standards
   Track specifications containing YANG data model modules.  Applicable
   portions may be used as a basis for reviews of other YANG data model
   documents.  Recommendations and procedures are defined, which are
   intended to increase interoperability and usability of Network
   Configuration Protocol (NETCONF) implementations that utilize YANG
   data model modules.


The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draft-ietf-netmod-rfc6087bis/

There's also a htmlized version available at:
https://tools.ietf.org/html/draft-ietf-netmod-rfc6087bis-03

A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url2=draft-ietf-netmod-rfc6087bis-03


Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/


From nobody Fri Jun 12 23:53:37 2015
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 55F5D1A03FF for <netmod@ietfa.amsl.com>; Fri, 12 Jun 2015 23:53:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.958
X-Spam-Level: 
X-Spam-Status: No, score=-0.958 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, MISSING_HEADERS=1.021, RCVD_IN_DNSWL_LOW=-0.7, 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 bjyD-sZOG5XO for <netmod@ietfa.amsl.com>; Fri, 12 Jun 2015 23:53:34 -0700 (PDT)
Received: from mail-oi0-f53.google.com (mail-oi0-f53.google.com [209.85.218.53]) (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 263E91A03F9 for <netmod@ietf.org>; Fri, 12 Jun 2015 23:53:34 -0700 (PDT)
Received: by oiha141 with SMTP id a141so32935475oih.0 for <netmod@ietf.org>; Fri, 12 Jun 2015 23:53:33 -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:cc:content-type; bh=RIBHw1Ot+JDa+v9wNDMaN6frxkopfbGm2CQt/gBxxvs=; b=JorhsY/voPbhieqzkdR038tWS+xH2LSpkZTpsjYIxzsFL2TYaLdBDIdh9GpDdh3Sc3 +k1T433QY9MQF2lmFwFlpVd0P9FYnocK4tyGsd/fxfjgNDcWLT6SQ2aV0hVSTQ22gwTg fpaM25RJmOe5KxtQEYslPD3N+/IbwAy9J8aC74s4uR6aKzInEr4UjPsHWbwnw32aQyQn XQcfz68Z/rCXazcqV00t7RHiP4PGTPJdfO33ynD5saKFLazMivVKrWHynMlxUxiXUNK3 OMjJNmMVswCKZp/KxY/Jf3pExKnM7GMlJHkuWSrwMseTFkQWxc58BPLlPHjLGDiJhTHe wO/A==
X-Gm-Message-State: ALoCoQl+p/XmxH/6/qBnAfqM8YmvM3Wg+APh7Fw4tcfGXf8plO/AeStqR9KLsK9DH/4XaGBp1UI1
MIME-Version: 1.0
X-Received: by 10.202.53.136 with SMTP id c130mr14526622oia.2.1434178413560; Fri, 12 Jun 2015 23:53:33 -0700 (PDT)
Received: by 10.202.44.19 with HTTP; Fri, 12 Jun 2015 23:53:33 -0700 (PDT)
In-Reply-To: <20150613064713.3660.66956.idtracker@ietfa.amsl.com>
References: <20150613064713.3660.66956.idtracker@ietfa.amsl.com>
Date: Fri, 12 Jun 2015 23:53:33 -0700
Message-ID: <CABCOCHT3SMePQDdCPx4Cs2our__tvveSH=_YvXbMk1BsyF33AQ@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Content-Type: text/plain; charset=UTF-8
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/12z1ozawJyIsD8BvC6TYBVO7T4I>
Subject: Re: [netmod] I-D Action: draft-ietf-netmod-rfc6087bis-03.txt
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: Sat, 13 Jun 2015 06:53:35 -0000

Hi,

This update to the YANG guidelines draft addresses all the github
issues. I don't think there are any open issues wrt/ YANG 1.0.
There are no YANG 1.1 guidelines included at this time.
It seems better to wait until YANG 1.1 is done first.


Andy


On Fri, Jun 12, 2015 at 11:47 PM,  <internet-drafts@ietf.org> wrote:
>
> A New Internet-Draft is available from the on-line Internet-Drafts directories.
>  This draft is a work item of the NETCONF Data Modeling Language Working Group of the IETF.
>
>         Title           : Guidelines for Authors and Reviewers of YANG Data Model Documents
>         Author          : Andy Bierman
>         Filename        : draft-ietf-netmod-rfc6087bis-03.txt
>         Pages           : 50
>         Date            : 2015-06-12
>
> Abstract:
>    This memo provides guidelines for authors and reviewers of Standards
>    Track specifications containing YANG data model modules.  Applicable
>    portions may be used as a basis for reviews of other YANG data model
>    documents.  Recommendations and procedures are defined, which are
>    intended to increase interoperability and usability of Network
>    Configuration Protocol (NETCONF) implementations that utilize YANG
>    data model modules.
>
>
> The IETF datatracker status page for this draft is:
> https://datatracker.ietf.org/doc/draft-ietf-netmod-rfc6087bis/
>
> There's also a htmlized version available at:
> https://tools.ietf.org/html/draft-ietf-netmod-rfc6087bis-03
>
> A diff from the previous version is available at:
> https://www.ietf.org/rfcdiff?url2=draft-ietf-netmod-rfc6087bis-03
>
>
> Please note that it may take a couple of minutes from the time of submission
> until the htmlized version and diff are available at tools.ietf.org.
>
> Internet-Drafts are also available by anonymous FTP at:
> ftp://ftp.ietf.org/internet-drafts/
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


From nobody Sat Jun 13 01:22:47 2015
Return-Path: <vladimir@transpacket.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 87AB91B2EFF for <netmod@ietfa.amsl.com>; Sat, 13 Jun 2015 01:22:46 -0700 (PDT)
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] 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 k5JTZhxbyBGV for <netmod@ietfa.amsl.com>; Sat, 13 Jun 2015 01:22:44 -0700 (PDT)
Received: from mail.transpacket.com (s91205186171.blix.com [91.205.186.171]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3650E1B2EFE for <netmod@ietf.org>; Sat, 13 Jun 2015 01:22:43 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by mail.transpacket.com (Postfix) with ESMTP id 4100015202B7 for <netmod@ietf.org>; Sat, 13 Jun 2015 10:22:41 +0200 (CEST)
Received: from mail.transpacket.com ([127.0.0.1]) by localhost (mail.transpacket.com [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id sBK-F4ujc_bu for <netmod@ietf.org>; Sat, 13 Jun 2015 10:22:39 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1]) by mail.transpacket.com (Postfix) with ESMTP id 6D46F15202BA for <netmod@ietf.org>; Sat, 13 Jun 2015 10:22:39 +0200 (CEST)
X-Virus-Scanned: amavisd-new at transpacket.com
Received: from mail.transpacket.com ([127.0.0.1]) by localhost (mail.transpacket.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id JCsrsObbEHBY for <netmod@ietf.org>; Sat, 13 Jun 2015 10:22:39 +0200 (CEST)
Received: from [192.168.2.78] (cm-84.215.132.242.getinternet.no [84.215.132.242]) by mail.transpacket.com (Postfix) with ESMTPSA id 40E5E15202B0 for <netmod@ietf.org>; Sat, 13 Jun 2015 10:22:39 +0200 (CEST)
Message-ID: <557BE84F.8020003@transpacket.com>
Date: Sat, 13 Jun 2015 10:22:39 +0200
From: Vladimir Vassilev <vladimir@transpacket.com>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.7.0
MIME-Version: 1.0
To: netmod@ietf.org
References: <20150612200509.26471.29696.idtracker@ietfa.amsl.com>
In-Reply-To: <20150612200509.26471.29696.idtracker@ietfa.amsl.com>
X-Forwarded-Message-Id: <20150612200509.26471.29696.idtracker@ietfa.amsl.com>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Aq6Mycb30c9t2ercsy5M14q-zCc>
Subject: [netmod] Fwd: New Version Notification for draft-vassilev-netmod-yang-direct-must-augment-ext-00.txt
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: Sat, 13 Jun 2015 08:22:46 -0000

Hi,

I submitted this draft documenting an extension which allows augment to 
directly add must sub-statements to existing target nodes. The extension 
enables data model authors to write in YANG some of the more complex 
valid data constraints in the cases where it is impossible to write them 
without the flexibility it provides.

I would like to request your comments on the proposed draft.

/Vladimir

-------- Forwarded Message --------
Subject: 	New Version Notification for 
draft-vassilev-netmod-yang-direct-must-augment-ext-00.txt
Date: 	Fri, 12 Jun 2015 13:05:09 -0700
From: 	internet-drafts@ietf.org
To: 	Vladimir Vassilev <vladimir@trganspacket.com>, Vladimir Vassilev 
<vladimir@transpacket.com>



A new version of I-D, draft-vassilev-netmod-yang-direct-must-augment-ext-00.txt
has been successfully submitted by Vladimir Vassilev and posted to the
IETF repository.

Name:		draft-vassilev-netmod-yang-direct-must-augment-ext
Revision:	00
Title:		YANG Direct Must Augment Extension
Document date:	2015-06-12
Group:		Individual Submission
Pages:		16
URL:            https://www.ietf.org/internet-drafts/draft-vassilev-netmod-yang-direct-must-augment-ext-00.txt
Status:         https://datatracker.ietf.org/doc/draft-vassilev-netmod-yang-direct-must-augment-ext/
Htmlized:       https://tools.ietf.org/html/draft-vassilev-netmod-yang-direct-must-augment-ext-00


Abstract:
    This document introduces new YANG extension statement for assignment
    of must sub-statements to existing data nodes through augment without
    the requirement for a parent data node containing the must statement.

                                                                                   


Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

The IETF Secretariat




From nobody Sat Jun 13 08:13:42 2015
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 33F1E1ACC82 for <netmod@ietfa.amsl.com>; Sat, 13 Jun 2015 08:13:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 1GaKnSMvki1M for <netmod@ietfa.amsl.com>; Sat, 13 Jun 2015 08:13:39 -0700 (PDT)
Received: from mail-lb0-f175.google.com (mail-lb0-f175.google.com [209.85.217.175]) (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 7CC071AC42C for <netmod@ietf.org>; Sat, 13 Jun 2015 08:13:39 -0700 (PDT)
Received: by lblr1 with SMTP id r1so6232324lbl.0 for <netmod@ietf.org>; Sat, 13 Jun 2015 08:13:37 -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:date:message-id:subject:from:to :content-type; bh=12gwS/6tlcGbSsOYIpruUX9SsLuKTX/leh/I9qokq4c=; b=Ju1bBEBqwJtvo1Dvt4lWMP2XZnKlJC2AWmorlJ4jJV+kXH/2ZBDsEpBQmYDK+Dwtb2 BlNkV/Hrtow5IFjXzXhdyZOq3Qss1nrUER7dC8SJlKnu+Kju8FZdjuMeBYYDmk/3dKt2 yUr7Clp0k/jz8pF0u9TJTbHBpERU4Pvgc3kEzNx9ZWRJxPzqQPBH/VzeWHkGM1O8R1O0 HzT/8PmfCj0V1d8+dCLYxeWZKyA5SjV9vi+uGZ4XYcmAc/h0kgfIq8LvVoalc2ZfO3mX HzbiFQ6oHRG5VQHvWogbdlahPbFbz7L9yz664VaK/T6snKwiRDYREMQglujlqK+SHTaE 9ufA==
X-Gm-Message-State: ALoCoQkXUcDxKQw8p/GENHn3QP4qHVb8eabZjlZ5VECY6sOZVaSldj+krXvB1Xi/tM20uTfATPMa
MIME-Version: 1.0
X-Received: by 10.112.186.35 with SMTP id fh3mr19638490lbc.82.1434208417741; Sat, 13 Jun 2015 08:13:37 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Sat, 13 Jun 2015 08:13:37 -0700 (PDT)
Date: Sat, 13 Jun 2015 08:13:37 -0700
Message-ID: <CABCOCHRTVbNYAtc6CXQQo6D9aJgP5pajpX-Ms8BhHwaHaZFnZg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: "netmod@ietf.org" <netmod@ietf.org>
Content-Type: multipart/alternative; boundary=001a1134dcc8461349051867abf5
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/RMRQuyZ1r6h5Zy4wcDH19EK-uIk>
Subject: [netmod] YANG repo syntax issues
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: Sat, 13 Jun 2015 15:13:41 -0000

--001a1134dcc8461349051867abf5
Content-Type: text/plain; charset=UTF-8

Hi,

I was checking our compiler against the yang repo directory "standard",
and these errors and warnings showed up. Error 250 is
sometimes a false positive, but these expressions should
be checked.

Top-level mandatory nodes (which include mandatory
nodes in NP-containers) are not allowed in IETF modules
according to RFC 6087.

Andy



Error: object 'active-route' not found in module ietf-routing in Xpath
target /rt:active-route/rt:output/rt:route
ietf-isis.yang:240.5: error(250): definition not found

*** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-isis.yang
*** 1 Errors, 0 Warnings



Error: object 'access-list' not found in module ietf-acl in Xpath target
/ietf-acl:access-list/ietf-acl:access-list-entries/ietf-acl:matches
newco-acl.yang:16.5: error(250): definition not found

Error: object 'access-list' not found in module ietf-acl in Xpath target
/ietf-acl:access-list/ietf-acl:access-list-entries/ietf-acl:actions
newco-acl.yang:28.5: error(250): definition not found

*** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/newco-acl.yang
*** 2 Errors, 0 Warnings



Warning: top-level NP container 'syslog' is mandatory
ietf-syslog.yang:238.3: warning(1048): top-level object is mandatory

*** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-syslog.yang
*** 0 Errors, 1 Warnings



Warning: top-level NP container 'configlet' is mandatory
ietf-netconf-zerotouch.yang:50.3: warning(1048): top-level object is
mandatory

***
/home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-netconf-zerotouch.yang
*** 0 Errors, 1 Warnings

--001a1134dcc8461349051867abf5
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<br><br>I was checking our compiler against the yang re=
po directory &quot;standard&quot;,<br>and these errors and warnings showed =
up. Error 250 is<div>sometimes a false positive, but these expressions shou=
ld</div><div>be checked.</div><div><br></div><div>Top-level mandatory nodes=
 (which include mandatory</div><div>nodes in NP-containers) are not allowed=
 in IETF modules</div><div>according to RFC 6087.</div><div><br></div><div>=
Andy</div><div><br><br><br>Error: object &#39;active-route&#39; not found i=
n module ietf-routing in Xpath target /rt:active-route/rt:output/rt:route<b=
r>ietf-isis.yang:240.5: error(250): definition not found<br><br>*** /home/a=
ndy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-isis.yang<br>*** 1 Errors,=
 0 Warnings<br><br><br><br>Error: object &#39;access-list&#39; not found in=
 module ietf-acl in Xpath target /ietf-acl:access-list/ietf-acl:access-list=
-entries/ietf-acl:matches<br>newco-acl.yang:16.5: error(250): definition no=
t found<br><br>Error: object &#39;access-list&#39; not found in module ietf=
-acl in Xpath target /ietf-acl:access-list/ietf-acl:access-list-entries/iet=
f-acl:actions<br>newco-acl.yang:28.5: error(250): definition not found<br><=
br>*** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/newco-acl.yang<br=
>*** 2 Errors, 0 Warnings<br><br><br><br>Warning: top-level NP container &#=
39;syslog&#39; is mandatory<br>ietf-syslog.yang:238.3: warning(1048): top-l=
evel object is mandatory<br><br>*** /home/andy/swdev/YANG_GIT/yang/standard=
/ietf/DRAFT/ietf-syslog.yang<br>*** 0 Errors, 1 Warnings<br><br><br><br>War=
ning: top-level NP container &#39;configlet&#39; is mandatory<br>ietf-netco=
nf-zerotouch.yang:50.3: warning(1048): top-level object is mandatory<br><br=
>*** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-netconf-zeroto=
uch.yang<br>*** 0 Errors, 1 Warnings<br><div><br></div><div><br></div><div>=
<br></div></div></div>

--001a1134dcc8461349051867abf5--


From nobody Sat Jun 13 08:35:40 2015
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 1A8E01A90A9 for <netmod@ietfa.amsl.com>; Sat, 13 Jun 2015 08:35:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 3dlWt6sPvQAM for <netmod@ietfa.amsl.com>; Sat, 13 Jun 2015 08:35:37 -0700 (PDT)
Received: from mail-la0-f52.google.com (mail-la0-f52.google.com [209.85.215.52]) (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 E9F5C1A892A for <netmod@ietf.org>; Sat, 13 Jun 2015 08:35:36 -0700 (PDT)
Received: by labko7 with SMTP id ko7so35302497lab.2 for <netmod@ietf.org>; Sat, 13 Jun 2015 08:35:35 -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=c/O952IldSnyOcwwmY6VU1VBhnqKn4+XgLFjKMA3uqk=; b=JFwS/WrVjnItOTtlthnAV38wN/j2ymo8bqLfVKB9DVPouY9POSoVx91lI6aV5lKlnZ HktmhoR3xlESQWB5Q3eRBCgzt/cyZYrmg5q4PjfyS0F1/LialojtAAlE94m3ds+9GsKC xzF4utr92JTw57v0hRZxJm9RPENT50aqMRcqtfYqloEeVg2foQI6eZOBs4R5J6p8iF+e D206S10aNSbHISvimqBFf1BwWYPer1ibCdAmKMtXS1sxS4yw8bIwAxA6JxxKi000SyGr CqQLnwnC3TGLYS9HwMQuDujaMZ5CQnZOcyc9TDAS3ujttowR0QpwcbwhDBrflQTCYvkl oAow==
X-Gm-Message-State: ALoCoQl310p3RnPQiveWdhkQkY9MqoOnoFPTh0RBEyLJlVmRMVKelH31hKOQt3tH5/7+wub/EC52
MIME-Version: 1.0
X-Received: by 10.152.116.49 with SMTP id jt17mr6528076lab.82.1434209735267; Sat, 13 Jun 2015 08:35:35 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Sat, 13 Jun 2015 08:35:35 -0700 (PDT)
In-Reply-To: <0EABDB1A-952C-4947-94E5-6AB2AE1129EB@nic.cz>
References: <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local> <20150610.150458.1855243092215885444.mbj@tail-f.com> <0EABDB1A-952C-4947-94E5-6AB2AE1129EB@nic.cz>
Date: Sat, 13 Jun 2015 08:35:35 -0700
Message-ID: <CABCOCHRkSknE0kUcBRuXH__+czP4KCEZoXeNfmDw3wrPidJ+ZA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Ladislav Lhotka <lhotka@nic.cz>
Content-Type: multipart/alternative; boundary=001a11c3677ecded07051867f91b
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/OCWkswG5blT-W6JULbQbhRMl5RQ>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] anydata
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: Sat, 13 Jun 2015 15:35:39 -0000

--001a11c3677ecded07051867f91b
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On Wed, Jun 10, 2015 at 6:24 AM, Ladislav Lhotka <lhotka@nic.cz> wrote:

>
> > On 10 Jun 2015, at 15:04, Martin Bjorklund <mbj@tail-f.com> wrote:
> >
> > Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> >> On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
> >>>
> >>> It is also important for the JSON encoding - it means there won=E2=80=
=99t
> >> necessarily be a way for mapping XML-encoded instance to JSON and
> >> vice versa.
> >>>
> >>
> >> Because of two different namespace identifiers. So here we go.
> >
> > There are other reasons as well, e.g., <foo>42</foo> might be encoded
> > as:
> >
> >  "foo": 42
> >
> > or
> >
> >  "foo": "42"
> >
> > or
> >
> >  "foo": [42]
> >
> > or
> >
> >  "foo": ["42"]
> >
> > depending on the data model.
> >
> >
> > The JSON encoding process needs the data model.
>
>
> Sure, but we just agreed the data model may not be available for anydata
> content. So anydata also doesn't guarantee a universal XML-JSON mapping.
>
>
I agree with Juergen.
YANG tools which do not know YANG or do not have the
modules that go with the YANG content are not important.
But...

This round-trip problem does not exist because the server
is required to know YANG (for RESTCONF at least).
The server will convert the XML to its proper internal format
and render it correctly in JSON (from the internal format).

Edits in either encoding will be parsed as the expected YANG type.
RESTCONF and NETCONF edits look the same on the inside.
The "anydata" constraints allow "any-encoding"  <--> YANG
conversion without content loss. (Which is why we need it.)

So even itf an off-line tool does not know YANG
or does not have the YANG files, I think the JSON
will be correct.




> Lada
>
>

Andy



> >
> >
> >
> > /martin
>
> --
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: E74E8C0C
>
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a11c3677ecded07051867f91b
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Jun 10, 2015 at 6:24 AM, Ladislav Lhotka <span dir=3D"ltr">&lt;=
<a href=3D"mailto:lhotka@nic.cz" target=3D"_blank">lhotka@nic.cz</a>&gt;</s=
pan> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex=
;border-left:1px #ccc solid;padding-left:1ex"><br>
&gt; On 10 Jun 2015, at 15:04, Martin Bjorklund &lt;<a href=3D"mailto:mbj@t=
ail-f.com">mbj@tail-f.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Juergen Schoenwaelder &lt;<a href=3D"mailto:j.schoenwaelder@jacobs-uni=
versity.de">j.schoenwaelder@jacobs-university.de</a>&gt; wrote:<br>
&gt;&gt; On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:<b=
r>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; It is also important for the JSON encoding - it means there wo=
n=E2=80=99t<br>
&gt;&gt; necessarily be a way for mapping XML-encoded instance to JSON and<=
br>
&gt;&gt; vice versa.<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Because of two different namespace identifiers. So here we go.<br>
&gt;<br>
&gt; There are other reasons as well, e.g., &lt;foo&gt;42&lt;/foo&gt; might=
 be encoded<br>
&gt; as:<br>
&gt;<br>
&gt;=C2=A0 &quot;foo&quot;: 42<br>
&gt;<br>
&gt; or<br>
&gt;<br>
&gt;=C2=A0 &quot;foo&quot;: &quot;42&quot;<br>
&gt;<br>
&gt; or<br>
&gt;<br>
&gt;=C2=A0 &quot;foo&quot;: [42]<br>
&gt;<br>
&gt; or<br>
&gt;<br>
&gt;=C2=A0 &quot;foo&quot;: [&quot;42&quot;]<br>
&gt;<br>
&gt; depending on the data model.<br>
&gt;<br>
&gt;<br>
&gt; The JSON encoding process needs the data model.<br>
<br>
<br>
Sure, but we just agreed the data model may not be available for anydata co=
ntent. So anydata also doesn&#39;t guarantee a universal XML-JSON mapping.<=
br>
<br></blockquote><div><br></div><div>I agree with Juergen.</div><div>YANG t=
ools which do not know YANG or do not have the</div><div>modules that go wi=
th the YANG content are not important.</div><div>But...</div><div><br></div=
><div>This round-trip problem does not exist because the server</div><div>i=
s required to know YANG (for RESTCONF at least).</div><div>The server will =
convert the XML to its proper internal format</div><div>and render it corre=
ctly in JSON (from the internal format).</div><div><br></div><div>Edits in =
either encoding will be parsed as the expected YANG type.</div><div>RESTCON=
F and NETCONF edits look the same on the inside.</div><div>The &quot;anydat=
a&quot; constraints allow &quot;any-encoding&quot; =C2=A0&lt;--&gt; YANG</d=
iv><div>conversion without content loss. (Which is why we need it.)</div><d=
iv><br></div><div>So even itf an off-line tool does not know YANG</div><div=
>or does not have the YANG files, I think the JSON</div><div>will be correc=
t.</div><div><br></div><div><br></div><div>=C2=A0</div><blockquote class=3D=
"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding=
-left:1ex">
Lada<br>
<br></blockquote><div><br></div><div><br></div><div>Andy</div><div><br></di=
v><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 =
.8ex;border-left:1px #ccc solid;padding-left:1ex">
&gt;<br>
&gt;<br>
&gt;<br>
&gt; /martin<br>
<br>
--<br>
Ladislav Lhotka, CZ.NIC Labs<br>
PGP Key ID: E74E8C0C<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div></div>

--001a11c3677ecded07051867f91b--


From nobody Mon Jun 15 03:38:42 2015
Return-Path: <bclaise@cisco.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 996961B358C; Mon, 15 Jun 2015 03:38:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -12.995
X-Spam-Level: 
X-Spam-Status: No, score=-12.995 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, T_RP_MATCHES_RCVD=-0.01, URIBL_RHS_DOB=1.514, USER_IN_DEF_DKIM_WL=-7.5] 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 R472vagocwtX; Mon, 15 Jun 2015 03:38:39 -0700 (PDT)
Received: from aer-iport-4.cisco.com (aer-iport-4.cisco.com [173.38.203.54]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8BFEC1B358A; Mon, 15 Jun 2015 03:38:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=2627; q=dns/txt; s=iport; t=1434364719; x=1435574319; h=message-id:date:from:mime-version:to:cc:subject; bh=haydSxO6iYNSSEi1sBYkqUeEsIoil+KoPRN54UK405U=; b=AiM9MUInrEzC5JvjjW2TMsxLTW/4xUuTM+oWOxxp0S5Rcw+R9XEjVt4C 3H+rR6PyI+rZF1Xq3701+LuJI1kpaiT48nfeLfMjuZcjOynXxklsKKZAv vERCWHl7Ah2+SCKU9LJMmjHm3hbu4Lj0q3LimiJmYGHDKT5N/EBnuEpNx k=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0DNBACkqn5V/xbLJq1cg2Rfgx68LoV4gX4BAQEBAQGBC4QlJyYvAR8BHBYLAgsDAgECAUsNAQcBAYgrDbNElgMBAQEBAQEBAQIBAQEBAQEBAQEZkEoQgl+BRQWTW4tCgTOEBIJkjBqDWyZjgxg8MQGBBCWBHQEBAQ
X-IronPort-AV: E=Sophos;i="5.13,618,1427760000";  d="scan'208,217";a="523132994"
Received: from aer-iport-nat.cisco.com (HELO aer-core-1.cisco.com) ([173.38.203.22]) by aer-iport-4.cisco.com with ESMTP; 15 Jun 2015 10:38:36 +0000
Received: from [10.60.67.87] (ams-bclaise-8916.cisco.com [10.60.67.87]) by aer-core-1.cisco.com (8.14.5/8.14.5) with ESMTP id t5FAcaMK026442; Mon, 15 Jun 2015 10:38:36 GMT
Message-ID: <557EAB2C.1080502@cisco.com>
Date: Mon, 15 Jun 2015 12:38:36 +0200
From: Benoit Claise <bclaise@cisco.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: NETMOD Working Group <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="------------010003030301040605040002"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/D4vdExSw9J7RtHK6x8tCkHIHH1U>
Cc: YANG Doctors <yang-doctors@ietf.org>, "yang-coord@ietf.org" <yang-coord@ietf.org>, Henrik Levkowetz <henrik@levkowetz.com>
Subject: [netmod] Online YANG Validator
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: Mon, 15 Jun 2015 10:38:40 -0000

This is a multi-part message in MIME format.
--------------010003030301040605040002
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

Dear all,

There is now an online YANG model validation tool. See www.yangvalidator.com
In there, you can directly fetch and validate your YANG models, IETF 
drafts, or a RFCs.
It's a combination of the xym and pyang, with the "-- ietf" option, the 
two tools are used to produce these stats 
<http://www.claise.be/IETFYANGPageCompilation.html>.

This tool should help you validate your YANG models. Please make sure 
they compile without errors.
Thanks to *Carl Moberg* to make it happen.

Here is the next step: during the IETF hackathon in Prague, we will make 
sure that those tools are integrated with idnits: YANG models 
extraction, validation, and potential error messages.
Note: we don't believe it's reasonable to block the draft submission if 
the compilation fails.

Regards, Benoit for the YANG Model Coordination Group 
<https://www.ietf.org/iesg/directorate/yang-model-coordination-group.html>.

--------------010003030301040605040002
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Dear all,<br>
    <br>
    There is now an online YANG model validation tool. See <a
      class="moz-txt-link-abbreviated"
      href="http://www.yangvalidator.com">www.yangvalidator.com</a><br>
    In there, you can directly fetch and validate your YANG models, IETF
    drafts, or a RFCs.<br>
    It's a combination of the xym and pyang, with the "-- ietf" option,
    the two tools are used to produce <a
      href="http://www.claise.be/IETFYANGPageCompilation.html">these
      stats</a>.<br>
    <br>
    This tool should help you validate your YANG models. Please make
    sure they compile without errors.<br>
    Thanks to <b>Carl Moberg</b> to make it happen.<br>
    <br>
    Here is the next step: during the IETF hackathon in Prague, we will
    make sure that those tools are integrated with idnits: YANG models
    extraction, validation, and potential error messages. <br>
    Note: we don't believe it's reasonable to block the draft submission
    if the compilation fails.<br>
    <br>
    Regards, Benoit for the <a
href="https://www.ietf.org/iesg/directorate/yang-model-coordination-group.html">YANG
      Model Coordination Group</a>.<br>
  </body>
</html>

--------------010003030301040605040002--


From nobody Mon Jun 15 04:23:10 2015
Return-Path: <lhotka@nic.cz>
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 C7F7C1B2B8C for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 04:23:08 -0700 (PDT)
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] 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 5mCyy6DOxUIA for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 04:23:06 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 7D4C41B2B8A for <netmod@ietf.org>; Mon, 15 Jun 2015 04:23:05 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id B4B341CC004A; Mon, 15 Jun 2015 13:23:04 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Andy Bierman <andy@yumaworks.com>
In-Reply-To: <CABCOCHRkSknE0kUcBRuXH__+czP4KCEZoXeNfmDw3wrPidJ+ZA@mail.gmail.com>
References: <20150609.222347.408776138911568221.mbj@tail-f.com> <E82ACBCF-CDFE-495A-BADA-50E372411022@nic.cz> <20150610072210.GA36374@elstar.local> <20150610.150458.1855243092215885444.mbj@tail-f.com> <0EABDB1A-952C-4947-94E5-6AB2AE1129EB@nic.cz> <CABCOCHRkSknE0kUcBRuXH__+czP4KCEZoXeNfmDw3wrPidJ+ZA@mail.gmail.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Mon, 15 Jun 2015 13:23:01 +0200
Message-ID: <m2vbep8bca.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/NEA9DAa301UTzJfCVn0Rez8Ws18>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] anydata
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: Mon, 15 Jun 2015 11:23:08 -0000

Andy Bierman <andy@yumaworks.com> writes:

> On Wed, Jun 10, 2015 at 6:24 AM, Ladislav Lhotka <lhotka@nic.cz> wrote:
>
>>
>> > On 10 Jun 2015, at 15:04, Martin Bjorklund <mbj@tail-f.com> wrote:
>> >
>> > Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
>> >> On Wed, Jun 10, 2015 at 09:05:07AM +0200, Ladislav Lhotka wrote:
>> >>>
>> >>> It is also important for the JSON encoding - it means there won=E2=
=80=99t
>> >> necessarily be a way for mapping XML-encoded instance to JSON and
>> >> vice versa.
>> >>>
>> >>
>> >> Because of two different namespace identifiers. So here we go.
>> >
>> > There are other reasons as well, e.g., <foo>42</foo> might be encoded
>> > as:
>> >
>> >  "foo": 42
>> >
>> > or
>> >
>> >  "foo": "42"
>> >
>> > or
>> >
>> >  "foo": [42]
>> >
>> > or
>> >
>> >  "foo": ["42"]
>> >
>> > depending on the data model.
>> >
>> >
>> > The JSON encoding process needs the data model.
>>
>>
>> Sure, but we just agreed the data model may not be available for anydata
>> content. So anydata also doesn't guarantee a universal XML-JSON mapping.
>>
>>
> I agree with Juergen.
> YANG tools which do not know YANG or do not have the
> modules that go with the YANG content are not important.

I started this thread with asking whether YANG module(s) describing anydata
contents need to exist at all, and Martin replied it is not required.

So what does your software do with anydata instance for which no module
exists?

Apparently, the notion of "an unknown set of nodes that can be modelled
with YANG" permits different interpretations, which is IMO not good.

Lada

> But...
>
> This round-trip problem does not exist because the server
> is required to know YANG (for RESTCONF at least).
> The server will convert the XML to its proper internal format
> and render it correctly in JSON (from the internal format).
>
> Edits in either encoding will be parsed as the expected YANG type.
> RESTCONF and NETCONF edits look the same on the inside.
> The "anydata" constraints allow "any-encoding"  <--> YANG
> conversion without content loss. (Which is why we need it.)
>
> So even itf an off-line tool does not know YANG
> or does not have the YANG files, I think the JSON
> will be correct.
>
>
>
>
>> Lada
>>
>>
>
> Andy
>
>
>
>> >
>> >
>> >
>> > /martin
>>
>> --
>> Ladislav Lhotka, CZ.NIC Labs
>> PGP Key ID: E74E8C0C
>>
>>
>>
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>>

--=20
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Mon Jun 15 04:30:12 2015
Return-Path: <lhotka@nic.cz>
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 77A531A038C for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 04:30:10 -0700 (PDT)
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] 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 Y3TWE96LQDHW for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 04:30:09 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 4E3051B2BA2 for <netmod@ietf.org>; Mon, 15 Jun 2015 04:30:05 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 338071CC004A; Mon, 15 Jun 2015 13:30:06 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Andy Bierman <andy@yumaworks.com>, "netmod\@ietf.org" <netmod@ietf.org>
In-Reply-To: <CABCOCHRTVbNYAtc6CXQQo6D9aJgP5pajpX-Ms8BhHwaHaZFnZg@mail.gmail.com>
References: <CABCOCHRTVbNYAtc6CXQQo6D9aJgP5pajpX-Ms8BhHwaHaZFnZg@mail.gmail.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Mon, 15 Jun 2015 13:30:03 +0200
Message-ID: <m2si9t8b0k.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/z-kNT3qESOPlvKbwI2UFS-i8t7E>
Subject: Re: [netmod] YANG repo syntax issues
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: Mon, 15 Jun 2015 11:30:10 -0000

Andy Bierman <andy@yumaworks.com> writes:

> Hi,
>
> I was checking our compiler against the yang repo directory "standard",
> and these errors and warnings showed up. Error 250 is
> sometimes a false positive, but these expressions should
> be checked.
>
> Top-level mandatory nodes (which include mandatory
> nodes in NP-containers) are not allowed in IETF modules
> according to RFC 6087.
>
> Andy
>
>
>
> Error: object 'active-route' not found in module ietf-routing in Xpath
> target /rt:active-route/rt:output/rt:route
> ietf-isis.yang:240.5: error(250): definition not found
>
> *** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-isis.yang
> *** 1 Errors, 0 Warnings
>

The ietf-isis module is out of sync with ietf-routing.

Lada

>
>
> Error: object 'access-list' not found in module ietf-acl in Xpath target
> /ietf-acl:access-list/ietf-acl:access-list-entries/ietf-acl:matches
> newco-acl.yang:16.5: error(250): definition not found
>
> Error: object 'access-list' not found in module ietf-acl in Xpath target
> /ietf-acl:access-list/ietf-acl:access-list-entries/ietf-acl:actions
> newco-acl.yang:28.5: error(250): definition not found
>
> *** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/newco-acl.yang
> *** 2 Errors, 0 Warnings
>
>
>
> Warning: top-level NP container 'syslog' is mandatory
> ietf-syslog.yang:238.3: warning(1048): top-level object is mandatory
>
> *** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-syslog.yang
> *** 0 Errors, 1 Warnings
>
>
>
> Warning: top-level NP container 'configlet' is mandatory
> ietf-netconf-zerotouch.yang:50.3: warning(1048): top-level object is
> mandatory
>
> ***
> /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-netconf-zerotouch.yang
> *** 0 Errors, 1 Warnings
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Mon Jun 15 05:23:55 2015
Return-Path: <tnadeau@lucidvision.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 14DA61B2C1E for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 05:23:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.012
X-Spam-Level: 
X-Spam-Status: No, score=-2.012 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_PASS=-0.001, 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 0Xsvix7eyw2J for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 05:23:52 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9C7961B2C16 for <netmod@ietf.org>; Mon, 15 Jun 2015 05:23:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1434371021; bh=yg6jxmbHzgni9CvpRI14BvjyMH26iy1jehxoE7Z1duQ=; h=Subject:From:In-Reply-To:Date:Cc:References:To; b=GG3XRaQrp1GF8gz9rg8WfnEsMS4O5AD+Yed9FuEET0QgxNODV12/2wMYOqRY/RJew GJ0ggtZU46+V+T6sGMAsSHHWdel5q3ZevbyXOHyV5oxQqjPsIkrsLZpEleGTJ9ZmHj pqgVbnWrlxWWqrvf2I9VBX8Ku+x4Cf+cUZW4ds4M=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=50.255.148.181; 
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Nadeau Thomas <tnadeau@lucidvision.com>
In-Reply-To: <CABCOCHRTVbNYAtc6CXQQo6D9aJgP5pajpX-Ms8BhHwaHaZFnZg@mail.gmail.com>
Date: Mon, 15 Jun 2015 08:23:38 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <B4C667E8-F293-400F-BCCF-5901D23159E4@lucidvision.com>
References: <CABCOCHRTVbNYAtc6CXQQo6D9aJgP5pajpX-Ms8BhHwaHaZFnZg@mail.gmail.com>
To: Andy Bierman <andy@yumaworks.com>
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-ShareWhite: 50.255.148.181
X-MyRbl: Color=Unknown ip=50.255.148.181
X-IP-stats: Notspam Incoming Last 2, First 31, in=251, out=0, spam=0 Known=true ip=50.255.148.181
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/ZrdK_xN3dzg17nKl-qfUZCXLUQE>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] YANG repo syntax issues
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: Mon, 15 Jun 2015 12:23:54 -0000

	Can you post this in the messages/discussion on Git?  I will =
also chase down fixing this warning.

	=E2=80=94Tom


> On Jun 13, 2015:11:13 AM, at 11:13 AM, Andy Bierman =
<andy@yumaworks.com> wrote:
>=20
> Hi,
>=20
> I was checking our compiler against the yang repo directory =
"standard",
> and these errors and warnings showed up. Error 250 is
> sometimes a false positive, but these expressions should
> be checked.
>=20
> Top-level mandatory nodes (which include mandatory
> nodes in NP-containers) are not allowed in IETF modules
> according to RFC 6087.
>=20
> Andy
>=20
>=20
>=20
> Error: object 'active-route' not found in module ietf-routing in Xpath =
target /rt:active-route/rt:output/rt:route
> ietf-isis.yang:240.5: error(250): definition not found
>=20
> *** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-isis.yang
> *** 1 Errors, 0 Warnings
>=20
>=20
>=20
> Error: object 'access-list' not found in module ietf-acl in Xpath =
target =
/ietf-acl:access-list/ietf-acl:access-list-entries/ietf-acl:matches
> newco-acl.yang:16.5: error(250): definition not found
>=20
> Error: object 'access-list' not found in module ietf-acl in Xpath =
target =
/ietf-acl:access-list/ietf-acl:access-list-entries/ietf-acl:actions
> newco-acl.yang:28.5: error(250): definition not found
>=20
> *** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/newco-acl.yang
> *** 2 Errors, 0 Warnings
>=20
>=20
>=20
> Warning: top-level NP container 'syslog' is mandatory
> ietf-syslog.yang:238.3: warning(1048): top-level object is mandatory
>=20
> *** =
/home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-syslog.yang
> *** 0 Errors, 1 Warnings
>=20
>=20
>=20
> Warning: top-level NP container 'configlet' is mandatory
> ietf-netconf-zerotouch.yang:50.3: warning(1048): top-level object is =
mandatory
>=20
> *** =
/home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-netconf-zerotouch.=
yang
> *** 0 Errors, 1 Warnings
>=20
>=20
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


From nobody Mon Jun 15 05:30:19 2015
Return-Path: <lhotka@nic.cz>
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 DA9F31B3599 for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 05:30:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.661
X-Spam-Level: 
X-Spam-Status: No, score=-0.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, T_RP_MATCHES_RCVD=-0.01] 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 3OzBSAaR1ApS for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 05:30:17 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DFC381B3597 for <netmod@ietf.org>; Mon, 15 Jun 2015 05:30:16 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 1CB591813BF; Mon, 15 Jun 2015 14:30:15 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434371415; bh=odVYk7/0BXnCAzkqQYzyfOTeA5B3XPmyRCOhC30tRlI=; h=From:Date:To; b=c87N7yXwCutNOEs5j4a2ziT9kVgNGqG1AqSkuqdENoA6C9ZSpdx7RdaYKdhlFM7V8 BdR+CTLEDyjzF5l0k05TbUo1SXV81ciIDlXHE2x7iF36Uf16lnwCaqNN4r4ZRnMMSy 4igwODuU59lEaAmH9/1p7fUdltzQkgGQPDsqv7Hs=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <B4C667E8-F293-400F-BCCF-5901D23159E4@lucidvision.com>
Date: Mon, 15 Jun 2015 14:30:14 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <8B6BB24A-068A-4AF1-ADB8-3F43DFF2D7FA@nic.cz>
References: <CABCOCHRTVbNYAtc6CXQQo6D9aJgP5pajpX-Ms8BhHwaHaZFnZg@mail.gmail.com> <B4C667E8-F293-400F-BCCF-5901D23159E4@lucidvision.com>
To: Thomas Nadeau <tnadeau@lucidvision.com>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/0-oUi1kbOlLRhacfTyF1JvB6JDg>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] YANG repo syntax issues
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: Mon, 15 Jun 2015 12:30:19 -0000

> On 15 Jun 2015, at 14:23, Nadeau Thomas <tnadeau@lucidvision.com> =
wrote:
>=20
>=20
> 	Can you post this in the messages/discussion on Git?  I will =
also chase down fixing this warning.


I don=E2=80=99t think it is an error or problem that needs to be fixed. =
The drafts are being developed by different WGs with their own =
schedules. The next revision of draft-ietf-isis-yang-isis-cfg will be =
aligned with ietf-routing again.

Lada


>=20
> 	=E2=80=94Tom
>=20
>=20
>> On Jun 13, 2015:11:13 AM, at 11:13 AM, Andy Bierman =
<andy@yumaworks.com> wrote:
>>=20
>> Hi,
>>=20
>> I was checking our compiler against the yang repo directory =
"standard",
>> and these errors and warnings showed up. Error 250 is
>> sometimes a false positive, but these expressions should
>> be checked.
>>=20
>> Top-level mandatory nodes (which include mandatory
>> nodes in NP-containers) are not allowed in IETF modules
>> according to RFC 6087.
>>=20
>> Andy
>>=20
>>=20
>>=20
>> Error: object 'active-route' not found in module ietf-routing in =
Xpath target /rt:active-route/rt:output/rt:route
>> ietf-isis.yang:240.5: error(250): definition not found
>>=20
>> *** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-isis.yang
>> *** 1 Errors, 0 Warnings
>>=20
>>=20
>>=20
>> Error: object 'access-list' not found in module ietf-acl in Xpath =
target =
/ietf-acl:access-list/ietf-acl:access-list-entries/ietf-acl:matches
>> newco-acl.yang:16.5: error(250): definition not found
>>=20
>> Error: object 'access-list' not found in module ietf-acl in Xpath =
target =
/ietf-acl:access-list/ietf-acl:access-list-entries/ietf-acl:actions
>> newco-acl.yang:28.5: error(250): definition not found
>>=20
>> *** /home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/newco-acl.yang
>> *** 2 Errors, 0 Warnings
>>=20
>>=20
>>=20
>> Warning: top-level NP container 'syslog' is mandatory
>> ietf-syslog.yang:238.3: warning(1048): top-level object is mandatory
>>=20
>> *** =
/home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-syslog.yang
>> *** 0 Errors, 1 Warnings
>>=20
>>=20
>>=20
>> Warning: top-level NP container 'configlet' is mandatory
>> ietf-netconf-zerotouch.yang:50.3: warning(1048): top-level object is =
mandatory
>>=20
>> *** =
/home/andy/swdev/YANG_GIT/yang/standard/ietf/DRAFT/ietf-netconf-zerotouch.=
yang
>> *** 0 Errors, 1 Warnings
>>=20
>>=20
>>=20
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Mon Jun 15 06:18:31 2015
Return-Path: <shares@ndzh.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 897A61B2D36; Mon, 15 Jun 2015 06:18:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -99.053
X-Spam-Level: 
X-Spam-Status: No, score=-99.053 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DOS_OUTLOOK_TO_MX=2.845, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100, WEIRD_PORT=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 59_vLQQva-Bl; Mon, 15 Jun 2015 06:18:24 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) by ietfa.amsl.com (Postfix) with ESMTP id 72F671B2D32; Mon, 15 Jun 2015 06:18:23 -0700 (PDT)
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=8.25.222.10; 
From: "Susan Hares" <shares@ndzh.com>
To: <idr@ietf.org>
Date: Mon, 15 Jun 2015 09:18:21 -0400
Message-ID: <00f101d0a76d$c1750550$445f0ff0$@ndzh.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_00F2_01D0A74C.3A667290"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AdCnbYY6gWWwpVZITSOWq+lEk1Ly0Q==
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com 
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/NvYToENlx99IlqBjK6an4jQizTA>
Cc: Rtg-yang-coord@ietf.org, 'BESS' <bess@ietf.org>, netmod@ietf.org, supa@ietf.org, netconf@ietf.org
Subject: [netmod] IDR interim today at 10:00 - 11:30am ET  - Agenda change
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: Mon, 15 Jun 2015 13:18:25 -0000

This is a multipart message in MIME format.

------=_NextPart_000_00F2_01D0A74C.3A667290
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit


IDR June 15 interim  agenda has changed to allow more time to discuss base
BGP yang module. 

 

Slides and Agenda are at: 

http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceedings.html.

 

This bgp yang module (draft-shaikh-idr-bgp-model-02.txt)  is being
considered for WG adoption (6/15 to 6/29). 

 http://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/

 

 

Sue Hares 

 

=================

 

IDR interim meeting 6/15 10:00 - 11:30am ET 

 

Agenda: 

 

10:00 - 10:05   Bash Agenda

10:05 - 10:20  Presentation of Merged BGP Yang module

                                                                (Keyur
Patel, Anees Shaikh, Rob Shakir) 

 

Open Config reference: 

http://www.openconfig.net/data-models/project-updates/updatedbgpandpolicymod
els

 

IETF Draft: 

http://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/

 

10:20 - 11:30                Discussion of Merged BGP Module 

 

Web-Ex: 

https://ietf.webex.com/ietf/j.php?MTID=mbb2d89722983f9d24990ba043332a856

 

Meeting number:         649 169 095 

Meeting password:      yang.for.life

 

Join by phone

1-877-668-4493 Call-in toll free number (US/Canada)

1-650-479-3208 Call-in toll number (US/Canada)

Access code: 649 169 095

 

Virtual Blue sheets 

http://etherpad.tools.ietf.org:9000/p/idr-interim-2015-June-15-vBlueSheets

 

Please sign up on the virtual blue sheets. 

 

 

Minutes: 

http://etherpad.tools.ietf.org:9000/p/idr-interim-2015-June-15-minutes

 

[Please consider helping Sue and John during the interim discussion take
minutes.

Join the etherpad and correct or work on the web]

 


------=_NextPart_000_00F2_01D0A74C.3A667290
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 14 =
(filtered medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:"Courier New";}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Courier =
New";color:black'><br></span><span =
style=3D'font-size:10.0pt;color:black'>IDR June 15 interim &nbsp;agenda =
has changed to allow more time to discuss base BGP yang module. =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Slides =
and Agenda are at: <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><a =
href=3D"http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceeding=
s.html">http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceeding=
s.html</a></span><span =
style=3D'font-size:10.0pt'>.<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>This bgp =
yang module (draft-shaikh-idr-bgp-model-02.txt) &nbsp;is being =
considered for WG adoption (6/15 to 6/29). <o:p></o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>&nbsp;<a =
href=3D"http://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/">http=
://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/</a></span><span =
style=3D'font-size:10.0pt'><o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Sue Hares =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>IDR =
interim meeting 6/15 10:00 - 11:30am ET <o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Agenda: =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>10:00 - =
10:05&nbsp;&nbsp; Bash Agenda<o:p></o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>10:05 - =
10:20&nbsp; Presentation of Merged BGP Yang =
module<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; (Keyur Patel, Anees =
Shaikh, Rob Shakir) <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Open =
Config reference: <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>http://www.openconfig.net/data-mod=
els/project-updates/updatedbgpandpolicymodels<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>IETF =
Draft: <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>http://datatracker.ietf.org/doc/dr=
aft-shaikh-idr-bgp-model/<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>10:20 - =
11:30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; Discussion of Merged BGP Module =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Web-Ex: =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>https://ietf.webex.com/ietf/j.php?=
MTID=3Dmbb2d89722983f9d24990ba043332a856<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Meeting =
number: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 649 169 095 =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>Meeting =
password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
yang.for.life<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Join by =
phone<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>1-877-668-4493 Call-in toll free =
number (US/Canada)<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>1-650-479-3208 Call-in toll =
number (US/Canada)<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>Access code: 649 169 =
095<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Virtual =
Blue sheets <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>http://etherpad.tools.ietf.org:900=
0/p/idr-interim-2015-June-15-vBlueSheets<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Please =
sign up on the virtual blue sheets. <o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Minutes: =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>http://etherpad.tools.ietf.org:900=
0/p/idr-interim-2015-June-15-minutes<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>[Please =
consider helping Sue and John during the interim discussion take =
minutes.<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>Join the etherpad and correct or =
work on the web]<o:p></o:p></span></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div></body></html>
------=_NextPart_000_00F2_01D0A74C.3A667290--


From nobody Mon Jun 15 06:41:03 2015
Return-Path: <shares@ndzh.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 E629A1B2D3D; Mon, 15 Jun 2015 06:40:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -99.053
X-Spam-Level: 
X-Spam-Status: No, score=-99.053 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DOS_OUTLOOK_TO_MX=2.845, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100, WEIRD_PORT=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 oKpNMOzRQY1o; Mon, 15 Jun 2015 06:40:53 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) by ietfa.amsl.com (Postfix) with ESMTP id CCC9D1B2BE0; Mon, 15 Jun 2015 06:40:52 -0700 (PDT)
X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=8.25.222.10; 
From: "Susan Hares" <shares@ndzh.com>
To: <idr@ietf.org>
Date: Mon, 15 Jun 2015 09:40:51 -0400
Message-ID: <013301d0a770$e59000e0$b0b002a0$@ndzh.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0134_01D0A74F.5E82F4C0"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AdCncKKmELtn8F67Sd+LgR9RcrS6Bg==
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com 
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/FHhODtPhsmFXCQs9tE4OehJJ2Qw>
Cc: Rtg-yang-coord@ietf.org, supa@ietf.org, netmod@ietf.org, 'BESS' <bess@ietf.org>, netconf@ietf.org
Subject: Re: [netmod] [Rtg-yang-coord] IDR interim today at 10:00 - 11:30am ET - Agenda (web-ex correction)
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: Mon, 15 Jun 2015 13:40:55 -0000

This is a multipart message in MIME format.

------=_NextPart_000_0134_01D0A74F.5E82F4C0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

Apologies for extra email. 

Sue Hares

 

---------------------------

Web-Ex: 

Web-ex is giving me two different web-sites -  I suspect both will work.
Send email to shares@ndzh.com) if you have problems.  

 

https://ietf.webex.com/ietf/j.php?MTID=m05394c6a99d9df8d68e4646e6a6aa80a 

 

[online request]

https://ietf.webex.com/ietf/e.php?MTID=m8a391b9e59f0215e0a2251f10dac8aae

 

Sue 

 

From: Rtg-yang-coord [mailto:rtg-yang-coord-bounces@ietf.org] On Behalf Of
Susan Hares
Sent: Monday, June 15, 2015 9:18 AM
To: idr@ietf.org
Cc: Rtg-yang-coord@ietf.org; 'BESS'; netmod@ietf.org; supa@ietf.org;
netconf@ietf.org
Subject: [Rtg-yang-coord] IDR interim today at 10:00 - 11:30am ET - Agenda
change

 


IDR June 15 interim  agenda has changed to allow more time to discuss base
BGP yang module. 

 

Slides and Agenda are at: 

http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceedings.html.

 

This bgp yang module (draft-shaikh-idr-bgp-model-02.txt)  is being
considered for WG adoption (6/15 to 6/29). 

 http://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/

 

 

Sue Hares 

 

=================

 

IDR interim meeting 6/15 10:00 - 11:30am ET 

 

Agenda: 

 

10:00 - 10:05   Bash Agenda

10:05 - 10:20  Presentation of Merged BGP Yang module

                                                                (Keyur
Patel, Anees Shaikh, Rob Shakir) 

 

Open Config reference: 

http://www.openconfig.net/data-models/project-updates/updatedbgpandpolicymod
els

 

IETF Draft: 

http://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/

 

10:20 - 11:30                Discussion of Merged BGP Module 

 

Web-Ex: 

https://ietf.webex.com/ietf/j.php?MTID=mbb2d89722983f9d24990ba043332a856

 

Meeting number:         649 169 095 

Meeting password:      yang.for.life

 

Join by phone

1-877-668-4493 Call-in toll free number (US/Canada)

1-650-479-3208 Call-in toll number (US/Canada)

Access code: 649 169 095

 

Virtual Blue sheets 

http://etherpad.tools.ietf.org:9000/p/idr-interim-2015-June-15-vBlueSheets

 

Please sign up on the virtual blue sheets. 

 

 

Minutes: 

http://etherpad.tools.ietf.org:9000/p/idr-interim-2015-June-15-minutes

 

[Please consider helping Sue and John during the interim discussion take
minutes.

Join the etherpad and correct or work on the web]

 


------=_NextPart_000_0134_01D0A74F.5E82F4C0
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><META =
HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 14 =
(filtered medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:"Courier New";}
span.EmailStyle19
	{mso-style-type:personal;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
span.EmailStyle20
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal><span =
style=3D'color:#1F497D'>Apologies for extra email. =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'color:#1F497D'>Sue Hares<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'color:#1F497D'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'color:#1F497D'>---------------------------<o:p></o:p></span></p>=
<p class=3DMsoNormal><span style=3D'color:#1F497D'>Web-Ex: =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'color:#1F497D'>Web-ex is giving me two different web-sites - =
&nbsp;I suspect both will work. &nbsp;Send email to <a =
href=3D"mailto:shares@ndzh.com">shares@ndzh.com</a>) if you have =
problems. &nbsp;<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'color:#1F497D'>&nbsp;<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'color:#1F497D'>https://ietf.webex.com/ietf/j.php?MTID=3Dm05394c6=
a99d9df8d68e4646e6a6aa80a <o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'color:#1F497D'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'color:#1F497D'> =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'color:#1F497D'>[online request]<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'color:#1F497D'>https://ietf.webex.com/ietf/e.php?MTID=3Dm8a391b9=
e59f0215e0a2251f10dac8aae<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'color:#1F497D'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'color:#1F497D'>Sue =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><div =
style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in'><p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span>=
</b><span style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'> =
Rtg-yang-coord [mailto:rtg-yang-coord-bounces@ietf.org] <b>On Behalf Of =
</b>Susan Hares<br><b>Sent:</b> Monday, June 15, 2015 9:18 =
AM<br><b>To:</b> idr@ietf.org<br><b>Cc:</b> Rtg-yang-coord@ietf.org; =
'BESS'; netmod@ietf.org; supa@ietf.org; =
netconf@ietf.org<br><b>Subject:</b> [Rtg-yang-coord] IDR interim today =
at 10:00 - 11:30am ET - Agenda =
change<o:p></o:p></span></p></div></div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Courier =
New";color:black'><br></span><span =
style=3D'font-size:10.0pt;color:black'>IDR June 15 interim &nbsp;agenda =
has changed to allow more time to discuss base BGP yang module. =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Slides =
and Agenda are at: <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><a =
href=3D"http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceeding=
s.html">http://www.ietf.org/proceedings/interim/2015/06/15/idr/proceeding=
s.html</a></span><span =
style=3D'font-size:10.0pt'>.<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>This bgp =
yang module (draft-shaikh-idr-bgp-model-02.txt) &nbsp;is being =
considered for WG adoption (6/15 to 6/29). <o:p></o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>&nbsp;<a =
href=3D"http://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/">http=
://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/</a></span><span =
style=3D'font-size:10.0pt'><o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Sue Hares =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>IDR =
interim meeting 6/15 10:00 - 11:30am ET <o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Agenda: =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>10:00 - =
10:05&nbsp;&nbsp; Bash Agenda<o:p></o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>10:05 - =
10:20&nbsp; Presentation of Merged BGP Yang =
module<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; (Keyur Patel, Anees =
Shaikh, Rob Shakir) <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Open =
Config reference: <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><a =
href=3D"http://www.openconfig.net/data-models/project-updates/updatedbgpa=
ndpolicymodels">http://www.openconfig.net/data-models/project-updates/upd=
atedbgpandpolicymodels</a><o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>IETF =
Draft: <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><a =
href=3D"http://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/">http=
://datatracker.ietf.org/doc/draft-shaikh-idr-bgp-model/</a><o:p></o:p></s=
pan></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>10:20 - =
11:30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; Discussion of Merged BGP Module =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Web-Ex: =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><a =
href=3D"https://ietf.webex.com/ietf/j.php?MTID=3Dmbb2d89722983f9d24990ba0=
43332a856">https://ietf.webex.com/ietf/j.php?MTID=3Dmbb2d89722983f9d24990=
ba043332a856</a><o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Meeting =
number: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 649 169 095 =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>Meeting =
password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
yang.for.life<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Join by =
phone<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>1-877-668-4493 Call-in toll free =
number (US/Canada)<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>1-650-479-3208 Call-in toll =
number (US/Canada)<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>Access code: 649 169 =
095<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Virtual =
Blue sheets <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><a =
href=3D"http://etherpad.tools.ietf.org:9000/p/idr-interim-2015-June-15-vB=
lueSheets">http://etherpad.tools.ietf.org:9000/p/idr-interim-2015-June-15=
-vBlueSheets</a><o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Please =
sign up on the virtual blue sheets. <o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>Minutes: =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><a =
href=3D"http://etherpad.tools.ietf.org:9000/p/idr-interim-2015-June-15-mi=
nutes">http://etherpad.tools.ietf.org:9000/p/idr-interim-2015-June-15-min=
utes</a><o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'><o:p>&nbsp;</o:p></span></p><p =
class=3DMsoNormal><span style=3D'font-size:10.0pt;color:black'>[Please =
consider helping Sue and John during the interim discussion take =
minutes.<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;color:black'>Join the etherpad and correct or =
work on the web]<o:p></o:p></span></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div></body></html>
------=_NextPart_000_0134_01D0A74F.5E82F4C0--


From nobody Mon Jun 15 09:34:15 2015
Return-Path: <kwatsen@juniper.net>
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 5A8EB1A00CD for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 09:34:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 mPzqwM9dAFSL for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 09:34:12 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0794.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::1:794]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F317F1A8AED for <netmod@ietf.org>; Mon, 15 Jun 2015 09:34:09 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB460.namprd05.prod.outlook.com (10.141.72.152) with Microsoft SMTP Server (TLS) id 15.1.190.14; Mon, 15 Jun 2015 16:34:05 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) with mapi id 15.01.0184.014; Mon, 15 Jun 2015 16:34:05 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Andy Bierman <andy@yumaworks.com>
Thread-Topic: [netmod] I-D Action: draft-ietf-netmod-rfc6087bis-03.txt
Thread-Index: AQHQpaTMvWEJd4SHZkePQKsNNqBquJ2qAAmAgAODzYA=
Date: Mon, 15 Jun 2015 16:34:04 +0000
Message-ID: <D1A46B67.B1884%kwatsen@juniper.net>
References: <20150613064713.3660.66956.idtracker@ietfa.amsl.com> <CABCOCHT3SMePQDdCPx4Cs2our__tvveSH=_YvXbMk1BsyF33AQ@mail.gmail.com>
In-Reply-To: <CABCOCHT3SMePQDdCPx4Cs2our__tvveSH=_YvXbMk1BsyF33AQ@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: yumaworks.com; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [96.231.191.4]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB460; 3:ZFuyqXRm+/u7+FUTI1vPqs2iCLxLyKyaUFdswFsffj+bPZdIN8DPZEf0o9mR94hquQaYF6kWdKrOGJNDoK4R6jlqlIKbUB0LSWQzI/sLNoU69VIYGtKcOm1isAotHf6ZquU6RUOxDBTzfeN7O4mr4g==; 10:yiWTcm1XbqLvPTcaKKeocBt3ayvyuCHBDJQrLBnUvGsXP7BEvjYicvsioqAoJl4wOqD4x04MsLiOJuU5kuilB4idB2C8N7RkB0tQFOw5GGk=; 6:7pZctSsPRSH4ogNRY3HickA11wZgrgvKkw2lmlg4Uvq+y1sl/Jtf15FOnSNBpX4F
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB460;
x-microsoft-antispam-prvs: <CO1PR05MB4606ED13BBB3E8DAD4815D9A5B80@CO1PR05MB460.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(520003)(3002001); SRVR:CO1PR05MB460; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB460; 
x-forefront-prvs: 0608DEDB67
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(24454002)(52604005)(377424004)(479174004)(377454003)(5001960100002)(19580395003)(19580405001)(92566002)(87936001)(2656002)(189998001)(15975445007)(4001350100001)(36756003)(110136002)(50986999)(76176999)(106116001)(54356999)(2950100001)(102836002)(99286002)(83506001)(230783001)(2900100001)(62966003)(77156002)(86362001)(46102003)(66066001)(40100003)(5002640100001)(122556002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB460; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="us-ascii"
Content-ID: <1095238D15F65449AF8BEF6FEDBA75A8@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2015 16:34:04.9831 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB460
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/BpmfhhN_5xhvdc40dseSwhgMydQ>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] I-D Action: draft-ietf-netmod-rfc6087bis-03.txt
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: Mon, 15 Jun 2015 16:34:14 -0000

Hi Andy,

Yes, it makes sense to add guidelines for YANG 1.1 before attempting a
Last Call.

Thanks for bring attention to this.

Kent=20



On 6/13/15, 2:53 AM, "Andy Bierman" <andy@yumaworks.com> wrote:

>Hi,
>
>This update to the YANG guidelines draft addresses all the github
>issues. I don't think there are any open issues wrt/ YANG 1.0.
>There are no YANG 1.1 guidelines included at this time.
>It seems better to wait until YANG 1.1 is done first.
>
>
>Andy
>
>
>On Fri, Jun 12, 2015 at 11:47 PM,  <internet-drafts@ietf.org> wrote:
>>
>> A New Internet-Draft is available from the on-line Internet-Drafts
>>directories.
>>  This draft is a work item of the NETCONF Data Modeling Language
>>Working Group of the IETF.
>>
>>         Title           : Guidelines for Authors and Reviewers of YANG
>>Data Model Documents
>>         Author          : Andy Bierman
>>         Filename        : draft-ietf-netmod-rfc6087bis-03.txt
>>         Pages           : 50
>>         Date            : 2015-06-12
>>
>> Abstract:
>>    This memo provides guidelines for authors and reviewers of Standards
>>    Track specifications containing YANG data model modules.  Applicable
>>    portions may be used as a basis for reviews of other YANG data model
>>    documents.  Recommendations and procedures are defined, which are
>>    intended to increase interoperability and usability of Network
>>    Configuration Protocol (NETCONF) implementations that utilize YANG
>>    data model modules.
>>
>>
>> The IETF datatracker status page for this draft is:
>> https://datatracker.ietf.org/doc/draft-ietf-netmod-rfc6087bis/
>>
>> There's also a htmlized version available at:
>> https://tools.ietf.org/html/draft-ietf-netmod-rfc6087bis-03
>>
>> A diff from the previous version is available at:
>> https://www.ietf.org/rfcdiff?url2=3Ddraft-ietf-netmod-rfc6087bis-03
>>
>>
>> Please note that it may take a couple of minutes from the time of
>>submission
>> until the htmlized version and diff are available at tools.ietf.org.
>>
>> Internet-Drafts are also available by anonymous FTP at:
>> ftp://ftp.ietf.org/internet-drafts/
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>
>_______________________________________________
>netmod mailing list
>netmod@ietf.org
>https://www.ietf.org/mailman/listinfo/netmod


From nobody Mon Jun 15 15:49:51 2015
Return-Path: <kwatsen@juniper.net>
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 555C71A1B00 for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 15:49:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 1OD5mMHUQWfk for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 15:49:49 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0757.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::1:757]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D2FB41A1AFC for <netmod@ietf.org>; Mon, 15 Jun 2015 15:49:48 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB460.namprd05.prod.outlook.com (10.141.72.152) with Microsoft SMTP Server (TLS) id 15.1.190.14; Mon, 15 Jun 2015 22:49:32 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) with mapi id 15.01.0184.014; Mon, 15 Jun 2015 22:49:32 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
Thread-Index: AQHQp72Lj/E1Yxg2VkGsWaf4ihf79A==
Date: Mon, 15 Jun 2015 22:49:32 +0000
Message-ID: <D1A4CEBA.B22F8%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [96.231.191.4]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB460; 3:sOG8mEIE+5jNI9JO8gt0sRU1nUW4RwcYsqZDgW6oJAz7Qsd/tcXNKaS8+Kv7ECqDIZYKhye98itYNtqEX+LJuIWbv1gvIYYImE7dFRY5aPlhQ3ppM/5na00c98uG8msZgdpcvba8+bjs6ey6awmsqA==; 10:Jh5mceaOWHKDFjMuUPlGWKweEKocdkrtrJVBSBJHaS81oLd/OJW6AKpxHEo9YjCmahwhrzxb4nxmBBdbtV/afAWofhCYYpuQv867q108fZE=; 6:HynD1JgEeROYQKo+jJVmnOmCg9XfxekNkPRItxmkZH23QzTTBJgSv2wN7tea9GA8
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB460;
x-microsoft-antispam-prvs: <CO1PR05MB460F9D336E32D977F00E007A5B80@CO1PR05MB460.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(520003)(3002001); SRVR:CO1PR05MB460; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB460; 
x-forefront-prvs: 0608DEDB67
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(5423002)(230783001)(62966003)(229853001)(450100001)(2900100001)(2351001)(83506001)(5002640100001)(40100003)(122556002)(77156002)(46102003)(86362001)(66066001)(92566002)(19580395003)(2656002)(87936001)(189998001)(107886002)(5001960100002)(2501003)(16236675004)(106116001)(54356999)(99286002)(102836002)(4001350100001)(15975445007)(110136002)(50986999)(36756003); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB460; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_D1A4CEBAB22F8kwatsenjunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2015 22:49:32.3205 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB460
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Y6_eqgV8Kfrdi64VRiE3St6voeM>
Subject: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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: Mon, 15 Jun 2015 22:49:50 -0000

--_000_D1A4CEBAB22F8kwatsenjunipernet_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


This is a notice to start a NETMOD WG last call for the document "Defining =
and Using Metadata with YANG":

https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01

Please indicate your support by Monday June 29, 2015 at 9PM EST.
We are not only interested in receiving defect reports, we are equally
interested in statements of the form:

  "I have reviewed I-D XYZ and I found no issues"
  "I have implemented the data model in I-D XYZ"
  "I am implementing the data model in I-D XYZ"
  "I am considering to implement the data model in I-D XYZ"

This is the first Last Call for this document.

Kent, as NETMOD co-chair


--_000_D1A4CEBAB22F8kwatsenjunipernet_
Content-Type: text/html; charset="us-ascii"
Content-ID: <2B487C7883AB9F4894CF01E0EDAFE9A5@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-fami=
ly: Calibri, sans-serif;">
<div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">This is a notice to start a NETMOD W=
G last call for the document &quot;Defining and Using Metadata with YANG&qu=
ot;:</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif"><span class=3D"Apple-tab-span" style=
=3D"white-space:pre"></span></font><font face=3D"Calibri,sans-serif">https:=
//tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Please indicate your support by Mond=
ay June 29, 2015 at 9PM EST.&nbsp;</font></div>
<div><font face=3D"Calibri,sans-serif">We are not only interested in receiv=
ing defect reports, we are equally</font></div>
<div><font face=3D"Calibri,sans-serif">interested in statements of the form=
:</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I have reviewed I-D XYZ=
 and I found no issues&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I have implemented the =
data model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I am implementing the d=
ata model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I am considering to imp=
lement the data model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">This is the first Last Call for this=
 document.</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Kent, as NETMOD co-chair</font></div=
>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
</body>
</html>

--_000_D1A4CEBAB22F8kwatsenjunipernet_--


From nobody Mon Jun 15 15:49:57 2015
Return-Path: <kwatsen@juniper.net>
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 32C4F1A1B0E for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 15:49:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 gBJz6Wh42aSx for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 15:49:48 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0757.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::1:757]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2CE871A1AF0 for <netmod@ietf.org>; Mon, 15 Jun 2015 15:49:48 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB460.namprd05.prod.outlook.com (10.141.72.152) with Microsoft SMTP Server (TLS) id 15.1.190.14; Mon, 15 Jun 2015 22:49:29 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) with mapi id 15.01.0184.014; Mon, 15 Jun 2015 22:49:29 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
Thread-Index: AQHQp72JJ/ohFfmYXkKPl14GDrY0xg==
Date: Mon, 15 Jun 2015 22:49:28 +0000
Message-ID: <D1A4CEB7.B22F7%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [96.231.191.4]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB460; 3:kRQZRc2MvS0gTYMd2t7wF2MADXy81E0GEWiSO9YHT3AMymg5WDFDw6lX0JFt/EaTKWOh7r7rLf/WhuKcCXrckldlusDtGpo65uq4yyhFPvEnbbNmbnBg/9HZxRok36j52ooiF/eMUUpxwyTWDmnLjw==; 10:02To8HWi2UEqoCCAxCLID5hzcykup4nk049Gv+LUq24CQXHV+6DHEkDtX9O6FNjOt9xMltlRbSJ6qt1R5tVeSqP3eCOYl+lx9rac6ZOWOhs=; 6:Med9/gQD/h2otMp2B5mpaW/jBOhFGvO9yYLODU2GVNeD0YYyiLw4gld48jsS0taX
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB460;
x-microsoft-antispam-prvs: <CO1PR05MB460BE824138F7ADFB26D393A5B80@CO1PR05MB460.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(520003)(3002001); SRVR:CO1PR05MB460; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB460; 
x-forefront-prvs: 0608DEDB67
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(5423002)(230783001)(62966003)(229853001)(450100001)(2900100001)(2351001)(83506001)(5002640100001)(40100003)(122556002)(77156002)(46102003)(86362001)(66066001)(92566002)(19580395003)(2656002)(87936001)(189998001)(107886002)(5001960100002)(2501003)(16236675004)(106116001)(54356999)(99286002)(102836002)(4001350100001)(15975445007)(110136002)(50986999)(36756003); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB460; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_D1A4CEB7B22F7kwatsenjunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2015 22:49:28.3894 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB460
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/WDuNrtXRSU5Knqeco-ev51g0x3Q>
Subject: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
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: Mon, 15 Jun 2015 22:49:53 -0000

--_000_D1A4CEB7B22F7kwatsenjunipernet_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


This is a notice to start a NETMOD WG last call for the document "JSON Enco=
ding of Data Modeled with YANG":

https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04

Please indicate your support by Monday June 29, 2015 at 9PM EST.
We are not only interested in receiving defect reports, we are equally
interested in statements of the form:

  "I have reviewed I-D XYZ and I found no issues"
  "I have implemented the data model in I-D XYZ"
  "I am implementing the data model in I-D XYZ"
  "I am considering to implement the data model in I-D XYZ"

This is the first Last Call for this document.

Kent, as NETMOD co-chair


--_000_D1A4CEB7B22F7kwatsenjunipernet_
Content-Type: text/html; charset="us-ascii"
Content-ID: <FC3F3DBB3FB65243B11B7CF92F5AAC68@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-fami=
ly: Calibri, sans-serif;">
<div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">
<div><br>
</div>
<div>This is a notice to start a NETMOD WG last call for the document &quot=
;JSON Encoding of Data Modeled with YANG&quot;:</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<span style=3D"font-family: Calibri, sans-serif;"><span class=3D"Apple-tab-=
span" style=3D"white-space:pre"></span>https://tools.ietf.org/html/draft-ie=
tf-netmod-yang-json-04</span></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div>
<div><font face=3D"Calibri,sans-serif">Please indicate your support by Mond=
ay June 29, 2015 at&nbsp;</font><font face=3D"Calibri,sans-serif">9PM EST</=
font><span style=3D"font-family: Calibri, sans-serif;">.&nbsp;</span></div>
<div><span style=3D"font-family: Calibri, sans-serif;">We are not&nbsp;</sp=
an><span style=3D"font-family: Calibri, sans-serif;">only interested in rec=
eiving defect reports, we are equally</span></div>
<div><span style=3D"font-family: Calibri, sans-serif;">interested&nbsp;</sp=
an><span style=3D"font-family: Calibri, sans-serif;">in statements of the f=
orm:</span></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I have reviewed I-D XYZ=
 and I found no issues&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I have implemented the =
data model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I am implementing the d=
ata model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I am considering to imp=
lement the data model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">This is the first Last Call for this=
 document.</font></div>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<span style=3D"font-family: Calibri, sans-serif;">Kent, as NETMOD co-chair<=
/span></div>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
</body>
</html>

--_000_D1A4CEB7B22F7kwatsenjunipernet_--


From nobody Mon Jun 15 16:27:10 2015
Return-Path: <kwatsen@juniper.net>
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 AA37D1B304D for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 16:27:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 z_lMvJXZIhJa for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 16:27:07 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0129.outbound.protection.outlook.com [65.55.169.129]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 32DF11B303B for <netmod@ietf.org>; Mon, 15 Jun 2015 16:27:07 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB460.namprd05.prod.outlook.com (10.141.72.152) with Microsoft SMTP Server (TLS) id 15.1.190.14; Mon, 15 Jun 2015 23:27:05 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) with mapi id 15.01.0184.014; Mon, 15 Jun 2015 23:27:05 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: IPR Poll for draft-ietf-netmod-yang-json-04
Thread-Index: AQHQp8LKmqrlGcnEiEydYCtexeet+A==
Date: Mon, 15 Jun 2015 23:27:05 +0000
Message-ID: <D1A4D788.B23EC%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [96.231.191.4]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB460; 3:5BiFqi5TEDRz/Y8DYiwgtiUnBAEF70ChJRPpd46f6P5BFc+xumE3lPvy8Pu93OG4LQOFQ+RZIWTDs0cfcQLUgurfSbfiMgGkFuspQPCsrWA4oo5xBLVGeSdzm1bzZJhCeT6BbEGo92rpiWoRvrUt4g==; 10:yZLCxyUGiI6ti3T1w2ajHK5InOeCC6c+eCcTxMFwJA/4/Xfn73N6S9jJnJlSqJMSaFlLzWF00Xc87hTpkOtTvdUuMes4RPXHS8feW1Y1Ybs=; 6:cQgrirgMXSRs6c/e/+RMGhOR+9PQuGvtj71FBr7ecUsGSy/eb379s1ZSwq201paq
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB460;
x-microsoft-antispam-prvs: <CO1PR05MB46079A0D1180965F7F53C88A5B80@CO1PR05MB460.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(520003)(3002001); SRVR:CO1PR05MB460; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB460; 
x-forefront-prvs: 0608DEDB67
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(107886002)(5001960100002)(106116001)(16236675004)(2501003)(2656002)(92566002)(87936001)(189998001)(4001350100001)(36756003)(110136002)(50986999)(54356999)(99286002)(102836002)(2351001)(83506001)(230783001)(2900100001)(62966003)(450100001)(229853001)(86362001)(46102003)(77156002)(66066001)(40100003)(5002640100001)(122556002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB460; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_D1A4D788B23ECkwatsenjunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2015 23:27:05.0410 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB460
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/btSoBxKuf8oXYs7q_yauPn6sT28>
Subject: [netmod] IPR Poll for draft-ietf-netmod-yang-json-04
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: Mon, 15 Jun 2015 23:27:08 -0000

--_000_D1A4D788B23ECkwatsenjunipernet_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Netmod WG:

This mail starts the IPR poll on draft-ietf-netmod-yang-json-04.

Are you aware of any IPR that applies to draft-ietf-netmod-yang-json-04?
If so, has this IPR been disclosed in compliance with IETF IPR rules (see R=
FCs
3979, 4879, 3669 and 5378 for more details).

If you are listed as a document author or contributor please respond to thi=
s
email explicitly regardless of whether or not you are aware of any relevant=
 IPR.
The response needs to be sent to the NETMOD WG mailing list.  The document
will not advance to the next stage until a response has been received from =
each
author and contributor.

If you are on the NETMOD WG email list but are not listed as an author or
contributor, then please explicitly respond only if you are aware of any IP=
R that
has not yet been disclosed in conformance with IETF rules.

Thank you,

Kent and Tom, NETMOD WG Chairs


--_000_D1A4D788B23ECkwatsenjunipernet_
Content-Type: text/html; charset="us-ascii"
Content-ID: <5C7B3B9E399D1245A6172F3E7932AD53@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-fami=
ly: Calibri, sans-serif;">
<div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">Netmod WG:</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">This mail starts the IPR poll on&nbs=
p;draft-ietf-netmod-yang-json-04.</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Are you aware of any IPR that applie=
s to&nbsp;draft-ietf-netmod-yang-json-04?</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">If so, has this IPR been disclosed in com=
pliance with IETF IPR rules (see RFCs</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">3979, 4879, 3669 and 5378 for more detail=
s).</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif"><br>
</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">If you are listed as a document author or=
 contributor please respond to this</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">email explicitly regardless of whether or=
 not you are aware of any relevant IPR.</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">The response needs to be sent to the NETM=
OD WG mailing list. &nbsp;The document</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">will not advance to the next stage until =
a response has been received from each</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">author and contributor.</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif"><br>
</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">If you are on the NETMOD WG email list bu=
t are not listed as an author or</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">contributor, then please explicitly respo=
nd only if you are aware of any IPR that</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">has not yet been disclosed in conformance=
 with IETF rules.</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif"><br>
</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">Thank you,</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif"><br>
</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">Kent and Tom, NETMOD WG Chairs</font></di=
v>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
</body>
</html>

--_000_D1A4D788B23ECkwatsenjunipernet_--


From nobody Mon Jun 15 16:27:43 2015
Return-Path: <kwatsen@juniper.net>
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 4536F1B3041 for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 16:27:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 T__kwZ_lIuXo for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 16:27:38 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0127.outbound.protection.outlook.com [65.55.169.127]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6B6841B303B for <netmod@ietf.org>; Mon, 15 Jun 2015 16:27:38 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB460.namprd05.prod.outlook.com (10.141.72.152) with Microsoft SMTP Server (TLS) id 15.1.190.14; Mon, 15 Jun 2015 23:27:36 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) with mapi id 15.01.0184.014; Mon, 15 Jun 2015 23:27:36 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: IPR Poll for draft-ietf-netmod-yang-metadata-01
Thread-Index: AQHQp8LcXEpNVQqiSEOlJ1Yq2MtwTQ==
Date: Mon, 15 Jun 2015 23:27:36 +0000
Message-ID: <D1A4D7A5.B23F1%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [96.231.191.4]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB460; 3:Ee2E+P+VrvTwhBNCKuY97r1kDQeyqtWAiaOOgnObkT1kgH6Q9doKTQ3KrWwVMdPQyU7/V/qxiqFflNl+tRYZB/nToRGTolGovKVLWMTvB/K/FjHxRA6iLW72v1qrivn4aw45PG4H6r5StorxJ7Iqcg==; 10:ywcX2GDx5yzZgZ9Fa+0YAZIOqogxLajvghFxvA5PHaBpQLPzXZpMqrbz218mAJagrQdBoUneP91+gaHiWS+pI/hPM/ANT0ecAGU77MnjXnQ=; 6:Bdfg+M3heDuxHZSbHRBdYhACX/J8drCqK5r7YNy/O47k2AfBwewjQWKACa7PHnZq
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB460;
x-microsoft-antispam-prvs: <CO1PR05MB460642DD7C8B22D21280DE5A5B80@CO1PR05MB460.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(520003)(3002001); SRVR:CO1PR05MB460; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB460; 
x-forefront-prvs: 0608DEDB67
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(107886002)(5001960100002)(106116001)(16236675004)(2501003)(2656002)(92566002)(87936001)(189998001)(4001350100001)(36756003)(110136002)(50986999)(54356999)(99286002)(102836002)(2351001)(83506001)(230783001)(2900100001)(62966003)(450100001)(229853001)(86362001)(46102003)(77156002)(66066001)(40100003)(5002640100001)(122556002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB460; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_D1A4D7A5B23F1kwatsenjunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2015 23:27:36.0532 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB460
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/tPuanNL7-eUYL4hKzayftmgwygo>
Subject: [netmod] IPR Poll for draft-ietf-netmod-yang-metadata-01
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: Mon, 15 Jun 2015 23:27:40 -0000

--_000_D1A4D7A5B23F1kwatsenjunipernet_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

NETMOD WG:

This mail starts the IPR poll on draft-ietf-netmod-yang-metadata-01.

Are you aware of any IPR that applies to draft-ietf-netmod-yang-metadata-01=
?
If so, has this IPR been disclosed in compliance with IETF IPR rules (see R=
FCs
3979, 4879, 3669 and 5378 for more details).

If you are listed as a document author or contributor please respond to thi=
s
email explicitly regardless of whether or not you are aware of any relevant=
 IPR.
The response needs to be sent to the NETMOD WG mailing list.  The document
will not advance to the next stage until a response has been received from =
each
author and contributor.

If you are on the NETMOD WG email list but are not listed as an author or
contributor, then please explicitly respond only if you are aware of any IP=
R that
has not yet been disclosed in conformance with IETF rules.

Thank you,

Kent and Tom, NETMOD WG Chairs


--_000_D1A4D7A5B23F1kwatsenjunipernet_
Content-Type: text/html; charset="us-ascii"
Content-ID: <6F3535DA263D604E9896DCC65D17BA6D@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space;">
<div>
<div><font face=3D"Calibri,sans-serif">NETMOD WG:</font></div>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">This mail starts the IPR poll on&nbs=
p;draft-ietf-netmod-yang-metadata-01.</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Are you aware of any IPR that applie=
s to&nbsp;draft-ietf-netmod-yang-metadata-01?</font></div>
<div><font face=3D"Calibri,sans-serif">If so, has this IPR been disclosed i=
n compliance with IETF IPR rules (see RFCs</font></div>
<div><font face=3D"Calibri,sans-serif">3979, 4879, 3669 and 5378 for more d=
etails).</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">If you are listed as a document auth=
or or contributor please respond to this</font></div>
<div><font face=3D"Calibri,sans-serif">email explicitly regardless of wheth=
er or not you are aware of any relevant IPR.</font></div>
<div>
<div>The response needs to be sent to the NETMOD WG mailing list. &nbsp;The=
 document</div>
<div>will not advance to the next stage until a response has been received =
from each</div>
<div>author and contributor.</div>
</div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">If you are on the NETMOD WG email li=
st but are not listed as an author or</font></div>
<div><font face=3D"Calibri,sans-serif">contributor, then please explicitly =
respond only if you are aware of any IPR that</font></div>
<div><font face=3D"Calibri,sans-serif">has not yet been disclosed in confor=
mance with IETF rules.</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Thank you,</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Kent and Tom, NETMOD WG Chairs</font=
></div>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
</body>
</html>

--_000_D1A4D7A5B23F1kwatsenjunipernet_--


From nobody Mon Jun 15 18:02:18 2015
Return-Path: <kwatsen@juniper.net>
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 8BFF31A700A for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 18:02:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.701
X-Spam-Level: 
X-Spam-Status: No, score=-0.701 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, SPF_HELO_PASS=-0.001, 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 WQi1tqgWofBx for <netmod@ietfa.amsl.com>; Mon, 15 Jun 2015 18:02:14 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0751.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::751]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C22C81A014E for <netmod@ietf.org>; Mon, 15 Jun 2015 18:02:13 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) with Microsoft SMTP Server (TLS) id 15.1.184.17; Tue, 16 Jun 2015 01:01:56 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) with mapi id 15.01.0184.014; Tue, 16 Jun 2015 01:01:56 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: review of draft-openconfig-netmod-opstate-00
Thread-Index: AQHQp9AJhipm/y5wS0yJdX2l4IwQvw==
Date: Tue, 16 Jun 2015 01:01:55 +0000
Message-ID: <D19F3500.ADD87%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [96.231.191.4]
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB458;
x-microsoft-antispam-prvs: <CO1PR05MB4589C6271E6DD6930A450F2A5A70@CO1PR05MB458.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(520003)(5005006)(3002001); SRVR:CO1PR05MB458; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB458; 
x-forefront-prvs: 06098A2863
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(46034005)(164054003)(99286002)(16236675004)(106116001)(230783001)(2900100001)(102836002)(2656002)(450100001)(77156002)(62966003)(66066001)(87936001)(40100003)(122556002)(86362001)(46102003)(54356999)(50986999)(2351001)(229853001)(92566002)(5001920100001)(5001960100002)(5002640100001)(4001350100001)(110136002)(189998001)(2501003)(107886002)(36756003)(83506001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB458; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_D19F3500ADD87kwatsenjunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jun 2015 01:01:55.9223 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB458
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/LY3xW69uirMIbfSW0_NenwV4EEs>
Subject: [netmod] review of draft-openconfig-netmod-opstate-00
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: Tue, 16 Jun 2015 01:02:16 -0000

--_000_D19F3500ADD87kwatsenjunipernet_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

[As an individual contributor]

In preparation for our Virtual Interim meeting this Thursday, my primary go=
al was to understand the problems needing to be solved.   Hopefully this is=
n't too much of a simplification, but there seems to be just the single cor=
e issue:

  - no programatic mechanism to relate running state to intended
    state (configuration).  Currently, management systems must
    code to the text found YANG description statements.

The draft then puts forth a a number of recommendations to address the issu=
e including:

  - recommendation to put state in leafs
  - recommendation to use a naming convention
  - recommendation to have statement like operational true/intent/false
  - recommendation to add to YANG a map statement  (since lists don't suppo=
rt deep keys)
  - recommendation to allow config=3Dtrue inside config=3Dfalse containers

Some parts of the draft did not make sense to me.   For instance, the synch=
ronous vs asynchronous discussion didn't seem to be connected to the soluti=
on.  Same for the desire to have an asynchronous push notification mechanis=
m.  Separately, I don't agree that receiving NETCONF RPC-reply <ok/> means =
that the intended configuration is operational, so much as "received by the=
 server".  I also don't agree that every configured value has op-state - e.=
g., consider a server's hostname.

Overall I agree that it would be nice if there was a programmatic mechanism=
 to relate intended and configured state, even if only for state nodes that=
 are identical to configured nodes.  But I m struggling to understand the i=
mportance of supporting generic clients that do not understand the semantic=
s of a model well enough to know where and how to consume its operational s=
tate.

Thanks,
Kent



--_000_D19F3500ADD87kwatsenjunipernet_
Content-Type: text/html; charset="iso-8859-1"
Content-ID: <1DDEB4647DD486428613B370DF57A5B1@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space;">
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
[As an individual contributor]</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif" style=3D"color: rgb(0, 0, 0); font-f=
amily: Calibri, sans-serif; font-size: 14px;">In preparation for our Virtua=
l Interim meeting this Thursday, m</font><font face=3D"Calibri,sans-serif">=
y primary goal was to understand the problems
 needing to be solved. &nbsp; Hopefully this isn't too much of a simplifica=
tion, but there seems to be just the single core issue:</font></div>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif" style=3D"color: rgb(0, 0, 0); font-f=
amily: Calibri, sans-serif; font-size: 14px;">&nbsp; - no programatic mecha=
nism to relate&nbsp;</font><font face=3D"Calibri,sans-serif">running state =
to intended</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &nbsp; state (configuration).=
 &nbsp;Currently, management systems must</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &nbsp; code to the text found=
 YANG description statements.</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">The draft then puts forth a a number of r=
ecommendations to address the issue including:</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
&nbsp; - recommendation to put state in leafs</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">&nbsp; - recommendation to use a naming c=
onvention</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">&nbsp; - recommendation</font><font face=
=3D"Calibri,sans-serif">&nbsp;to have statement like operational true/inten=
t/false</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">&nbsp; - recommendation to add to</font><=
font face=3D"Calibri,sans-serif">&nbsp;YANG</font><span style=3D"font-famil=
y: Calibri, sans-serif;">&nbsp;a map statement &nbsp;(since lists don't sup=
port deep keys)</span></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<span style=3D"font-family: Calibri, sans-serif;">&nbsp; - recommendation t=
o allow config=3Dtrue inside config=3Dfalse containers</span></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
Some parts of the draft did not make sense to me. &nbsp; For instance, the =
synchronous vs asynchronous discussion didn't seem to be connected to the s=
olution. &nbsp;Same for the desire to have an asynchronous push notificatio=
n mechanism. &nbsp;Separately, I don't agree that
 receiving NETCONF RPC-reply &lt;ok/&gt; means that the intended configurat=
ion is operational, so much as &quot;received by the server&quot;. &nbsp;I =
also don't agree that every configured value has op-state &#8211; e.g., con=
sider a server's hostname.</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div><font face=3D"Calibri,sans-serif">Overall I agree that it would be nic=
e if there was a programmatic mechanism to relate intended and&nbsp;configu=
red state, even if only for state nodes that are identical to configured no=
des. &nbsp;But&nbsp;I m&nbsp;struggling to&nbsp;understand
 the importance of supporting generic clients that do not understand the se=
mantics of a model well enough to know where and how to consume its operati=
onal state.</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Thanks,</font></div>
<div><font face=3D"Calibri,sans-serif">Kent</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
</body>
</html>

--_000_D19F3500ADD87kwatsenjunipernet_--


From nobody Tue Jun 16 00:33:21 2015
Return-Path: <lhotka@nic.cz>
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 C8EDF1B330A for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 00:33:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.661
X-Spam-Level: 
X-Spam-Status: No, score=-0.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, T_RP_MATCHES_RCVD=-0.01] 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 qgOVKuU2mq1e for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 00:33:16 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9D11D1B3306 for <netmod@ietf.org>; Tue, 16 Jun 2015 00:33:15 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id E3EE6181484; Tue, 16 Jun 2015 09:33:13 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434439993; bh=SvZ5TVRsFXrR+i7GFp6bz8iiwn7gvd1GLEuxPrfspto=; h=From:Date:To; b=mEwPSw2uL/834K23p/qsCerWv+F3eiJpCH0gLwrfZLydOiihcDOG5YeUE/cyfsS2o FxJgCESxay8ku4N+86k/nnHj9fxY2cOqeqdjiq8bb50xkmHJjv3xi21bb5lc5d21PC 1DE4j/20WDUcNuBS9B/aFCeA4A9SjcHM69jeyMjQ=
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <D1A4D788.B23EC%kwatsen@juniper.net>
Date: Tue, 16 Jun 2015 09:33:15 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <BDA3E798-5D24-4896-9503-E2C152AF0D4C@nic.cz>
References: <D1A4D788.B23EC%kwatsen@juniper.net>
To: Kent Watsen <kwatsen@juniper.net>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/WANLq2ezaLzbxz_5njsd9T0Ccf8>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] IPR Poll for draft-ietf-netmod-yang-json-04
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: Tue, 16 Jun 2015 07:33:21 -0000

I am not aware of any IPR applicable or related to this Internet-Draft.

Lada

> On 16 Jun 2015, at 01:27, Kent Watsen <kwatsen@juniper.net> wrote:
>=20
> Netmod WG:
>=20
> This mail starts the IPR poll on draft-ietf-netmod-yang-json-04.
>=20
> Are you aware of any IPR that applies to =
draft-ietf-netmod-yang-json-04?
> If so, has this IPR been disclosed in compliance with IETF IPR rules =
(see RFCs
> 3979, 4879, 3669 and 5378 for more details).
>=20
> If you are listed as a document author or contributor please respond =
to this
> email explicitly regardless of whether or not you are aware of any =
relevant IPR.
> The response needs to be sent to the NETMOD WG mailing list.  The =
document
> will not advance to the next stage until a response has been received =
from each
> author and contributor.
>=20
> If you are on the NETMOD WG email list but are not listed as an author =
or
> contributor, then please explicitly respond only if you are aware of =
any IPR that
> has not yet been disclosed in conformance with IETF rules.
>=20
> Thank you,
>=20
> Kent and Tom, NETMOD WG Chairs
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Tue Jun 16 00:34:10 2015
Return-Path: <lhotka@nic.cz>
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 9C1E41B3315 for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 00:34:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.661
X-Spam-Level: 
X-Spam-Status: No, score=-0.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, T_RP_MATCHES_RCVD=-0.01] 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 rC-kpGRzeZuQ for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 00:34:07 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 928C91B330F for <netmod@ietf.org>; Tue, 16 Jun 2015 00:34:07 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 410FD1816C4; Tue, 16 Jun 2015 09:34:06 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434440046; bh=2EW+ljIRhTrf80jG8BhqQ8JH7A5lBGJl9aURO07OF3A=; h=From:Date:To; b=LnC41ONGol4+trBbHprIvH+aRvWb5ov8bzOcf0jliDTdOUc3KwYDtaYSjuGFSdCCc vH3xMo5u0/p+AovneSiEuYYmYLtVsv5GlM8T0N8tvCPVsbp3oCJEZV0mSfUEzm3Ak5 3q4BAAJ0zhS/9Zwr0I/TrCSFoaQXC6kGBeGKI8Iw=
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <D1A4D7A5.B23F1%kwatsen@juniper.net>
Date: Tue, 16 Jun 2015 09:34:07 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <8128F70F-3123-4A2F-8E27-D434184C7597@nic.cz>
References: <D1A4D7A5.B23F1%kwatsen@juniper.net>
To: Kent Watsen <kwatsen@juniper.net>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/wNjpoXM9hLSp0WHRpukYhSvMzjs>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] IPR Poll for draft-ietf-netmod-yang-metadata-01
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: Tue, 16 Jun 2015 07:34:08 -0000

I am not aware of any IPR applicable or related to this Internet-Draft.

Lada

> On 16 Jun 2015, at 01:27, Kent Watsen <kwatsen@juniper.net> wrote:
>=20
> NETMOD WG:
>=20
> This mail starts the IPR poll on draft-ietf-netmod-yang-metadata-01.
>=20
> Are you aware of any IPR that applies to =
draft-ietf-netmod-yang-metadata-01?
> If so, has this IPR been disclosed in compliance with IETF IPR rules =
(see RFCs
> 3979, 4879, 3669 and 5378 for more details).
>=20
> If you are listed as a document author or contributor please respond =
to this
> email explicitly regardless of whether or not you are aware of any =
relevant IPR.
> The response needs to be sent to the NETMOD WG mailing list.  The =
document
> will not advance to the next stage until a response has been received =
from each
> author and contributor.
>=20
> If you are on the NETMOD WG email list but are not listed as an author =
or
> contributor, then please explicitly respond only if you are aware of =
any IPR that
> has not yet been disclosed in conformance with IETF rules.
>=20
> Thank you,
>=20
> Kent and Tom, NETMOD WG Chairs
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Tue Jun 16 01:18:50 2015
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 83EE21A1A2C for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 01:18:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.689
X-Spam-Level: 
X-Spam-Status: No, score=0.689 tagged_above=-999 required=5 tests=[BAYES_05=-0.5, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 FjVp9XXrQP7M for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 01:18:47 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 276A51A0211 for <netmod@ietf.org>; Tue, 16 Jun 2015 01:18:47 -0700 (PDT)
Received: from localhost (unknown [173.38.220.44]) by mail.tail-f.com (Postfix) with ESMTPSA id F07921AE0479; Tue, 16 Jun 2015 10:18:44 +0200 (CEST)
Date: Tue, 16 Jun 2015 10:18:44 +0200 (CEST)
Message-Id: <20150616.101844.2057068375184999115.mbj@tail-f.com>
To: kwatsen@juniper.net
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <D19F3500.ADD87%kwatsen@juniper.net>
References: <D19F3500.ADD87%kwatsen@juniper.net>
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/hm36nTpZYWcTDtSJaYKb6kOnYLM>
Cc: netmod@ietf.org
Subject: Re: [netmod] review of draft-openconfig-netmod-opstate-00
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: Tue, 16 Jun 2015 08:18:48 -0000

Hi,

Kent Watsen <kwatsen@juniper.net> wrote:
> [As an individual contributor]
> 
> In preparation for our Virtual Interim meeting this Thursday, my
> primary goal was to understand the problems needing to be solved.
> Hopefully this isn't too much of a simplification, but there seems to
> be just the single core issue:
> 
>   - no programatic mechanism to relate running state to intended
>     state (configuration).  Currently, management systems must
>     code to the text found YANG description statements.

I also re-read this document yesterday, and I agree with this
conclusion.

Note that section 5.19 of the recently published
draft-ietf-netmod-rfc6087bis-03 contains text that tries to illustrate
some of the issues around the problem of associating state with
config.

> The draft then puts forth a a number of recommendations to address the
> issue including:
> 
>   - recommendation to put state in leafs
>   - recommendation to use a naming convention
>   - recommendation to have statement like operational true/intent/false
>   - recommendation to add to YANG a map statement (since lists don't
>   - support deep keys)
>   - recommendation to allow config=true inside config=false containers
> 
> Some parts of the draft did not make sense to me.  For instance, the
> synchronous vs asynchronous discussion didn't seem to be connected to
> the solution.

I am also confused by the terms "intended config" and "actual
config", and the lifecycle of these objects in an asynchronous
system.  Is the idea that every leaf that you can configure exists in
three different places:

  o  as "actual config" (under the "config" container)
  o  as "intended config" (under the "state" container)
  o  as "operationally used value" (also under the "state" container,
     but presumably with a different name?)

When a client tries to set this leaf in an asynchronous system, will
the "intended config" value be set first, then the "actual config",
and lastly the "operationally used value"?

The examples in the document don't reflect this, so maybe I didn't get
it right.


/martin


> Same for the desire to have an asynchronous push
> notification mechanism.  Separately, I don't agree that receiving
> NETCONF RPC-reply <ok/> means that the intended configuration is
> operational, so much as "received by the server".  I also don't agree
> that every configured value has op-state - e.g., consider a server's
> hostname.
> 
> Overall I agree that it would be nice if there was a programmatic
> mechanism to relate intended and configured state, even if only for
> state nodes that are identical to configured nodes.  But I m
> struggling to understand the importance of supporting generic clients
> that do not understand the semantics of a model well enough to know
> where and how to consume its operational state.
> 
> Thanks,
> Kent
> 
> 


From nobody Tue Jun 16 04:47:05 2015
Return-Path: <lhotka@nic.cz>
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 C2F5D1A1EF3 for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 04:47:04 -0700 (PDT)
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] 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 UKP0PbTdTajA for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 04:47:02 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 95A251A1E0E for <netmod@ietf.org>; Tue, 16 Jun 2015 04:47:02 -0700 (PDT)
Received: from localhost (unknown [195.113.220.112]) by trail.lhotka.name (Postfix) with ESMTPSA id 8BDFE1CC01E0; Tue, 16 Jun 2015 13:47:00 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Kent Watsen <kwatsen@juniper.net>, "netmod\@ietf.org" <netmod@ietf.org>
In-Reply-To: <D1A4CEB7.B22F7%kwatsen@juniper.net>
References: <D1A4CEB7.B22F7%kwatsen@juniper.net>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 16 Jun 2015 13:47:00 +0200
Message-ID: <m2pp4vho3v.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/RGz41d9l6PDyFOWgciR6AXQN-xY>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until	2015-06-29)
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: Tue, 16 Jun 2015 11:47:04 -0000

Kent Watsen <kwatsen@juniper.net> writes:

> This is a notice to start a NETMOD WG last call for the document "JSON Encoding of Data Modeled with YANG":
>
> https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04
>
> Please indicate your support by Monday June 29, 2015 at 9PM EST.
> We are not only interested in receiving defect reports, we are equally
> interested in statements of the form:
>
>   "I have reviewed I-D XYZ and I found no issues"
>   "I have implemented the data model in I-D XYZ"

FWIW, I have implemented automatic data-model-driven conversions between
XML- and JSON-encoded instance documents, and vice versa, as pyang
plugins "jsonxsl" and "jtox".

Lada

>   "I am implementing the data model in I-D XYZ"
>   "I am considering to implement the data model in I-D XYZ"
>
> This is the first Last Call for this document.
>
> Kent, as NETMOD co-chair
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun 16 04:50:52 2015
Return-Path: <lhotka@nic.cz>
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 6A8FF1A872C for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 04:50:51 -0700 (PDT)
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] 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 mPu133wQuyaG for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 04:50:50 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 101931A1B2B for <netmod@ietf.org>; Tue, 16 Jun 2015 04:50:50 -0700 (PDT)
Received: from localhost (unknown [195.113.220.112]) by trail.lhotka.name (Postfix) with ESMTPSA id B38931CC01E0; Tue, 16 Jun 2015 13:50:49 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Kent Watsen <kwatsen@juniper.net>, "netmod\@ietf.org" <netmod@ietf.org>
In-Reply-To: <D1A4CEBA.B22F8%kwatsen@juniper.net>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 16 Jun 2015 13:50:50 +0200
Message-ID: <m2mvzzhnxh.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/fwegtHHIRxK3iRwSXMAv3zA3uIk>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until	2015-06-29)
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: Tue, 16 Jun 2015 11:50:51 -0000

Kent Watsen <kwatsen@juniper.net> writes:

> This is a notice to start a NETMOD WG last call for the document "Defining and Using Metadata with YANG":
>
> https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01
>
> Please indicate your support by Monday June 29, 2015 at 9PM EST.
> We are not only interested in receiving defect reports, we are equally
> interested in statements of the form:
>
>   "I have reviewed I-D XYZ and I found no issues"
>   "I have implemented the data model in I-D XYZ"

I have implemented support for metadata according to this document in
pyang, namely:

- DSDL validation takes properly defined metadata annotations into
  account,

- XML->JSON and JSON->XML translations properly convert metadata
  annotations.

Lada

>   "I am implementing the data model in I-D XYZ"
>   "I am considering to implement the data model in I-D XYZ"
>
> This is the first Last Call for this document.
>
> Kent, as NETMOD co-chair
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun 16 05:13:39 2015
Return-Path: <lhotka@nic.cz>
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 ECA271B3393 for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 05:13:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.7
X-Spam-Level: 
X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6] 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 cspQR-4DNQVb for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 05:13:36 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 6C8331B3392 for <netmod@ietf.org>; Tue, 16 Jun 2015 05:13:32 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 178C61CC01E0; Tue, 16 Jun 2015 14:13:32 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Kent Watsen <kwatsen@juniper.net>, "netmod\@ietf.org" <netmod@ietf.org>
In-Reply-To: <D19F3500.ADD87%kwatsen@juniper.net>
References: <D19F3500.ADD87%kwatsen@juniper.net>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 16 Jun 2015 14:13:32 +0200
Message-ID: <m2k2v3hmvn.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/vkxOyzoeA75LV1O0teX8AKdBAhY>
Subject: Re: [netmod] review of draft-openconfig-netmod-opstate-00
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: Tue, 16 Jun 2015 12:13:38 -0000

Kent Watsen <kwatsen@juniper.net> writes:

> [As an individual contributor]
>
> In preparation for our Virtual Interim meeting this Thursday, my primary goal was to understand the problems needing to be solved.   Hopefully this isn't too much of a simplification, but there seems to be just the single core issue:
>
>   - no programatic mechanism to relate running state to intended
>     state (configuration).  Currently, management systems must
>     code to the text found YANG description statements.
>
> The draft then puts forth a a number of recommendations to address the issue including:
>
>   - recommendation to put state in leafs
>   - recommendation to use a naming convention
>   - recommendation to have statement like operational true/intent/false
>   - recommendation to add to YANG a map statement  (since lists don't support deep keys)
>   - recommendation to allow config=true inside config=false containers
>
> Some parts of the draft did not make sense to me.   For instance, the
> synchronous vs asynchronous discussion didn't seem to be connected to
> the solution.  Same for the desire to have an asynchronous push
> notification mechanism.  Separately, I don't agree that receiving
> NETCONF RPC-reply <ok/> means that the intended configuration is
> operational, so much as "received by the server".  I also don't agree
> that every configured value has op-state - e.g., consider a server's
> hostname.

Well, in fact hostname does need an op-state copy, and it's IMO a gap in
ietf-system that it doesn't provide one. Even if there is a configured
value, the system may use something else, perhaps because somebody ran
"hostname" command in the mean time.

Lada

>
> Overall I agree that it would be nice if there was a programmatic mechanism to relate intended and configured state, even if only for state nodes that are identical to configured nodes.  But I m struggling to understand the importance of supporting generic clients that do not understand the semantics of a model well enough to know where and how to consume its operational state.
>
> Thanks,
> Kent
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun 16 05:21:46 2015
Return-Path: <lhotka@nic.cz>
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 63BC41B33BA for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 05:21:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.7
X-Spam-Level: 
X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6] 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 NdUwyDQgsheA for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 05:21:42 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 577EB1B33B8 for <netmod@ietf.org>; Tue, 16 Jun 2015 05:21:42 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id A4FF31CC01E0; Tue, 16 Jun 2015 14:21:41 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>, kwatsen@juniper.net
In-Reply-To: <20150616.101844.2057068375184999115.mbj@tail-f.com>
References: <D19F3500.ADD87%kwatsen@juniper.net> <20150616.101844.2057068375184999115.mbj@tail-f.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 16 Jun 2015 14:21:41 +0200
Message-ID: <m2h9q7hmi2.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/XHkfXAXlWYOukAhW_WKY7ACSat8>
Cc: netmod@ietf.org
Subject: Re: [netmod] review of draft-openconfig-netmod-opstate-00
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: Tue, 16 Jun 2015 12:21:44 -0000

Martin Bjorklund <mbj@tail-f.com> writes:

> Hi,
>
> Kent Watsen <kwatsen@juniper.net> wrote:
>> [As an individual contributor]
>> 
>> In preparation for our Virtual Interim meeting this Thursday, my
>> primary goal was to understand the problems needing to be solved.
>> Hopefully this isn't too much of a simplification, but there seems to
>> be just the single core issue:
>> 
>>   - no programatic mechanism to relate running state to intended
>>     state (configuration).  Currently, management systems must
>>     code to the text found YANG description statements.
>
> I also re-read this document yesterday, and I agree with this
> conclusion.

+1

>
> Note that section 5.19 of the recently published
> draft-ietf-netmod-rfc6087bis-03 contains text that tries to illustrate
> some of the issues around the problem of associating state with
> config.
>
>> The draft then puts forth a a number of recommendations to address the
>> issue including:
>> 
>>   - recommendation to put state in leafs
>>   - recommendation to use a naming convention
>>   - recommendation to have statement like operational true/intent/false
>>   - recommendation to add to YANG a map statement (since lists don't
>>   - support deep keys)
>>   - recommendation to allow config=true inside config=false containers
>> 
>> Some parts of the draft did not make sense to me.  For instance, the
>> synchronous vs asynchronous discussion didn't seem to be connected to
>> the solution.
>
> I am also confused by the terms "intended config" and "actual
> config", and the lifecycle of these objects in an asynchronous
> system.  Is the idea that every leaf that you can configure exists in
> three different places:
>
>   o  as "actual config" (under the "config" container)
>   o  as "intended config" (under the "state" container)
>   o  as "operationally used value" (also under the "state" container,
>      but presumably with a different name?)
>
> When a client tries to set this leaf in an asynchronous system, will
> the "intended config" value be set first, then the "actual config",
> and lastly the "operationally used value"?
>
> The examples in the document don't reflect this, so maybe I didn't get
> it right.

I agree it is confusing, and in particular I don't get the naming -
intended configuration should be an operator's intention,
i.e. config=true, no?

Lada

>
>
> /martin
>
>
>> Same for the desire to have an asynchronous push
>> notification mechanism.  Separately, I don't agree that receiving
>> NETCONF RPC-reply <ok/> means that the intended configuration is
>> operational, so much as "received by the server".  I also don't agree
>> that every configured value has op-state - e.g., consider a server's
>> hostname.
>> 
>> Overall I agree that it would be nice if there was a programmatic
>> mechanism to relate intended and configured state, even if only for
>> state nodes that are identical to configured nodes.  But I m
>> struggling to understand the importance of supporting generic clients
>> that do not understand the semantics of a model well enough to know
>> where and how to consume its operational state.
>> 
>> Thanks,
>> Kent
>> 
>> 
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun 16 05:24:13 2015
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 0B89E1B2CBD for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 05:24:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.711
X-Spam-Level: 
X-Spam-Status: No, score=-0.711 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 JiBV-4YYiuMl for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 05:24:11 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id C68771B2CBB for <netmod@ietf.org>; Tue, 16 Jun 2015 05:24:10 -0700 (PDT)
Received: from localhost (unknown [173.38.220.44]) by mail.tail-f.com (Postfix) with ESMTPSA id EDD3A1AE092A; Tue, 16 Jun 2015 14:24:08 +0200 (CEST)
Date: Tue, 16 Jun 2015 14:24:08 +0200 (CEST)
Message-Id: <20150616.142408.2183535760092828109.mbj@tail-f.com>
To: lhotka@nic.cz
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <m2h9q7hmi2.fsf@birdie.labs.nic.cz>
References: <D19F3500.ADD87%kwatsen@juniper.net> <20150616.101844.2057068375184999115.mbj@tail-f.com> <m2h9q7hmi2.fsf@birdie.labs.nic.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/eQSGLeiec5iiMDLcV7ekJX9_2H8>
Cc: netmod@ietf.org
Subject: Re: [netmod] review of draft-openconfig-netmod-opstate-00
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: Tue, 16 Jun 2015 12:24:12 -0000

Ladislav Lhotka <lhotka@nic.cz> wrote:
> Martin Bjorklund <mbj@tail-f.com> writes:
> 
> > Hi,
> >
> > Kent Watsen <kwatsen@juniper.net> wrote:
> >> [As an individual contributor]
> >> 
> >> In preparation for our Virtual Interim meeting this Thursday, my
> >> primary goal was to understand the problems needing to be solved.
> >> Hopefully this isn't too much of a simplification, but there seems to
> >> be just the single core issue:
> >> 
> >>   - no programatic mechanism to relate running state to intended
> >>     state (configuration).  Currently, management systems must
> >>     code to the text found YANG description statements.
> >
> > I also re-read this document yesterday, and I agree with this
> > conclusion.
> 
> +1
> 
> >
> > Note that section 5.19 of the recently published
> > draft-ietf-netmod-rfc6087bis-03 contains text that tries to illustrate
> > some of the issues around the problem of associating state with
> > config.
> >
> >> The draft then puts forth a a number of recommendations to address the
> >> issue including:
> >> 
> >>   - recommendation to put state in leafs
> >>   - recommendation to use a naming convention
> >>   - recommendation to have statement like operational true/intent/false
> >>   - recommendation to add to YANG a map statement (since lists don't
> >>   - support deep keys)
> >>   - recommendation to allow config=true inside config=false containers
> >> 
> >> Some parts of the draft did not make sense to me.  For instance, the
> >> synchronous vs asynchronous discussion didn't seem to be connected to
> >> the solution.
> >
> > I am also confused by the terms "intended config" and "actual
> > config", and the lifecycle of these objects in an asynchronous
> > system.  Is the idea that every leaf that you can configure exists in
> > three different places:
> >
> >   o  as "actual config" (under the "config" container)
> >   o  as "intended config" (under the "state" container)
> >   o  as "operationally used value" (also under the "state" container,
> >      but presumably with a different name?)
> >
> > When a client tries to set this leaf in an asynchronous system, will
> > the "intended config" value be set first, then the "actual config",
> > and lastly the "operationally used value"?
> >
> > The examples in the document don't reflect this, so maybe I didn't get
> > it right.
> 
> I agree it is confusing, and in particular I don't get the naming -
> intended configuration should be an operator's intention,
> i.e. config=true, no?

That's what I thought, but not what the document says; hence the
confusion.  I am asking for clarification.


/martin


From nobody Tue Jun 16 06:55:05 2015
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 780FA1B3623 for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 06:55:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 jqiC3F_Ugsjn for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 06:55:03 -0700 (PDT)
Received: from mail-lb0-f175.google.com (mail-lb0-f175.google.com [209.85.217.175]) (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 0674F1B3628 for <netmod@ietf.org>; Tue, 16 Jun 2015 06:55:03 -0700 (PDT)
Received: by lbbwc1 with SMTP id wc1so11449070lbb.2 for <netmod@ietf.org>; Tue, 16 Jun 2015 06:55:01 -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:date:message-id:subject:from:to :content-type; bh=rKcVup9RwmWWfa4Ou3crwW2SY4s3jHF91ja2NTi3Kxg=; b=bL49IUl4WgFLoGx9AB1oWJen62ur85tsb/eZ1p7ks0d6EFbfwb7OwfeWyAbO9/1FSx s25RQDVugMzLvkbN0TpOhsPXgf62Pj2zWwuogtwVvNRVYB7EdPoaOlZ3o3wkuVQwgH6O 7VgYI9CUByrD4vrLnYUym5JqkV4dqevVS/mr0FyM6m1fIpOYr5ltp4+9xaB7zH7RPRtK wfJw0IlS+TVnxu3myteO3q8XW/u/mzwZ+CyEB11qXbMVv0AxE6j8unEM2LZrReazfkAB NsI/rSx5vXrMrv3RQts4WTQ75/bSIPSnedlvsMpTReGP9DXvPTQrc9G2ExGdvYfe2X7f dgoQ==
X-Gm-Message-State: ALoCoQnWzAPCpD4Z4KAyQGw2OM8xkQbL+90fLc/T/DqOAh9HSW2nd73qw1sljGmSZbD6nmaYpsny
MIME-Version: 1.0
X-Received: by 10.112.57.20 with SMTP id e20mr814842lbq.123.1434462901316; Tue, 16 Jun 2015 06:55:01 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 16 Jun 2015 06:55:01 -0700 (PDT)
Date: Tue, 16 Jun 2015 06:55:01 -0700
Message-ID: <CABCOCHS-jnwMQMk9LFSfYbBDmy6Qb3p6OnABGd0gcDqNYChQ-A@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: "netmod@ietf.org" <netmod@ietf.org>
Content-Type: multipart/alternative; boundary=001a1133a672ad49e60518a2ebaa
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/3IJ6YMaSvHWTsTqc2C7nLPtWR6c>
Subject: [netmod] interim call-in info
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: Tue, 16 Jun 2015 13:55:04 -0000

--001a1133a672ad49e60518a2ebaa
Content-Type: text/plain; charset=UTF-8

Hi,


Can the NETMOD chairs remember to post the meeting info
before the meeting?

Can't find it so please post again

--001a1133a672ad49e60518a2ebaa
Content-Type: text/html; charset=UTF-8

<div dir="ltr"><div>Hi,<br><br><br></div><div>Can the NETMOD chairs remember to post the meeting info<br></div><div>before the meeting?<br><br></div><div>Can&#39;t find it so please post again<br><br></div></div>

--001a1133a672ad49e60518a2ebaa--


From nobody Tue Jun 16 07:12:49 2015
Return-Path: <tnadeau@lucidvision.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 EC3101B3617 for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 07:12:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.012
X-Spam-Level: 
X-Spam-Status: No, score=-2.012 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_PASS=-0.001, 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 jwyTAPZ1hmwy for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 07:12:38 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BE3931B3A2A for <netmod@ietf.org>; Tue, 16 Jun 2015 07:09:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1434463738; bh=t50QIiWf5im0anKoLql4Wp/kpDiKYYaoAZc8l2Jp08E=; h=Subject:From:In-Reply-To:Date:Cc:References:To; b=fPtdLrfZg+PLFXgb2lXLRjhe/aEL2MPCNYEwDrPzGZuUamW32X3/y2a1ERH7jyhRB mmapIxRgzPnv1fiT4KAZv+5D1N7+DTZw7pfKLvIKsXcM3mq7MyvQsh5e1/nbeGT+B8 OGAbg8vnLN1Iy+3dXiQdDMfk49aWa+Dho1DsbWeY=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=50.255.148.181; 
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Nadeau Thomas <tnadeau@lucidvision.com>
In-Reply-To: <CABCOCHS-jnwMQMk9LFSfYbBDmy6Qb3p6OnABGd0gcDqNYChQ-A@mail.gmail.com>
Date: Tue, 16 Jun 2015 10:09:08 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <810B71DA-46E6-4262-A707-4D48BE40FE6D@lucidvision.com>
References: <CABCOCHS-jnwMQMk9LFSfYbBDmy6Qb3p6OnABGd0gcDqNYChQ-A@mail.gmail.com>
To: Andy Bierman <andy@yumaworks.com>
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-ShareWhite: 50.255.148.181
X-MyRbl: Color=Yellow Age=0 Spam=0 Notspam=11 Stars=0 Good=0 Friend=0 Surbl=0 Catch=0 r=0 ip=50.255.148.181
X-IP-stats: Notspam Incoming Last 0, First 32, in=286, out=0, spam=0 Known=true ip=50.255.148.181
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/5d3h010ueAYLFSq1IcPxcqmTNr4>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] interim call-in info
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: Tue, 16 Jun 2015 14:12:43 -0000

will do

> On Jun 16, 2015:9:55 AM, at 9:55 AM, Andy Bierman <andy@yumaworks.com> =
wrote:
>=20
> Hi,
>=20
>=20
> Can the NETMOD chairs remember to post the meeting info
> before the meeting?
>=20
> Can't find it so please post again
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


From nobody Tue Jun 16 08:24:13 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 36C711B3404; Tue, 16 Jun 2015 08:24:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 D4IllGpzyh3t; Tue, 16 Jun 2015 08:24:08 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B5EF41B2E14; Tue, 16 Jun 2015 08:24:07 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 6755811E2; Tue, 16 Jun 2015 17:24:06 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id NIikAGYf0p6J; Tue, 16 Jun 2015 17:24:05 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 16 Jun 2015 17:24:05 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id CD3AD20013; Tue, 16 Jun 2015 17:24:05 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id W18EMCzbs8eX; Tue, 16 Jun 2015 17:24:21 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id E282D2002B; Tue, 16 Jun 2015 17:24:04 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 924B83474AF2; Tue, 16 Jun 2015 17:24:04 +0200 (CEST)
Date: Tue, 16 Jun 2015 17:24:04 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Lou Berger <lberger@labn.net>
Message-ID: <20150616152404.GB19344@elstar.local>
Mail-Followup-To: Lou Berger <lberger@labn.net>, Routing YANG Coordination <rtg-yang-coord@ietf.org>, netmod@ietf.org
References: <55803C4D.2080207@labn.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <55803C4D.2080207@labn.net>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/hEe-Zr11AkQoGtm6MPwA4_ubUJI>
Cc: Routing YANG Coordination <rtg-yang-coord@ietf.org>, netmod@ietf.org
Subject: Re: [netmod] Thursday's interim
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: Tue, 16 Jun 2015 15:24:10 -0000

Here is the announcement:

  The NETCONF Data Modeling Language (netmod) Working Group will host a 2-
  hour interim meeting on Thursday, June 18, 2015 from 1000-1200 EDT
  (1400-1600 UTC). The agenda will be to split the 2 hours in half, one
  hour for each of the the opstate and model-structure drafts.

I think the two relevant I-Ds are:

  http://tools.ietf.org/html/draft-openconfig-netmod-opstate-00
  https://tools.ietf.org/html/draft-openconfig-netmod-model-structure-00

It seems that the I-Ds mix both a problem statement and solution(s). I
think the first step will be to identify what exactly the problem is
and to see whether we can find agreement that the problem is worth
fixing. If we manage, we can discuss possible solutions as time allows
(there might be more than those mentioned in the I-Ds).

I will create a Webex for the meeting later and post it to the NETMOD
mailing list.

/js

On Tue, Jun 16, 2015 at 11:10:05AM -0400, Lou Berger wrote:
> Tom, Kent, Jurgen,
> 
> The DT is wondering if you are expecting anything from the DT at the
> interim or do you just expect to hear from the draft authors?
> 
> Thanks,
> Lou
> 

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 16 08:30:22 2015
Return-Path: <messenger@webex.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 CE0E21B3ADC for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 08:30:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.711
X-Spam-Level: 
X-Spam-Status: No, score=-3.711 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, GB_I_INVITATION=-2, HTML_MESSAGE=0.001, J_CHICKENPOX_52=0.6, RCVD_IN_DNSWL_MED=-2.3, 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 UCO2iB59AmAk for <netmod@ietfa.amsl.com>; Tue, 16 Jun 2015 08:30:19 -0700 (PDT)
Received: from sjmda12.webex.com (sjmda12.webex.com [64.68.124.129]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 22CD51B3ADA for <netmod@ietf.org>; Tue, 16 Jun 2015 08:30:19 -0700 (PDT)
Received: from jva2tc217.webex.com (sjc02-wxp00-lbace03-core-vl120-np10b-5.webex.com [64.68.121.240]) by sjmda12.webex.com (Postfix) with ESMTP id CFD15B68 for <netmod@ietf.org>; Tue, 16 Jun 2015 15:30:18 +0000 (GMT)
Received: from jva2tc217.webex.com (localhost [127.0.0.1]) by jva2tc217.webex.com (Postfix) with ESMTP id 902EABF4 for <netmod@ietf.org>; Tue, 16 Jun 2015 15:30:18 +0000 (GMT)
Date: Tue, 16 Jun 2015 15:30:18 +0000 (GMT)
From: NETMOD Working Group <messenger@webex.com>
To: netmod@ietf.org
Message-ID: <1839526098.10709.1434468618589.JavaMail.nobody@jva2tc217.webex.com>
MIME-Version: 1.0
Content-Type: multipart/Mixed;  boundary="----=_Part_10707_1758658908.1434468618589"
X-Priority: 3
Importance: normal
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/dDzLu12tWpY0K8kChDzpkVu58T8>
Subject: [netmod] WebEx meeting invitation: NETMOD Virtual Interim Meeting
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: netmod-chairs@tools.ietf.org
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: Tue, 16 Jun 2015 15:30:21 -0000

------=_Part_10707_1758658908.1434468618589
Content-Type: multipart/Alternative; 
	boundary="----=_Part_10708_1962833095.1434468618589"

------=_Part_10708_1962833095.1434468618589
Content-Type: text/plain;charset=UTF-8
Content-Transfer-Encoding: base64

CkhlbGxvLAoKTkVUTU9EIFdvcmtpbmcgR3JvdXAgaW52aXRlcyB5b3UgdG8gam9pbiB0aGlzIFdl
YkV4IG1lZXRpbmcuCgoKTkVUTU9EIFZpcnR1YWwgSW50ZXJpbSBNZWV0aW5nClRodXJzZGF5LCBK
dW5lIDE4LCAyMDE1CjQ6MDAgcG0gIHwgIEV1cm9wZSBTdW1tZXIgVGltZSAoQmVybGluLCBHTVQr
MDI6MDApICB8ICAyIGhycwoKCkpPSU4gV0VCRVggTUVFVElORwpodHRwczovL2lldGYud2ViZXgu
Y29tL2lldGYvai5waHA/TVRJRD1tZDU5YmYxZmFiZDJjMDNlZGQzMmE4M2Y1MDFiNmRkMmUKTWVl
dGluZyBudW1iZXI6IDY0OSA2MzkgMzgwCk1lZXRpbmcgcGFzc3dvcmQ6IEVpY2VlN21pCgoNCkpP
SU4gQlkgUEhPTkUNCjEtODc3LTY2OC00NDkzIENhbGwtaW4gdG9sbCBmcmVlIG51bWJlciAoVVMv
Q2FuYWRhKSAKMS02NTAtNDc5LTMyMDggQ2FsbC1pbiB0b2xsIG51bWJlciAoVVMvQ2FuYWRhKQpB
Y2Nlc3MgY29kZTogNjQ5IDYzOSAzODAKClRvbGwtZnJlZSBkaWFsaW5nIHJlc3RyaWN0aW9uczog
Cmh0dHA6Ly93d3cud2ViZXguY29tL3BkZi90b2xsZnJlZV9yZXN0cmljdGlvbnMucGRmDQoNCgpB
ZGQgdGhpcyBtZWV0aW5nIHRvIHlvdXIgY2FsZW5kYXI6Cmh0dHBzOi8vaWV0Zi53ZWJleC5jb20v
aWV0Zi9qLnBocD9NVElEPW03ZjBkMDRjMTMyYTljZmZlMzlhYWI5NzdmMzdkNTY1Mw0KDQoKQ2Fu
J3Qgam9pbiB0aGUgbWVldGluZz8gQ29udGFjdCBzdXBwb3J0IGhlcmU6Cmh0dHBzOi8vaWV0Zi53
ZWJleC5jb20vaWV0Zi9tYwoKCklNUE9SVEFOVCBOT1RJQ0U6IFBsZWFzZSBub3RlIHRoYXQgdGhp
cyBXZWJFeCBzZXJ2aWNlIGFsbG93cyBhdWRpbyBhbmQgb3RoZXIgaW5mb3JtYXRpb24gc2VudCBk
dXJpbmcgdGhlIHNlc3Npb24gdG8gYmUgcmVjb3JkZWQsIHdoaWNoIG1heSBiZSBkaXNjb3ZlcmFi
bGUgaW4gYSBsZWdhbCBtYXR0ZXIuIEJ5IGpvaW5pbmcgdGhpcyBzZXNzaW9uLCB5b3UgYXV0b21h
dGljYWxseSBjb25zZW50IHRvIHN1Y2ggcmVjb3JkaW5ncy4gSWYgeW91IGRvIG5vdCBjb25zZW50
IHRvIGJlaW5nIHJlY29yZGVkLCBkaXNjdXNzIHlvdXIgY29uY2VybnMgd2l0aCB0aGUgaG9zdCBv
ciBkbyBub3Qgam9pbiB0aGUgc2Vzc2lvbi4K
------=_Part_10708_1962833095.1434468618589
Content-Type: text/html;charset=UTF-8
Content-Transfer-Encoding: base64

PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lk
dGgsIGluaXRpYWwtc2NhbGU9MSIgLz48Ym9keT48c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpkaXYs
cCx0ZCxzcGFuIHt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7d29yZC1icmVhazogbm9ybWFsO30KCnRh
YmxlIHtib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOyBib3JkZXI6IDA7Ym9yZGVyLXNwYWNpbmc6
IDA7Ym9yZGVyLWNvbG9yOiB3aGl0ZTsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7d2lkdGg6NTI1cHg7
IG1heC13aWR0aDo1MjVweCFpbXBvcnRhbnQ7IG1pbi13aWR0aDogMjc5cHghaW1wb3J0YW50O30K
dHIge2xpbmUtaGVpZ2h0OiAyMHB4O30KCnRkLGEge2ZvbnQtc2l6ZTogMTVweDtmb250LWZhbWls
eTogQXJpYWw7Y29sb3I6ICM2NjY2NjY7cGFkZGluZzowO30KPC9zdHlsZT4KCjx0YWJsZSBzdHls
ZT0icGFkZGluZzowOyBtYXJnaW46MCIgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0Ij4KICAgPHRy
PgogICAgICA8dGQgc3R5bGU9InBhZGRpbmctdG9wOjVweDsiPgogICAgICAgIDx0YWJsZSBzdHls
ZT0id2lkdGg6IDUyNXB4O21hcmdpbi1sZWZ0OjVweCIgYWxpZ249ImxlZnQiPgoJCQk8dHI+CgkJ
CQk8dGQgdmFsaWduPSJ0b3AiPgoKPHRhYmxlPgogICAgICAgPHRyPgogICAgICAgICAgPHRkIHN0
eWxlPSJmb250LXNpemU6IDE1cHg7Zm9udC1mYW1pbHk6IEFyaWFsO2NvbG9yOiM0RDRENEQiPgog
ICAgICAgICAgICAgSGVsbG8sCiAgICAgICAgICA8L3RkPgogICAgICAgPC90cj4KICAgICAgIDx0
cj4KICAgICAgICAgICA8dGQgc3R5bGU9ImZvbnQtc2l6ZTogMTVweDtmb250LWZhbWlseTogQXJp
YWw7Y29sb3I6IzRENEQ0RDtwYWRkaW5nLXRvcDoxMHB4OyI+CiAgICAgICAgICAgICAgICBORVRN
T0QgV29ya2luZyBHcm91cCBpbnZpdGVzIHlvdSB0byBqb2luIHRoaXMgV2ViRXggbWVldGluZy4K
ICAgICAgICAgICAgICAgIAkgICAgICAgICAgIDwvdGQ+CiAgICAgIDwvdHI+CjwvdGFibGU+CgoK
Cgo8dGFibGU+PHRyIHN0eWxlPSJsaW5lLWhlaWdodDogMjBweDsiPjx0ZCBzdHlsZT0iaGVpZ2h0
OjIwcHgiPiZuYnNwOzwvdGQ+PC90cj48L3RhYmxlPgoJCQkJCQk8dGFibGUgIHdpZHRoPSIxMDAl
Ij4KCQkJCQkJCTx0cj4KCQkJCQkJCQk8dGQgc3R5bGU9ImZvbnQtc2l6ZToxNnB4OyBjb2xvcjoj
NEQ0RDREIj4KCQkJCQkJCQkJPGI+TkVUTU9EIFZpcnR1YWwgSW50ZXJpbSBNZWV0aW5nPC9iPgoJ
CQkJCQkJCTwvdGQ+CgkJCQkJCQk8L3RyPgoJCQkJCQkJPHRyIHN0eWxlPSJtYXJnaW46MHB4Ij4K
CQkJCQkJCQk8dGQ+VGh1cnNkYXksIEp1bmUgMTgsIDIwMTUKCQkJCQkJCQk8L3RkPgoJCQkJCQkJ
PC90cj4KCQkJCQkJCTx0ciBzdHlsZT0ibWFyZ2luOjBweCI+CgkJCQkJCQkJPHRkPjQ6MDAgcG0m
bmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7RXVyb3BlIFN1bW1lciBUaW1lIChCZXJsaW4sIEdNVCsw
MjowMCkmbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7MiBocnMKCQkJCQkJCQk8L3RkPgoJCQkJCQkJ
PC90cj4KCQkJCQkJPC90YWJsZT4KCjx0YWJsZT48dHIgc3R5bGU9ImxpbmUtaGVpZ2h0OiAyMHB4
OyI+PHRkIHN0eWxlPSJoZWlnaHQ6MjBweCI+Jm5ic3A7PC90ZD48L3RyPjwvdGFibGU+CgkJCQkJ
CTx0YWJsZSBzdHlsZT0id2lkdGg6YXV0bzsgd2lkdGg6YXV0byFpbXBvcnRhbnQiPgoJCQkJCQkJ
PHRyPgoJCQkJCQkJCTx0ZCBzdHlsZT0iY29sb3I6IzAwQUZGOTtmb250LXNpemU6MTZweCI+CgkJ
CQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vaWV0Zi53ZWJleC5jb20vaWV0Zi9qLnBocD9NVElEPW1k
NTliZjFmYWJkMmMwM2VkZDMyYTgzZjUwMWI2ZGQyZSIKCQkJCQkJCQkJCXN0eWxlPSJ0ZXh0LWRl
Y29yYXRpb246bm9uZTtmb250LXNpemU6MTZweDtjb2xvcjojMDBBRkY5Ij4KCQkJCQkJCQkJCTxi
PkpvaW4gV2ViRXggbWVldGluZzwvYj4KCQkJCQkJCQkJPC9hPgoJCQkJCQkJCTwvdGQ+CgkJCQkJ
CQk8L3RyPgoJCQkJCQk8L3RhYmxlPgoJCQkJCQk8dGFibGUgc3R5bGU9IndpZHRoOmF1dG87IHdp
ZHRoOmF1dG8haW1wb3J0YW50Ij4KCQkJCQkJCTx0ciBzdHlsZT0ibWFyZ2luOjBweCI+CgkJCQkJ
CQkJPHRkIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OiA1cHg7Ij4KCQkJCQkJCQkJTWVldGluZyBudW1i
ZXI6CgkJCQkJCQkJPC90ZD4KCQkJCQkJCQk8dGQ+NjQ5IDYzOSAzODAKCQkJCQkJCQk8L3RkPgoJ
CQkJCQkJPC90cj4KCQkJCQkJCTx0cj4KCQkJCQkJCQk8dGQgc3R5bGU9InBhZGRpbmctcmlnaHQ6
IDVweDsiPk1lZXRpbmcgcGFzc3dvcmQ6PC90ZD4KCQkJCQkJCQk8dGQ+RWljZWU3bWk8L3RkPgoJ
CQkJCQkJPC90cj4KCQkJCQkJPC90YWJsZT4KCgoKCQoKCTx0YWJsZT48dHIgc3R5bGU9ImxpbmUt
aGVpZ2h0OjIwcHgiPjx0ZCBzdHlsZT0iaGVpZ2h0OjIwcHgiPiZuYnNwOzwvdGQ+PC90cj48L3Rh
YmxlPjx0YWJsZT48dHI+PHRkIHN0eWxlPSJmb250LXNpemU6MTZweCI+PGI+Sm9pbiBieSBwaG9u
ZTwvYj48L3RkPjwvdHI+PHRyIHN0eWxlPSJtYXJnaW46MHB4Ij48dGQ+PGI+MS04NzctNjY4LTQ0
OTM8L2I+Jm5ic3A7Q2FsbC1pbiB0b2xsIGZyZWUgbnVtYmVyIChVUy9DYW5hZGEpPC90ZD48L3Ry
Pjx0ciBzdHlsZT0ibWFyZ2luOjBweCI+PHRkPjxiPjEtNjUwLTQ3OS0zMjA4PC9iPiZuYnNwO0Nh
bGwtaW4gdG9sbCBudW1iZXIgKFVTL0NhbmFkYSk8L3RkPjwvdHI+PHRyIHN0eWxlPSJtYXJnaW46
MHB4Ij48dGQ+QWNjZXNzIGNvZGU6Jm5ic3A7NjQ5IDYzOSAzODA8L3RkPjwvdHI+PHRyIHN0eWxl
PSJtYXJnaW46MHB4Ij48dGQ+PGEgaHJlZj0iaHR0cDovL3d3dy53ZWJleC5jb20vcGRmL3RvbGxm
cmVlX3Jlc3RyaWN0aW9ucy5wZGYiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNp
emU6MTNweDtjb2xvcjojMDBBRkY5OyI+VG9sbC1mcmVlIGNhbGxpbmcgcmVzdHJpY3Rpb25zPC9h
PjwvdGQ+PC90cj48L3RhYmxlPgoKCQkJCQk8dGFibGU+PHRyIHN0eWxlPSJsaW5lLWhlaWdodDoy
MHB4Ij48dGQgc3R5bGU9ImhlaWdodDoyMHB4Ij4mbmJzcDs8L3RkPjwvdHI+PC90YWJsZT48dGFi
bGU+PHRyPjx0ZCBzdHlsZT0iZm9udC1zaXplOjEzcHgiPjxhIGhyZWY9Imh0dHBzOi8vaWV0Zi53
ZWJleC5jb20vaWV0Zi9qLnBocD9NVElEPW03ZjBkMDRjMTMyYTljZmZlMzlhYWI5NzdmMzdkNTY1
MyIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMwMEFGRjk7IGZvbnQtc2l6ZTox
M3B4Ij5BZGQgdGhpcyBtZWV0aW5nPC9hPiB0byB5b3VyIGNhbGVuZGFyLjwvdGQ+PC90cj48L3Rh
YmxlPgo8dGFibGU+PHRyIHN0eWxlPSJsaW5lLWhlaWdodDogMjBweDsiPjx0ZCBzdHlsZT0iaGVp
Z2h0OjIwcHgiPiZuYnNwOzwvdGQ+PC90cj48L3RhYmxlPgo8dGFibGU+CiAgICA8dHI+CiAgICAg
ICA8dGQgc3R5bGU9ImZvbnQtc2l6ZTogMTNweDtmb250LWZhbWlseTogQXJpYWw7Y29sb3I6ICM2
NjY2NjY7Ij4KICAgICAgICBDYW4ndCBqb2luIHRoZSBtZWV0aW5nPwogICAgIAk8YSBocmVmPSJo
dHRwczovL2lldGYud2ViZXguY29tL2lldGYvbWMiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9u
ZTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTpBcmlhbDtjb2xvcjojMDBBRkY5O2ZvbnQtY29s
b3I6IzAwQUZGOTsiPgogICAgICAgIAlDb250YWN0IHN1cHBvcnQuPC9hPgoJCTwvdGQ+CiAgICA8
L3RyPgo8L3RhYmxlPgo8dGFibGU+PHRyIHN0eWxlPSJsaW5lLWhlaWdodDogMTBweDsiPjx0ZCBz
dHlsZT0iaGVpZ2h0OjEwcHgiPiZuYnNwOzwvdGQ+PC90cj48L3RhYmxlPgoJCQkJCQk8dGFibGU+
CgkJCQkJCQk8dHI+CgkJCQkJCQkJPHRkIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjogI0Ew
QTBBMDsiPgoJCQkJCQkJCQlJTVBPUlRBTlQgTk9USUNFOiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMg
V2ViRXggc2VydmljZSBhbGxvd3MgYXVkaW8gYW5kIG90aGVyIGluZm9ybWF0aW9uIHNlbnQgZHVy
aW5nIHRoZSBzZXNzaW9uIHRvIGJlIHJlY29yZGVkLCB3aGljaCBtYXkgYmUgZGlzY292ZXJhYmxl
IGluIGEgbGVnYWwgbWF0dGVyLiBCeSBqb2luaW5nIHRoaXMgc2Vzc2lvbiwgeW91IGF1dG9tYXRp
Y2FsbHkgY29uc2VudCB0byBzdWNoIHJlY29yZGluZ3MuIElmIHlvdSBkbyBub3QgY29uc2VudCB0
byBiZWluZyByZWNvcmRlZCwgZGlzY3VzcyB5b3VyIGNvbmNlcm5zIHdpdGggdGhlIGhvc3Qgb3Ig
ZG8gbm90IGpvaW4gdGhlIHNlc3Npb24uPC90ZD4KCQkJCQkJCTwvdHI+CgkJCQkJCTwvdGFibGU+
CgkJCQk8L3RkPgoJCQk8L3RyPgoJCTwvdGFibGU+Cgk8L3RkPgogICA8L3RyPgo8L3RhYmxlPgoK
PC9ib2R5Pg==
------=_Part_10708_1962833095.1434468618589--

------=_Part_10707_1758658908.1434468618589
Content-Type: application/octet-stream;
	name="WebEx_Meeting.ics"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="WebEx_Meeting.ics"

QkVHSU46VkNBTEVOREFSClBST0RJRDotLy9NaWNyb3NvZnQgQ29ycG9yYXRpb24vL091dGxvb2sg
MTAuMCBNSU1FRElSLy9FTgpWRVJTSU9OOjIuMApNRVRIT0Q6UkVRVUVTVApCRUdJTjpWVElNRVpP
TkUKVFpJRDpFdXJvcGUgVGltZQpCRUdJTjpTVEFOREFSRApEVFNUQVJUOjIwMTMxMDAxVDAzMDAw
MApSUlVMRTpGUkVRPVlFQVJMWTtJTlRFUlZBTD0xO0JZREFZPS0xU1U7QllNT05USD0xMApUWk9G
RlNFVEZST006KzAyMDAKVFpPRkZTRVRUTzorMDEwMApUWk5BTUU6U3RhbmRhcmQgVGltZQpFTkQ6
U1RBTkRBUkQKQkVHSU46REFZTElHSFQKRFRTVEFSVDoyMDEzMDMwMVQwMjAwMDAKUlJVTEU6RlJF
UT1ZRUFSTFk7SU5URVJWQUw9MTtCWURBWT0tMVNVO0JZTU9OVEg9MwpUWk9GRlNFVEZST006KzAx
MDAKVFpPRkZTRVRUTzorMDIwMApUWk5BTUU6RGF5bGlnaHQgU2F2aW5ncyBUaW1lCkVORDpEQVlM
SUdIVApFTkQ6VlRJTUVaT05FCkJFR0lOOlZFVkVOVApBVFRFTkRFRTtDTj0iIjtST0xFPVJFUS1Q
QVJUSUNJUEFOVDtSU1ZQPVRSVUU6TUFJTFRPOm5ldG1vZEBpZXRmLm9yZwpPUkdBTklaRVI7Q049
Ik5FVE1PRCBXb3JraW5nIEdyb3VwIjpNQUlMVE86bmV0bW9kLWNoYWlyc0B0b29scy5pZXRmLm9y
ZwpEVFNUQVJUO1RaSUQ9IkV1cm9wZSBUaW1lIjoyMDE1MDYxOFQxNjAwMDAKRFRFTkQ7VFpJRD0i
RXVyb3BlIFRpbWUiOjIwMTUwNjE4VDE4MDAwMApMT0NBVElPTjpodHRwczovL2lldGYud2ViZXgu
Y29tL2lldGYKVFJBTlNQOk9QQVFVRQpTRVFVRU5DRToxNDM0NDY4NjE4ClVJRDo0YjM4ZjFiMi0y
YTBmLTQyMTUtYmI3NC1lYTFlN2ZlYzBjZTAKRFRTVEFNUDoyMDE1MDYxOFQxNDAwMDBaCkRFU0NS
SVBUSU9OOlxuXG5cbkpPSU4gV0VCRVggTUVFVElOR1xuaHR0cHM6Ly9pZXRmLndlYmV4LmNvbS9p
ZXRmL2oucGhwP01USUQ9bTUyNWRjNDA4NzFkOTgxM2JiZWRhNzk2Njk3N2I4ZjA5XG5NZWV0aW5n
IG51bWJlcjogNjQ5IDYzOSAzODBcbk1lZXRpbmcgcGFzc3dvcmQ6IEVpY2VlN21pXG5cblxuSk9J
TiBCWSBQSE9ORVxuMS04NzctNjY4LTQ0OTMgQ2FsbC1pbiB0b2xsIGZyZWUgbnVtYmVyIChVUy9D
YW5hZGEpIFxuMS02NTAtNDc5LTMyMDggQ2FsbC1pbiB0b2xsIG51bWJlciAoVVMvQ2FuYWRhKVxu
QWNjZXNzIGNvZGU6IDY0OSA2MzkgMzgwXG5cblRvbGwtZnJlZSBkaWFsaW5nIHJlc3RyaWN0aW9u
czogXG5odHRwOi8vd3d3LndlYmV4LmNvbS9wZGYvdG9sbGZyZWVfcmVzdHJpY3Rpb25zLnBkZlxu
XG5cblxuQ2FuJ3Qgam9pbiB0aGUgbWVldGluZz8gQ29udGFjdCBzdXBwb3J0IGhlcmU6XG5odHRw
czovL2lldGYud2ViZXguY29tL2lldGYvbWNcblxuXG5JTVBPUlRBTlQgTk9USUNFOiBQbGVhc2Ug
bm90ZSB0aGF0IHRoaXMgV2ViRXggc2VydmljZSBhbGxvd3MgYXVkaW8gYW5kIG90aGVyIGluZm9y
bWF0aW9uIHNlbnQgZHVyaW5nIHRoZSBzZXNzaW9uIHRvIGJlIHJlY29yZGVkLCB3aGljaCBtYXkg
YmUgZGlzY292ZXJhYmxlIGluIGEgbGVnYWwgbWF0dGVyLiBCeSBqb2luaW5nIHRoaXMgc2Vzc2lv
biwgeW91IGF1dG9tYXRpY2FsbHkgY29uc2VudCB0byBzdWNoIHJlY29yZGluZ3MuIElmIHlvdSBk
byBub3QgY29uc2VudCB0byBiZWluZyByZWNvcmRlZCwgZGlzY3VzcyB5b3VyIGNvbmNlcm5zIHdp
dGggdGhlIGhvc3Qgb3IgZG8gbm90IGpvaW4gdGhlIHNlc3Npb24uXG4KWC1BTFQtREVTQztGTVRU
WVBFPXRleHQvaHRtbDoJPEZPTlQgU0laRT0iMSIgRkFDRT0iQVJJQUwiPiZuYnNwOzxCUj4gPEZP
TlQgU0laRT0iNCIgRkFDRT0iQVJJQUwiPgkJPGEJCQkJCWhyZWY9Imh0dHBzOi8vaWV0Zi53ZWJl
eC5jb20vaWV0Zi9qLnBocD9NVElEPW01MjVkYzQwODcxZDk4MTNiYmVkYTc5NjY5NzdiOGYwOSI+
PEZPTlQgU0laRT0iMyIgQ09MT1I9IiMwMEFGRjkiIEZBQ0U9IkFyaWFsIj5Kb2luIFdlYkV4IG1l
ZXRpbmc8L0ZPTlQ+PC9hPgkJCTx0YWJsZT4JCQkJPHRyPgkJCQkJPHRkPgkJCQkJCTxGT05UIFNJ
WkU9IjIiIENPTE9SPSIjNjY2NjY2IiBGQUNFPSJhcmlhbCI+TWVldGluZyBudW1iZXI6PC9GT05U
PgkJCQkJPC90ZD4JCQkJCTx0ZD4JCQkJCQk8Rk9OVCBTSVpFPSIyIiBDT0xPUj0iIzY2NjY2NiIg
RkFDRT0iYXJpYWwiPjY0OSA2MzkgMzgwPC9GT05UPgkJCQkJPC90ZD4JCQkJPC90cj4JCQk8L3Rh
YmxlPgkJCTx0YWJsZT48dHI+PHRkPjxGT05UIFNJWkU9IjIiIENPTE9SPSIjNjY2NjY2IiBGQUNF
PSJhcmlhbCI+TWVldGluZyBwYXNzd29yZDo8L0ZPTlQ+PC90ZD48dGQ+PEZPTlQgU0laRT0iMiIg
IENPTE9SPSIjNjY2NjY2IiBGQUNFPSJhcmlhbCI+RWljZWU3bWk8L0ZPTlQ+PC90ZD48L3RyPjwv
dGFibGU+CQk8L0ZPTlQ+PEZPTlQgU0laRT0iMSIgRkFDRT0iQVJJQUwiPiZuYnNwOzxCUj4mbmJz
cDs8QlI+PC9GT05UPjxGT05UIFNJWkU9IjQiIEZBQ0U9IkFSSUFMIj48Rk9OVCBTSVpFPSIzIiBD
T0xPUj0iIzY2NjY2NiIgRkFDRT0iYXJpYWwiPkpvaW4gYnkgcGhvbmU8L0ZPTlQ+Jm5ic3A7IDxC
Uj48Rk9OVCBTSVpFPSIyIiBDT0xPUj0iIzY2NjY2NiIgRkFDRT0iYXJpYWwiPjxzdHJvbmc+MS04
NzctNjY4LTQ0OTM8L3N0cm9uZz4mbmJzcDtDYWxsLWluIHRvbGwgZnJlZSBudW1iZXIgKFVTL0Nh
bmFkYSk8L0ZPTlQ+Jm5ic3A7IDxCUj48Rk9OVCBTSVpFPSIyIiBDT0xPUj0iIzY2NjY2NiIgRkFD
RT0iYXJpYWwiPjxzdHJvbmc+MS02NTAtNDc5LTMyMDg8L3N0cm9uZz4mbmJzcDtDYWxsLWluIHRv
bGwgbnVtYmVyIChVUy9DYW5hZGEpPC9GT05UPiZuYnNwOyA8QlI+PEZPTlQgU0laRT0iMiIgQ09M
T1I9IiM2NjY2NjYiIEZBQ0U9ImFyaWFsIj5BY2Nlc3MgY29kZTogNjQ5IDYzOSAzODA8L0ZPTlQ+
Jm5ic3A7IDxCUj48YSBocmVmPSJodHRwOi8vd3d3LndlYmV4LmNvbS9wZGYvdG9sbGZyZWVfcmVz
dHJpY3Rpb25zLnBkZiI+PEZPTlQgU0laRT0iMSIgQ09MT1I9IiMwMEFGRjkiIEZBQ0U9ImFyaWFs
Ij5Ub2xsLWZyZWUgY2FsbGluZyByZXN0cmljdGlvbnM8L0ZPTlQ+PC9hPiAmbmJzcDsgPEJSPjwv
Rk9OVD48QlI+PEJSPgkmbmJzcDs8QlI+CTxGT05UIFNJWkU9IjEiIENPTE9SPSIjNjY2NjY2IiBG
QUNFPSJhcmlhbCI+CQkJCUNhbid0IGpvaW4gdGhlIG1lZXRpbmc/PC9GT05UPgk8YSBocmVmPSJo
dHRwczovL2lldGYud2ViZXguY29tL2lldGYvbWMiPgk8Rk9OVCBTSVpFPSIxIiBDT0xPUj0iIzAw
QUZGOSIgRkFDRT0iQXJpYWwiPkNvbnRhY3Qgc3VwcG9ydC48L0ZPTlQ+PC9hPgkmbmJzcDs8QlI+
Jm5ic3A7PEJSPjxGT05UIENPTE9SPSIjQTBBMEEwIiBzaXplPSIxIiBGQUNFPSJhcmlhbCI+SU1Q
T1JUQU5UIE5PVElDRTogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIFdlYkV4IHNlcnZpY2UgYWxsb3dz
IGF1ZGlvIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBzZW50IGR1cmluZyB0aGUgc2Vzc2lvbiB0byBi
ZSByZWNvcmRlZCwgd2hpY2ggbWF5IGJlIGRpc2NvdmVyYWJsZSBpbiBhIGxlZ2FsIG1hdHRlci4g
Qnkgam9pbmluZyB0aGlzIHNlc3Npb24sIHlvdSBhdXRvbWF0aWNhbGx5IGNvbnNlbnQgdG8gc3Vj
aCByZWNvcmRpbmdzLiBJZiB5b3UgZG8gbm90IGNvbnNlbnQgdG8gYmVpbmcgcmVjb3JkZWQsIGRp
c2N1c3MgeW91ciBjb25jZXJucyB3aXRoIHRoZSBob3N0IG9yIGRvIG5vdCBqb2luIHRoZSBzZXNz
aW9uLjwvRk9OVD48L0ZPTlQ+ClNVTU1BUlk6TkVUTU9EIFZpcnR1YWwgSW50ZXJpbSBNZWV0aW5n
ClBSSU9SSVRZOjUKQ0xBU1M6UFVCTElDCkJFR0lOOlZBTEFSTQpUUklHR0VSOi1QVDVNCkFDVElP
TjpESVNQTEFZCkRFU0NSSVBUSU9OOlJlbWluZGVyCkVORDpWQUxBUk0KRU5EOlZFVkVOVApFTkQ6
VkNBTEVOREFSCg==
------=_Part_10707_1758658908.1434468618589--


From nobody Wed Jun 17 00:54:44 2015
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 07E4D1A1BDA for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 00:54:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.588
X-Spam-Level: 
X-Spam-Status: No, score=0.588 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, J_CHICKENPOX_210=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 trgVgWvMxPWO for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 00:54:41 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id C1CFB1A1BDE for <netmod@ietf.org>; Wed, 17 Jun 2015 00:54:41 -0700 (PDT)
Received: from localhost (unknown [173.38.220.44]) by mail.tail-f.com (Postfix) with ESMTPSA id 96C241AE0483 for <netmod@ietf.org>; Wed, 17 Jun 2015 09:54:39 +0200 (CEST)
Date: Wed, 17 Jun 2015 09:54:39 +0200 (CEST)
Message-Id: <20150617.095439.2211831130594238981.mbj@tail-f.com>
To: netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <D1A4CEBA.B22F8%kwatsen@juniper.net>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net>
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/FFSyZ9kfRhwiF5YbJNIHmx7wPhw>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 07:54:43 -0000

Hi,

I have reviewed this document, and here are my comments.  I have some
technical issues; apart from that I think this document is ready
for publication.

I have also implemented this statement in pyang (see the branch
'yang-metadata' in pyang's github).

Technical issues:

  o  The 'type' statement is optional in 'md:annotation', and if it is
     not present, the type defaults to string.  I think this is bad
     design:
         
       - it is not consistent with how 'type' is used in other
         YANG statements (leaf, leaf-list, typedef).

       - it is not as clear for the reader as having an explicit
         type.

       - it saves just a few characters in every annotation (and
         annotations will be rare) so it is not worth it.

     I suggest making 'type' mandatory in 'md:annotation'.


  o  The type of the argument to 'md:annotation' is not specified.  It
     should be an "identifier" (as defined in 6020bis).


  o  Last paragraph of section 3 and the "description" in the
     extension.

     The text says that semantics are defined "by other means".  I
     think the semantics should be defined in the
     description/reference statements (by using links or inline text
     doesn't matter).


Editorial issues:

  o  You may want to change the "inactive" example to something less
     controversial.  For example:

     module example-comment {
       namespace "http://example.org/example-comment";
       prefix "ein";
       import ietf-yang-metadata {
         prefix "md";
       }
       md:annotation comment {
         type string;
         description
           "This annotation is used to attach a free-form comment to
            any data node.";
       }
     }


  o  Update the copyright year to 2015.


/martin


From nobody Wed Jun 17 02:14:33 2015
Return-Path: <lhotka@nic.cz>
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 88CA81A8758 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 02:14:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.3
X-Spam-Level: 
X-Spam-Status: No, score=-1.3 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_210=0.6] 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 HtPjqHyZxwif for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 02:14:30 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id EFA5C1A8753 for <netmod@ietf.org>; Wed, 17 Jun 2015 02:14:29 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 78B891CC0234; Wed, 17 Jun 2015 11:14:28 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>, netmod@ietf.org
In-Reply-To: <20150617.095439.2211831130594238981.mbj@tail-f.com>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150617.095439.2211831130594238981.mbj@tail-f.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Wed, 17 Jun 2015 11:14:28 +0200
Message-ID: <m2vbem4ryj.fsf@nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/dItBykxQ0cfcd9_ByV0iLj7dA_0>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 09:14:32 -0000

Hi Martin,

thanks for the review.

Martin Bjorklund <mbj@tail-f.com> writes:

> Hi,
>
> I have reviewed this document, and here are my comments.  I have some
> technical issues; apart from that I think this document is ready
> for publication.
>
> I have also implemented this statement in pyang (see the branch
> 'yang-metadata' in pyang's github).
>
> Technical issues:
>
>   o  The 'type' statement is optional in 'md:annotation', and if it is
>      not present, the type defaults to string.  I think this is bad
>      design:

I followed the example of RELAX NG where type of attributes needn't be
specified - as opposed to elements.

>          
>        - it is not consistent with how 'type' is used in other
>          YANG statements (leaf, leaf-list, typedef).
>
>        - it is not as clear for the reader as having an explicit
>          type.
>
>        - it saves just a few characters in every annotation (and
>          annotations will be rare) so it is not worth it.
>
>      I suggest making 'type' mandatory in 'md:annotation'.

OK, I am not against making it mandatory, if it is the consensus.

>
>
>   o  The type of the argument to 'md:annotation' is not specified.  It
>      should be an "identifier" (as defined in 6020bis).

Yes, I will add it to the description of the "extension" statement.

>
>
>   o  Last paragraph of section 3 and the "description" in the
>      extension.
>
>      The text says that semantics are defined "by other means".  I
>      think the semantics should be defined in the
>      description/reference statements (by using links or inline text
>      doesn't matter).

Kent argued that an extension definition in YANG cannot make an
annotation part of the contract between the server and client: the
client can ignore it, and so the fact that the extension is defined in a
module advertised by the server isn't sufficient for the server to start
using the annotation and expect the client to take it into
account. Hence "by other means", which can be, e.g. a capability.

>
>
> Editorial issues:
>
>   o  You may want to change the "inactive" example to something less
>      controversial.  For example:

Yes, I've also realized this. I just thought it might be good to show an
example with a non-string type and haven't got a better idea yet.

>
>      module example-comment {
>        namespace "http://example.org/example-comment";
>        prefix "ein";
>        import ietf-yang-metadata {
>          prefix "md";
>        }
>        md:annotation comment {
>          type string;
>          description
>            "This annotation is used to attach a free-form comment to
>             any data node.";
>        }
>      }
>
>
>   o  Update the copyright year to 2015.

OK.

Thanks, Lada

>
>
> /martin
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Wed Jun 17 02:39:46 2015
Return-Path: <jernej.tuljak@mg-soft.si>
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 0FF051A87E2 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 02:39:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, 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 ap0dMtrwRhZf for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 02:39:42 -0700 (PDT)
Received: from galileo.mg-soft.si (gate.mg-soft.si [212.30.73.66]) by ietfa.amsl.com (Postfix) with ESMTP id B67FF1A87E0 for <netmod@ietf.org>; Wed, 17 Jun 2015 02:39:42 -0700 (PDT)
Received: from [10.0.0.222] (tp-x61t.mg-soft.si [10.0.0.222]) by galileo.mg-soft.si (Postfix) with ESMTP id 17E18C4175C1 for <netmod@ietf.org>; Wed, 17 Jun 2015 11:39:38 +0200 (CEST)
Message-ID: <55814057.5030308@mg-soft.si>
Date: Wed, 17 Jun 2015 11:39:35 +0200
From: Jernej Tuljak <jernej.tuljak@mg-soft.si>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: NETMOD Working Group <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="------------030907060505030901060307"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/vTuFpl0IsG8OZGK-6RPqDV9bj3Q>
Subject: [netmod] What is a 'list instance' (draft-ietf-netmod-yang-json-04)?
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, 17 Jun 2015 09:39:45 -0000

This is a multi-part message in MIME format.
--------------030907060505030901060307
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

the YANG/JSON draft is using some wording that confused me (Section 5.4.).

A list instance is encoded as a name/array pair, and the array
elements are JSON objects.

I would have expected it to say something like (judging by examples):

All entires of a list are encoded as a single name/array pair, where the
array elements are JSON objects representing individual list entries.

In RFC6020 (Section 7.8.).

The "list" statement is used to define an interior data node in the
schema tree.  A list node may exist in multiple instances in the data
tree.  Each such instance is known as a list entry.

Which suggests multiple instances of a list. Are you saying that, in 
JSON mapping, there can only be a single list instance?

The last paragraph in 5. also sounds suspicious:

Any data node instance is encoded as a name/value pair where the name
is formed from the data node identifier using the rules ofSection 4  <https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04#section-4>.
The value depends on the category of the data node as explained in
the following subsections.

Jernej

--------------030907060505030901060307
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=windows-1252">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi,<br>
    <br>
    the YANG/JSON draft is using some wording that confused me (Section
    5.4.).<br>
    <pre class="newpage">A list instance is encoded as a name/array pair, and the array
elements are JSON objects.</pre>
    I would have expected it to say something like (judging by
    examples):<br>
    <pre class="newpage">All entires of a list are encoded as a single name/array pair, where the
array elements are JSON objects representing individual list entries.</pre>
    In RFC6020 (Section 7.8.).<br>
    <pre class="newpage">The "list" statement is used to define an interior data node in the
schema tree.  A list node may exist in multiple instances in the data
tree.  Each such instance is known as a list entry.</pre>
    Which suggests multiple instances of a list. Are you saying that, in
    JSON mapping, there can only be a single list instance?<br>
    <br>
    The last paragraph in 5. also sounds suspicious:<br>
    <pre class="newpage">Any data node instance is encoded as a name/value pair where the name
is formed from the data node identifier using the rules of <a href="https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04#section-4">Section 4</a>.
The value depends on the category of the data node as explained in
the following subsections.</pre>
    Jernej<br>
  </body>
</html>

--------------030907060505030901060307--


From nobody Wed Jun 17 03:12:22 2015
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 AC55F1A8885 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 03:12:21 -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 ZTp1K0Nuq8au for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 03:12:20 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id BEB211A889C for <netmod@ietf.org>; Wed, 17 Jun 2015 03:12:19 -0700 (PDT)
Received: from localhost (unknown [173.38.220.44]) by mail.tail-f.com (Postfix) with ESMTPSA id 89A8D1AE0483; Wed, 17 Jun 2015 12:12:17 +0200 (CEST)
Date: Wed, 17 Jun 2015 12:12:16 +0200 (CEST)
Message-Id: <20150617.121216.1211666276307602571.mbj@tail-f.com>
To: lhotka@nic.cz
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <m2vbem4ryj.fsf@nic.cz>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150617.095439.2211831130594238981.mbj@tail-f.com> <m2vbem4ryj.fsf@nic.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/NILDSEC4EKKNWKlis_zzMf13I7g>
Cc: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 10:12:21 -0000

Ladislav Lhotka <lhotka@nic.cz> wrote:
> Hi Martin,
> 
> thanks for the review.
> 
> Martin Bjorklund <mbj@tail-f.com> writes:
> >   o  Last paragraph of section 3 and the "description" in the
> >      extension.
> >
> >      The text says that semantics are defined "by other means".  I
> >      think the semantics should be defined in the
> >      description/reference statements (by using links or inline text
> >      doesn't matter).
> 
> Kent argued that an extension definition in YANG cannot make an
> annotation part of the contract between the server and client: the
> client can ignore it, and so the fact that the extension is defined in a
> module advertised by the server isn't sufficient for the server to start
> using the annotation and expect the client to take it into
> account.

Agreed.

> Hence "by other means", which can be, e.g. a capability.

Take the inactive thing as an example.  I would assume that by
advertising the module where inactive is advertised, the server
announces that it implements the syntax *and semantics* of this new
annotation.  I do not expect one capability for the syntax, and
another for the semantics.

(I also note that your requirement lists:

   2.  Syntax and semantics of annotations must be documented and the
       documentation must be easily accessible.
)


But I also don't want this document to go into all details of how
different annotations can be used; this needs to be carefully designed
for each annotation.  

I suggest something like this:

OLD:

   By advertising a YANG module in which metadata annotation A is
   defined using the "md:annotation" statement, a server specifies
   support for the syntax of annotation A.  This means that
   configuration or state data, RPC messages and notifications will be
   considered syntactically valid if annotation A is attached to any
   data node instance, provided that all rules stated in this document
   are observed.

   However, the semantics of an annotation, usage rules, and expected
   behavior of clients and servers MUST be specified separately by other
   means that are outside the scope of this document.

NEW:

   By advertising a YANG module in which metadata annotation A is
   defined using the "md:annotation" statement, a server specifies
   support for the syntax and semantics of annotation A.  This means that
   configuration or state data, RPC messages and notifications will be
   considered syntactically valid if annotation A is attached to any
   data node instance, provided that all rules stated in this document
   are observed.


and

OLD:

          A server announces syntactic support for a particular
          annotation by including the module in which the annotation is
          defined among the advertised YANG modules (e.g., in NETCONF
          hello message).

          Semantics and usage rules for an annotation MUST be specified
          separately. The 'description' and/or 'reference' statements
          SHOULD provide corresponding links.

NEW:

          A server announces support for a particular
          annotation by including the module in which the annotation is
          defined among the advertised YANG modules (e.g., in NETCONF
          hello message).




/martin


From nobody Wed Jun 17 03:52:49 2015
Return-Path: <lhotka@nic.cz>
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 011BB1A026A for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 03:52:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.661
X-Spam-Level: 
X-Spam-Status: No, score=-0.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, T_RP_MATCHES_RCVD=-0.01] 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 YUwkW0_0U6DG for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 03:52:46 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 44CB51A02BE for <netmod@ietf.org>; Wed, 17 Jun 2015 03:52:46 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 9F9EA180C53; Wed, 17 Jun 2015 12:52:44 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434538364; bh=WJumpfcxXoBEX1uvt8mIU+QKLa6zlpeNxo9rg5hgf0I=; h=From:Date:To; b=clnvF8imj38b1QxeeRxPrkLU94Nt2Se5WT6WbLBSPDsPWfWoFGiQOTEUjasUHTRnR GKufoikYQNzrrvqYqGzLmPuwUJ/rHEOKDc3vDaUVqOnZiG9pOxp7mFhcv1e+Y/cdl3 Fm1DQEMmZXHHBcpQIFfba7ZfZyZRwcEQyYy9wP8M=
Content-Type: text/plain; charset=windows-1252
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <55814057.5030308@mg-soft.si>
Date: Wed, 17 Jun 2015 12:52:45 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <E9178CD0-30B6-49B6-AC4E-6B07FBC65B5B@nic.cz>
References: <55814057.5030308@mg-soft.si>
To: Jernej Tuljak <jernej.tuljak@mg-soft.si>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/INkQiIElyFD880UqsrHaN8sx4Q4>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] What is a 'list instance' (draft-ietf-netmod-yang-json-04)?
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, 17 Jun 2015 10:52:48 -0000

> On 17 Jun 2015, at 11:39, Jernej Tuljak <jernej.tuljak@mg-soft.si> =
wrote:
>=20
> Hi,
>=20
> the YANG/JSON draft is using some wording that confused me (Section =
5.4.).
> A list instance is encoded as a name/array pair, and the array
> elements are JSON objects.
>=20
> I would have expected it to say something like (judging by examples):
> All entires of a list are encoded as a single name/array pair, where =
the
> array elements are JSON objects representing individual list entries.
>=20
> In RFC6020 (Section 7.8.).
> The "list" statement is used to define an interior data node in the
> schema tree.  A list node may exist in multiple instances in the data
> tree.  Each such instance is known as a list entry.
>=20
> Which suggests multiple instances of a list. Are you saying that, in =
JSON mapping, there can only be a single list instance?

No, what I mean by =93list instance=94 is a counterpart, or =
materialisation, of a list data node. In 6020(bis), the term =93instance=94=
 is used somewhat loosely and no definition is provided. This example is =
in section 7.7.10:

     leaf-list allow-user  {
         type string;
         description "A list of user name patterns to allow";
     }

   A corresponding XML instance example:

     <allow-user>alice</allow-user>
     <allow-user>bob</allow-user>

>=20
> The last paragraph in 5. also sounds suspicious:
> Any data node instance is encoded as a name/value pair where the name
> is formed from the data node identifier using the rules of=20
> Section 4
> .
> The value depends on the category of the data node as explained in
> the following subsections.

It=92s the same: a data node is in the schema and its instance in the =
data tree. I already proposed to define the term =93data node instance=94 =
in YANG spec (or otherwise clarify this issue).=20

Lada

>=20
> Jernej
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 17 04:43:09 2015
Return-Path: <lhotka@nic.cz>
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 6E2C31A89B0 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 04:43:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.361
X-Spam-Level: 
X-Spam-Status: No, score=-0.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] 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 MqLC3S5NSYZo for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 04:43:06 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B54B81A8998 for <netmod@ietf.org>; Wed, 17 Jun 2015 04:41:56 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 421821813AA; Wed, 17 Jun 2015 13:41:55 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434541315; bh=tiVzK/IphNA+cGBj+l4D15hz1TbuD4d5BOrO63oZqNA=; h=From:Date:To; b=PpFoJPZpfCYjThekFK7fSEcliJbJYsKvkVSo3EGLVC793JwZXmjIV8CwmyjsL8z61 ijjrz/pA043tiWw4KZpocE570yt6+LzCgahb1fxEO82ZZRQ6Lv+1Np0nRzyeb654LG Ooou4NdSRbEyeIXgsqQpPcLczftaYz/AKtw7qd1c=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150617.121216.1211666276307602571.mbj@tail-f.com>
Date: Wed, 17 Jun 2015 13:41:56 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150617.095439.2211831130594238981.mbj@tail-f.com> <m2vbem4ryj.fsf@nic.cz> <20150617.121216.1211666276307602571.mbj@tail-f.com>
To: =?utf-8?Q?Martin_Bj=C3=B6rklund?= <mbj@tail-f.com>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/L3wbQMUEwmRmFLbLqEuGE4D7r9w>
Cc: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 11:43:08 -0000

> On 17 Jun 2015, at 12:12, Martin Bjorklund <mbj@tail-f.com> wrote:
>=20
> Ladislav Lhotka <lhotka@nic.cz> wrote:
>> Hi Martin,
>>=20
>> thanks for the review.
>>=20
>> Martin Bjorklund <mbj@tail-f.com> writes:
>>>  o  Last paragraph of section 3 and the "description" in the
>>>     extension.
>>>=20
>>>     The text says that semantics are defined "by other means".  I
>>>     think the semantics should be defined in the
>>>     description/reference statements (by using links or inline text
>>>     doesn't matter).
>>=20
>> Kent argued that an extension definition in YANG cannot make an
>> annotation part of the contract between the server and client: the
>> client can ignore it, and so the fact that the extension is defined =
in a
>> module advertised by the server isn't sufficient for the server to =
start
>> using the annotation and expect the client to take it into
>> account.
>=20
> Agreed.
>=20
>> Hence "by other means", which can be, e.g. a capability.
>=20
> Take the inactive thing as an example.  I would assume that by
> advertising the module where inactive is advertised, the server
> announces that it implements the syntax *and semantics* of this new
> annotation.  I do not expect one capability for the syntax, and
> another for the semantics.

Well, but it is exactly what Kent objected against. It is the =
requirement to support =E2=80=9Cold clients=E2=80=9D that causes the =
trouble here (and elsewhere). If client A sets =E2=80=9Cinactive=E2=80=9D =
somewhere, then the datastore semantics will change also for client B =
that doesn=E2=80=99t understand =E2=80=9Cinactive=E2=80=9D and may be =
wondering why the server ignores his edits.

I understand (although RFC 6241 doesn=E2=80=99t say it explicitly) that, =
unlike YANG extensions, a NETCONF capability advertised by the server =
can be mandatory for the client in the sense that it has to understand =
and honour it.

A conclusion of this may be that it makes no sense to define annotations =
through YANG extension after all. On the other hand, I do see a value of =
having annotations defined in YANG modules.

Lada


>=20
> (I also note that your requirement lists:
>=20
>   2.  Syntax and semantics of annotations must be documented and the
>       documentation must be easily accessible.
> )
>=20
>=20
> But I also don't want this document to go into all details of how
> different annotations can be used; this needs to be carefully designed
> for each annotation. =20
>=20
> I suggest something like this:
>=20
> OLD:
>=20
>   By advertising a YANG module in which metadata annotation A is
>   defined using the "md:annotation" statement, a server specifies
>   support for the syntax of annotation A.  This means that
>   configuration or state data, RPC messages and notifications will be
>   considered syntactically valid if annotation A is attached to any
>   data node instance, provided that all rules stated in this document
>   are observed.
>=20
>   However, the semantics of an annotation, usage rules, and expected
>   behavior of clients and servers MUST be specified separately by =
other
>   means that are outside the scope of this document.
>=20
> NEW:
>=20
>   By advertising a YANG module in which metadata annotation A is
>   defined using the "md:annotation" statement, a server specifies
>   support for the syntax and semantics of annotation A.  This means =
that
>   configuration or state data, RPC messages and notifications will be
>   considered syntactically valid if annotation A is attached to any
>   data node instance, provided that all rules stated in this document
>   are observed.
>=20
>=20
> and
>=20
> OLD:
>=20
>          A server announces syntactic support for a particular
>          annotation by including the module in which the annotation is
>          defined among the advertised YANG modules (e.g., in NETCONF
>          hello message).
>=20
>          Semantics and usage rules for an annotation MUST be specified
>          separately. The 'description' and/or 'reference' statements
>          SHOULD provide corresponding links.
>=20
> NEW:
>=20
>          A server announces support for a particular
>          annotation by including the module in which the annotation is
>          defined among the advertised YANG modules (e.g., in NETCONF
>          hello message).
>=20
>=20
>=20
>=20
> /martin

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 17 04:51:17 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 D32CB1A8A5E for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 04:51:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 OTYrT0UlXAjM for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 04:51:13 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3B4A21A8A39 for <netmod@ietf.org>; Wed, 17 Jun 2015 04:51:13 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 1833C152A; Wed, 17 Jun 2015 13:51:11 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 1wH-qyGJbPdw; Wed, 17 Jun 2015 13:51:06 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Wed, 17 Jun 2015 13:51:10 +0200 (CEST)
Received: from localhost (demetrius1.jacobs-university.de [212.201.44.46]) by hermes.jacobs-university.de (Postfix) with ESMTP id 3497B20013; Wed, 17 Jun 2015 13:51:11 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius1.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id sfZBH9LpFx-s; Wed, 17 Jun 2015 13:51:04 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id DC00E2002B; Wed, 17 Jun 2015 13:51:09 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id AC516347520F; Wed, 17 Jun 2015 13:51:09 +0200 (CEST)
Date: Wed, 17 Jun 2015 13:51:09 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150617115109.GC21292@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Martin =?iso-8859-1?Q?Bj=F6rklund?= <mbj@tail-f.com>, netmod@ietf.org
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150617.095439.2211831130594238981.mbj@tail-f.com> <m2vbem4ryj.fsf@nic.cz> <20150617.121216.1211666276307602571.mbj@tail-f.com> <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Qz8_ilqrIjyBkgn93NlDzLB-03g>
Cc: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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, 17 Jun 2015 11:51:16 -0000

On Wed, Jun 17, 2015 at 01:41:56PM +0200, Ladislav Lhotka wrote:
> 
> 
> Well, but it is exactly what Kent objected against. It is the requirement to support â€œold clientsâ€ that causes the trouble here (and elsewhere). If client A sets â€œinactiveâ€ somewhere, then the datastore semantics will change also for client B that doesnâ€™t understand â€œinactiveâ€ and may be wondering why the server ignores his edits.
> 
> I understand (although RFC 6241 doesnâ€™t say it explicitly) that, unlike YANG extensions, a NETCONF capability advertised by the server can be mandatory for the client in the sense that it has to understand and honour it.

There is no way for a client to tell whether a certain capability URI
(it has never seen before) is mandatory to understand or not. In fact,
I would say in a proper solution it would be the server would have to
close the connection if it finds a client that does not understand its
language. And yes, we are on very slippery grounds here. If
implementors can create arbitrary cool 'annotations' that break
clients that do not understand them, we will loose interoperability.

> A conclusion of this may be that it makes no sense to define
> annotations through YANG extension after all. On the other hand, I
> do see a value of having annotations defined in YANG modules.

Without further protocol support to negotiate annotations, I think
annotations must be limited to things that can be safely ignored by a
client. I have not read the I-D yet but I would expect that it should
say something like that. ;-)

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Wed Jun 17 05:20:07 2015
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 0EAC71A8ACB for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:20:06 -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 uu5KcqwzciUW for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:20:04 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 24CE61A8ACD for <netmod@ietf.org>; Wed, 17 Jun 2015 05:20:04 -0700 (PDT)
Received: from localhost (unknown [173.38.220.44]) by mail.tail-f.com (Postfix) with ESMTPSA id 352D31AE0483; Wed, 17 Jun 2015 14:20:02 +0200 (CEST)
Date: Wed, 17 Jun 2015 14:20:01 +0200 (CEST)
Message-Id: <20150617.142001.867595367172645339.mbj@tail-f.com>
To: lhotka@nic.cz
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz>
References: <m2vbem4ryj.fsf@nic.cz> <20150617.121216.1211666276307602571.mbj@tail-f.com> <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz>
X-Mailer: Mew version 6.5 on Emacs 23.4 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=utf-8
Content-Transfer-Encoding: base64
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/uU2wdvwhyxiTIvDYGRT-e0AP2_w>
Cc: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 12:20:06 -0000

TGFkaXNsYXYgTGhvdGthIDxsaG90a2FAbmljLmN6PiB3cm90ZToNCj4gDQo+ID4gT24gMTcgSnVu
IDIwMTUsIGF0IDEyOjEyLCBNYXJ0aW4gQmpvcmtsdW5kIDxtYmpAdGFpbC1mLmNvbT4gd3JvdGU6
DQo+ID4gDQo+ID4gTGFkaXNsYXYgTGhvdGthIDxsaG90a2FAbmljLmN6PiB3cm90ZToNCj4gPj4g
SGkgTWFydGluLA0KPiA+PiANCj4gPj4gdGhhbmtzIGZvciB0aGUgcmV2aWV3Lg0KPiA+PiANCj4g
Pj4gTWFydGluIEJqb3JrbHVuZCA8bWJqQHRhaWwtZi5jb20+IHdyaXRlczoNCj4gPj4+ICBvICBM
YXN0IHBhcmFncmFwaCBvZiBzZWN0aW9uIDMgYW5kIHRoZSAiZGVzY3JpcHRpb24iIGluIHRoZQ0K
PiA+Pj4gICAgIGV4dGVuc2lvbi4NCj4gPj4+IA0KPiA+Pj4gICAgIFRoZSB0ZXh0IHNheXMgdGhh
dCBzZW1hbnRpY3MgYXJlIGRlZmluZWQgImJ5IG90aGVyIG1lYW5zIi4gIEkNCj4gPj4+ICAgICB0
aGluayB0aGUgc2VtYW50aWNzIHNob3VsZCBiZSBkZWZpbmVkIGluIHRoZQ0KPiA+Pj4gICAgIGRl
c2NyaXB0aW9uL3JlZmVyZW5jZSBzdGF0ZW1lbnRzIChieSB1c2luZyBsaW5rcyBvciBpbmxpbmUg
dGV4dA0KPiA+Pj4gICAgIGRvZXNuJ3QgbWF0dGVyKS4NCj4gPj4gDQo+ID4+IEtlbnQgYXJndWVk
IHRoYXQgYW4gZXh0ZW5zaW9uIGRlZmluaXRpb24gaW4gWUFORyBjYW5ub3QgbWFrZSBhbg0KPiA+
PiBhbm5vdGF0aW9uIHBhcnQgb2YgdGhlIGNvbnRyYWN0IGJldHdlZW4gdGhlIHNlcnZlciBhbmQg
Y2xpZW50OiB0aGUNCj4gPj4gY2xpZW50IGNhbiBpZ25vcmUgaXQsIGFuZCBzbyB0aGUgZmFjdCB0
aGF0IHRoZSBleHRlbnNpb24gaXMgZGVmaW5lZCBpbg0KPiA+PiBhDQo+ID4+IG1vZHVsZSBhZHZl
cnRpc2VkIGJ5IHRoZSBzZXJ2ZXIgaXNuJ3Qgc3VmZmljaWVudCBmb3IgdGhlIHNlcnZlciB0bw0K
PiA+PiBzdGFydA0KPiA+PiB1c2luZyB0aGUgYW5ub3RhdGlvbiBhbmQgZXhwZWN0IHRoZSBjbGll
bnQgdG8gdGFrZSBpdCBpbnRvDQo+ID4+IGFjY291bnQuDQo+ID4gDQo+ID4gQWdyZWVkLg0KPiA+
IA0KPiA+PiBIZW5jZSAiYnkgb3RoZXIgbWVhbnMiLCB3aGljaCBjYW4gYmUsIGUuZy4gYSBjYXBh
YmlsaXR5Lg0KPiA+IA0KPiA+IFRha2UgdGhlIGluYWN0aXZlIHRoaW5nIGFzIGFuIGV4YW1wbGUu
ICBJIHdvdWxkIGFzc3VtZSB0aGF0IGJ5DQo+ID4gYWR2ZXJ0aXNpbmcgdGhlIG1vZHVsZSB3aGVy
ZSBpbmFjdGl2ZSBpcyBhZHZlcnRpc2VkLCB0aGUgc2VydmVyDQo+ID4gYW5ub3VuY2VzIHRoYXQg
aXQgaW1wbGVtZW50cyB0aGUgc3ludGF4ICphbmQgc2VtYW50aWNzKiBvZiB0aGlzIG5ldw0KPiA+
IGFubm90YXRpb24uICBJIGRvIG5vdCBleHBlY3Qgb25lIGNhcGFiaWxpdHkgZm9yIHRoZSBzeW50
YXgsIGFuZA0KPiA+IGFub3RoZXIgZm9yIHRoZSBzZW1hbnRpY3MuDQo+IA0KPiBXZWxsLCBidXQg
aXQgaXMgZXhhY3RseSB3aGF0IEtlbnQgb2JqZWN0ZWQgYWdhaW5zdC4gSXQgaXMgdGhlDQo+IHJl
cXVpcmVtZW50IHRvIHN1cHBvcnQg4oCcb2xkIGNsaWVudHPigJ0gdGhhdCBjYXVzZXMgdGhlIHRy
b3VibGUgaGVyZSAoYW5kDQo+IGVsc2V3aGVyZSkuIElmIGNsaWVudCBBIHNldHMg4oCcaW5hY3Rp
dmXigJ0gc29tZXdoZXJlLCB0aGVuIHRoZSBkYXRhc3RvcmUNCj4gc2VtYW50aWNzIHdpbGwgY2hh
bmdlIGFsc28gZm9yIGNsaWVudCBCIHRoYXQgZG9lc27igJl0IHVuZGVyc3RhbmQNCj4g4oCcaW5h
Y3RpdmXigJ0gYW5kIG1heSBiZSB3b25kZXJpbmcgd2h5IHRoZSBzZXJ2ZXIgaWdub3JlcyBoaXMg
ZWRpdHMuDQoNCkFic29sdXRlbHkhDQoNCj4gSSB1bmRlcnN0YW5kIChhbHRob3VnaCBSRkMgNjI0
MSBkb2VzbuKAmXQgc2F5IGl0IGV4cGxpY2l0bHkpIHRoYXQsDQo+IHVubGlrZSBZQU5HIGV4dGVu
c2lvbnMsIGEgTkVUQ09ORiBjYXBhYmlsaXR5IGFkdmVydGlzZWQgYnkgdGhlIHNlcnZlcg0KPiBj
YW4gYmUgbWFuZGF0b3J5IGZvciB0aGUgY2xpZW50IGluIHRoZSBzZW5zZSB0aGF0IGl0IGhhcyB0
byB1bmRlcnN0YW5kDQo+IGFuZCBob25vdXIgaXQuDQoNCk5vIQ0KDQpNeSBwb2ludCBpcyB0aGF0
IGhvdyB0aGlzIGFmZmVjdHMgdGhlIGNsaWVudCBtdXN0IGJlIGNvbnNpZGVyZWQNCmNhc2UtYnkt
Y2FzZS4NCg0KSW4gb3VyIGltcGxlbWVudGF0aW9uIHdlIHN1cHBvcnQgaW5hY3RpdmUsIGJ1dCB0
aGUgc2VydmVyIHNlbmRzIHRoZQ0KYXR0cmlidXRlIG9ubHkgaWYgdGhlIGNsaWVudCBleHBsY2l0
bHkgYXNrcyBmb3IgaXQNCig8d2l0aC1pbmFjdGl2ZT50cnVlPC93aXRoLWluYWN0aXZlPiwgc2lt
aWxhciB0byB3aXRoLWRlZmF1bHQpLg0KDQo+IEEgY29uY2x1c2lvbiBvZiB0aGlzIG1heSBiZSB0
aGF0IGl0IG1ha2VzIG5vIHNlbnNlIHRvIGRlZmluZQ0KPiBhbm5vdGF0aW9ucyB0aHJvdWdoIFlB
TkcgZXh0ZW5zaW9uIGFmdGVyIGFsbC4NCg0KTm8gSSB0aGluayB0aGlzIGlzIHRoZSByaWdodCB3
YXkgdG8gZG8gaXQuDQoNCg0KL21hcnRpbg0KDQo+IE9uIHRoZSBvdGhlciBoYW5kLCBJIGRvDQo+
IHNlZSBhIHZhbHVlIG9mIGhhdmluZyBhbm5vdGF0aW9ucyBkZWZpbmVkIGluIFlBTkcgbW9kdWxl
cy4NCj4gDQo+IExhZGENCj4gDQo+IA0KPiA+IA0KPiA+IChJIGFsc28gbm90ZSB0aGF0IHlvdXIg
cmVxdWlyZW1lbnQgbGlzdHM6DQo+ID4gDQo+ID4gICAyLiAgU3ludGF4IGFuZCBzZW1hbnRpY3Mg
b2YgYW5ub3RhdGlvbnMgbXVzdCBiZSBkb2N1bWVudGVkIGFuZCB0aGUNCj4gPiAgICAgICBkb2N1
bWVudGF0aW9uIG11c3QgYmUgZWFzaWx5IGFjY2Vzc2libGUuDQo+ID4gKQ0KPiA+IA0KPiA+IA0K
PiA+IEJ1dCBJIGFsc28gZG9uJ3Qgd2FudCB0aGlzIGRvY3VtZW50IHRvIGdvIGludG8gYWxsIGRl
dGFpbHMgb2YgaG93DQo+ID4gZGlmZmVyZW50IGFubm90YXRpb25zIGNhbiBiZSB1c2VkOyB0aGlz
IG5lZWRzIHRvIGJlIGNhcmVmdWxseSBkZXNpZ25lZA0KPiA+IGZvciBlYWNoIGFubm90YXRpb24u
ICANCj4gPiANCj4gPiBJIHN1Z2dlc3Qgc29tZXRoaW5nIGxpa2UgdGhpczoNCj4gPiANCj4gPiBP
TEQ6DQo+ID4gDQo+ID4gICBCeSBhZHZlcnRpc2luZyBhIFlBTkcgbW9kdWxlIGluIHdoaWNoIG1l
dGFkYXRhIGFubm90YXRpb24gQSBpcw0KPiA+ICAgZGVmaW5lZCB1c2luZyB0aGUgIm1kOmFubm90
YXRpb24iIHN0YXRlbWVudCwgYSBzZXJ2ZXIgc3BlY2lmaWVzDQo+ID4gICBzdXBwb3J0IGZvciB0
aGUgc3ludGF4IG9mIGFubm90YXRpb24gQS4gIFRoaXMgbWVhbnMgdGhhdA0KPiA+ICAgY29uZmln
dXJhdGlvbiBvciBzdGF0ZSBkYXRhLCBSUEMgbWVzc2FnZXMgYW5kIG5vdGlmaWNhdGlvbnMgd2ls
bCBiZQ0KPiA+ICAgY29uc2lkZXJlZCBzeW50YWN0aWNhbGx5IHZhbGlkIGlmIGFubm90YXRpb24g
QSBpcyBhdHRhY2hlZCB0byBhbnkNCj4gPiAgIGRhdGEgbm9kZSBpbnN0YW5jZSwgcHJvdmlkZWQg
dGhhdCBhbGwgcnVsZXMgc3RhdGVkIGluIHRoaXMgZG9jdW1lbnQNCj4gPiAgIGFyZSBvYnNlcnZl
ZC4NCj4gPiANCj4gPiAgIEhvd2V2ZXIsIHRoZSBzZW1hbnRpY3Mgb2YgYW4gYW5ub3RhdGlvbiwg
dXNhZ2UgcnVsZXMsIGFuZCBleHBlY3RlZA0KPiA+ICAgYmVoYXZpb3Igb2YgY2xpZW50cyBhbmQg
c2VydmVycyBNVVNUIGJlIHNwZWNpZmllZCBzZXBhcmF0ZWx5IGJ5IG90aGVyDQo+ID4gICBtZWFu
cyB0aGF0IGFyZSBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIGRvY3VtZW50Lg0KPiA+IA0KPiA+
IE5FVzoNCj4gPiANCj4gPiAgIEJ5IGFkdmVydGlzaW5nIGEgWUFORyBtb2R1bGUgaW4gd2hpY2gg
bWV0YWRhdGEgYW5ub3RhdGlvbiBBIGlzDQo+ID4gICBkZWZpbmVkIHVzaW5nIHRoZSAibWQ6YW5u
b3RhdGlvbiIgc3RhdGVtZW50LCBhIHNlcnZlciBzcGVjaWZpZXMNCj4gPiAgIHN1cHBvcnQgZm9y
IHRoZSBzeW50YXggYW5kIHNlbWFudGljcyBvZiBhbm5vdGF0aW9uIEEuICBUaGlzIG1lYW5zIHRo
YXQNCj4gPiAgIGNvbmZpZ3VyYXRpb24gb3Igc3RhdGUgZGF0YSwgUlBDIG1lc3NhZ2VzIGFuZCBu
b3RpZmljYXRpb25zIHdpbGwgYmUNCj4gPiAgIGNvbnNpZGVyZWQgc3ludGFjdGljYWxseSB2YWxp
ZCBpZiBhbm5vdGF0aW9uIEEgaXMgYXR0YWNoZWQgdG8gYW55DQo+ID4gICBkYXRhIG5vZGUgaW5z
dGFuY2UsIHByb3ZpZGVkIHRoYXQgYWxsIHJ1bGVzIHN0YXRlZCBpbiB0aGlzIGRvY3VtZW50DQo+
ID4gICBhcmUgb2JzZXJ2ZWQuDQo+ID4gDQo+ID4gDQo+ID4gYW5kDQo+ID4gDQo+ID4gT0xEOg0K
PiA+IA0KPiA+ICAgICAgICAgIEEgc2VydmVyIGFubm91bmNlcyBzeW50YWN0aWMgc3VwcG9ydCBm
b3IgYSBwYXJ0aWN1bGFyDQo+ID4gICAgICAgICAgYW5ub3RhdGlvbiBieSBpbmNsdWRpbmcgdGhl
IG1vZHVsZSBpbiB3aGljaCB0aGUgYW5ub3RhdGlvbiBpcw0KPiA+ICAgICAgICAgIGRlZmluZWQg
YW1vbmcgdGhlIGFkdmVydGlzZWQgWUFORyBtb2R1bGVzIChlLmcuLCBpbiBORVRDT05GDQo+ID4g
ICAgICAgICAgaGVsbG8gbWVzc2FnZSkuDQo+ID4gDQo+ID4gICAgICAgICAgU2VtYW50aWNzIGFu
ZCB1c2FnZSBydWxlcyBmb3IgYW4gYW5ub3RhdGlvbiBNVVNUIGJlIHNwZWNpZmllZA0KPiA+ICAg
ICAgICAgIHNlcGFyYXRlbHkuIFRoZSAnZGVzY3JpcHRpb24nIGFuZC9vciAncmVmZXJlbmNlJyBz
dGF0ZW1lbnRzDQo+ID4gICAgICAgICAgU0hPVUxEIHByb3ZpZGUgY29ycmVzcG9uZGluZyBsaW5r
cy4NCj4gPiANCj4gPiBORVc6DQo+ID4gDQo+ID4gICAgICAgICAgQSBzZXJ2ZXIgYW5ub3VuY2Vz
IHN1cHBvcnQgZm9yIGEgcGFydGljdWxhcg0KPiA+ICAgICAgICAgIGFubm90YXRpb24gYnkgaW5j
bHVkaW5nIHRoZSBtb2R1bGUgaW4gd2hpY2ggdGhlIGFubm90YXRpb24gaXMNCj4gPiAgICAgICAg
ICBkZWZpbmVkIGFtb25nIHRoZSBhZHZlcnRpc2VkIFlBTkcgbW9kdWxlcyAoZS5nLiwgaW4gTkVU
Q09ORg0KPiA+ICAgICAgICAgIGhlbGxvIG1lc3NhZ2UpLg0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+
IA0KPiA+IC9tYXJ0aW4NCj4gDQo+IC0tDQo+IExhZGlzbGF2IExob3RrYSwgQ1ouTklDIExhYnMN
Cj4gUEdQIEtleSBJRDogRTc0RThDMEMNCj4gDQo+IA0KPiANCj4gDQo=


From nobody Wed Jun 17 05:34:56 2015
Return-Path: <lhotka@nic.cz>
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 01D971A8F4B for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:34:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.361
X-Spam-Level: 
X-Spam-Status: No, score=-0.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] 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 jnpD_PcVCd_w for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:34:53 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4AD361A8F46 for <netmod@ietf.org>; Wed, 17 Jun 2015 05:34:53 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 63178181397; Wed, 17 Jun 2015 14:34:51 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434544491; bh=DufjYfmGQtonB0c8uE0MwBsoNUQDqUF8v1y4vFwbK9g=; h=From:Date:To; b=uw2R43uQnZ8q2hOamu/A6oeT36QAlR4pgl8w5JLForlDC1wLUOIPLgF/XQ7t7MWhX 98Mg4N+ErwOHN9NKHMIdvuwcKfhy3comuIVfmMANkMRHDNn6x1bHXa9Xry8Qbo4D0A pTpgUF7VIZt1JISobgiR0gIG3JgLxb97JVeTKaEI=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150617115109.GC21292@elstar.local>
Date: Wed, 17 Jun 2015 14:34:52 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <4D6394A6-06D1-4275-8151-E1C34DB20965@nic.cz>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150617.095439.2211831130594238981.mbj@tail-f.com> <m2vbem4ryj.fsf@nic.cz> <20150617.121216.1211666276307602571.mbj@tail-f.com> <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz> <20150617115109.GC21292@elstar.local>
To: =?utf-8?Q?J=C3=BCrgen_Sch=C3=B6nw=C3=A4lder?= <j.schoenwaelder@jacobs-university.de>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/9z3YIQQmqqdkeIALe__2LDSLJ0o>
Cc: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 12:34:55 -0000

> On 17 Jun 2015, at 13:51, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>=20
> On Wed, Jun 17, 2015 at 01:41:56PM +0200, Ladislav Lhotka wrote:
>>=20
>>=20
>> Well, but it is exactly what Kent objected against. It is the =
requirement to support =E2=80=9Cold clients=E2=80=9D that causes the =
trouble here (and elsewhere). If client A sets =E2=80=9Cinactive=E2=80=9D =
somewhere, then the datastore semantics will change also for client B =
that doesn=E2=80=99t understand =E2=80=9Cinactive=E2=80=9D and may be =
wondering why the server ignores his edits.
>>=20
>> I understand (although RFC 6241 doesn=E2=80=99t say it explicitly) =
that, unlike YANG extensions, a NETCONF capability advertised by the =
server can be mandatory for the client in the sense that it has to =
understand and honour it.
>=20
> There is no way for a client to tell whether a certain capability URI
> (it has never seen before) is mandatory to understand or not. In fact,

So it means that, e.g. the annotations from

https://tools.ietf.org/html/draft-kwatsen-conditional-enablement-00

cannot be safely used by the server even after advertising them via =
:conditional-enablement capability.=20

> I would say in a proper solution it would be the server would have to
> close the connection if it finds a client that does not understand its
> language. And yes, we are on very slippery grounds here. If
> implementors can create arbitrary cool 'annotations' that break
> clients that do not understand them, we will loose interoperability.
>=20
>> A conclusion of this may be that it makes no sense to define
>> annotations through YANG extension after all. On the other hand, I
>> do see a value of having annotations defined in YANG modules.
>=20
> Without further protocol support to negotiate annotations, I think
> annotations must be limited to things that can be safely ignored by a
> client. I have not read the I-D yet but I would expect that it should
> say something like that. ;-)

But it=E2=80=99s not a specific problem of this draft, it would simply =
mean that annotations that cannot be ignored cannot be used at all, no =
matter what. However, some annotations that have been proposed (and =
probably used in the wild) are of that sort.

Lada

>=20
> /js
>=20
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 17 05:43:02 2015
Return-Path: <lhotka@nic.cz>
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 B5F4D1A9059 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:43:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.361
X-Spam-Level: 
X-Spam-Status: No, score=-0.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] 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 bBcMmF3U05yR for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:43:00 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 433FB1A9055 for <netmod@ietf.org>; Wed, 17 Jun 2015 05:43:00 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id E5A68181135; Wed, 17 Jun 2015 14:42:58 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434544978; bh=fKwTH8ozr8OAJ8prDVGCm9RIeSB01A0btmxqzfQmK60=; h=From:Date:To; b=alZ3wGTJ7SmXLO5aHNNqOZF0//4TY8nZWJR/rpRKNqNVMU6aqNg/Z4pMbETshVzR8 sLZA7kKr2YaDstpq2DAnFIz7iYqpPN1TawQqHS2CWUnqn0gl8Z1Luy+ci4OZYm/ouy tCAODXXfeb210vYDbsgyYIUF5lnOrQsChLFwabpo=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150617.142001.867595367172645339.mbj@tail-f.com>
Date: Wed, 17 Jun 2015 14:43:00 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <A1CA9C60-C4B1-4CC9-B4B1-5F5231118792@nic.cz>
References: <m2vbem4ryj.fsf@nic.cz> <20150617.121216.1211666276307602571.mbj@tail-f.com> <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz> <20150617.142001.867595367172645339.mbj@tail-f.com>
To: =?utf-8?Q?Martin_Bj=C3=B6rklund?= <mbj@tail-f.com>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/rm_ZZ4hldRFnXBiaZoDLxt6V-ms>
Cc: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 12:43:01 -0000

> On 17 Jun 2015, at 14:20, Martin Bjorklund <mbj@tail-f.com> wrote:
>=20
> Ladislav Lhotka <lhotka@nic.cz> wrote:
>>=20
>>> On 17 Jun 2015, at 12:12, Martin Bjorklund <mbj@tail-f.com> wrote:
>>>=20
>>> Ladislav Lhotka <lhotka@nic.cz> wrote:
>>>> Hi Martin,
>>>>=20
>>>> thanks for the review.
>>>>=20
>>>> Martin Bjorklund <mbj@tail-f.com> writes:
>>>>> o  Last paragraph of section 3 and the "description" in the
>>>>>    extension.
>>>>>=20
>>>>>    The text says that semantics are defined "by other means".  I
>>>>>    think the semantics should be defined in the
>>>>>    description/reference statements (by using links or inline text
>>>>>    doesn't matter).
>>>>=20
>>>> Kent argued that an extension definition in YANG cannot make an
>>>> annotation part of the contract between the server and client: the
>>>> client can ignore it, and so the fact that the extension is defined =
in
>>>> a
>>>> module advertised by the server isn't sufficient for the server to
>>>> start
>>>> using the annotation and expect the client to take it into
>>>> account.
>>>=20
>>> Agreed.
>>>=20
>>>> Hence "by other means", which can be, e.g. a capability.
>>>=20
>>> Take the inactive thing as an example.  I would assume that by
>>> advertising the module where inactive is advertised, the server
>>> announces that it implements the syntax *and semantics* of this new
>>> annotation.  I do not expect one capability for the syntax, and
>>> another for the semantics.
>>=20
>> Well, but it is exactly what Kent objected against. It is the
>> requirement to support =E2=80=9Cold clients=E2=80=9D that causes the =
trouble here (and
>> elsewhere). If client A sets =E2=80=9Cinactive=E2=80=9D somewhere, =
then the datastore
>> semantics will change also for client B that doesn=E2=80=99t =
understand
>> =E2=80=9Cinactive=E2=80=9D and may be wondering why the server =
ignores his edits.
>=20
> Absolutely!
>=20
>> I understand (although RFC 6241 doesn=E2=80=99t say it explicitly) =
that,
>> unlike YANG extensions, a NETCONF capability advertised by the server
>> can be mandatory for the client in the sense that it has to =
understand
>> and honour it.
>=20
> No!
>=20
> My point is that how this affects the client must be considered
> case-by-case.
>=20
> In our implementation we support inactive, but the server sends the
> attribute only if the client explcitly asks for it
> (<with-inactive>true</with-inactive>, similar to with-default).

But it=E2=80=99s not only matter of whether the server sends the =
attribute or not but rather whether the server applies the inactive =
parts, and this decision must be the same for all clients.

Lada

>=20
>> A conclusion of this may be that it makes no sense to define
>> annotations through YANG extension after all.
>=20
> No I think this is the right way to do it.
>=20
>=20
> /martin
>=20
>> On the other hand, I do
>> see a value of having annotations defined in YANG modules.
>>=20
>> Lada
>>=20
>>=20
>>>=20
>>> (I also note that your requirement lists:
>>>=20
>>>  2.  Syntax and semantics of annotations must be documented and the
>>>      documentation must be easily accessible.
>>> )
>>>=20
>>>=20
>>> But I also don't want this document to go into all details of how
>>> different annotations can be used; this needs to be carefully =
designed
>>> for each annotation. =20
>>>=20
>>> I suggest something like this:
>>>=20
>>> OLD:
>>>=20
>>>  By advertising a YANG module in which metadata annotation A is
>>>  defined using the "md:annotation" statement, a server specifies
>>>  support for the syntax of annotation A.  This means that
>>>  configuration or state data, RPC messages and notifications will be
>>>  considered syntactically valid if annotation A is attached to any
>>>  data node instance, provided that all rules stated in this document
>>>  are observed.
>>>=20
>>>  However, the semantics of an annotation, usage rules, and expected
>>>  behavior of clients and servers MUST be specified separately by =
other
>>>  means that are outside the scope of this document.
>>>=20
>>> NEW:
>>>=20
>>>  By advertising a YANG module in which metadata annotation A is
>>>  defined using the "md:annotation" statement, a server specifies
>>>  support for the syntax and semantics of annotation A.  This means =
that
>>>  configuration or state data, RPC messages and notifications will be
>>>  considered syntactically valid if annotation A is attached to any
>>>  data node instance, provided that all rules stated in this document
>>>  are observed.
>>>=20
>>>=20
>>> and
>>>=20
>>> OLD:
>>>=20
>>>         A server announces syntactic support for a particular
>>>         annotation by including the module in which the annotation =
is
>>>         defined among the advertised YANG modules (e.g., in NETCONF
>>>         hello message).
>>>=20
>>>         Semantics and usage rules for an annotation MUST be =
specified
>>>         separately. The 'description' and/or 'reference' statements
>>>         SHOULD provide corresponding links.
>>>=20
>>> NEW:
>>>=20
>>>         A server announces support for a particular
>>>         annotation by including the module in which the annotation =
is
>>>         defined among the advertised YANG modules (e.g., in NETCONF
>>>         hello message).
>>>=20
>>>=20
>>>=20
>>>=20
>>> /martin
>>=20
>> --
>> Ladislav Lhotka, CZ.NIC Labs
>> PGP Key ID: E74E8C0C

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 17 05:46:50 2015
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 1B6E21A9078 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:46: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 2gpIGci4ts3W for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:46:46 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 9BE571A9072 for <netmod@ietf.org>; Wed, 17 Jun 2015 05:46:46 -0700 (PDT)
Received: from localhost (unknown [173.38.220.44]) by mail.tail-f.com (Postfix) with ESMTPSA id C85371AE0483; Wed, 17 Jun 2015 14:46:45 +0200 (CEST)
Date: Wed, 17 Jun 2015 14:46:45 +0200 (CEST)
Message-Id: <20150617.144645.404682714561242164.mbj@tail-f.com>
To: lhotka@nic.cz
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <A1CA9C60-C4B1-4CC9-B4B1-5F5231118792@nic.cz>
References: <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz> <20150617.142001.867595367172645339.mbj@tail-f.com> <A1CA9C60-C4B1-4CC9-B4B1-5F5231118792@nic.cz>
X-Mailer: Mew version 6.5 on Emacs 23.4 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=utf-8
Content-Transfer-Encoding: base64
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Bj3lxOlAMjDTAC-c7yJt_nX7FlI>
Cc: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 12:46:49 -0000

TGFkaXNsYXYgTGhvdGthIDxsaG90a2FAbmljLmN6PiB3cm90ZToNCj4gDQo+ID4gT24gMTcgSnVu
IDIwMTUsIGF0IDE0OjIwLCBNYXJ0aW4gQmpvcmtsdW5kIDxtYmpAdGFpbC1mLmNvbT4gd3JvdGU6
DQo+ID4gDQo+ID4gTGFkaXNsYXYgTGhvdGthIDxsaG90a2FAbmljLmN6PiB3cm90ZToNCj4gPj4g
DQo+ID4+PiBPbiAxNyBKdW4gMjAxNSwgYXQgMTI6MTIsIE1hcnRpbiBCam9ya2x1bmQgPG1iakB0
YWlsLWYuY29tPiB3cm90ZToNCj4gPj4+IA0KPiA+Pj4gTGFkaXNsYXYgTGhvdGthIDxsaG90a2FA
bmljLmN6PiB3cm90ZToNCj4gPj4+PiBIaSBNYXJ0aW4sDQo+ID4+Pj4gDQo+ID4+Pj4gdGhhbmtz
IGZvciB0aGUgcmV2aWV3Lg0KPiA+Pj4+IA0KPiA+Pj4+IE1hcnRpbiBCam9ya2x1bmQgPG1iakB0
YWlsLWYuY29tPiB3cml0ZXM6DQo+ID4+Pj4+IG8gIExhc3QgcGFyYWdyYXBoIG9mIHNlY3Rpb24g
MyBhbmQgdGhlICJkZXNjcmlwdGlvbiIgaW4gdGhlDQo+ID4+Pj4+ICAgIGV4dGVuc2lvbi4NCj4g
Pj4+Pj4gDQo+ID4+Pj4+ICAgIFRoZSB0ZXh0IHNheXMgdGhhdCBzZW1hbnRpY3MgYXJlIGRlZmlu
ZWQgImJ5IG90aGVyIG1lYW5zIi4gIEkNCj4gPj4+Pj4gICAgdGhpbmsgdGhlIHNlbWFudGljcyBz
aG91bGQgYmUgZGVmaW5lZCBpbiB0aGUNCj4gPj4+Pj4gICAgZGVzY3JpcHRpb24vcmVmZXJlbmNl
IHN0YXRlbWVudHMgKGJ5IHVzaW5nIGxpbmtzIG9yIGlubGluZSB0ZXh0DQo+ID4+Pj4+ICAgIGRv
ZXNuJ3QgbWF0dGVyKS4NCj4gPj4+PiANCj4gPj4+PiBLZW50IGFyZ3VlZCB0aGF0IGFuIGV4dGVu
c2lvbiBkZWZpbml0aW9uIGluIFlBTkcgY2Fubm90IG1ha2UgYW4NCj4gPj4+PiBhbm5vdGF0aW9u
IHBhcnQgb2YgdGhlIGNvbnRyYWN0IGJldHdlZW4gdGhlIHNlcnZlciBhbmQgY2xpZW50OiB0aGUN
Cj4gPj4+PiBjbGllbnQgY2FuIGlnbm9yZSBpdCwgYW5kIHNvIHRoZSBmYWN0IHRoYXQgdGhlIGV4
dGVuc2lvbiBpcyBkZWZpbmVkIGluDQo+ID4+Pj4gYQ0KPiA+Pj4+IG1vZHVsZSBhZHZlcnRpc2Vk
IGJ5IHRoZSBzZXJ2ZXIgaXNuJ3Qgc3VmZmljaWVudCBmb3IgdGhlIHNlcnZlciB0bw0KPiA+Pj4+
IHN0YXJ0DQo+ID4+Pj4gdXNpbmcgdGhlIGFubm90YXRpb24gYW5kIGV4cGVjdCB0aGUgY2xpZW50
IHRvIHRha2UgaXQgaW50bw0KPiA+Pj4+IGFjY291bnQuDQo+ID4+PiANCj4gPj4+IEFncmVlZC4N
Cj4gPj4+IA0KPiA+Pj4+IEhlbmNlICJieSBvdGhlciBtZWFucyIsIHdoaWNoIGNhbiBiZSwgZS5n
LiBhIGNhcGFiaWxpdHkuDQo+ID4+PiANCj4gPj4+IFRha2UgdGhlIGluYWN0aXZlIHRoaW5nIGFz
IGFuIGV4YW1wbGUuICBJIHdvdWxkIGFzc3VtZSB0aGF0IGJ5DQo+ID4+PiBhZHZlcnRpc2luZyB0
aGUgbW9kdWxlIHdoZXJlIGluYWN0aXZlIGlzIGFkdmVydGlzZWQsIHRoZSBzZXJ2ZXINCj4gPj4+
IGFubm91bmNlcyB0aGF0IGl0IGltcGxlbWVudHMgdGhlIHN5bnRheCAqYW5kIHNlbWFudGljcyog
b2YgdGhpcyBuZXcNCj4gPj4+IGFubm90YXRpb24uICBJIGRvIG5vdCBleHBlY3Qgb25lIGNhcGFi
aWxpdHkgZm9yIHRoZSBzeW50YXgsIGFuZA0KPiA+Pj4gYW5vdGhlciBmb3IgdGhlIHNlbWFudGlj
cy4NCj4gPj4gDQo+ID4+IFdlbGwsIGJ1dCBpdCBpcyBleGFjdGx5IHdoYXQgS2VudCBvYmplY3Rl
ZCBhZ2FpbnN0LiBJdCBpcyB0aGUNCj4gPj4gcmVxdWlyZW1lbnQgdG8gc3VwcG9ydCDigJxvbGQg
Y2xpZW50c+KAnSB0aGF0IGNhdXNlcyB0aGUgdHJvdWJsZSBoZXJlIChhbmQNCj4gPj4gZWxzZXdo
ZXJlKS4gSWYgY2xpZW50IEEgc2V0cyDigJxpbmFjdGl2ZeKAnSBzb21ld2hlcmUsIHRoZW4gdGhl
IGRhdGFzdG9yZQ0KPiA+PiBzZW1hbnRpY3Mgd2lsbCBjaGFuZ2UgYWxzbyBmb3IgY2xpZW50IEIg
dGhhdCBkb2VzbuKAmXQgdW5kZXJzdGFuZA0KPiA+PiDigJxpbmFjdGl2ZeKAnSBhbmQgbWF5IGJl
IHdvbmRlcmluZyB3aHkgdGhlIHNlcnZlciBpZ25vcmVzIGhpcyBlZGl0cy4NCj4gPiANCj4gPiBB
YnNvbHV0ZWx5IQ0KPiA+IA0KPiA+PiBJIHVuZGVyc3RhbmQgKGFsdGhvdWdoIFJGQyA2MjQxIGRv
ZXNu4oCZdCBzYXkgaXQgZXhwbGljaXRseSkgdGhhdCwNCj4gPj4gdW5saWtlIFlBTkcgZXh0ZW5z
aW9ucywgYSBORVRDT05GIGNhcGFiaWxpdHkgYWR2ZXJ0aXNlZCBieSB0aGUgc2VydmVyDQo+ID4+
IGNhbiBiZSBtYW5kYXRvcnkgZm9yIHRoZSBjbGllbnQgaW4gdGhlIHNlbnNlIHRoYXQgaXQgaGFz
IHRvIHVuZGVyc3RhbmQNCj4gPj4gYW5kIGhvbm91ciBpdC4NCj4gPiANCj4gPiBObyENCj4gPiAN
Cj4gPiBNeSBwb2ludCBpcyB0aGF0IGhvdyB0aGlzIGFmZmVjdHMgdGhlIGNsaWVudCBtdXN0IGJl
IGNvbnNpZGVyZWQNCj4gPiBjYXNlLWJ5LWNhc2UuDQo+ID4gDQo+ID4gSW4gb3VyIGltcGxlbWVu
dGF0aW9uIHdlIHN1cHBvcnQgaW5hY3RpdmUsIGJ1dCB0aGUgc2VydmVyIHNlbmRzIHRoZQ0KPiA+
IGF0dHJpYnV0ZSBvbmx5IGlmIHRoZSBjbGllbnQgZXhwbGNpdGx5IGFza3MgZm9yIGl0DQo+ID4g
KDx3aXRoLWluYWN0aXZlPnRydWU8L3dpdGgtaW5hY3RpdmU+LCBzaW1pbGFyIHRvIHdpdGgtZGVm
YXVsdCkuDQo+IA0KPiBCdXQgaXTigJlzIG5vdCBvbmx5IG1hdHRlciBvZiB3aGV0aGVyIHRoZSBz
ZXJ2ZXIgc2VuZHMgdGhlIGF0dHJpYnV0ZSBvcg0KPiBub3QgYnV0IHJhdGhlciB3aGV0aGVyIHRo
ZSBzZXJ2ZXIgYXBwbGllcyB0aGUgaW5hY3RpdmUgcGFydHMsIGFuZCB0aGlzDQo+IGRlY2lzaW9u
IG11c3QgYmUgdGhlIHNhbWUgZm9yIGFsbCBjbGllbnRzLg0KDQpBZ2FpbiwgbXkgcG9pbnQgaXMg
cmVhbGx5IHRoYXQgd2hhdCB0byBkbyBhbmQgd2hhdCBpcyBhIHNhZmUgYmVoYXZpb3INCmRlcGVu
ZHMgb24gdGhlIGF0dHJpYnV0ZS4gIFRoaXMgZG9jdW1lbnQgc2hvdWxkIG5vdCB0cnkgdG8gc29s
dmUgdGhhdA0KcHJvYmxlbS4NCg0KKEluIG91ciBjYXNlLCBpZiB0aGUgY2xpZW50IGRvZXNuJ3Qg
YXNrIGZvciBpbmFjdGl2ZSBub2Rlcywgd2UgcHJ1bmUNCnRoZW0gZnJvbSB0aGUgcmVzdWx0KS4N
Cg0KDQovbWFydGluDQoNCg==


From nobody Wed Jun 17 05:50:26 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 106EA1A909E for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:50:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 hlCCUfEQXDRU for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 05:50:23 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5B9041A9092 for <netmod@ietf.org>; Wed, 17 Jun 2015 05:50:23 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 1722713FD; Wed, 17 Jun 2015 14:50:21 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id NDGurPoFem97; Wed, 17 Jun 2015 14:50:12 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Wed, 17 Jun 2015 14:50:15 +0200 (CEST)
Received: from localhost (demetrius3.jacobs-university.de [212.201.44.48]) by hermes.jacobs-university.de (Postfix) with ESMTP id 28EE82002C; Wed, 17 Jun 2015 14:50:16 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius3.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id lAP4P8yo21Mp; Wed, 17 Jun 2015 14:50:11 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id C30902002B; Wed, 17 Jun 2015 14:50:13 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 8D6F63475290; Wed, 17 Jun 2015 14:50:12 +0200 (CEST)
Date: Wed, 17 Jun 2015 14:50:11 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150617125009.GA21463@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Martin =?iso-8859-1?Q?Bj=F6rklund?= <mbj@tail-f.com>, netmod@ietf.org
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150617.095439.2211831130594238981.mbj@tail-f.com> <m2vbem4ryj.fsf@nic.cz> <20150617.121216.1211666276307602571.mbj@tail-f.com> <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz> <20150617115109.GC21292@elstar.local> <4D6394A6-06D1-4275-8151-E1C34DB20965@nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <4D6394A6-06D1-4275-8151-E1C34DB20965@nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/oItIllBFyyerBZuMTcNCy2pERr0>
Cc: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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, 17 Jun 2015 12:50:25 -0000

On Wed, Jun 17, 2015 at 02:34:52PM +0200, Ladislav Lhotka wrote:
> 
> > On 17 Jun 2015, at 13:51, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> > 
> > On Wed, Jun 17, 2015 at 01:41:56PM +0200, Ladislav Lhotka wrote:
> >> 
> >> 
> >> Well, but it is exactly what Kent objected against. It is the requirement to support â€œold clientsâ€ that causes the trouble here (and elsewhere). If client A sets â€œinactiveâ€ somewhere, then the datastore semantics will change also for client B that doesnâ€™t understand â€œinactiveâ€ and may be wondering why the server ignores his edits.
> >> 
> >> I understand (although RFC 6241 doesnâ€™t say it explicitly) that, unlike YANG extensions, a NETCONF capability advertised by the server can be mandatory for the client in the sense that it has to understand and honour it.
> > 
> > There is no way for a client to tell whether a certain capability URI
> > (it has never seen before) is mandatory to understand or not. In fact,
> 
> So it means that, e.g. the annotations from
> 
> https://tools.ietf.org/html/draft-kwatsen-conditional-enablement-00
> 
> cannot be safely used by the server even after advertising them via :conditional-enablement capability.

Yes, advertisement is not sufficient.

> > Without further protocol support to negotiate annotations, I think
> > annotations must be limited to things that can be safely ignored by a
> > client. I have not read the I-D yet but I would expect that it should
> > say something like that. ;-)
> 
> But itâ€™s not a specific problem of this draft, it would simply mean that annotations that cannot be ignored cannot be used at all, no matter what. However, some annotations that have been proposed (and probably used in the wild) are of that sort.
>

They cannot be used safely until there is an annotation negotiation
mechanism, or as Martin indicated, a way for a client to explicitely
enable the functionality associated with certain annotations.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Wed Jun 17 06:13:53 2015
Return-Path: <lhotka@nic.cz>
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 3DCFD1A914F for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 06:13:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.361
X-Spam-Level: 
X-Spam-Status: No, score=-5.361 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_HI=-5, 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 7ujQy0e8DA1B for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 06:13:49 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [217.31.204.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DDA9A1A9149 for <netmod@ietf.org>; Wed, 17 Jun 2015 06:13:48 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id D59DA1813D2; Wed, 17 Jun 2015 15:13:46 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434546826; bh=q7RJLXxt0e17jYitSoL4DGm2E2jm115rLY73ZNbeuxo=; h=From:Date:To; b=wV6jQDC9R7/q/upIuqsgbKEDW5ZX33QggJ5TUg2QAoWYADyR5W2zvT8j8nBYxR7zS mpB9EkOLflIBjYwGtEumUsimztLFbF4YKJpyijNwQBK48zBNG9YrJLpW9BdkXwb/Ma BezHCHfKrK+Nyo39B9v1Y01BG7A/eyo+4PXeKyHo=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150617125009.GA21463@elstar.local>
Date: Wed, 17 Jun 2015 15:13:48 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <1727EA47-E767-48F1-BB47-D2C13C16EE5D@nic.cz>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150617.095439.2211831130594238981.mbj@tail-f.com> <m2vbem4ryj.fsf@nic.cz> <20150617.121216.1211666276307602571.mbj@tail-f.com> <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz> <20150617115109.GC21292@elstar.local> <4D6394A6-06D1-4275-8151-E1C34DB20965@nic.cz> <20150617125009.GA21463@elstar.local>
To: =?utf-8?Q?J=C3=BCrgen_Sch=C3=B6nw=C3=A4lder?= <j.schoenwaelder@jacobs-university.de>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Qm4jdHPtQdPJfMQ3guXjK7BIyH8>
Cc: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 13:13:52 -0000

> On 17 Jun 2015, at 14:50, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>=20
> On Wed, Jun 17, 2015 at 02:34:52PM +0200, Ladislav Lhotka wrote:
>>=20
>>> On 17 Jun 2015, at 13:51, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>>>=20
>>> On Wed, Jun 17, 2015 at 01:41:56PM +0200, Ladislav Lhotka wrote:
>>>>=20
>>>>=20
>>>> Well, but it is exactly what Kent objected against. It is the =
requirement to support =E2=80=9Cold clients=E2=80=9D that causes the =
trouble here (and elsewhere). If client A sets =E2=80=9Cinactive=E2=80=9D =
somewhere, then the datastore semantics will change also for client B =
that doesn=E2=80=99t understand =E2=80=9Cinactive=E2=80=9D and may be =
wondering why the server ignores his edits.
>>>>=20
>>>> I understand (although RFC 6241 doesn=E2=80=99t say it explicitly) =
that, unlike YANG extensions, a NETCONF capability advertised by the =
server can be mandatory for the client in the sense that it has to =
understand and honour it.
>>>=20
>>> There is no way for a client to tell whether a certain capability =
URI
>>> (it has never seen before) is mandatory to understand or not. In =
fact,
>>=20
>> So it means that, e.g. the annotations from
>>=20
>> https://tools.ietf.org/html/draft-kwatsen-conditional-enablement-00
>>=20
>> cannot be safely used by the server even after advertising them via =
:conditional-enablement capability.
>=20
> Yes, advertisement is not sufficient.
>=20
>>> Without further protocol support to negotiate annotations, I think
>>> annotations must be limited to things that can be safely ignored by =
a
>>> client. I have not read the I-D yet but I would expect that it =
should
>>> say something like that. ;-)
>>=20
>> But it=E2=80=99s not a specific problem of this draft, it would =
simply mean that annotations that cannot be ignored cannot be used at =
all, no matter what. However, some annotations that have been proposed =
(and probably used in the wild) are of that sort.
>>=20
>=20
> They cannot be used safely until there is an annotation negotiation
> mechanism, or as Martin indicated, a way for a client to explicitely
> enable the functionality associated with certain annotations.

Even this breaks down if an annotation has global side effects. This =
actually seems to be true for the whole idea of a client cherry-picking =
from the capabilities (and YANG modules) advertised by the server.

Lada

>=20
> /js
>=20
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 17 08:13:35 2015
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 D73591ACEE0 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 08:13:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 kdYbr_jTZF76 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 08:13:32 -0700 (PDT)
Received: from mail-la0-f53.google.com (mail-la0-f53.google.com [209.85.215.53]) (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 E89851ACE9F for <netmod@ietf.org>; Wed, 17 Jun 2015 08:13:31 -0700 (PDT)
Received: by labbc20 with SMTP id bc20so35347724lab.1 for <netmod@ietf.org>; Wed, 17 Jun 2015 08:13:30 -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=dPZTTD7Ob401o5LomsoVIjf9zzCpqWpDlmlmyaqjLzU=; b=TunrU6jZxn6zs+80bokWrko44hx8LzoIm34rYtX0TtJjVUkeRmKOMGQ43Ch6uHbSiw EFMRRrFaBTvTnM6M8alZTKut1BoOi54yhLQsijlypwoAT7dsBMyuUiwekaAXHCoxSdHh Wnt4z1xU8K4GKRDg03KeD9oT9V99DEerJoi/I/XfP7LAq4df+QbLBp5ia73quzRgi+UI CyEzcESkhw97ibU4ZQqqOL6JF1gjup98bKYWgUlSe6TaMuaX/2eiMOjAgJEbWUj8NVbg BCyFx8LuNmmAeDkhdwyov7/xbkCb4BeNxaZudW47qSNY26QstVh0ZVwDAhPlCcYIItm9 3pEw==
X-Gm-Message-State: ALoCoQkHwj8MKSlXAvRTAP6+W9unf5wd192O7Okvv42XkZEkIM1lwR5U/PJkfGIlowtzvSX7Mp3h
MIME-Version: 1.0
X-Received: by 10.112.24.71 with SMTP id s7mr8287198lbf.37.1434554010305; Wed, 17 Jun 2015 08:13:30 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 17 Jun 2015 08:13:30 -0700 (PDT)
In-Reply-To: <1727EA47-E767-48F1-BB47-D2C13C16EE5D@nic.cz>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150617.095439.2211831130594238981.mbj@tail-f.com> <m2vbem4ryj.fsf@nic.cz> <20150617.121216.1211666276307602571.mbj@tail-f.com> <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz> <20150617115109.GC21292@elstar.local> <4D6394A6-06D1-4275-8151-E1C34DB20965@nic.cz> <20150617125009.GA21463@elstar.local> <1727EA47-E767-48F1-BB47-D2C13C16EE5D@nic.cz>
Date: Wed, 17 Jun 2015 08:13:30 -0700
Message-ID: <CABCOCHRMGySt=3KOOA-ms4WJkKzAS=5CXBctarhbf-59S=WUNg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Ladislav Lhotka <lhotka@nic.cz>
Content-Type: multipart/alternative; boundary=001a113438323220110518b82234
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/bw3Wd7B30cxZMPb0kBnqHNeI1J8>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 15:13:35 -0000

--001a113438323220110518b82234
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On Wed, Jun 17, 2015 at 6:13 AM, Ladislav Lhotka <lhotka@nic.cz> wrote:

>
> > On 17 Jun 2015, at 14:50, Juergen Schoenwaelder <
> j.schoenwaelder@jacobs-university.de> wrote:
> >
> > On Wed, Jun 17, 2015 at 02:34:52PM +0200, Ladislav Lhotka wrote:
> >>
> >>> On 17 Jun 2015, at 13:51, Juergen Schoenwaelder <
> j.schoenwaelder@jacobs-university.de> wrote:
> >>>
> >>> On Wed, Jun 17, 2015 at 01:41:56PM +0200, Ladislav Lhotka wrote:
> >>>>
> >>>>
> >>>> Well, but it is exactly what Kent objected against. It is the
> requirement to support =E2=80=9Cold clients=E2=80=9D that causes the trou=
ble here (and
> elsewhere). If client A sets =E2=80=9Cinactive=E2=80=9D somewhere, then t=
he datastore
> semantics will change also for client B that doesn=E2=80=99t understand =
=E2=80=9Cinactive=E2=80=9D
> and may be wondering why the server ignores his edits.
> >>>>
> >>>> I understand (although RFC 6241 doesn=E2=80=99t say it explicitly) t=
hat,
> unlike YANG extensions, a NETCONF capability advertised by the server can
> be mandatory for the client in the sense that it has to understand and
> honour it.
> >>>
> >>> There is no way for a client to tell whether a certain capability URI
> >>> (it has never seen before) is mandatory to understand or not. In fact=
,
> >>
> >> So it means that, e.g. the annotations from
> >>
> >> https://tools.ietf.org/html/draft-kwatsen-conditional-enablement-00
> >>
> >> cannot be safely used by the server even after advertising them via
> :conditional-enablement capability.
> >
> > Yes, advertisement is not sufficient.
> >
> >>> Without further protocol support to negotiate annotations, I think
> >>> annotations must be limited to things that can be safely ignored by a
> >>> client. I have not read the I-D yet but I would expect that it should
> >>> say something like that. ;-)
> >>
> >> But it=E2=80=99s not a specific problem of this draft, it would simply=
 mean
> that annotations that cannot be ignored cannot be used at all, no matter
> what. However, some annotations that have been proposed (and probably use=
d
> in the wild) are of that sort.
> >>
> >
> > They cannot be used safely until there is an annotation negotiation
> > mechanism, or as Martin indicated, a way for a client to explicitely
> > enable the functionality associated with certain annotations.
>
> Even this breaks down if an annotation has global side effects. This
> actually seems to be true for the whole idea of a client cherry-picking
> from the capabilities (and YANG modules) advertised by the server.
>
>

IMO conditional enablement is trivial to add in a way that does not break
clients unaware of the disabled nodes.  As Martin pointed out, the only
way the client can see them is to ask explicitly that the metadata be
returned.
Otherwise the disabled nodes look like deleted nodes.  For validation
purposes, they are deleted nodes.

The NETCONF-EX <get2> operation had a "metadata" parameter so the
client could ask for specific attributes.  Hard-wired parameters like
"with-defaults" or "with-disabled" will also work.

If the client cannot ignore the behavior defined by the capability,
then it isn't a NETCONF protocol capability, it's a different non-standard
protocol.



> Lada
>

Andy


>
> >
> > /js
> >
> > --
> > Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> > Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> > Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>
> --
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: E74E8C0C
>
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a113438323220110518b82234
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Jun 17, 2015 at 6:13 AM, Ladislav Lhotka <span dir=3D"ltr">&lt;=
<a href=3D"mailto:lhotka@nic.cz" target=3D"_blank">lhotka@nic.cz</a>&gt;</s=
pan> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex=
;border-left:1px #ccc solid;padding-left:1ex"><br>
&gt; On 17 Jun 2015, at 14:50, Juergen Schoenwaelder &lt;<a href=3D"mailto:=
j.schoenwaelder@jacobs-university.de">j.schoenwaelder@jacobs-university.de<=
/a>&gt; wrote:<br>
&gt;<br>
&gt; On Wed, Jun 17, 2015 at 02:34:52PM +0200, Ladislav Lhotka wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; On 17 Jun 2015, at 13:51, Juergen Schoenwaelder &lt;<a href=3D=
"mailto:j.schoenwaelder@jacobs-university.de">j.schoenwaelder@jacobs-univer=
sity.de</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Wed, Jun 17, 2015 at 01:41:56PM +0200, Ladislav Lhotka wrot=
e:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Well, but it is exactly what Kent objected against. It is =
the requirement to support =E2=80=9Cold clients=E2=80=9D that causes the tr=
ouble here (and elsewhere). If client A sets =E2=80=9Cinactive=E2=80=9D som=
ewhere, then the datastore semantics will change also for client B that doe=
sn=E2=80=99t understand =E2=80=9Cinactive=E2=80=9D and may be wondering why=
 the server ignores his edits.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I understand (although RFC 6241 doesn=E2=80=99t say it exp=
licitly) that, unlike YANG extensions, a NETCONF capability advertised by t=
he server can be mandatory for the client in the sense that it has to under=
stand and honour it.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; There is no way for a client to tell whether a certain capabil=
ity URI<br>
&gt;&gt;&gt; (it has never seen before) is mandatory to understand or not. =
In fact,<br>
&gt;&gt;<br>
&gt;&gt; So it means that, e.g. the annotations from<br>
&gt;&gt;<br>
&gt;&gt; <a href=3D"https://tools.ietf.org/html/draft-kwatsen-conditional-e=
nablement-00" rel=3D"noreferrer" target=3D"_blank">https://tools.ietf.org/h=
tml/draft-kwatsen-conditional-enablement-00</a><br>
&gt;&gt;<br>
&gt;&gt; cannot be safely used by the server even after advertising them vi=
a :conditional-enablement capability.<br>
&gt;<br>
&gt; Yes, advertisement is not sufficient.<br>
&gt;<br>
&gt;&gt;&gt; Without further protocol support to negotiate annotations, I t=
hink<br>
&gt;&gt;&gt; annotations must be limited to things that can be safely ignor=
ed by a<br>
&gt;&gt;&gt; client. I have not read the I-D yet but I would expect that it=
 should<br>
&gt;&gt;&gt; say something like that. ;-)<br>
&gt;&gt;<br>
&gt;&gt; But it=E2=80=99s not a specific problem of this draft, it would si=
mply mean that annotations that cannot be ignored cannot be used at all, no=
 matter what. However, some annotations that have been proposed (and probab=
ly used in the wild) are of that sort.<br>
&gt;&gt;<br>
&gt;<br>
&gt; They cannot be used safely until there is an annotation negotiation<br=
>
&gt; mechanism, or as Martin indicated, a way for a client to explicitely<b=
r>
&gt; enable the functionality associated with certain annotations.<br>
<br>
Even this breaks down if an annotation has global side effects. This actual=
ly seems to be true for the whole idea of a client cherry-picking from the =
capabilities (and YANG modules) advertised by the server.<br>
<br></blockquote><div><br></div><div><br></div><div>IMO conditional enablem=
ent is trivial to add in a way that does not break</div><div>clients unawar=
e of the disabled nodes.=C2=A0 As Martin pointed out, the only</div><div>wa=
y the client can see them is to ask explicitly that the metadata be returne=
d.</div><div>Otherwise the disabled nodes look like deleted nodes.=C2=A0 Fo=
r validation</div><div>purposes, they are deleted nodes.</div><div><br></di=
v><div>The NETCONF-EX &lt;get2&gt; operation had a &quot;metadata&quot; par=
ameter so the</div><div>client could ask for specific attributes.=C2=A0 Har=
d-wired parameters like</div><div>&quot;with-defaults&quot; or &quot;with-d=
isabled&quot; will also work.</div><div><br></div><div>If the client cannot=
 ignore the behavior defined by the capability,</div><div>then it isn&#39;t=
 a NETCONF protocol capability, it&#39;s a different non-standard</div><div=
>protocol.</div><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_=
quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1=
ex">
Lada<br></blockquote><div><br></div><div>Andy</div><div>=C2=A0</div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc =
solid;padding-left:1ex">
<br>
&gt;<br>
&gt; /js<br>
&gt;<br>
&gt; --<br>
&gt; Juergen Schoenwaelder=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Jacobs U=
niversity Bremen gGmbH<br>
&gt; Phone: +49 421 200 3587=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Campus Ring 1=
 | 28759 Bremen | Germany<br>
&gt; Fax:=C2=A0 =C2=A0+49 421 200 3103=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt=
;<a href=3D"http://www.jacobs-university.de/" rel=3D"noreferrer" target=3D"=
_blank">http://www.jacobs-university.de/</a>&gt;<br>
<br>
--<br>
Ladislav Lhotka, CZ.NIC Labs<br>
PGP Key ID: E74E8C0C<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div></div>

--001a113438323220110518b82234--


From nobody Wed Jun 17 09:11:34 2015
Return-Path: <lhotka@nic.cz>
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 BEAF91B29C2 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 09:11:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.686
X-Spam-Level: 
X-Spam-Status: No, score=0.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, RCVD_IN_BL_SPAMCOP_NET=1.347, T_RP_MATCHES_RCVD=-0.01] 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 eVTKSjXO0T6b for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 09:11:30 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 522641B29CA for <netmod@ietf.org>; Wed, 17 Jun 2015 09:11:25 -0700 (PDT)
Received: from [172.29.2.202] (nat-14.bravonet.cz [77.48.225.14]) by mail.nic.cz (Postfix) with ESMTPSA id 70EF9180C5A; Wed, 17 Jun 2015 18:11:23 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434557483; bh=QkhNeCmO2wS1Vyj4XrO1y0nxCbaRIvVr43zNVLVvsU8=; h=From:Date:To; b=dSwFFTn/mEsH+Tky/ySwPs8cjacF17/kJkQtdkKn+jA66b8fY4iswpwQnrtQYwiOQ 5M2VheBEeFACju7AWY72gMfBH2Ifliwct2e6FUB+gCdoiGU3i0AQhnP3uv+KEDvjXm +jmb9fPwVkhOF6tfe6pWRGhGfRb4rARXMUTFCg3M=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <CABCOCHRMGySt=3KOOA-ms4WJkKzAS=5CXBctarhbf-59S=WUNg@mail.gmail.com>
Date: Wed, 17 Jun 2015 18:11:25 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <A7D33512-E296-4B90-9A2B-46925E763261@nic.cz>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150617.095439.2211831130594238981.mbj@tail-f.com> <m2vbem4ryj.fsf@nic.cz> <20150617.121216.1211666276307602571.mbj@tail-f.com> <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz> <20150617115109.GC21292@elstar.local> <4D6394A6-06D1-4275-8151-E1C34DB20965@nic.cz> <20150617125009.GA21463@elstar.local> <1727EA47-E767-48F1-BB47-D2C13C16EE5D@nic.cz> <CABCOCHRMGySt=3KOOA-ms4WJkKzAS=5CXBctarhbf-59S=WUNg@mail.gmail.com>
To: Andy Bierman <andy@yumaworks.com>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/WPSuQqk61zAwSlXS4aeakExAkvM>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 16:11:32 -0000

> On 17 Jun 2015, at 17:13, Andy Bierman <andy@yumaworks.com> wrote:
>=20
>=20
>=20
> On Wed, Jun 17, 2015 at 6:13 AM, Ladislav Lhotka <lhotka@nic.cz> =
wrote:
>=20
> > On 17 Jun 2015, at 14:50, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
> >
> > On Wed, Jun 17, 2015 at 02:34:52PM +0200, Ladislav Lhotka wrote:
> >>
> >>> On 17 Jun 2015, at 13:51, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
> >>>
> >>> On Wed, Jun 17, 2015 at 01:41:56PM +0200, Ladislav Lhotka wrote:
> >>>>
> >>>>
> >>>> Well, but it is exactly what Kent objected against. It is the =
requirement to support =E2=80=9Cold clients=E2=80=9D that causes the =
trouble here (and elsewhere). If client A sets =E2=80=9Cinactive=E2=80=9D =
somewhere, then the datastore semantics will change also for client B =
that doesn=E2=80=99t understand =E2=80=9Cinactive=E2=80=9D and may be =
wondering why the server ignores his edits.
> >>>>
> >>>> I understand (although RFC 6241 doesn=E2=80=99t say it =
explicitly) that, unlike YANG extensions, a NETCONF capability =
advertised by the server can be mandatory for the client in the sense =
that it has to understand and honour it.
> >>>
> >>> There is no way for a client to tell whether a certain capability =
URI
> >>> (it has never seen before) is mandatory to understand or not. In =
fact,
> >>
> >> So it means that, e.g. the annotations from
> >>
> >> https://tools.ietf.org/html/draft-kwatsen-conditional-enablement-00
> >>
> >> cannot be safely used by the server even after advertising them via =
:conditional-enablement capability.
> >
> > Yes, advertisement is not sufficient.
> >
> >>> Without further protocol support to negotiate annotations, I think
> >>> annotations must be limited to things that can be safely ignored =
by a
> >>> client. I have not read the I-D yet but I would expect that it =
should
> >>> say something like that. ;-)
> >>
> >> But it=E2=80=99s not a specific problem of this draft, it would =
simply mean that annotations that cannot be ignored cannot be used at =
all, no matter what. However, some annotations that have been proposed =
(and probably used in the wild) are of that sort.
> >>
> >
> > They cannot be used safely until there is an annotation negotiation
> > mechanism, or as Martin indicated, a way for a client to explicitely
> > enable the functionality associated with certain annotations.
>=20
> Even this breaks down if an annotation has global side effects. This =
actually seems to be true for the whole idea of a client cherry-picking =
from the capabilities (and YANG modules) advertised by the server.
>=20
>=20
>=20
> IMO conditional enablement is trivial to add in a way that does not =
break
> clients unaware of the disabled nodes.  As Martin pointed out, the =
only
> way the client can see them is to ask explicitly that the metadata be =
returned.
> Otherwise the disabled nodes look like deleted nodes.  For validation
> purposes, they are deleted nodes.

I don=E2=80=99t think it is that easy. What if an unaware client creates =
something in the inactive area which he sees as empty? Will all the =
inactive subtree be deleted?

But I agree this is not the time to discuss this particular annotation. =
Martin proposed some text changes and I=E2=80=99d like to know whether =
everybody is happy with them.

Lada

>=20
> The NETCONF-EX <get2> operation had a "metadata" parameter so the
> client could ask for specific attributes.  Hard-wired parameters like
> "with-defaults" or "with-disabled" will also work.
>=20
> If the client cannot ignore the behavior defined by the capability,
> then it isn't a NETCONF protocol capability, it's a different =
non-standard
> protocol.
>=20
> =20
> Lada
>=20
> Andy
> =20
>=20
> >
> > /js
> >
> > --
> > Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> > Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | =
Germany
> > Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>=20
> --
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: E74E8C0C
>=20
>=20
>=20
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Wed Jun 17 10:25:55 2015
Return-Path: <kwatsen@juniper.net>
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 A21FE1B2BA1 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 10:25:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 Yw8Kztkt27-q for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 10:25:52 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0702.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::702]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DE5C31B2B97 for <netmod@ietf.org>; Wed, 17 Jun 2015 10:25:51 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB460.namprd05.prod.outlook.com (10.141.72.152) with Microsoft SMTP Server (TLS) id 15.1.190.14; Wed, 17 Jun 2015 17:25:33 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.121]) with mapi id 15.01.0184.014; Wed, 17 Jun 2015 17:25:32 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Martin Bjorklund <mbj@tail-f.com>, "lhotka@nic.cz" <lhotka@nic.cz>
Thread-Topic: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
Thread-Index: AQHQp72Lj/E1Yxg2VkGsWaf4ihf79J2wVj2AgAAWTQCAABAnAIAAGQ0AgAAKpICAAAZsAIAAAQyAgAAK1AA=
Date: Wed, 17 Jun 2015 17:25:32 +0000
Message-ID: <D1A722E9.B29A4%kwatsen@juniper.net>
References: <7E9BC65B-8A73-4352-87C7-8A826EFAC45B@nic.cz> <20150617.142001.867595367172645339.mbj@tail-f.com> <A1CA9C60-C4B1-4CC9-B4B1-5F5231118792@nic.cz> <20150617.144645.404682714561242164.mbj@tail-f.com>
In-Reply-To: <20150617.144645.404682714561242164.mbj@tail-f.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: tail-f.com; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [96.231.191.4]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB460; 3:AR89FTZeuH5bVLzjCBsPoTouBP1r8+yWlFifmT++qiN76Y5QZG3e4eIyE2mPa3/bB8AsfNfTsetpRLdEkY6GXg/6etcPpzwL80RMjEAPKYNemQC7a/Hur/myWVYOmt5aNMpJdZajTMfsgTac0yc9zA==; 10:Gs1wEd8DAvizmi1jOb12/iNYu2S4Unb6Zgkp03NIuRkXfo1V71DPDt/5r+7K0kIwF2UEsxdPhOcgyGT8lUL1Iz4fdia+ubN/rDCgP+jz5vI=; 6:h+i+PBsSxJ5HEqRYsUtGkvDYi2nvex+HOhd6NPovDK84Anei6IGxQFEVCvLBE6Wf
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB460;
x-microsoft-antispam-prvs: <CO1PR05MB460FE2CF0DF054415E160AEA5A60@CO1PR05MB460.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(520003)(5005006)(3002001); SRVR:CO1PR05MB460; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB460; 
x-forefront-prvs: 0610D16BBE
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(164054003)(377454003)(5423002)(479174004)(24454002)(54356999)(76176999)(50986999)(19580405001)(40100003)(122556002)(2950100001)(2900100001)(93886004)(86362001)(189998001)(5001960100002)(36756003)(102836002)(46102003)(66066001)(230783001)(5001770100001)(99286002)(83506001)(5002640100001)(77156002)(2656002)(87936001)(62966003)(106116001)(92566002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB460; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="us-ascii"
Content-ID: <48743D57B3BCFC4C8E5296F7763CD2AF@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jun 2015 17:25:32.5329 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB460
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/uaDPOgkrsFlpuryMAWd1EDOEMdo>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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, 17 Jun 2015 17:25:53 -0000

On 6/17/15, 8:46 AM, "Martin Bjorklund" <mbj@tail-f.com> wrote:
>Again, my point is really that what to do and what is a safe behavior
>depends on the attribute.  This document should not try to solve that
>problem.
>

This makes sense to me


>(In our case, if the client doesn't ask for inactive nodes, we prune
>them from the result).
>

But then doesn't round-tripping (replace) cause the inactive nodes to be
lost?


Thanks,
Kent


From nobody Wed Jun 17 18:24:18 2015
Return-Path: <kwatsen@juniper.net>
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 4FB401A8AAF for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 18:24:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 eINQO7d2AD81 for <netmod@ietfa.amsl.com>; Wed, 17 Jun 2015 18:24:15 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0134.outbound.protection.outlook.com [207.46.100.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9216D1A8A98 for <netmod@ietf.org>; Wed, 17 Jun 2015 18:24:15 -0700 (PDT)
Received: from BN1PR05MB456.namprd05.prod.outlook.com (10.141.59.26) by BN1PR05MB424.namprd05.prod.outlook.com (10.141.58.148) with Microsoft SMTP Server (TLS) id 15.1.195.15; Thu, 18 Jun 2015 01:24:14 +0000
Received: from BN1PR05MB456.namprd05.prod.outlook.com (10.141.59.26) by BN1PR05MB456.namprd05.prod.outlook.com (10.141.59.26) with Microsoft SMTP Server (TLS) id 15.1.172.22; Thu, 18 Jun 2015 01:24:13 +0000
Received: from BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.222]) by BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.194]) with mapi id 15.01.0172.012; Thu, 18 Jun 2015 01:24:13 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: review of draft-openconfig-netmod-model-structure-00
Thread-Index: AQHQqWV7CmWaees2y02p6f2FeX+aJg==
Date: Thu, 18 Jun 2015 01:24:13 +0000
Message-ID: <D1A7943D.B2C97%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.14]
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB456; UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB424; 
x-microsoft-antispam-prvs: <BN1PR05MB45658E45F811BCBBCE321FBA5A50@BN1PR05MB456.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(520003)(3002001); SRVR:BN1PR05MB456; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB456; 
x-forefront-prvs: 0611A21987
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(164054003)(106116001)(99286002)(86362001)(189998001)(107886002)(5001960100002)(110136002)(92566002)(77156002)(62966003)(450100001)(36756003)(40100003)(4001350100001)(122556002)(2900100001)(5002640100001)(54356999)(50986999)(83506001)(66066001)(46102003)(229853001)(2351001)(102836002)(2501003)(230783001)(2656002)(87936001); DIR:OUT; SFP:1102; SCL:1; SRVR:BN1PR05MB456; H:BN1PR05MB456.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="us-ascii"
Content-ID: <84F49E91D6377E4F907FDFB9618A2E81@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jun 2015 01:24:13.0701 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR05MB456
X-Microsoft-Exchange-Diagnostics: 1; BN1PR05MB424; 2:C2JNt5QEFELkiPFUvDbpyZTNjbXBiqqUHc/aqGNfDq23rn47K2L9Xautl5Iq0RQX; 3:xDhWpaJRwa6/JKRS1GozdIBB+atYMfFhvi6YlArLGYL+GtFRKpC8neJVW0P+5nuUIVo4qL60muDB2niWidrI26RtqTMdIzGecNOexv+8XLHA8MOS7IrPN7roh0zqXtLW/FHJLQps9bT7zte1W/CLzg==; 23:6AJBZC8J5kMGBwm2ytrebhrAHft6pGIimhdeobooOQ1Voegh1e3eijLe6KMue5IuOAUTUGnDux4EQiMR15m26BYggpXKF7yD7l0biBCCh6ZoSLCPXO06B4v9LGYuu8hH5y5pquIzWtWLOg5LgpV0ABpR4tFAj0do4leCB6lo2K3CrJyxmfSMK/p4u9G2ipRiR5SvzFhuOKlY0VAEii98p2xS9qpx53U3xOt3M6ndw1Y2ZJWZDXapGTNOeqtpU4d/
X-OriginatorOrg: juniper.net
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/fXRprB6TChNL8XLflUW6b4Anaes>
Subject: [netmod] review of draft-openconfig-netmod-model-structure-00
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: Thu, 18 Jun 2015 01:24:17 -0000

[As an individual contributor]

In preparing to tomorrow's virtual interim meeting, I reread the
model-structure draft with an eye towards understanding the problem
statements.  So far as I can tell, there are four problem statements:

 1: disparate models exist without guidance how they stitch
    together=20

 2: some uber modules, importing many other modules, exist
    but are incomplete

 3: a multi-rooted tree that does not follow any logical
    construction is difficult to work with operationally


 4: no model catalog/registry is available to discover models


My issue with these problem statements is that they are provided without
clear examples illustrating the actual problems.  Some references to
drafts are provided, but it's left to the reader to determine what the
problems are.  For instance,

 - for (1), RFCs 7223 and 7317 are provided as an example, but
   without explanation.  Is the issue that interfaces defined
   in 7223 would be used by the NTP server defined in 7317?
=20
 - for (2), drafts-ietf-netmod-routing-cfg is provided as an
   example.   Looking at it, I see that YANG module
   ietf-ipv6-unicast-routing imports a number of other modules,
   but it's not clear why there is an expectation that it
   should be any more than it is.

 - for (3), RFCs 7223 and 7277 are provided as an example,
   which I found confusing as 7277 actually augments 7223.
   But it may be that this example was meant to highlight
   a rare case where a good thing occurred (the text isn't
   clear and, if so, a read it wrong the first time)


Interestingly, Section 4.2 (service-layer composition) describes what I
view to be the expected solution to many of these issues, and yet it's not
described as such.  This implies that there may be yet another problem
statement missing in my list above.


Thanks,
Kent



From nobody Thu Jun 18 01:56:59 2015
Return-Path: <bclaise@cisco.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 AFB231B3092 for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 01:56:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -11.91
X-Spam-Level: 
X-Spam-Status: No, score=-11.91 tagged_above=-999 required=5 tests=[BAYES_05=-0.5, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 iEA-ZpDm6zro for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 01:56:55 -0700 (PDT)
Received: from aer-iport-4.cisco.com (aer-iport-4.cisco.com [173.38.203.54]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2CC9C1B3095 for <netmod@ietf.org>; Thu, 18 Jun 2015 01:56:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=79643; q=dns/txt; s=iport; t=1434617813; x=1435827413; h=message-id:date:from:mime-version:to:subject:references: in-reply-to; bh=tW4vi+yKCxkutnK1tJm51K5hjyf3z8ZSAlscp/jWfuA=; b=lR6Z+iv83a/VWLW0OEykfX4irHIaSob64ZgX58nzlQKx1ysltem1pAMA C+PtumHygXxUUNIUM5DuRGcGMFbzJ04nqKniXPAOa5ex/K+Qc73PG4zbA VmuLcpYhUtJEHEZHCUwHZqwtyzyRqu5GSiuX6Rf4tJ2A2YcA/yWENSaqW w=;
X-Files: bahcdbch.png : 49656
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CvBAAvh4JV/xbLJq1cgkWBH1+vGZAlGQEJhS5KAoICAQEBAQEBgQuEIwEBBAEBAQIBaBsLDg8BAQEBJQINAgYBDgEwBgEMBQECAQECFYgUDcUVAQEBAQEBAQEBAQEBAQEBAQEBAQEUBItFhCIZUoQrAQSTF1mDbwGHWYE1hnQhj1smggscgVQ8MQGCRwEBAQ
X-IronPort-AV: E=Sophos;i="5.13,638,1427760000";  d="png'150?scan'150,208,217,150";a="527688819"
Received: from aer-iport-nat.cisco.com (HELO aer-core-2.cisco.com) ([173.38.203.22]) by aer-iport-4.cisco.com with ESMTP; 18 Jun 2015 08:56:50 +0000
Received: from [10.60.67.87] (ams-bclaise-8916.cisco.com [10.60.67.87]) by aer-core-2.cisco.com (8.14.5/8.14.5) with ESMTP id t5I8unZa013609; Thu, 18 Jun 2015 08:56:50 GMT
Message-ID: <558287D1.70300@cisco.com>
Date: Thu, 18 Jun 2015 10:56:49 +0200
From: Benoit Claise <bclaise@cisco.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D19F3500.ADD87%kwatsen@juniper.net>
In-Reply-To: <D19F3500.ADD87%kwatsen@juniper.net>
Content-Type: multipart/alternative; boundary="------------070505020802080606070500"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/L6agZtcYx97W3vI9w5W0f7CvLwM>
Subject: Re: [netmod] review of draft-openconfig-netmod-opstate-00 (terminology)
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: Thu, 18 Jun 2015 08:56:58 -0000

This is a multi-part message in MIME format.
--------------070505020802080606070500
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 8bit

Dear all,

While I believe that the interim today should primarily focus on getting 
agreement on the problem statements, I anyway looked at the solution.
In preparation, I created my own drawing of the proposed solution.


I hope it will help regarding terminology, as it might become confusing 
very quickly.
Indeed:
- NETCONF only mentions configuration and state data
- RFC 6244 mentions:

        oConfiguration data  is the set of writable data that is required to
           transform a system from its initial default state into its current
           state [RFC4741].

        oOperational state data  is a set of data that has been obtained by
           the system at runtime and influences the system's behavior similar
           to configuration data.  In contrast to configuration data,
           operational state is transient and modified by interactions with
           internal components or other systems via specialized protocols.

        oStatistical data  is the set of read-only data created by a system
           itself.  It describes the performance of the system and its
           components.

- And this draft mentions four different terms: See the drawing.

Regards, Benoit
> [As an individual contributor]
>
> In preparation for our Virtual Interim meeting this Thursday, my 
> primary goal was to understand the problems needing to be solved.   
> Hopefully this isn't too much of a simplification, but there seems to 
> be just the single core issue:
>
>   - no programatic mechanism to relate running state to intended
>     state (configuration).  Currently, management systems must
>     code to the text found YANG description statements.
>
> The draft then puts forth a a number of recommendations to address the 
> issue including:
>
>   - recommendation to put state in leafs
>   - recommendation to use a naming convention
>   - recommendation to have statement like operational true/intent/false
>   - recommendation to add to YANG a map statement  (since lists don't 
> support deep keys)
>   - recommendation to allow config=true inside config=false containers
>
> Some parts of the draft did not make sense to me.   For instance, the 
> synchronous vs asynchronous discussion didn't seem to be connected to 
> the solution.  Same for the desire to have an asynchronous push 
> notification mechanism.  Separately, I don't agree that receiving 
> NETCONF RPC-reply <ok/> means that the intended configuration is 
> operational, so much as "received by the server".  I also don't agree 
> that every configured value has op-state – e.g., consider a server's 
> hostname.
>
> Overall I agree that it would be nice if there was a programmatic 
> mechanism to relate intended and configured state, even if only for 
> state nodes that are identical to configured nodes.  But I 
> m struggling to understand the importance of supporting generic 
> clients that do not understand the semantics of a model well enough to 
> know where and how to consume its operational state.
>
> Thanks,
> Kent
>
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


--------------070505020802080606070500
Content-Type: multipart/related;
 boundary="------------040808050102080707010908"


--------------040808050102080707010908
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Dear all,<br>
      <br>
      While I believe that the interim today should primarily focus on
      getting agreement on the problem statements, I anyway looked at
      the solution.<br>
      In preparation, I created my own drawing of the proposed solution.<br>
      <img src="cid:part1.02040703.08020203@cisco.com" alt=""><br>
      <br>
      I hope it will help regarding terminology, as it might become
      confusing very quickly.<br>
      Indeed: <br>
      - NETCONF only mentions configuration and state data<br>
      - RFC 6244 mentions:<br>
      <blockquote>
        <pre>   o  <font color="#ff0000">Configuration data</font> is the set of writable data that is required to
      transform a system from its initial default state into its current
      state [RFC4741].

   o  <font color="#ff0000">Operational state data</font> is a set of data that has been obtained by
      the system at runtime and influences the system's behavior similar
      to configuration data.  In contrast to configuration data,
      operational state is transient and modified by interactions with
      internal components or other systems via specialized protocols.

   o  <font color="#ff0000">Statistical data</font> is the set of read-only data created by a system
      itself.  It describes the performance of the system and its
      components.
</pre>
      </blockquote>
      - And this draft mentions four different terms: See the drawing.<br>
      <br>
      Regards, Benoit <br>
    </div>
    <blockquote cite="mid:D19F3500.ADD87%25kwatsen@juniper.net"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        [As an individual contributor]</div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <div style="color: rgb(0, 0, 0); font-family: Calibri,
          sans-serif; font-size: 14px;">
          <font face="Calibri,sans-serif"><br>
          </font></div>
        <div><font style="color: rgb(0, 0, 0); font-family: Calibri,
            sans-serif; font-size: 14px;" face="Calibri,sans-serif">In
            preparation for our Virtual Interim meeting this Thursday, m</font><font
            face="Calibri,sans-serif">y primary goal was to understand
            the problems needing to be solved.   Hopefully this isn't
            too much of a simplification, but there seems to be just the
            single core issue:</font></div>
      </div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <font face="Calibri,sans-serif"><br>
        </font></div>
      <div><font style="color: rgb(0, 0, 0); font-family: Calibri,
          sans-serif; font-size: 14px;" face="Calibri,sans-serif">  - no
          programatic mechanism to relate </font><font
          face="Calibri,sans-serif">running state to intended</font></div>
      <div><font face="Calibri,sans-serif">    state (configuration).
           Currently, management systems must</font></div>
      <div><font face="Calibri,sans-serif">    code to the text found
          YANG description statements.</font></div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <br>
      </div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <font face="Calibri,sans-serif">The draft then puts forth a a
          number of recommendations to address the issue including:</font></div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <br>
      </div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
          - recommendation to put state in leafs</div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <font face="Calibri,sans-serif">  - recommendation to use a
          naming convention</font></div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <font face="Calibri,sans-serif">  - recommendation</font><font
          face="Calibri,sans-serif"> to have statement like operational
          true/intent/false</font></div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <font face="Calibri,sans-serif">  - recommendation to add to</font><font
          face="Calibri,sans-serif"> YANG</font><span
          style="font-family: Calibri, sans-serif;"> a map statement
           (since lists don't support deep keys)</span></div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <span style="font-family: Calibri, sans-serif;">  -
          recommendation to allow config=true inside config=false
          containers</span></div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <br>
      </div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        Some parts of the draft did not make sense to me.   For
        instance, the synchronous vs asynchronous discussion didn't seem
        to be connected to the solution.  Same for the desire to have an
        asynchronous push notification mechanism.  Separately, I don't
        agree that receiving NETCONF RPC-reply &lt;ok/&gt; means that
        the intended configuration is operational, so much as "received
        by the server".  I also don't agree that every configured value
        has op-state – e.g., consider a server's hostname.</div>
      <div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif;
        font-size: 14px;">
        <br>
      </div>
      <div><font face="Calibri,sans-serif">Overall I agree that it would
          be nice if there was a programmatic mechanism to relate
          intended and configured state, even if only for state nodes
          that are identical to configured nodes.  But I m struggling
          to understand the importance of supporting generic clients
          that do not understand the semantics of a model well enough to
          know where and how to consume its operational state.</font></div>
      <div><font face="Calibri,sans-serif"><br>
        </font></div>
      <div><font face="Calibri,sans-serif">Thanks,</font></div>
      <div><font face="Calibri,sans-serif">Kent</font></div>
      <div><font face="Calibri,sans-serif"><br>
        </font></div>
      <div><font face="Calibri,sans-serif"><br>
        </font></div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
netmod mailing list
<a class="moz-txt-link-abbreviated" href="mailto:netmod@ietf.org">netmod@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/netmod">https://www.ietf.org/mailman/listinfo/netmod</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>

--------------040808050102080707010908
Content-Type: image/png;
 name="bahcdbch.png"
Content-Transfer-Encoding: base64
Content-ID: <part1.02040703.08020203@cisco.com>
Content-Disposition: inline;
 filename="bahcdbch.png"

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
--------------040808050102080707010908--

--------------070505020802080606070500--


From nobody Thu Jun 18 05:24:19 2015
Return-Path: <lhotka@nic.cz>
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 C5A7E1B316D for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 05:24:17 -0700 (PDT)
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] 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 9OX3Eg_0prD5 for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 05:24:15 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 5AB721B3164 for <netmod@ietf.org>; Thu, 18 Jun 2015 05:24:14 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 302B91CC0234; Thu, 18 Jun 2015 14:24:14 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Kent Watsen <kwatsen@juniper.net>, "netmod\@ietf.org" <netmod@ietf.org>
In-Reply-To: <D1A7943D.B2C97%kwatsen@juniper.net>
References: <D1A7943D.B2C97%kwatsen@juniper.net>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Thu, 18 Jun 2015 14:24:12 +0200
Message-ID: <m2wpz1qk5v.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/ILAxRfaocwaUbU5qL83PT7E4Sc8>
Subject: Re: [netmod] review of draft-openconfig-netmod-model-structure-00
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: Thu, 18 Jun 2015 12:24:17 -0000

Hi Kent,

Kent Watsen <kwatsen@juniper.net> writes:

> [As an individual contributor]
>
> In preparing to tomorrow's virtual interim meeting, I reread the
> model-structure draft with an eye towards understanding the problem
> statements.  So far as I can tell, there are four problem statements:
>
>  1: disparate models exist without guidance how they stitch
>     together 
>
>  2: some uber modules, importing many other modules, exist
>     but are incomplete

To be fair, the draft doesn't say this. In the particular case of
[RTG-CFG], it is expected that a number of other modules will import
(and augment) ietf-routing, so it is the other way around.

Otherwise I agree with your assessment.

Lada

>
>  3: a multi-rooted tree that does not follow any logical
>     construction is difficult to work with operationally
>
>
>  4: no model catalog/registry is available to discover models
>
>
> My issue with these problem statements is that they are provided without
> clear examples illustrating the actual problems.  Some references to
> drafts are provided, but it's left to the reader to determine what the
> problems are.  For instance,
>
>  - for (1), RFCs 7223 and 7317 are provided as an example, but
>    without explanation.  Is the issue that interfaces defined
>    in 7223 would be used by the NTP server defined in 7317?
>  
>  - for (2), drafts-ietf-netmod-routing-cfg is provided as an
>    example.   Looking at it, I see that YANG module
>    ietf-ipv6-unicast-routing imports a number of other modules,
>    but it's not clear why there is an expectation that it
>    should be any more than it is.
>
>  - for (3), RFCs 7223 and 7277 are provided as an example,
>    which I found confusing as 7277 actually augments 7223.
>    But it may be that this example was meant to highlight
>    a rare case where a good thing occurred (the text isn't
>    clear and, if so, a read it wrong the first time)
>
>
> Interestingly, Section 4.2 (service-layer composition) describes what I
> view to be the expected solution to many of these issues, and yet it's not
> described as such.  This implies that there may be yet another problem
> statement missing in my list above.
>
>
> Thanks,
> Kent
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Thu Jun 18 05:44:30 2015
Return-Path: <rjs@rob.sh>
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 B4EA61A89B0 for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 05:44:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.309
X-Spam-Level: 
X-Spam-Status: No, score=-3.309 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, GB_I_INVITATION=-2, HTML_MESSAGE=0.001, J_CHICKENPOX_52=0.6, 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 RFKPn3o4QtSV for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 05:44:26 -0700 (PDT)
Received: from cappuccino.rob.sh (cappuccino.rob.sh [IPv6:2a03:9800:10:4c::cafe:b00c]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EB42D1A900A for <netmod@ietf.org>; Thu, 18 Jun 2015 05:44:25 -0700 (PDT)
Received: from [217.38.186.154] (helo=piccolo.local) by cappuccino.rob.sh with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from <rjs@rob.sh>) id 1Z5ZB0-0007Qp-B0; Thu, 18 Jun 2015 13:44:14 +0100
Date: Thu, 18 Jun 2015 13:44:16 +0100
From: Rob Shakir <rjs@rob.sh>
To: netmod@ietf.org, netmod-chairs@tools.ietf.org
Message-ID: <etPan.5582bd20.e2cd8bf.1799@piccolo.local>
In-Reply-To: <1839526098.10709.1434468618589.JavaMail.nobody@jva2tc217.webex.com>
References: <1839526098.10709.1434468618589.JavaMail.nobody@jva2tc217.webex.com>
X-Mailer: Airmail Beta (308)
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="5582bd20_708d6ec1_1799"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/G1_4JzU5Sp-uexg5Yfs361kCJrE>
Subject: Re: [netmod] WebEx meeting invitation: NETMOD Virtual Interim Meeting
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: Thu, 18 Jun 2015 12:44:29 -0000

--5582bd20_708d6ec1_1799
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi netmod.

Please find the slides that we intend to present during the interim meeti=
ng at:

Model Structure
OpState

Both files are linked from http://www.openconfig.net/file-cabinet

Thanks,
r.




On 16 June 2015 at 16:30:23, NETMOD Working Group (messenger=40webex.com)=
 wrote:

Hello,
NETMOD Working Group invites you to join this WebEx meeting.
=C2=A0
NETMOD Virtual Interim Meeting
Thursday, June 18, 2015
4:00 pm=C2=A0=C2=A0=7C=C2=A0=C2=A0Europe Summer Time (Berlin, GMT+02:00)=C2=
=A0=C2=A0=7C=C2=A0=C2=A02 hrs
=C2=A0
Join WebEx meeting
Meeting number:	649 639 380
Meeting password:	Eicee7mi
=C2=A0
Join by phone
1-877-668-4493=C2=A0Call-in toll free number (US/Canada)
1-650-479-3208=C2=A0Call-in toll number (US/Canada)
Access code:=C2=A0649 639 380
Toll-free calling restrictions
=C2=A0
Add this meeting to your calendar.
=C2=A0
Can't join the meeting=3F Contact support.
=C2=A0
IMPORTANT NOTICE: Please note that this WebEx service allows audio and ot=
her information sent during the session to be recorded, which may be disc=
overable in a legal matter. By joining this session, you automatically co=
nsent to such recordings. If you do not consent to being recorded, discus=
s your concerns with the host or do not join the session.
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F =20
netmod mailing list =20
netmod=40ietf.org =20
https://www.ietf.org/mailman/listinfo/netmod =20

--5582bd20_708d6ec1_1799
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<html><head><style>
body =7B
	font-family: =22Helvetica Neue=22, Helvetica, Arial, sans-serif;
	padding:1em;
	margin:auto;
	background:=23fefefe;
=7D

h1, h2, h3, h4, h5, h6 =7B
	font-weight: bold;
=7D

h1 =7B
	color: =23000000;
	font-size: 28pt;
=7D

h2 =7B
	border-bottom: 1px solid =23CCCCCC;
	color: =23000000;
	font-size: 24px;
=7D

h3 =7B
	font-size: 18px;
=7D

h4 =7B
	font-size: 16px;
=7D

h5 =7B
	font-size: 14px;
=7D

h6 =7B
	color: =23777777;
	background-color: inherit;
	font-size: 14px;
=7D

hr =7B
	height: 0.2em;
	border: 0;
	color: =23CCCCCC;
	background-color: =23CCCCCC;
    display: inherit;
=7D

p, blockquote, ul, ol, dl, li, table, pre =7B
	margin: 15px 0;
=7D

a, a:visited =7B
	color: =234183C4;
	background-color: inherit;
	text-decoration: none;
=7D

=23message =7B
	border-radius: 6px;
	border: 1px solid =23ccc;
	display:block;
	width:100%;
	height:60px;
	margin:6px 0px;
=7D

button, =23ws =7B
	font-size: 12 pt;
	padding: 4px 6px;
	border-radius: 5px;
	border: 1px solid =23bbb;
	background-color: =23eee;
=7D

code, pre, =23ws, =23message =7B
	font-family: Monaco;
	font-size: 10pt;
	border-radius: 3px;
	background-color: =23=468=468=468;
	color: inherit;
=7D

code =7B
	border: 1px solid =23EAEAEA;
	margin: 0 2px;
	padding: 0 5px;
=7D

pre =7B
	border: 1px solid =23CCCCCC;
	overflow: auto;
	padding: 4px 8px;
=7D

pre > code =7B
	border: 0;
	margin: 0;
	padding: 0;
=7D

=23ws =7B background-color: =23f8f8f8; =7D


.bloop=5Fmarkdown table =7B
border-collapse: collapse; =20
font-family: Helvetica, arial, freesans, clean, sans-serif; =20
color: rgb(51, 51, 51); =20
font-size: 15px; line-height: 25px;
padding: 0; =7D

.bloop=5Fmarkdown table tr =7B
border-top: 1px solid =23cccccc;
background-color: white;
margin: 0;
padding: 0; =7D
    =20
.bloop=5Fmarkdown table tr:nth-child(2n) =7B
background-color: =23f8f8f8; =7D

.bloop=5Fmarkdown table tr th =7B
font-weight: bold;
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr td =7B
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr th :first-child, table tr td :first-child =7B
margin-top: 0; =7D

.bloop=5Fmarkdown table tr th :last-child, table tr td :last-child =7B
margin-bottom: 0; =7D

.bloop=5Fmarkdown blockquote=7B
  border-left: 4px solid =23dddddd;
  padding: 0 15px;
  color: =23777777; =7D
  blockquote > :first-child =7B
    margin-top: 0; =7D
  blockquote > :last-child =7B
    margin-bottom: 0; =7D

code, pre, =23ws, =23message =7B
    word-break: normal;
    word-wrap: normal;
=7D

hr =7B
    display: inherit;
=7D

.bloop=5Fmarkdown :first-child =7B
    -webkit-margin-before: 0;
=7D

code, pre, =23ws, =23message =7B
    font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
=7D


.send =7B color:=2377bb77; =7D
.server =7B color:=237799bb; =7D
.error =7B color:=23AA0000; =7D</style></head><body style=3D=22word-wrap:=
 break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-sp=
ace;=22><div class=3D=22bloop=5Fmarkdown=22><p>Hi netmod.</p>

<p>Please find the slides that we intend to present during the interim me=
eting at:</p>

<p><a href=3D=22http://www.openconfig.net/file-cabinet/NETMOD%20interim%2=
0-%20model%20structure%20-%20June%202015.pdf=3Fattredirects=3D0&amp;d=3D1=
=22>Model Structure</a><br>
<a href=3D=22http://www.openconfig.net/file-cabinet/netmod-interim-opstat=
e.pdf=3Fattredirects=3D0&amp;d=3D1=22>OpState</a></p>

<p>Both files are linked from http://www.openconfig.net/file-cabinet</p>

<p>Thanks,<br>
r.</p>

<p></p></div><div class=3D=22bloop=5Foriginal=5Fhtml=22><style>body=7Bfon=
t-family:Consolas,Arial;font-size:13px=7D</style><div id=3D=22bloop=5Fcus=
tomfont=22 style=3D=22font-family:Consolas,Arial;font-size:13px; color: r=
gba(0,0,0,1.0); margin: 0px; line-height: auto;=22><br></div> <br> <div i=
d=3D=22bloop=5Fsign=5F1434631148072482048=22 class=3D=22bloop=5Fsign=22><=
/div> <br><p class=3D=22airmail=5Fon=22 style=3D=22color:=23000;=22>On 16=
 June 2015 at 16:30:23, NETMOD Working Group (<a href=3D=22mailto:messeng=
er=40webex.com=22>messenger=40webex.com</a>) wrote:</p> <blockquote type=3D=
=22cite=22 class=3D=22clean=5Fbq=22><span><div><div></div><div>






<title></title>


<table style=3D=22padding:0; margin:0=22 width=3D=22100%=22 align=3D=22le=
ft=22>
<tbody><tr>
<td style=3D=22padding-top:5px;=22>
<table style=3D=22width: 525px;margin-left:5px=22 align=3D=22left=22>
<tbody><tr>
<td valign=3D=22top=22>
<table>
<tbody><tr>
<td style=3D=22font-size: 15px;font-family: Arial;color:=234D4D4D=22>
Hello,</td>
</tr>
<tr>
<td style=3D=22font-size: 15px;font-family: Arial;color:=234D4D4D;padding=
-top:10px;=22>
NETMOD Working Group invites you to join this WebEx meeting.</td>
</tr>
</tbody></table>
<table>
<tbody><tr style=3D=22line-height: 20px;=22>
<td style=3D=22height:20px=22>&nbsp;</td>
</tr>
</tbody></table>
<table width=3D=22100%=22>
<tbody><tr>
<td style=3D=22font-size:16px; color:=234D4D4D=22><b>NETMOD Virtual Inter=
im
Meeting</b></td>
</tr>
<tr style=3D=22margin:0px=22>
<td>Thursday, June 18, 2015</td>
</tr>
<tr style=3D=22margin:0px=22>
<td>4:00 pm&nbsp;&nbsp;=7C&nbsp;&nbsp;Europe Summer Time (Berlin,
GMT+02:00)&nbsp;&nbsp;=7C&nbsp;&nbsp;2 hrs</td>
</tr>
</tbody></table>
<table>
<tbody><tr style=3D=22line-height: 20px;=22>
<td style=3D=22height:20px=22>&nbsp;</td>
</tr>
</tbody></table>
<table style=3D=22width:auto; width:auto=21important=22>
<tbody><tr>
<td style=3D=22color:=2300A=46=469;font-size:16px=22><a href=3D=22https:/=
/ietf.webex.com/ietf/j.php=3FMTID=3Dmd59bf1fabd2c03edd32a83f501b6dd2e=22 =
style=3D=22text-decoration:none;font-size:16px;color:=2300A=46=469=22><b>=
Join
WebEx meeting</b></a></td>
</tr>
</tbody></table>
<table style=3D=22width:auto; width:auto=21important=22>
<tbody><tr style=3D=22margin:0px=22>
<td style=3D=22padding-right: 5px;=22>Meeting number:</td>
<td>649 639 380</td>
</tr>
<tr>
<td style=3D=22padding-right: 5px;=22>Meeting password:</td>
<td>Eicee7mi</td>
</tr>
</tbody></table>
<table>
<tbody><tr style=3D=22line-height:20px=22>
<td style=3D=22height:20px=22>&nbsp;</td>
</tr>
</tbody></table>
<table>
<tbody><tr>
<td style=3D=22font-size:16px=22><b>Join by phone</b></td>
</tr>
<tr style=3D=22margin:0px=22>
<td><b>1-877-668-4493</b>&nbsp;Call-in toll free number
(US/Canada)</td>
</tr>
<tr style=3D=22margin:0px=22>
<td><b>1-650-479-3208</b>&nbsp;Call-in toll number (US/Canada)</td>
</tr>
<tr style=3D=22margin:0px=22>
<td>Access code:&nbsp;649 639 380</td>
</tr>
<tr style=3D=22margin:0px=22>
<td><a href=3D=22http://www.webex.com/pdf/tollfree=5Frestrictions.pdf=22 =
style=3D=22text-decoration:none;font-size:13px;color:=2300A=46=469;=22>To=
ll-free
calling restrictions</a></td>
</tr>
</tbody></table>
<table>
<tbody><tr style=3D=22line-height:20px=22>
<td style=3D=22height:20px=22>&nbsp;</td>
</tr>
</tbody></table>
<table>
<tbody><tr>
<td style=3D=22font-size:13px=22><a href=3D=22https://ietf.webex.com/ietf=
/j.php=3FMTID=3Dm7f0d04c132a9cffe39aab977f37d5653=22 style=3D=22text-deco=
ration:none;color:=2300A=46=469; font-size:13px=22>Add this
meeting</a> to your calendar.</td>
</tr>
</tbody></table>
<table>
<tbody><tr style=3D=22line-height: 20px;=22>
<td style=3D=22height:20px=22>&nbsp;</td>
</tr>
</tbody></table>
<table>
<tbody><tr>
<td style=3D=22font-size: 13px;font-family: Arial;color: =23666666;=22>
Can't join the meeting=3F <a href=3D=22https://ietf.webex.com/ietf/mc=22 =
style=3D=22text-decoration:none;font-size:13px;font-family:Arial;color:=23=
00A=46=469;font-color:=2300A=46=469;=22>
Contact support.</a></td>
</tr>
</tbody></table>
<table>
<tbody><tr style=3D=22line-height: 10px;=22>
<td style=3D=22height:10px=22>&nbsp;</td>
</tr>
</tbody></table>
<table>
<tbody><tr>
<td style=3D=22font-size:12px;color: =23A0A0A0;=22>IMPORTANT NOTICE: Plea=
se
note that this WebEx service allows audio and other information
sent during the session to be recorded, which may be discoverable
in a legal matter. By joining this session, you automatically
consent to such recordings. If you do not consent to being
recorded, discuss your concerns with the host or do not join the
session.</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>


<hr>=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F
<br>netmod mailing list
<br>netmod=40ietf.org
<br>https://www.ietf.org/mailman/listinfo/netmod
<br></div></div></span></blockquote></div><div class=3D=22bloop=5Fmarkdow=
n=22><p></p></div></body></html>
--5582bd20_708d6ec1_1799--


From nobody Thu Jun 18 06:33:47 2015
Return-Path: <bill.wu@huawei.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 71F191A8FD2 for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 06:33:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.822
X-Spam-Level: 
X-Spam-Status: No, score=-0.822 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, CN_BODY_35=0.339, J_CHICKENPOX_12=0.6, MIME_CHARSET_FARAWAY=2.45, RCVD_IN_DNSWL_MED=-2.3, 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 nH5it9CX9tD1 for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 06:33:45 -0700 (PDT)
Received: from lhrrgout.huawei.com (lhrrgout.huawei.com [194.213.3.17]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 98BC01A8F3A for <netmod@ietf.org>; Thu, 18 Jun 2015 06:33:44 -0700 (PDT)
Received: from 172.18.7.190 (EHLO lhreml406-hub.china.huawei.com) ([172.18.7.190]) by lhrrg02-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id BTX94772; Thu, 18 Jun 2015 13:33:43 +0000 (GMT)
Received: from NKGEML402-HUB.china.huawei.com (10.98.56.33) by lhreml406-hub.china.huawei.com (10.201.5.243) with Microsoft SMTP Server (TLS) id 14.3.158.1; Thu, 18 Jun 2015 14:33:42 +0100
Received: from NKGEML501-MBS.china.huawei.com ([169.254.2.89]) by nkgeml402-hub.china.huawei.com ([10.98.56.33]) with mapi id 14.03.0158.001; Thu, 18 Jun 2015 21:33:38 +0800
From: Qin Wu <bill.wu@huawei.com>
To: Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: review of draft-openconfig-netmod-model-structure-00
Thread-Index: AQHQqWV7CmWaees2y02p6f2FeX+aJp2yPhfQ
Date: Thu, 18 Jun 2015 13:33:37 +0000
Message-ID: <B8F9A780D330094D99AF023C5877DABA8475F7A5@nkgeml501-mbs.china.huawei.com>
References: <D1A7943D.B2C97%kwatsen@juniper.net>
In-Reply-To: <D1A7943D.B2C97%kwatsen@juniper.net>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.138.41.180]
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/9Dzb8e1RXrw-OAjo3dcrU-RBWjM>
Subject: Re: [netmod] review of draft-openconfig-netmod-model-structure-00
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: Thu, 18 Jun 2015 13:33:46 -0000

SGksIEtlbnQ6DQotLS0tLdPKvP7Urbz+LS0tLS0NCj63orz+yMs6IG5ldG1vZCBbbWFpbHRvOm5l
dG1vZC1ib3VuY2VzQGlldGYub3JnXSC0+rHtIEtlbnQgV2F0c2VuDQo+t6LLzcqxvOQ6IDIwMTXE
6jbUwjE4yNUgOToyNA0KPsrVvP7IyzogbmV0bW9kQGlldGYub3JnDQo+1vfM4jogW25ldG1vZF0g
cmV2aWV3IG9mIGRyYWZ0LW9wZW5jb25maWctbmV0bW9kLW1vZGVsLXN0cnVjdHVyZS0wMA0KPg0K
Pg0KPiBbQXMgYW4gaW5kaXZpZHVhbCBjb250cmlidXRvcl0NCj4NCj5JbiBwcmVwYXJpbmcgdG8g
dG9tb3Jyb3cncyB2aXJ0dWFsIGludGVyaW0gbWVldGluZywgSSByZXJlYWQgdGhlIG1vZGVsLXN0
cnVjdHVyZSBkcmFmdCB3aXRoIGFuIGV5ZSB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgdGhlIHByb2Js
ZW0gc3RhdGVtZW50cy4gIFNvIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGVyZSBhcmUgZm91ciBwcm9i
bGVtIA0KPnN0YXRlbWVudHM6DQo+DQo+IDE6IGRpc3BhcmF0ZSBtb2RlbHMgZXhpc3Qgd2l0aG91
dCBndWlkYW5jZSBob3cgdGhleSBzdGl0Y2gNCj4gICAgdG9nZXRoZXIgDQo+DQo+IDI6IHNvbWUg
dWJlciBtb2R1bGVzLCBpbXBvcnRpbmcgbWFueSBvdGhlciBtb2R1bGVzLCBleGlzdA0KPiAgICBi
dXQgYXJlIGluY29tcGxldGUNCj4NCj4gMzogYSBtdWx0aS1yb290ZWQgdHJlZSB0aGF0IGRvZXMg
bm90IGZvbGxvdyBhbnkgbG9naWNhbA0KPiAgICBjb25zdHJ1Y3Rpb24gaXMgZGlmZmljdWx0IHRv
IHdvcmsgd2l0aCBvcGVyYXRpb25hbGx5DQo+DQo+DQo+IDQ6IG5vIG1vZGVsIGNhdGFsb2cvcmVn
aXN0cnkgaXMgYXZhaWxhYmxlIHRvIGRpc2NvdmVyIG1vZGVscw0KPg0KPg0KPk15IGlzc3VlIHdp
dGggdGhlc2UgcHJvYmxlbSBzdGF0ZW1lbnRzIGlzIHRoYXQgdGhleSBhcmUgcHJvdmlkZWQgd2l0
aG91dCBjbGVhciBleGFtcGxlcyBpbGx1c3RyYXRpbmcgdGhlIGFjdHVhbCBwcm9ibGVtcy4gIFNv
bWUgcmVmZXJlbmNlcyB0byBkcmFmdHMgYXJlIHByb3ZpZGVkLCBidXQgaXQncyBsZWZ0IHRvIHRo
ZSByZWFkZXIgdG8gDQo+ZGV0ZXJtaW5lIHdoYXQgdGhlIHByb2JsZW1zIGFyZS4gIEZvciBpbnN0
YW5jZSwNCj4NCj4gLSBmb3IgKDEpLCBSRkNzIDcyMjMgYW5kIDczMTcgYXJlIHByb3ZpZGVkIGFz
IGFuIGV4YW1wbGUsIGJ1dA0KPiAgIHdpdGhvdXQgZXhwbGFuYXRpb24uICBJcyB0aGUgaXNzdWUg
dGhhdCBpbnRlcmZhY2VzIGRlZmluZWQNCj4gICBpbiA3MjIzIHdvdWxkIGJlIHVzZWQgYnkgdGhl
IE5UUCBzZXJ2ZXIgZGVmaW5lZCBpbiA3MzE3Pw0KPiANCj4gLSBmb3IgKDIpLCBkcmFmdHMtaWV0
Zi1uZXRtb2Qtcm91dGluZy1jZmcgaXMgcHJvdmlkZWQgYXMgYW4NCj4gICBleGFtcGxlLiAgIExv
b2tpbmcgYXQgaXQsIEkgc2VlIHRoYXQgWUFORyBtb2R1bGUNCj4gICBpZXRmLWlwdjYtdW5pY2Fz
dC1yb3V0aW5nIGltcG9ydHMgYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcywNCj4gICBidXQgaXQn
cyBub3QgY2xlYXIgd2h5IHRoZXJlIGlzIGFuIGV4cGVjdGF0aW9uIHRoYXQgaXQNCj4gICBzaG91
bGQgYmUgYW55IG1vcmUgdGhhbiBpdCBpcy4NCj4NCj4gLSBmb3IgKDMpLCBSRkNzIDcyMjMgYW5k
IDcyNzcgYXJlIHByb3ZpZGVkIGFzIGFuIGV4YW1wbGUsDQo+ICAgd2hpY2ggSSBmb3VuZCBjb25m
dXNpbmcgYXMgNzI3NyBhY3R1YWxseSBhdWdtZW50cyA3MjIzLg0KPiAgIEJ1dCBpdCBtYXkgYmUg
dGhhdCB0aGlzIGV4YW1wbGUgd2FzIG1lYW50IHRvIGhpZ2hsaWdodA0KPiAgIGEgcmFyZSBjYXNl
IHdoZXJlIGEgZ29vZCB0aGluZyBvY2N1cnJlZCAodGhlIHRleHQgaXNuJ3QNCj4gICBjbGVhciBh
bmQsIGlmIHNvLCBhIHJlYWQgaXQgd3JvbmcgdGhlIGZpcnN0IHRpbWUpDQoNCkludGVyZXN0aW5n
bHksIFNlY3Rpb24gNC4yIChzZXJ2aWNlLWxheWVyIGNvbXBvc2l0aW9uKSBkZXNjcmliZXMgd2hh
dCBJIHZpZXcgdG8gYmUgdGhlIGV4cGVjdGVkIHNvbHV0aW9uIHRvIG1hbnkgb2YgdGhlc2UgaXNz
dWVzLCBhbmQgeWV0IGl0J3Mgbm90IGRlc2NyaWJlZCBhcyBzdWNoLiAgDQoNCltRaW5dOiBzZXJ2
aWNlIGxheWVyIGNvbXBvc2l0aW9uIGZvbGxvd3MgdG9wIGRvd24gYXBwcm9hY2gsIGFub3RoZXIg
YXBwcm9hY2ggaXMgYm90dG9tIHVwIGFwcHJvYWNoIG9yIG1hcCBuZXR3b3JrIHRlY2hub2xvZ3kg
c3BlY2lmaWMgbW9kZWwgdG8gdGVjaG5vbG9neSBpbmRlcGVuZGVudCBtb2RlbCwgd2hhdCBtb2Rl
bCBzdHJ1Y3R1cmUgZHJhZnQgcHJvcG9zZWQgc29sdXRpb24sIGluIG15IHVuZGVyc3RhbmRpbmcs
IGlzIHB1bGwgdnMgcHVzaCBhcHByb2FjaGVzIGRpc2N1c3NlZCBpbiB0aGUgc2VjdGlvbiAzLCBv
bmUgZXhhbXBsZSBmb3IgcHVsbCB2cyBwdXNoIGFwcHJvYWNoLCBJIHRoaW5rIGlzDQpkcmFmdHMt
aWV0Zi1uZXRtb2Qtcm91dGluZy1jZmcgZm9sbG93cyBwdXNoIGFwcHJvYWNoIHdoaWxlIGRyYWZ0
LXNoYWlraC1pZHItYmdwLW1vZGVsLTAyIGZvbGxvd3MgcHVsbCBhcHByb2FjaCwgSSBhbSB3b25k
ZXJpbmcgaG93IHRvIGNvbWUgdXAgaHlicmlkIGNvbnN0cnVjdGlvbiB3aGljaCBjb21iaW5lcyBi
b3RoIGFwcHJvYWNoZXMuIEJ1dCBpdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHNlZSB0aGF0IGhh
cHBlbi4NCg0KVGhpcyBpbXBsaWVzIHRoYXQgdGhlcmUgbWF5IGJlIHlldCBhbm90aGVyIHByb2Js
ZW0gc3RhdGVtZW50IG1pc3NpbmcgaW4gbXkgbGlzdCBhYm92ZS4NCg0KW1Fpbl06IEFub3RoZXIg
cHJvYmxlbSBzdGF0ZW1lbnQgaXMgbGlua2luZyB0byBsM3NtIHdvcmsgYW5kIFlBTkcgY2xhc3Np
ZmljYXRpb24gd29yay4NCg0KPlRoYW5rcywNCj5LZW50DQo=


From nobody Thu Jun 18 11:39:12 2015
Return-Path: <bclaise@cisco.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 8BBE71B3349; Thu, 18 Jun 2015 11:39:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.51
X-Spam-Level: 
X-Spam-Status: No, score=-14.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 3yZ2QQ3fqgmN; Thu, 18 Jun 2015 11:39:09 -0700 (PDT)
Received: from aer-iport-3.cisco.com (aer-iport-3.cisco.com [173.38.203.53]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 89C551B334D; Thu, 18 Jun 2015 11:39:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=3705; q=dns/txt; s=iport; t=1434652748; x=1435862348; h=to:from:subject:cc:message-id:date:mime-version; bh=5reWyY0mQSbiFcYKtJ7RStyhkYGqrjwPFOMSaLC6RFc=; b=HyQE3KxbRMv6INSilcLRMx2/D+5wyQGTta1Bysa6RKC/J52ob2hHzm6Y 7pBRDjqjZmD5xuCsjG4p9hLmkjs3DPQxBGtakOsdz3KvydJFq+ukSUeyb 75sXonPLJCklFjfPHkgDsk0eoZAhnXrJ9a7pWFCISxW7eMee6V3D7/gur o=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0DnBAAyD4NV/xbLJq1cg2Rfgx62L4YbhXaCCgEBAQEBAYELhCUnRRABHx0WCwILAwIBAgFLDQgBAQWIJg2va5ZHAQEBAQEFAQEBAQEBHI0CgSeCIoJvgUMFk3CEU4JXhCGBdoY0j3wmY4E1gWM8MQGCRwEBAQ
X-IronPort-AV: E=Sophos;i="5.13,640,1427760000";  d="scan'208,217";a="526494891"
Received: from aer-iport-nat.cisco.com (HELO aer-core-3.cisco.com) ([173.38.203.22]) by aer-iport-3.cisco.com with ESMTP; 18 Jun 2015 18:39:06 +0000
Received: from [10.60.67.87] (ams-bclaise-8916.cisco.com [10.60.67.87]) by aer-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id t5IId6hE028446; Thu, 18 Jun 2015 18:39:06 GMT
To: NETMOD Working Group <netmod@ietf.org>
From: Benoit Claise <bclaise@cisco.com>
Message-ID: <5583104A.6080906@cisco.com>
Date: Thu, 18 Jun 2015 20:39:06 +0200
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------060301020002080701010303"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/QDKmTrFynGt4wBAgZnHqKrfiuQg>
Cc: IESG Secretary <iesg-secretary@ietf.org>
Subject: [netmod] Interim NETMOD meeting: June 25th
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: Thu, 18 Jun 2015 18:39:10 -0000

This is a multi-part message in MIME format.
--------------060301020002080701010303
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

Dear all,

Since we were short of time today, the NETMOD Working Group will host a 
2-hour interim meeting on Thursday 6/18/2015 (10am-noon Eastern).
As discussed during the call, the only available date before Prague.

The agenda is the continuation of today's interim, i.e. split between 
the opstate and model-structure drafts.
http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/ 
<http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/>
http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/

I believe the interim meeting today was useful. This is one of those 
important interim meetings regarding the consistency and organization of 
all YANG models within the IETF and the industry. Some requirements were 
agreed upon, some points were clarified, and some other ones need more 
work (we identified that work).

We know the rules 
(http://www.ietf.org/iesg/statement/interim-meetings.html : "Conference 
calls and jabber sessions must be announced at least two weeks prior to 
the event."). However, in order to make progress on these important 
matters, and with the IESG blessing, I'll use my AD override card.

Regards, Benoit (OPS AD)



--------------060301020002080701010303
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Dear all,<br>
    <br>
    Since we were short of time today, the NETMOD Working Group will
    host a 2-hour interim meeting on Thursday 6/18/2015 (10am-noon
    Eastern). <br>
    As discussed during the call, the only available date before Prague.<br>
    <br>
    The agenda is the continuation of today's interim, i.e. split
    between the opstate and model-structure drafts. <br>
    <span style="mso-ansi-language:EN-US" lang="EN-US"><a
        href="http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/">Â Â Â 
        <a class="moz-txt-link-freetext" href="http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/">http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/</a></a><o:p></o:p></span><span
      style="mso-ansi-language:EN-US" lang="EN-US"><br>
      <a
href="http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/">Â Â Â 
<a class="moz-txt-link-freetext" href="http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/">http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/</a></a><br>
    </span><br>
    I believe the interim meeting today was useful. This is one of those
    important interim meetings regarding the consistency and
    organization of all YANG models within the IETF and the industry.
    Some requirements were agreed upon, some points were clarified, and
    some other ones need more work (we identified that work).<br>
    <br>
    We know the rules (<a class="moz-txt-link-freetext"
      href="http://www.ietf.org/iesg/statement/interim-meetings.html">http://www.ietf.org/iesg/statement/interim-meetings.html</a>
    : "Conference calls and jabber sessions must be announced at least
    two weeks prior to the event."). However, in order to make progress
    on these important matters, and with the IESG blessing, I'll use my
    AD override card.<br>
    <br>
    Regards, Benoit (OPS AD)<br>
    <br>
    <br>
  </body>
</html>

--------------060301020002080701010303--


From nobody Thu Jun 18 12:02:48 2015
Return-Path: <bclaise@cisco.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 3CF741A8A0F; Thu, 18 Jun 2015 12:02:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.51
X-Spam-Level: 
X-Spam-Status: No, score=-14.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 6qQ0NSEeAvzp; Thu, 18 Jun 2015 12:02:46 -0700 (PDT)
Received: from aer-iport-4.cisco.com (aer-iport-4.cisco.com [173.38.203.54]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1C6911A03A3; Thu, 18 Jun 2015 12:02:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=5194; q=dns/txt; s=iport; t=1434654166; x=1435863766; h=subject:to:references:cc:from:message-id:date: mime-version:in-reply-to; bh=W5oRd/qGNf8eAYezYm17TbT9Nla8/uYTYoYHlZttJsI=; b=N9icDcaZroIWCi/RV3bBmBL7Hp+APGSKLUeIYS0c/tZ3NBtbKHfwiVeB YRpVmsZr0jkbvjU973Cz+CPsI/W+q5o8+cLKm5XW8cU+4lLEe+rG/ks3x DrT8FxWN4tpnJIxpsWrO8Plv1tEFKqRKAIfeeMGLn765hZAa0OrrSxmBW Y=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CsBABMFYNV/xbLJq1cg2Rfv1wBC4UsSgKCCAEBAQEBAYELhCMBAQQBAQFlBgoBEAsYCRYPCQMCAQIBFTAGDQYCAQEFiCYNxkUBAQEBAQEBAQEBAQEBAQEBAQEBAQEXi0WBPYEngiIHhCsFk3CEU4JXhCGBdoY0j3wmY4E1gWM8MQGCRwEBAQ
X-IronPort-AV: E=Sophos;i="5.13,640,1427760000";  d="scan'208,217";a="528366488"
Received: from aer-iport-nat.cisco.com (HELO aer-core-3.cisco.com) ([173.38.203.22]) by aer-iport-4.cisco.com with ESMTP; 18 Jun 2015 19:02:43 +0000
Received: from [10.60.67.87] (ams-bclaise-8916.cisco.com [10.60.67.87]) by aer-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id t5IJ2gpa016596; Thu, 18 Jun 2015 19:02:43 GMT
To: NETMOD Working Group <netmod@ietf.org>
References: <5583104A.6080906@cisco.com>
From: Benoit Claise <bclaise@cisco.com>
Message-ID: <558315D2.8090706@cisco.com>
Date: Thu, 18 Jun 2015 21:02:42 +0200
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1
MIME-Version: 1.0
In-Reply-To: <5583104A.6080906@cisco.com>
Content-Type: multipart/alternative; boundary="------------060709040800060206090304"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/emKGflzSutMcIUkMUkOADPjofjQ>
Cc: IESG Secretary <iesg-secretary@ietf.org>
Subject: Re: [netmod] Interim NETMOD meeting: June 25th
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: Thu, 18 Jun 2015 19:02:48 -0000

This is a multi-part message in MIME format.
--------------060709040800060206090304
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit

On 18/06/2015 20:39, Benoit Claise wrote:
> Dear all,
>
> Since we were short of time today, the NETMOD Working Group will host 
> a 2-hour interim meeting on Thursday 6/18/2015 
It should obviously be for Thursday 6/25/2015.

Regards, Benoit
> (10am-noon Eastern).
> As discussed during the call, the only available date before Prague.
>
> The agenda is the continuation of today's interim, i.e. split between 
> the opstate and model-structure drafts.
> <http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/>http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/
> <http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/>http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/
>
> I believe the interim meeting today was useful. This is one of those 
> important interim meetings regarding the consistency and organization 
> of all YANG models within the IETF and the industry. Some requirements 
> were agreed upon, some points were clarified, and some other ones need 
> more work (we identified that work).
>
> We know the rules 
> (http://www.ietf.org/iesg/statement/interim-meetings.html : 
> "Conference calls and jabber sessions must be announced at least two 
> weeks prior to the event."). However, in order to make progress on 
> these important matters, and with the IESG blessing, I'll use my AD 
> override card.
>
> Regards, Benoit (OPS AD)
>
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


--------------060709040800060206090304
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 18/06/2015 20:39, Benoit Claise
      wrote:<br>
    </div>
    <blockquote cite="mid:5583104A.6080906@cisco.com" type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      Dear all,<br>
      <br>
      Since we were short of time today, the NETMOD Working Group will
      host a 2-hour interim meeting on Thursday 6/18/2015 </blockquote>
    It should obviously be for Thursday 6/25/2015.<br>
    <br>
    Regards, Benoit<br>
    <blockquote cite="mid:5583104A.6080906@cisco.com" type="cite">(10am-noon

      Eastern). <br>
      As discussed during the call, the only available date before
      Prague.<br>
      <br>
      The agenda is the continuation of today's interim, i.e. split
      between the opstate and model-structure drafts. <br>
      <span style="mso-ansi-language:EN-US" lang="EN-US"><a
          moz-do-not-send="true"
          href="http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/">   

        </a><a moz-do-not-send="true" class="moz-txt-link-freetext"
          href="http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/">http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/</a><o:p></o:p></span><span
        style="mso-ansi-language:EN-US" lang="EN-US"><br>
        <a moz-do-not-send="true"
href="http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/">   
        </a><a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/">http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/</a><br>
      </span><br>
      I believe the interim meeting today was useful. This is one of
      those important interim meetings regarding the consistency and
      organization of all YANG models within the IETF and the industry.
      Some requirements were agreed upon, some points were clarified,
      and some other ones need more work (we identified that work).<br>
      <br>
      We know the rules (<a moz-do-not-send="true"
        class="moz-txt-link-freetext"
        href="http://www.ietf.org/iesg/statement/interim-meetings.html">http://www.ietf.org/iesg/statement/interim-meetings.html</a>
      : "Conference calls and jabber sessions must be announced at least
      two weeks prior to the event."). However, in order to make
      progress on these important matters, and with the IESG blessing,
      I'll use my AD override card.<br>
      <br>
      Regards, Benoit (OPS AD)<br>
      <br>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
netmod mailing list
<a class="moz-txt-link-abbreviated" href="mailto:netmod@ietf.org">netmod@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/netmod">https://www.ietf.org/mailman/listinfo/netmod</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>

--------------060709040800060206090304--


From nobody Thu Jun 18 13:37:30 2015
Return-Path: <messenger@webex.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 DC63F1B2D91 for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 13:37:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.91
X-Spam-Level: 
X-Spam-Status: No, score=-8.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, GB_I_INVITATION=-2, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, 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 p8K7Ob4AjbnC for <netmod@ietfa.amsl.com>; Thu, 18 Jun 2015 13:37:28 -0700 (PDT)
Received: from sjmda11.webex.com (sjmda11.webex.com [64.68.124.128]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5F7431B2A78 for <netmod@ietf.org>; Thu, 18 Jun 2015 13:37:28 -0700 (PDT)
Received: from jva2tc205.webex.com (sjc02-wxp00-lbace03-core-vl120-np10b-3.webex.com [64.68.121.238]) by sjmda11.webex.com (Postfix) with ESMTP id 16B36C6783 for <netmod@ietf.org>; Thu, 18 Jun 2015 20:37:28 +0000 (GMT)
Received: from jva2tc205.webex.com (localhost [127.0.0.1]) by jva2tc205.webex.com (Postfix) with ESMTP id CA07B80132 for <netmod@ietf.org>; Thu, 18 Jun 2015 20:37:27 +0000 (GMT)
Date: Thu, 18 Jun 2015 20:37:27 +0000 (GMT)
From: NETMOD Working Group <messenger@webex.com>
To: netmod@ietf.org
Message-ID: <1774890203.14779.1434659847825.JavaMail.nobody@jva2tc205.webex.com>
MIME-Version: 1.0
Content-Type: multipart/Mixed;  boundary="----=_Part_14777_910194101.1434659847825"
X-Priority: 3
Importance: normal
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/tBMYXg-SAYR1B9SSxI6lMwlGauo>
Subject: [netmod] WebEx meeting invitation: NETMOD Virtual Interim Meeting
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: netmod-chairs@tools.ietf.org
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: Thu, 18 Jun 2015 20:37:30 -0000

------=_Part_14777_910194101.1434659847825
Content-Type: multipart/Alternative; 
	boundary="----=_Part_14778_1106237926.1434659847825"

------=_Part_14778_1106237926.1434659847825
Content-Type: text/plain;charset=UTF-8
Content-Transfer-Encoding: base64

CkhlbGxvLAoKTkVUTU9EIFdvcmtpbmcgR3JvdXAgaW52aXRlcyB5b3UgdG8gam9pbiB0aGlzIFdl
YkV4IG1lZXRpbmcuCgoKTkVUTU9EIFZpcnR1YWwgSW50ZXJpbSBNZWV0aW5nClRodXJzZGF5LCBK
dW5lIDI1LCAyMDE1CjQ6MDAgcG0gIHwgIEV1cm9wZSBTdW1tZXIgVGltZSAoQmVybGluLCBHTVQr
MDI6MDApICB8ICAyIGhycwoKCkpPSU4gV0VCRVggTUVFVElORwpodHRwczovL2lldGYud2ViZXgu
Y29tL2lldGYvai5waHA/TVRJRD1tYzIwMzA3YmFlYjI1NzNlMWM5ZWU5N2JmYjU2ODczODIKTWVl
dGluZyBudW1iZXI6IDY0NSA2OTAgMjE1Ck1lZXRpbmcgcGFzc3dvcmQ6IGtpZThpZUZvCgoNCkpP
SU4gQlkgUEhPTkUNCjEtODc3LTY2OC00NDkzIENhbGwtaW4gdG9sbCBmcmVlIG51bWJlciAoVVMv
Q2FuYWRhKSAKMS02NTAtNDc5LTMyMDggQ2FsbC1pbiB0b2xsIG51bWJlciAoVVMvQ2FuYWRhKQpB
Y2Nlc3MgY29kZTogNjQ1IDY5MCAyMTUKClRvbGwtZnJlZSBkaWFsaW5nIHJlc3RyaWN0aW9uczog
Cmh0dHA6Ly93d3cud2ViZXguY29tL3BkZi90b2xsZnJlZV9yZXN0cmljdGlvbnMucGRmDQoNCgpB
ZGQgdGhpcyBtZWV0aW5nIHRvIHlvdXIgY2FsZW5kYXI6Cmh0dHBzOi8vaWV0Zi53ZWJleC5jb20v
aWV0Zi9qLnBocD9NVElEPW04OTdhODI3MjM0MmZmMjVjNzEyNzJmNTAwOGQxMjk1Mw0KDQoKQ2Fu
J3Qgam9pbiB0aGUgbWVldGluZz8gQ29udGFjdCBzdXBwb3J0IGhlcmU6Cmh0dHBzOi8vaWV0Zi53
ZWJleC5jb20vaWV0Zi9tYwoKCklNUE9SVEFOVCBOT1RJQ0U6IFBsZWFzZSBub3RlIHRoYXQgdGhp
cyBXZWJFeCBzZXJ2aWNlIGFsbG93cyBhdWRpbyBhbmQgb3RoZXIgaW5mb3JtYXRpb24gc2VudCBk
dXJpbmcgdGhlIHNlc3Npb24gdG8gYmUgcmVjb3JkZWQsIHdoaWNoIG1heSBiZSBkaXNjb3ZlcmFi
bGUgaW4gYSBsZWdhbCBtYXR0ZXIuIEJ5IGpvaW5pbmcgdGhpcyBzZXNzaW9uLCB5b3UgYXV0b21h
dGljYWxseSBjb25zZW50IHRvIHN1Y2ggcmVjb3JkaW5ncy4gSWYgeW91IGRvIG5vdCBjb25zZW50
IHRvIGJlaW5nIHJlY29yZGVkLCBkaXNjdXNzIHlvdXIgY29uY2VybnMgd2l0aCB0aGUgaG9zdCBv
ciBkbyBub3Qgam9pbiB0aGUgc2Vzc2lvbi4K
------=_Part_14778_1106237926.1434659847825
Content-Type: text/html;charset=UTF-8
Content-Transfer-Encoding: base64

PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lk
dGgsIGluaXRpYWwtc2NhbGU9MSIgLz48Ym9keT48c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpkaXYs
cCx0ZCxzcGFuIHt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7d29yZC1icmVhazogbm9ybWFsO30KCnRh
YmxlIHtib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOyBib3JkZXI6IDA7Ym9yZGVyLXNwYWNpbmc6
IDA7Ym9yZGVyLWNvbG9yOiB3aGl0ZTsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7d2lkdGg6NTI1cHg7
IG1heC13aWR0aDo1MjVweCFpbXBvcnRhbnQ7IG1pbi13aWR0aDogMjc5cHghaW1wb3J0YW50O30K
dHIge2xpbmUtaGVpZ2h0OiAyMHB4O30KCnRkLGEge2ZvbnQtc2l6ZTogMTVweDtmb250LWZhbWls
eTogQXJpYWw7Y29sb3I6ICM2NjY2NjY7cGFkZGluZzowO30KPC9zdHlsZT4KCjx0YWJsZSBzdHls
ZT0icGFkZGluZzowOyBtYXJnaW46MCIgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0Ij4KICAgPHRy
PgogICAgICA8dGQgc3R5bGU9InBhZGRpbmctdG9wOjVweDsiPgogICAgICAgIDx0YWJsZSBzdHls
ZT0id2lkdGg6IDUyNXB4O21hcmdpbi1sZWZ0OjVweCIgYWxpZ249ImxlZnQiPgoJCQk8dHI+CgkJ
CQk8dGQgdmFsaWduPSJ0b3AiPgoKPHRhYmxlPgogICAgICAgPHRyPgogICAgICAgICAgPHRkIHN0
eWxlPSJmb250LXNpemU6IDE1cHg7Zm9udC1mYW1pbHk6IEFyaWFsO2NvbG9yOiM0RDRENEQiPgog
ICAgICAgICAgICAgSGVsbG8sCiAgICAgICAgICA8L3RkPgogICAgICAgPC90cj4KICAgICAgIDx0
cj4KICAgICAgICAgICA8dGQgc3R5bGU9ImZvbnQtc2l6ZTogMTVweDtmb250LWZhbWlseTogQXJp
YWw7Y29sb3I6IzRENEQ0RDtwYWRkaW5nLXRvcDoxMHB4OyI+CiAgICAgICAgICAgICAgICBORVRN
T0QgV29ya2luZyBHcm91cCBpbnZpdGVzIHlvdSB0byBqb2luIHRoaXMgV2ViRXggbWVldGluZy4K
ICAgICAgICAgICAgICAgIAkgICAgICAgICAgIDwvdGQ+CiAgICAgIDwvdHI+CjwvdGFibGU+CgoK
Cgo8dGFibGU+PHRyIHN0eWxlPSJsaW5lLWhlaWdodDogMjBweDsiPjx0ZCBzdHlsZT0iaGVpZ2h0
OjIwcHgiPiZuYnNwOzwvdGQ+PC90cj48L3RhYmxlPgoJCQkJCQk8dGFibGUgIHdpZHRoPSIxMDAl
Ij4KCQkJCQkJCTx0cj4KCQkJCQkJCQk8dGQgc3R5bGU9ImZvbnQtc2l6ZToxNnB4OyBjb2xvcjoj
NEQ0RDREIj4KCQkJCQkJCQkJPGI+TkVUTU9EIFZpcnR1YWwgSW50ZXJpbSBNZWV0aW5nPC9iPgoJ
CQkJCQkJCTwvdGQ+CgkJCQkJCQk8L3RyPgoJCQkJCQkJPHRyIHN0eWxlPSJtYXJnaW46MHB4Ij4K
CQkJCQkJCQk8dGQ+VGh1cnNkYXksIEp1bmUgMjUsIDIwMTUKCQkJCQkJCQk8L3RkPgoJCQkJCQkJ
PC90cj4KCQkJCQkJCTx0ciBzdHlsZT0ibWFyZ2luOjBweCI+CgkJCQkJCQkJPHRkPjQ6MDAgcG0m
bmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7RXVyb3BlIFN1bW1lciBUaW1lIChCZXJsaW4sIEdNVCsw
MjowMCkmbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7MiBocnMKCQkJCQkJCQk8L3RkPgoJCQkJCQkJ
PC90cj4KCQkJCQkJPC90YWJsZT4KCjx0YWJsZT48dHIgc3R5bGU9ImxpbmUtaGVpZ2h0OiAyMHB4
OyI+PHRkIHN0eWxlPSJoZWlnaHQ6MjBweCI+Jm5ic3A7PC90ZD48L3RyPjwvdGFibGU+CgkJCQkJ
CTx0YWJsZSBzdHlsZT0id2lkdGg6YXV0bzsgd2lkdGg6YXV0byFpbXBvcnRhbnQiPgoJCQkJCQkJ
PHRyPgoJCQkJCQkJCTx0ZCBzdHlsZT0iY29sb3I6IzAwQUZGOTtmb250LXNpemU6MTZweCI+CgkJ
CQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vaWV0Zi53ZWJleC5jb20vaWV0Zi9qLnBocD9NVElEPW1j
MjAzMDdiYWViMjU3M2UxYzllZTk3YmZiNTY4NzM4MiIKCQkJCQkJCQkJCXN0eWxlPSJ0ZXh0LWRl
Y29yYXRpb246bm9uZTtmb250LXNpemU6MTZweDtjb2xvcjojMDBBRkY5Ij4KCQkJCQkJCQkJCTxi
PkpvaW4gV2ViRXggbWVldGluZzwvYj4KCQkJCQkJCQkJPC9hPgoJCQkJCQkJCTwvdGQ+CgkJCQkJ
CQk8L3RyPgoJCQkJCQk8L3RhYmxlPgoJCQkJCQk8dGFibGUgc3R5bGU9IndpZHRoOmF1dG87IHdp
ZHRoOmF1dG8haW1wb3J0YW50Ij4KCQkJCQkJCTx0ciBzdHlsZT0ibWFyZ2luOjBweCI+CgkJCQkJ
CQkJPHRkIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OiA1cHg7Ij4KCQkJCQkJCQkJTWVldGluZyBudW1i
ZXI6CgkJCQkJCQkJPC90ZD4KCQkJCQkJCQk8dGQ+NjQ1IDY5MCAyMTUKCQkJCQkJCQk8L3RkPgoJ
CQkJCQkJPC90cj4KCQkJCQkJCTx0cj4KCQkJCQkJCQk8dGQgc3R5bGU9InBhZGRpbmctcmlnaHQ6
IDVweDsiPk1lZXRpbmcgcGFzc3dvcmQ6PC90ZD4KCQkJCQkJCQk8dGQ+a2llOGllRm88L3RkPgoJ
CQkJCQkJPC90cj4KCQkJCQkJPC90YWJsZT4KCgoKCQoKCTx0YWJsZT48dHIgc3R5bGU9ImxpbmUt
aGVpZ2h0OjIwcHgiPjx0ZCBzdHlsZT0iaGVpZ2h0OjIwcHgiPiZuYnNwOzwvdGQ+PC90cj48L3Rh
YmxlPjx0YWJsZT48dHI+PHRkIHN0eWxlPSJmb250LXNpemU6MTZweCI+PGI+Sm9pbiBieSBwaG9u
ZTwvYj48L3RkPjwvdHI+PHRyIHN0eWxlPSJtYXJnaW46MHB4Ij48dGQ+PGI+MS04NzctNjY4LTQ0
OTM8L2I+Jm5ic3A7Q2FsbC1pbiB0b2xsIGZyZWUgbnVtYmVyIChVUy9DYW5hZGEpPC90ZD48L3Ry
Pjx0ciBzdHlsZT0ibWFyZ2luOjBweCI+PHRkPjxiPjEtNjUwLTQ3OS0zMjA4PC9iPiZuYnNwO0Nh
bGwtaW4gdG9sbCBudW1iZXIgKFVTL0NhbmFkYSk8L3RkPjwvdHI+PHRyIHN0eWxlPSJtYXJnaW46
MHB4Ij48dGQ+QWNjZXNzIGNvZGU6Jm5ic3A7NjQ1IDY5MCAyMTU8L3RkPjwvdHI+PHRyIHN0eWxl
PSJtYXJnaW46MHB4Ij48dGQ+PGEgaHJlZj0iaHR0cDovL3d3dy53ZWJleC5jb20vcGRmL3RvbGxm
cmVlX3Jlc3RyaWN0aW9ucy5wZGYiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNp
emU6MTNweDtjb2xvcjojMDBBRkY5OyI+VG9sbC1mcmVlIGNhbGxpbmcgcmVzdHJpY3Rpb25zPC9h
PjwvdGQ+PC90cj48L3RhYmxlPgoKCQkJCQk8dGFibGU+PHRyIHN0eWxlPSJsaW5lLWhlaWdodDoy
MHB4Ij48dGQgc3R5bGU9ImhlaWdodDoyMHB4Ij4mbmJzcDs8L3RkPjwvdHI+PC90YWJsZT48dGFi
bGU+PHRyPjx0ZCBzdHlsZT0iZm9udC1zaXplOjEzcHgiPjxhIGhyZWY9Imh0dHBzOi8vaWV0Zi53
ZWJleC5jb20vaWV0Zi9qLnBocD9NVElEPW04OTdhODI3MjM0MmZmMjVjNzEyNzJmNTAwOGQxMjk1
MyIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMwMEFGRjk7IGZvbnQtc2l6ZTox
M3B4Ij5BZGQgdGhpcyBtZWV0aW5nPC9hPiB0byB5b3VyIGNhbGVuZGFyLjwvdGQ+PC90cj48L3Rh
YmxlPgo8dGFibGU+PHRyIHN0eWxlPSJsaW5lLWhlaWdodDogMjBweDsiPjx0ZCBzdHlsZT0iaGVp
Z2h0OjIwcHgiPiZuYnNwOzwvdGQ+PC90cj48L3RhYmxlPgo8dGFibGU+CiAgICA8dHI+CiAgICAg
ICA8dGQgc3R5bGU9ImZvbnQtc2l6ZTogMTNweDtmb250LWZhbWlseTogQXJpYWw7Y29sb3I6ICM2
NjY2NjY7Ij4KICAgICAgICBDYW4ndCBqb2luIHRoZSBtZWV0aW5nPwogICAgIAk8YSBocmVmPSJo
dHRwczovL2lldGYud2ViZXguY29tL2lldGYvbWMiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9u
ZTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTpBcmlhbDtjb2xvcjojMDBBRkY5O2ZvbnQtY29s
b3I6IzAwQUZGOTsiPgogICAgICAgIAlDb250YWN0IHN1cHBvcnQuPC9hPgoJCTwvdGQ+CiAgICA8
L3RyPgo8L3RhYmxlPgo8dGFibGU+PHRyIHN0eWxlPSJsaW5lLWhlaWdodDogMTBweDsiPjx0ZCBz
dHlsZT0iaGVpZ2h0OjEwcHgiPiZuYnNwOzwvdGQ+PC90cj48L3RhYmxlPgoJCQkJCQk8dGFibGU+
CgkJCQkJCQk8dHI+CgkJCQkJCQkJPHRkIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjogI0Ew
QTBBMDsiPgoJCQkJCQkJCQlJTVBPUlRBTlQgTk9USUNFOiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMg
V2ViRXggc2VydmljZSBhbGxvd3MgYXVkaW8gYW5kIG90aGVyIGluZm9ybWF0aW9uIHNlbnQgZHVy
aW5nIHRoZSBzZXNzaW9uIHRvIGJlIHJlY29yZGVkLCB3aGljaCBtYXkgYmUgZGlzY292ZXJhYmxl
IGluIGEgbGVnYWwgbWF0dGVyLiBCeSBqb2luaW5nIHRoaXMgc2Vzc2lvbiwgeW91IGF1dG9tYXRp
Y2FsbHkgY29uc2VudCB0byBzdWNoIHJlY29yZGluZ3MuIElmIHlvdSBkbyBub3QgY29uc2VudCB0
byBiZWluZyByZWNvcmRlZCwgZGlzY3VzcyB5b3VyIGNvbmNlcm5zIHdpdGggdGhlIGhvc3Qgb3Ig
ZG8gbm90IGpvaW4gdGhlIHNlc3Npb24uPC90ZD4KCQkJCQkJCTwvdHI+CgkJCQkJCTwvdGFibGU+
CgkJCQk8L3RkPgoJCQk8L3RyPgoJCTwvdGFibGU+Cgk8L3RkPgogICA8L3RyPgo8L3RhYmxlPgoK
PC9ib2R5Pg==
------=_Part_14778_1106237926.1434659847825--

------=_Part_14777_910194101.1434659847825
Content-Type: application/octet-stream;
	name="WebEx_Meeting.ics"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="WebEx_Meeting.ics"

QkVHSU46VkNBTEVOREFSClBST0RJRDotLy9NaWNyb3NvZnQgQ29ycG9yYXRpb24vL091dGxvb2sg
MTAuMCBNSU1FRElSLy9FTgpWRVJTSU9OOjIuMApNRVRIT0Q6UkVRVUVTVApCRUdJTjpWVElNRVpP
TkUKVFpJRDpFdXJvcGUgVGltZQpCRUdJTjpTVEFOREFSRApEVFNUQVJUOjIwMTMxMDAxVDAzMDAw
MApSUlVMRTpGUkVRPVlFQVJMWTtJTlRFUlZBTD0xO0JZREFZPS0xU1U7QllNT05USD0xMApUWk9G
RlNFVEZST006KzAyMDAKVFpPRkZTRVRUTzorMDEwMApUWk5BTUU6U3RhbmRhcmQgVGltZQpFTkQ6
U1RBTkRBUkQKQkVHSU46REFZTElHSFQKRFRTVEFSVDoyMDEzMDMwMVQwMjAwMDAKUlJVTEU6RlJF
UT1ZRUFSTFk7SU5URVJWQUw9MTtCWURBWT0tMVNVO0JZTU9OVEg9MwpUWk9GRlNFVEZST006KzAx
MDAKVFpPRkZTRVRUTzorMDIwMApUWk5BTUU6RGF5bGlnaHQgU2F2aW5ncyBUaW1lCkVORDpEQVlM
SUdIVApFTkQ6VlRJTUVaT05FCkJFR0lOOlZFVkVOVApBVFRFTkRFRTtDTj0iIjtST0xFPVJFUS1Q
QVJUSUNJUEFOVDtSU1ZQPVRSVUU6TUFJTFRPOm5ldG1vZEBpZXRmLm9yZwpPUkdBTklaRVI7Q049
Ik5FVE1PRCBXb3JraW5nIEdyb3VwIjpNQUlMVE86bmV0bW9kLWNoYWlyc0B0b29scy5pZXRmLm9y
ZwpEVFNUQVJUO1RaSUQ9IkV1cm9wZSBUaW1lIjoyMDE1MDYyNVQxNjAwMDAKRFRFTkQ7VFpJRD0i
RXVyb3BlIFRpbWUiOjIwMTUwNjI1VDE4MDAwMApMT0NBVElPTjpodHRwczovL2lldGYud2ViZXgu
Y29tL2lldGYKVFJBTlNQOk9QQVFVRQpTRVFVRU5DRToxNDM0NjU5ODQ3ClVJRDplZmRhMGFlMS1j
NWQxLTQ4NWQtOTJjNS0xMTlkOGMxMTM5MGUKRFRTVEFNUDoyMDE1MDYyNVQxNDAwMDBaCkRFU0NS
SVBUSU9OOlxuXG5cbkpPSU4gV0VCRVggTUVFVElOR1xuaHR0cHM6Ly9pZXRmLndlYmV4LmNvbS9p
ZXRmL2oucGhwP01USUQ9bTZhZTc5MDhkZjAyYjEwODIzOWU2OGMzOTRiYzhiMGQwXG5NZWV0aW5n
IG51bWJlcjogNjQ1IDY5MCAyMTVcbk1lZXRpbmcgcGFzc3dvcmQ6IGtpZThpZUZvXG5cblxuSk9J
TiBCWSBQSE9ORVxuMS04NzctNjY4LTQ0OTMgQ2FsbC1pbiB0b2xsIGZyZWUgbnVtYmVyIChVUy9D
YW5hZGEpIFxuMS02NTAtNDc5LTMyMDggQ2FsbC1pbiB0b2xsIG51bWJlciAoVVMvQ2FuYWRhKVxu
QWNjZXNzIGNvZGU6IDY0NSA2OTAgMjE1XG5cblRvbGwtZnJlZSBkaWFsaW5nIHJlc3RyaWN0aW9u
czogXG5odHRwOi8vd3d3LndlYmV4LmNvbS9wZGYvdG9sbGZyZWVfcmVzdHJpY3Rpb25zLnBkZlxu
XG5cblxuQ2FuJ3Qgam9pbiB0aGUgbWVldGluZz8gQ29udGFjdCBzdXBwb3J0IGhlcmU6XG5odHRw
czovL2lldGYud2ViZXguY29tL2lldGYvbWNcblxuXG5JTVBPUlRBTlQgTk9USUNFOiBQbGVhc2Ug
bm90ZSB0aGF0IHRoaXMgV2ViRXggc2VydmljZSBhbGxvd3MgYXVkaW8gYW5kIG90aGVyIGluZm9y
bWF0aW9uIHNlbnQgZHVyaW5nIHRoZSBzZXNzaW9uIHRvIGJlIHJlY29yZGVkLCB3aGljaCBtYXkg
YmUgZGlzY292ZXJhYmxlIGluIGEgbGVnYWwgbWF0dGVyLiBCeSBqb2luaW5nIHRoaXMgc2Vzc2lv
biwgeW91IGF1dG9tYXRpY2FsbHkgY29uc2VudCB0byBzdWNoIHJlY29yZGluZ3MuIElmIHlvdSBk
byBub3QgY29uc2VudCB0byBiZWluZyByZWNvcmRlZCwgZGlzY3VzcyB5b3VyIGNvbmNlcm5zIHdp
dGggdGhlIGhvc3Qgb3IgZG8gbm90IGpvaW4gdGhlIHNlc3Npb24uXG4KWC1BTFQtREVTQztGTVRU
WVBFPXRleHQvaHRtbDoJPEZPTlQgU0laRT0iMSIgRkFDRT0iQVJJQUwiPiZuYnNwOzxCUj4gPEZP
TlQgU0laRT0iNCIgRkFDRT0iQVJJQUwiPgkJPGEJCQkJCWhyZWY9Imh0dHBzOi8vaWV0Zi53ZWJl
eC5jb20vaWV0Zi9qLnBocD9NVElEPW02YWU3OTA4ZGYwMmIxMDgyMzllNjhjMzk0YmM4YjBkMCI+
PEZPTlQgU0laRT0iMyIgQ09MT1I9IiMwMEFGRjkiIEZBQ0U9IkFyaWFsIj5Kb2luIFdlYkV4IG1l
ZXRpbmc8L0ZPTlQ+PC9hPgkJCTx0YWJsZT4JCQkJPHRyPgkJCQkJPHRkPgkJCQkJCTxGT05UIFNJ
WkU9IjIiIENPTE9SPSIjNjY2NjY2IiBGQUNFPSJhcmlhbCI+TWVldGluZyBudW1iZXI6PC9GT05U
PgkJCQkJPC90ZD4JCQkJCTx0ZD4JCQkJCQk8Rk9OVCBTSVpFPSIyIiBDT0xPUj0iIzY2NjY2NiIg
RkFDRT0iYXJpYWwiPjY0NSA2OTAgMjE1PC9GT05UPgkJCQkJPC90ZD4JCQkJPC90cj4JCQk8L3Rh
YmxlPgkJCTx0YWJsZT48dHI+PHRkPjxGT05UIFNJWkU9IjIiIENPTE9SPSIjNjY2NjY2IiBGQUNF
PSJhcmlhbCI+TWVldGluZyBwYXNzd29yZDo8L0ZPTlQ+PC90ZD48dGQ+PEZPTlQgU0laRT0iMiIg
IENPTE9SPSIjNjY2NjY2IiBGQUNFPSJhcmlhbCI+a2llOGllRm88L0ZPTlQ+PC90ZD48L3RyPjwv
dGFibGU+CQk8L0ZPTlQ+PEZPTlQgU0laRT0iMSIgRkFDRT0iQVJJQUwiPiZuYnNwOzxCUj4mbmJz
cDs8QlI+PC9GT05UPjxGT05UIFNJWkU9IjQiIEZBQ0U9IkFSSUFMIj48Rk9OVCBTSVpFPSIzIiBD
T0xPUj0iIzY2NjY2NiIgRkFDRT0iYXJpYWwiPkpvaW4gYnkgcGhvbmU8L0ZPTlQ+Jm5ic3A7IDxC
Uj48Rk9OVCBTSVpFPSIyIiBDT0xPUj0iIzY2NjY2NiIgRkFDRT0iYXJpYWwiPjxzdHJvbmc+MS04
NzctNjY4LTQ0OTM8L3N0cm9uZz4mbmJzcDtDYWxsLWluIHRvbGwgZnJlZSBudW1iZXIgKFVTL0Nh
bmFkYSk8L0ZPTlQ+Jm5ic3A7IDxCUj48Rk9OVCBTSVpFPSIyIiBDT0xPUj0iIzY2NjY2NiIgRkFD
RT0iYXJpYWwiPjxzdHJvbmc+MS02NTAtNDc5LTMyMDg8L3N0cm9uZz4mbmJzcDtDYWxsLWluIHRv
bGwgbnVtYmVyIChVUy9DYW5hZGEpPC9GT05UPiZuYnNwOyA8QlI+PEZPTlQgU0laRT0iMiIgQ09M
T1I9IiM2NjY2NjYiIEZBQ0U9ImFyaWFsIj5BY2Nlc3MgY29kZTogNjQ1IDY5MCAyMTU8L0ZPTlQ+
Jm5ic3A7IDxCUj48YSBocmVmPSJodHRwOi8vd3d3LndlYmV4LmNvbS9wZGYvdG9sbGZyZWVfcmVz
dHJpY3Rpb25zLnBkZiI+PEZPTlQgU0laRT0iMSIgQ09MT1I9IiMwMEFGRjkiIEZBQ0U9ImFyaWFs
Ij5Ub2xsLWZyZWUgY2FsbGluZyByZXN0cmljdGlvbnM8L0ZPTlQ+PC9hPiAmbmJzcDsgPEJSPjwv
Rk9OVD48QlI+PEJSPgkmbmJzcDs8QlI+CTxGT05UIFNJWkU9IjEiIENPTE9SPSIjNjY2NjY2IiBG
QUNFPSJhcmlhbCI+CQkJCUNhbid0IGpvaW4gdGhlIG1lZXRpbmc/PC9GT05UPgk8YSBocmVmPSJo
dHRwczovL2lldGYud2ViZXguY29tL2lldGYvbWMiPgk8Rk9OVCBTSVpFPSIxIiBDT0xPUj0iIzAw
QUZGOSIgRkFDRT0iQXJpYWwiPkNvbnRhY3Qgc3VwcG9ydC48L0ZPTlQ+PC9hPgkmbmJzcDs8QlI+
Jm5ic3A7PEJSPjxGT05UIENPTE9SPSIjQTBBMEEwIiBzaXplPSIxIiBGQUNFPSJhcmlhbCI+SU1Q
T1JUQU5UIE5PVElDRTogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIFdlYkV4IHNlcnZpY2UgYWxsb3dz
IGF1ZGlvIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBzZW50IGR1cmluZyB0aGUgc2Vzc2lvbiB0byBi
ZSByZWNvcmRlZCwgd2hpY2ggbWF5IGJlIGRpc2NvdmVyYWJsZSBpbiBhIGxlZ2FsIG1hdHRlci4g
Qnkgam9pbmluZyB0aGlzIHNlc3Npb24sIHlvdSBhdXRvbWF0aWNhbGx5IGNvbnNlbnQgdG8gc3Vj
aCByZWNvcmRpbmdzLiBJZiB5b3UgZG8gbm90IGNvbnNlbnQgdG8gYmVpbmcgcmVjb3JkZWQsIGRp
c2N1c3MgeW91ciBjb25jZXJucyB3aXRoIHRoZSBob3N0IG9yIGRvIG5vdCBqb2luIHRoZSBzZXNz
aW9uLjwvRk9OVD48L0ZPTlQ+ClNVTU1BUlk6TkVUTU9EIFZpcnR1YWwgSW50ZXJpbSBNZWV0aW5n
ClBSSU9SSVRZOjUKQ0xBU1M6UFVCTElDCkJFR0lOOlZBTEFSTQpUUklHR0VSOi1QVDVNCkFDVElP
TjpESVNQTEFZCkRFU0NSSVBUSU9OOlJlbWluZGVyCkVORDpWQUxBUk0KRU5EOlZFVkVOVApFTkQ6
VkNBTEVOREFSCg==
------=_Part_14777_910194101.1434659847825--


From nobody Thu Jun 18 14:25:45 2015
Return-Path: <iesg-secretary@ietf.org>
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 7C3AB1B3568; Thu, 18 Jun 2015 14:25:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.9
X-Spam-Level: 
X-Spam-Status: No, score=-101.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, USER_IN_WHITELIST=-100] 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 wTIwMmRLiHbi; Thu, 18 Jun 2015 14:25:41 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 288141A1A14; Thu, 18 Jun 2015 14:25:41 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: IESG Secretary <iesg-secretary@ietf.org>
To: "IETF Announcement List" <ietf-announce@ietf.org>
X-Test-IDTracker: no
X-IETF-IDTracker: 6.0.3.p3
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20150618212541.13424.14239.idtracker@ietfa.amsl.com>
Date: Thu, 18 Jun 2015 14:25:41 -0700
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/7NnXx4_M2w_Nnii-fDJf6QjguGY>
Cc: netmod@ietf.org
Subject: [netmod] NETMOD WG Virtual Interim Meeting, 25 June 2015
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: ietf@ietf.org
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: Thu, 18 Jun 2015 21:25:42 -0000

The NETCONF Data Modeling Language (netmod) Working Group will hold a 
virtual interim meeting on Thursday, 25 June 2015 at 1400 UTC. WebEx 
details are available here:

https://mailarchive.ietf.org/arch/msg/netmod/tBMYXg-SAYR1B9SSxI6lMwlGauo

Please see the message below from Benoit Claise, OPS AD, for more 
details.

> Dear all,
> 
> Since we were short of time today, the NETMOD Working Group will host 
> a 2-hour interim meeting on Thursday 6/25/2015 (10am-noon Eastern).
> As discussed during the call, the only available date before Prague.
> 
> The agenda is the continuation of today's interim, i.e. split between
> the opstate and model-structure drafts.
> http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/
> <http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/>
> http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/
> 
> I believe the interim meeting today was useful. This is one of those
> important interim meetings regarding the consistency and organization 
> of all YANG models within the IETF and the industry. Some requirements 
> were agreed upon, some points were clarified, and some other ones need 
> more work (we identified that work).
> 
> We know the rules
> (http://www.ietf.org/iesg/statement/interim-meetings.html : 
> "Conference calls and jabber sessions must be announced at least two 
> weeks prior to the event."). However, in order to make progress on 
> these important matters, and with the IESG blessing, I'll use my AD 
> override card.
> 
> Regards, Benoit (OPS AD)


From nobody Fri Jun 19 05:32:48 2015
Return-Path: <lhotka@nic.cz>
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 67E221A8AD9 for <netmod@ietfa.amsl.com>; Fri, 19 Jun 2015 05:32:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.661
X-Spam-Level: 
X-Spam-Status: No, score=-0.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, T_RP_MATCHES_RCVD=-0.01] 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 mZG9jJzfYxZY for <netmod@ietfa.amsl.com>; Fri, 19 Jun 2015 05:32:45 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1B0E31A877F for <netmod@ietf.org>; Fri, 19 Jun 2015 05:32:45 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id ABF87180C5F for <netmod@ietf.org>; Fri, 19 Jun 2015 14:32:43 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1434717163; bh=Lk4JTSX8xtrweBODUJ11PwN3ZBHxfJa0T6nLA/sOE40=; h=From:Date:To; b=FrgO9KeL8Sh7FTL+m7CPIlI2i+CaJEbaACriHNna/MNPKVtyzYhFqgWx9mv3wve+b m1ov/bhEdj7YQzvlltW7KUHvzDwUzE3bZpvTe+IOyffDTfx4/ivkdt2ekvt4/e0b26 I9xARPFykvme0QBUM/902u1Fx5m6nUbeUunRwhnE=
From: Ladislav Lhotka <lhotka@nic.cz>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Message-Id: <8A8210A0-0CD4-4D8E-927F-D98F3295575C@nic.cz>
Date: Fri, 19 Jun 2015 14:32:46 +0200
To: NETMOD Working Group <netmod@ietf.org>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/_DkOloCxDMKAUmDuiYggZxdPSkc>
Subject: [netmod] include by revision
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, 19 Jun 2015 12:32:46 -0000

Hi,

we=E2=80=99ve spent a lot of time on import by revision but what about =
include by revision? I think it makes sense to require include by =
revision, i.e. make =E2=80=9Crevision-date=E2=80=9D mandatory under =
=E2=80=9Cinclude=E2=80=9D, because otherwise for a module imported by =
revision the revisions of its submodules may not be known.

Lada

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Mon Jun 22 07:39:02 2015
Return-Path: <lhotka@nic.cz>
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 863EF1ACDA0; Mon, 22 Jun 2015 07:39:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.8
X-Spam-Level: 
X-Spam-Status: No, score=0.8 tagged_above=-999 required=5 tests=[BAYES_50=0.8] 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 NGa-e1jyGgg1; Mon, 22 Jun 2015 07:38:59 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 539BA1ACD9C; Mon, 22 Jun 2015 07:38:59 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 0DFE21CC0775; Mon, 22 Jun 2015 16:38:56 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Benoit Claise <bclaise@cisco.com>, NETMOD Working Group <netmod@ietf.org>
In-Reply-To: <558315D2.8090706@cisco.com>
References: <5583104A.6080906@cisco.com> <558315D2.8090706@cisco.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Mon, 22 Jun 2015 16:38:56 +0200
Message-ID: <m2vbef3j0f.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Rr9ndqeritybOK9bPKFtzRWBiyc>
Cc: IESG Secretary <iesg-secretary@ietf.org>
Subject: Re: [netmod] Interim NETMOD meeting: June 25th
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 22 Jun 2015 14:39:01 -0000

Hi,

I won't be able to participate in the interim on June 25.

Lada

Benoit Claise <bclaise@cisco.com> writes:

> On 18/06/2015 20:39, Benoit Claise wrote:
>> Dear all,
>>
>> Since we were short of time today, the NETMOD Working Group will host 
>> a 2-hour interim meeting on Thursday 6/18/2015 
> It should obviously be for Thursday 6/25/2015.
>
> Regards, Benoit
>> (10am-noon Eastern).
>> As discussed during the call, the only available date before Prague.
>>
>> The agenda is the continuation of today's interim, i.e. split between 
>> the opstate and model-structure drafts.
>> <http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/>http://datatracker.ietf.org/doc/draft-openconfig-netmod-opstate/
>> <http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/>http://datatracker.ietf.org/doc/draft-openconfig-netmod-model-structure/
>>
>> I believe the interim meeting today was useful. This is one of those 
>> important interim meetings regarding the consistency and organization 
>> of all YANG models within the IETF and the industry. Some requirements 
>> were agreed upon, some points were clarified, and some other ones need 
>> more work (we identified that work).
>>
>> We know the rules 
>> (http://www.ietf.org/iesg/statement/interim-meetings.html : 
>> "Conference calls and jabber sessions must be announced at least two 
>> weeks prior to the event."). However, in order to make progress on 
>> these important matters, and with the IESG blessing, I'll use my AD 
>> override card.
>>
>> Regards, Benoit (OPS AD)
>>
>>
>>
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Mon Jun 22 17:17:28 2015
Return-Path: <kwatsen@juniper.net>
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 A7AB51B3080 for <netmod@ietfa.amsl.com>; Mon, 22 Jun 2015 17:17:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 52PVQLDiUpii for <netmod@ietfa.amsl.com>; Mon, 22 Jun 2015 17:17:22 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0124.outbound.protection.outlook.com [65.55.169.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 954221B30B4 for <netmod@ietf.org>; Mon, 22 Jun 2015 17:17:19 -0700 (PDT)
Received: from CO1PR05MB457.namprd05.prod.outlook.com (10.141.72.141) by CO1PR05MB284.namprd05.prod.outlook.com (10.141.70.144) with Microsoft SMTP Server (TLS) id 15.1.195.15; Tue, 23 Jun 2015 00:17:17 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB457.namprd05.prod.outlook.com (10.141.72.141) with Microsoft SMTP Server (TLS) id 15.1.195.15; Tue, 23 Jun 2015 00:17:16 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Tue, 23 Jun 2015 00:17:16 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: follow-up from virtual interim and i2rs discussions
Thread-Index: AQHQrUn1tc8m8WdLR0WVXSPXt52vpg==
Date: Tue, 23 Jun 2015 00:17:15 +0000
Message-ID: <D1AE1DC8.B3290%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB457; 5:vO39ZWTOxJfdMWXH4txmG61CcUeDdzKTBnqkwdmJV9QVGQZRoNi0qGZoC1vHq4cfTEab8v9qnB2TMOmOGkeS1ZSRsIRHUy62FtBWylRhnbFrWKP3g+DhWTRALdomkm31xSz3X6xk+bvszWebYcLkpQ==; 24:xG0BYhmp8wTM9RLZfE0ROmDAub4TUgzP063bQDhMx2hOTRNFwXiH4+azRGOy6ekS0qW2tPB4eoeCbIP98YvxLmSiWT2FXuMB8fKxA9WLbPk=; 20:lSinpYm0yc5P+dbWXpGVH6n9Kx3l14plS++9WtYJ0vOxOD76QYR7PHtJUJI6RS02aNLxTq1fnSMrE87eF8CcZw==
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB457; UriScan:; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB284; 
x-microsoft-antispam-prvs: <CO1PR05MB457BCA4FA891CF2BC14498AA5A00@CO1PR05MB457.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB457; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB457; 
x-forefront-prvs: 06167FAD59
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(50986999)(54356999)(2656002)(46102003)(83506001)(99936001)(122556002)(450100001)(62966003)(87936001)(77156002)(40100003)(66066001)(86362001)(36756003)(92566002)(106116001)(99286002)(4001350100001)(189998001)(2501003)(5002640100001)(5890100001)(16236675004)(5001960100002)(110136002)(107886002)(2900100001)(229853001)(2351001)(102836002)(558084003); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB457; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/mixed; boundary="_004_D1AE1DC8B3290kwatsenjunipernet_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jun 2015 00:17:15.8197 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB457
X-Microsoft-Exchange-Diagnostics: 1; CO1PR05MB284; 2:qjXFHV0NSKWmxSmoV2i8eWIuT0Mh5m+yiOcC1fOMgo0mnSpmoXnuuTpzK6/o61p+; 3:2UEMXMMfAGS+xAKfEs1bDSr9F8PPNYSpI9cxVbT+H+D/blMzhkZIsXw2kb102AfaqfKgwuNpWWUjiWsdWyRimMWsUnQbZ+Bs38b7st6PdK+/hBQmNuHd8eJclqhvBVSAJkZifLGCp7WL2kWQc1/EVg==; 23:dhg7ChapJkgDyXrHFKEES+qU0yVGJ/UWkI7l7QAGFeTtc4qKeYztWvNQ2a/o1boSfG79ov1pKXDaqAZtl2CN8TKkpzW6LtNFmzWlM2OE3R/2ztUoyUQyHibIEJF1CDkygG7AK4cJvWN83fbzc3WIfb6wUkbH6D1e5XfENYWzv8lgSzsqyxI0HkEZPKZ0oXylfwd6RRm3wPT7DOobv6syn4hd0GrY22U8Qz/2ttn4KGV1OUQgPVNAkrGhj3W/xhDT
X-OriginatorOrg: juniper.net
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/H9T9fvJcWiazSJ79Ir4mpVGJAHc>
Subject: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 00:17:27 -0000

--_004_D1AE1DC8B3290kwatsenjunipernet_
Content-Type: multipart/alternative;
	boundary="_000_D1AE1DC8B3290kwatsenjunipernet_"

--_000_D1AE1DC8B3290kwatsenjunipernet_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


[As an individual contributor]

Attached are some slides that I put together, with feedback from Andy and M=
artin, that attempt to capture a high-level model we can all agree on.  Com=
ments, questions, concerns?

Kent



--_000_D1AE1DC8B3290kwatsenjunipernet_
Content-Type: text/html; charset="us-ascii"
Content-ID: <7529092A2AB3E24D9F3FA13CFE64FF7F@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-fami=
ly: Calibri, sans-serif;">
<div><br>
</div>
<div>[As an individual contributor]</div>
<div><br>
</div>
<div>Attached are some slides that I put together, with feedback from Andy =
and Martin, that attempt to capture a high-level model we can all agree on.=
 &nbsp;Comments, questions, concerns?</div>
<div><br>
</div>
<div>Kent</div>
<div><br>
</div>
<div><br>
</div>
</body>
</html>

--_000_D1AE1DC8B3290kwatsenjunipernet_--

--_004_D1AE1DC8B3290kwatsenjunipernet_
Content-Type: application/pdf; name="mgt-arch-model.pdf"
Content-Description: mgt-arch-model.pdf
Content-Disposition: attachment; filename="mgt-arch-model.pdf"; size=278224;
	creation-date="Tue, 23 Jun 2015 00:17:15 GMT";
	modification-date="Tue, 23 Jun 2015 00:17:15 GMT"
Content-ID: <18982D869A31DA4B88A93AA846ACE449@namprd05.prod.outlook.com>
Content-Transfer-Encoding: base64

JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9G
bGF0ZURlY29kZSA+PgpzdHJlYW0KeAGtVttuGjEQffdXTEovu0nX2Gt7Mb2kbdL0oW9IK/Wh9Ak1
qqpQifJN+c+Ox/YssEA2KSBh48ucmTPHY69gBitQoKTCT21q67yGiZ7KKX7AWQV/f8I3+APj67WG
xRo0fdcL3ORMWrbkHYLH7ngsGTdqMjXewB3DdSO/4PY8INQBAb3B73ohVggVuhrMtJETh5trr6XX
6NliCVct1JYWUFPhb7uEcdsGF9tbKO5LaH/DTQszkb3PtjHo4ba9tEiNtYAQIkKYBHHGED33H4YQ
xLqBdrERSD2JqQhgKR4Xwb5DcfasxH4xot/nL0r4Ae1XjFCELPYDcubxZKGpQWQdsn1CsrYgREVs
uUewNXpZQoV0vYrNvEhtWYowPDqP/zsa6TD0aaztERqTIPqaG0bjlm3R6XmTxiSDp2ouQYjdI3NU
aReBOyUNFK+p4yKNNIJEhmzUUMxLmoySVBIXBU6p8xCreuqI1Z5bakP5T2T1oO3TsboDQdrEqjP4
JM/LStIpHs8LNdY1HmVBR3m/BjNcr+5pW0utjdkgDcuFCOUPM5DK377ioJvmiKq7Skqm7jtTQ4rD
Qdub/P9fJd2G2Dg4R1VtbIm3EQr3glWNLKFgUcFJsCLcF3sJM5NBhHVXTzQ1iLBDtk9I2BbEUMJQ
o0paKFwTOsjShOjCkUTX7uXjrVS+0QYM6qvWvsmK9fGmDk1V+97NZsbRsAiGY0J8GiKsNDSlSaxK
2bE3KaFV9svxfqeoTOFiHnqbwsm7c8u7eeU7socFLdsTxfudzf4yr/kQZnAt73YfszsZgac+5dqp
aAl6x2a4w1NXKTr2hinBgoG1mNhKb4At1XZpMGZQGsIxxweGy/7mYDO/1+RtPCYxF59ziOxtilGE
9wnx0V0P4Qqmu4N58Mw5dzK2z+A3JT6RotYiJu7eF23jpW6UAdtoie80mzRnGtIcNZVpUsHpXlNf
yCmsBkwvR5nlzinxvCYyIliB2dkt32b/AHtHRDQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjc0
OQplbmRvYmoKMiAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDMgMCBSIC9SZXNvdXJjZXMg
NiAwIFIgL0NvbnRlbnRzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDcyMCA1NDBdCj4+CmVuZG9iago2
IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdIC9Db2xvclNwYWNlIDw8IC9DczEgNyAw
IFIgL0NzMiA4IDAgUiA+PiAvRm9udCA8PAovVFQ1IDEzIDAgUiAvVFQxIDkgMCBSIC9UVDMgMTEg
MCBSID4+ID4+CmVuZG9iagoxNCAwIG9iago8PCAvTGVuZ3RoIDE1IDAgUiAvTiAzIC9BbHRlcm5h
dGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGFVd9v21QUPolv
UqQWPyBYR4eKxa9VU1u5GxqtxgZJk6XtShal6dgqJOQ6N4mpGwfb6baqT3uBNwb8AUDZAw9IPCEN
BmJ72fbAtElThyqqSUh76MQPISbtBVXhu3ZiJ1PEXPX6yznfOec7517bRD1fabWaGVWIlquunc8k
lZOnFpSeTYrSs9RLA9Sr6U4tkcvNEi7BFffO6+EdigjL7ZHu/k72I796i9zRiSJPwG4VHX0Z+AxR
zNRrtksUvwf7+Gm3BtzzHPDTNgQCqwKXfZwSeNHHJz1OIT8JjtAq6xWtCLwGPLzYZi+3YV8DGMiT
4VVuG7oiZpGzrZJhcs/hL49xtzH/Dy6bdfTsXYNY+5yluWO4D4neK/ZUvok/17X0HPBLsF+vuUlh
fwX4j/rSfAJ4H1H0qZJ9dN7nR19frRTeBt4Fe9FwpwtN+2p1MXscGLHR9SXrmMgjONd1ZxKzpBeA
71b4tNhj6JGoyFNp4GHgwUp9qplfmnFW5oTdy7NamcwCI49kv6fN5IAHgD+0rbyoBc3SOjczohby
S1drbq6pQdqumllRC/0ymTtej8gpbbuVwpQfyw66dqEZyxZKxtHpJn+tZnpnEdrYBbueF9qQn93S
7HQGGHnYP7w6L+YGHNtd1FJitqPAR+hERCNOFi1i1alKO6RQnjKUxL1GNjwlMsiEhcPLYTEiT9IS
bN15OY/jx4SMshe9LaJRpTvHr3C/ybFYP1PZAfwfYrPsMBtnE6SwN9ib7AhLwTrBDgUKcm06FSrT
fSj187xPdVQWOk5Q8vxAfSiIUc7Z7xr6zY/+hpqwSyv0I0/QMTRb7RMgBxNodTfSPqdraz/sDjzK
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
LquNz6fPd57PnV80/+T8h+qwuol6uPpq9cPqPeqTGpoavhoZGlUalzTGNRmabprJmuWa5zTHtGha
C7UEWuVa57VeMJWZ7sxUZiWzizmhra7tpy3RPqTdqz2tY6izWGejTrPOE12SLls3Qbdct1N3Qk9L
L1gvX69R76E+UZ+tn6S/R79bf8rA0CDaYItBm8GooYqhv2GeYaPhYyOqkavRKqNaozvGOGO2cYrx
PuNbJrCJnUmSSY3JTVPY1N5UYLrPtM8Ma+ZoJjSrNbvHorDcWVmsRtagOcM8yHyjeZv5Kws9i1iL
nRbdFl8s7SxTLessH1kpWQVYbbTqsPrD2sSaa11jfceGauNjs86m3ea1rakt33a/7X07ml2w3Ra7
TrvP9g72Ivsm+zEHPYd4h70O99h0dii7hH3VEevo4bjO8YzjByd7J7HTSaffnVnOKc4NzqMLDBfw
F9QtGHLRceG4HHKRLmQujF94cKHUVduV41rr+sxN143ndsRtxN3YPdn9uPsrD0sPkUeLx5Snk+ca
zwteiJevV5FXr7eS92Lvau+nPjo+iT6NPhO+dr6rfS/4Yf0C/Xb63fPX8Of61/tPBDgErAnoCqQE
RgRWBz4LMgkSBXUEw8EBwbuCHy/SXyRc1BYCQvxDdoU8CTUMXRX6cxguLDSsJux5uFV4fnh3BC1i
RURDxLtIj8jSyEeLjRZLFndGyUfFRdVHTUV7RZdFS5dYLFmz5EaMWowgpj0WHxsVeyR2cqn30t1L
h+Ps4grj7i4zXJaz7NpyteWpy8+ukF/BWXEqHhsfHd8Q/4kTwqnlTK70X7l35QTXk7uH+5Lnxivn
jfFd+GX8kQSXhLKE0USXxF2JY0muSRVJ4wJPQbXgdbJf8oHkqZSQlKMpM6nRqc1phLT4tNNCJWGK
sCtdMz0nvS/DNKMwQ7rKadXuVROiQNGRTChzWWa7mI7+TPVIjCSbJYNZC7Nqst5nR2WfylHMEeb0
5JrkbssdyfPJ+341ZjV3dWe+dv6G/ME17msOrYXWrlzbuU53XcG64fW+649tIG1I2fDLRsuNZRvf
bore1FGgUbC+YGiz7+bGQrlCUeG9Lc5bDmzFbBVs7d1ms61q25ciXtH1YsviiuJPJdyS699ZfVf5
3cz2hO29pfal+3fgdgh33N3puvNYmWJZXtnQruBdreXM8qLyt7tX7L5WYVtxYA9pj2SPtDKosr1K
r2pH1afqpOqBGo+a5r3qe7ftndrH29e/321/0wGNA8UHPh4UHLx/yPdQa61BbcVh3OGsw8/rouq6
v2d/X39E7Ujxkc9HhUelx8KPddU71Nc3qDeUNsKNksax43HHb/3g9UN7E6vpUDOjufgEOCE58eLH
+B/vngw82XmKfarpJ/2f9rbQWopaodbc1om2pDZpe0x73+mA050dzh0tP5v/fPSM9pmas8pnS8+R
zhWcmzmfd37yQsaF8YuJF4c6V3Q+urTk0p2usK7ey4GXr17xuXKp2737/FWXq2euOV07fZ19ve2G
/Y3WHruell/sfmnpte9tvelws/2W462OvgV95/pd+y/e9rp95Y7/nRsDiwb67i6+e/9e3D3pfd79
0QepD14/zHo4/Wj9Y+zjoicKTyqeqj+t/dX412apvfTsoNdgz7OIZ4+GuEMv/5X5r0/DBc+pzytG
tEbqR61Hz4z5jN16sfTF8MuMl9Pjhb8p/rb3ldGrn353+71nYsnE8GvR65k/St6ovjn61vZt52To
5NN3ae+mp4req74/9oH9oftj9MeR6exP+E+Vn40/d3wJ/PJ4Jm1m5t/3hPP7CmVuZHN0cmVhbQpl
bmRvYmoKMTcgMCBvYmoKMjYxMgplbmRvYmoKOCAwIG9iagpbIC9JQ0NCYXNlZCAxNiAwIFIgXQpl
bmRvYmoKMTkgMCBvYmoKPDwgL0xlbmd0aCAyMCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4K
c3RyZWFtCngBvVnbciQ1En2vr9Asl23Djlp3qTYYbh5gYa/sdAQPsA+EwyxD2AxjD/D7HKmUKVVV
29VmJ9YTMS6rWspU5smTR+qX4kvxUiihpMKPscb5pEXUoxzxI7xT4uZSfCV+FPvzWy0uboUu/24v
MMnb+rFrnjHw2BWP1cWtiqNNVlyxuTbyvfjunWzBZAtKGu1DCnZQ0sbgogoY89F4NyoByy/hAlzO
jiQt4awVJlk5BuPFxbX4+CCcKx8ovx7j/8P1sD8cImYcvhO7R384E4cfxCeHsnlay1ornapr2RDd
SWu90a2VfVo46KzUJZJuHGWMblwtqlWSo7ZawM/hcC3gp5/8/Frs7P5MPFbSiZ2XZwgCHnjkKb2i
NzzwVnmjh903u/JkxE6VB9tN1zRi8sJ481kZgIUn1VL6SxnRefYAL/rZMPEfcfhiiuH+X5c3F5c/
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
IG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDMgMCBSIC9SZXNvdXJjZXMgMjEgMCBSIC9Db250
ZW50cyAxOSAwIFIgL01lZGlhQm94ClswIDAgNzIwIDU0MF0gPj4KZW5kb2JqCjIxIDAgb2JqCjw8
IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdIC9Db2xvclNw
YWNlIDw8IC9DczEgNyAwIFIKL0NzMiA4IDAgUiA+PiAvRXh0R1N0YXRlIDw8IC9HczEgNTggMCBS
IC9HczIgNTkgMCBSIC9HczMgNjAgMCBSIC9HczQgNjEgMCBSCj4+IC9Gb250IDw8IC9UVDMgMTEg
MCBSIC9UVDUgMTMgMCBSIC9UVDkgNTUgMCBSIC9UVDExIDU3IDAgUiAvVFQ3IDIzIDAgUiA+Pgov
WE9iamVjdCA8PCAvSW01IDMyIDAgUiAvSW0zIDI4IDAgUiAvSW0xMCA0MiAwIFIgL0ltOCAzOCAw
IFIgL0ltNiAzNCAwIFIgL0ltOQo0MCAwIFIgL0ltMTEgNDQgMCBSIC9JbTcgMzYgMCBSIC9JbTEy
IDQ5IDAgUiAvSW0yIDI2IDAgUiAvSW0xIDI0IDAgUiAvSW00CjMwIDAgUiAvRm0yIDUxIDAgUiAv
Rm0xIDQ2IDAgUiA+PiA+PgplbmRvYmoKNTEgMCBvYmoKPDwgL0xlbmd0aCA1MiAwIFIgL0ZpbHRl
ciAvRmxhdGVEZWNvZGUgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0Zvcm0gL0Zvcm1UeXBlCjEg
L0JCb3ggWzExMyAxNzIgMTIzIDIyNF0gL1Jlc291cmNlcyA1MyAwIFIgL0dyb3VwIDw8IC9TIC9U
cmFuc3BhcmVuY3kgL0NTCjcgMCBSIC9JIHRydWUgL0sgZmFsc2UgPj4gPj4Kc3RyZWFtCngBfZFN
TgMxDIX3cwqvkQi2E8fxuieouuAAIxBCFKl0wfV5STqC8jfZOF/s52fPifZ0IsZxZbLC9PZA9/RK
ipjpnYSe6W53VtodiFPmaJwDkbG1pgWRFxGvthx2XSkxPm9eWPCIc3uNkJuqlSBVgUhttB5HjnmL
Yl0QAlGzishy/WThHJaUXugA38PWekbFP7bovNLWcxHX2fMIlpOGCIlHiuYVon8xFm0kjVOppY4s
8bJIk8Tu414NQrhns0y9YcaQX1DXLgkyk9WcbRCsqYzC4gpFscTS0AK9Ii5Sl31hx6l4le5T+eJ9
y/uFLZNZjc8OqJQEnzANs9MFSLU2yWb/O1t63XXWT4Kxf2R1D5okW9/fWBekFOZrjCHnQkHm2Nuv
WOmJHm9o/wEir4WUCmVuZHN0cmVhbQplbmRvYmoKNTIgMCBvYmoKMzAyCmVuZG9iago1MyAwIG9i
ago8PCAvUHJvY1NldCBbIC9QREYgXSAvQ29sb3JTcGFjZSA8PCAvQ3MyIDggMCBSID4+ID4+CmVu
ZG9iago0NiAwIG9iago8PCAvTGVuZ3RoIDQ3IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSAvVHlw
ZSAvWE9iamVjdCAvU3VidHlwZSAvRm9ybSAvRm9ybVR5cGUKMSAvQkJveCBbMTEzIDI4OCAxMjMg
MzM5XSAvUmVzb3VyY2VzIDQ4IDAgUiAvR3JvdXAgPDwgL1MgL1RyYW5zcGFyZW5jeSAvQ1MKNyAw
IFIgL0kgdHJ1ZSAvSyBmYWxzZSA+PiA+PgpzdHJlYW0KeAF9kUFOAzEMRfdzCq+RCLYT28m6J6i6
4AAjEEIUqXTB9fnJTMVUI0g21svX97dzoSNdiHFDmawwfb3QM32Somb6JqF3ejpclQ4n4pS5Vc4N
lbHVqgVVFJFwm06H7pQYJ2oUFjziPt4jaJNbaZSzp2IhNJ+HxqK2YqXXIh45bLp/sBoWiEAfdELq
EWq+/h+KrjPdOk5aa1JGxzNYTtpESJslr9Fg+hdj0QqdJ3HE7iqJMnUQEXkAt+4Uic2MeseMGTeo
m5cEn4XlnOsg2FJ3CjhqgFhiqT6aeTMfVuu6tClUXnpQ5Vt4T0P3y0auDTNvZURbOqgkqRKDLClA
HJu9i7+ykWyMJDvVnmDsnarnQuxsdbMvECyvjSmXlYKsc6+fMdMbvT7Q8Qeqe4YxCmVuZHN0cmVh
bQplbmRvYmoKNDcgMCBvYmoKMzAwCmVuZG9iago0OCAwIG9iago8PCAvUHJvY1NldCBbIC9QREYg
XSAvQ29sb3JTcGFjZSA8PCAvQ3MyIDggMCBSID4+ID4+CmVuZG9iagozMiAwIG9iago8PCAvTGVu
Z3RoIDMzIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDMyOSAvSGVp
Z2h0IDIyOCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA3IDAgUiAvU01hc2sgNjIgMCBS
IC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7dAx
AQAAAMKg9U9tB2+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY+AcGbzkAAQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2Jq
CjEwMDUKZW5kb2JqCjI4IDAgb2JqCjw8IC9MZW5ndGggMjkgMCBSIC9UeXBlIC9YT2JqZWN0IC9T
dWJ0eXBlIC9JbWFnZSAvV2lkdGggMzI5IC9IZWlnaHQgMjI4IC9JbnRlcnBvbGF0ZQp0cnVlIC9D
b2xvclNwYWNlIDcgMCBSIC9TTWFzayA2NCAwIFIgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVy
IC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20Hb4hAYcCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBj4BwZv
OQABCmVuZHN0cmVhbQplbmRvYmoKMjkgMCBvYmoKMTAwNQplbmRvYmoKNDIgMCBvYmoKPDwgL0xl
bmd0aCA0MyAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMzIgL0hl
aWdodCAxNjggL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNyAwIFIgL1NNYXNrIDY2IDAg
UiAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3Q
MQEAAADCoPVPbQdviEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABA8/AAMjPAAEKZW5kc3RyZWFtCmVuZG9iago0MyAwIG9iago1MzQKZW5kb2JqCjM4
IDAgb2JqCjw8IC9MZW5ndGggMzkgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAv
V2lkdGggMjc2IC9IZWlnaHQgMTY4IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDcgMCBS
IC9TTWFzayA2OCAwIFIgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZQo+
PgpzdHJlYW0KeAHt0IEAAAAAw6D5U1/hAIVQYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMDAOzAffgABCmVuZHN0cmVhbQplbmRvYmoKMzkgMCBvYmoKNjMwCmVuZG9iagozNCAwIG9i
ago8PCAvTGVuZ3RoIDM1IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRo
IDE5NyAvSGVpZ2h0IDE2OSAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA3IDAgUiAvU01h
c2sgNzAgMCBSIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3Ry
ZWFtCngB7dCBAAAAAMOg+VMf4QKFUGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
wBkYhjYAAQplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjQ1OQplbmRvYmoKNDAgMCBvYmoKPDwg
L0xlbmd0aCA0MSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMzAg
L0hlaWdodCAyMjggL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNyAwIFIgL1NNYXNrIDcy
IDAgUiAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4
Ae3QAQ0AAADCoPdPbQ8HESgMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM/A8MceUAAQplbmRzdHJlYW0KZW5kb2JqCjQx
IDAgb2JqCjEwMDcKZW5kb2JqCjQ0IDAgb2JqCjw8IC9MZW5ndGggNDUgMCBSIC9UeXBlIC9YT2Jq
ZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNzEgL0hlaWdodCAxOTQgL0ludGVycG9sYXRlCnRy
dWUgL0NvbG9yU3BhY2UgNyAwIFIgL1NNYXNrIDc0IDAgUiAvQml0c1BlckNvbXBvbmVudCA4IC9G
aWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3QgQAAAADDoPlTX+EAhVBhwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGHgH
BqFqAAEKZW5kc3RyZWFtCmVuZG9iago0NSAwIG9iagoyMDQKZW5kb2JqCjM2IDAgb2JqCjw8IC9M
ZW5ndGggMzcgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzMwIC9I
ZWlnaHQgMjI4IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDcgMCBSIC9TTWFzayA3NiAw
IFIgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt
0AENAAAAwqD3T20PBxEoDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDPwPDHHlAAEKZW5kc3RyZWFtCmVuZG9iagozNyAw
IG9iagoxMDA3CmVuZG9iago0OSAwIG9iago8PCAvTGVuZ3RoIDUwIDAgUiAvVHlwZSAvWE9iamVj
dCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDcxIC9IZWlnaHQgMTk2IC9JbnRlcnBvbGF0ZQp0cnVl
IC9Db2xvclNwYWNlIDcgMCBSIC9TTWFzayA3OCAwIFIgL0JpdHNQZXJDb21wb25lbnQgOCAvRmls
dGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0AENAAAAwqD3T20PBxEoDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG3gYG
oxQAAQplbmRzdHJlYW0KZW5kb2JqCjUwIDAgb2JqCjIwNQplbmRvYmoKMjYgMCBvYmoKPDwgL0xl
bmd0aCAyNyAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyNTcgL0hl
aWdodCAxNjkgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNyAwIFIgL1NNYXNrIDgwIDAg
UiAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3Q
MQEAAADCoPVP7WMMiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDDwgQH9CgABCmVuZHN0cmVhbQplbmRvYmoKMjcgMCBvYmoKNTkyCmVuZG9iagoy
NCAwIG9iago8PCAvTGVuZ3RoIDI1IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2Ug
L1dpZHRoIDMyOSAvSGVpZ2h0IDIyOCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA3IDAg
UiAvU01hc2sgODIgMCBSIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUK
Pj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tB2+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY+AcGbzkAAQplbmRzdHJlYW0K
ZW5kb2JqCjI1IDAgb2JqCjEwMDUKZW5kb2JqCjMwIDAgb2JqCjw8IC9MZW5ndGggMzEgMCBSIC9U
eXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMjA5IC9IZWlnaHQgMTY4IC9JbnRl
cnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDcgMCBSIC9TTWFzayA4NCAwIFIgL0JpdHNQZXJDb21w
b25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20JT4hA
YcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBj4DAybhwABCmVuZHN0cmVhbQplbmRvYmoKMzEgMCBvYmoKNDgzCmVuZG9iago3MiAwIG9iago8
PCAvTGVuZ3RoIDczIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDMz
MCAvSGVpZ2h0IDIyOCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAv
Qml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3Y3Xai
ShiE4aAgIKCCgICa+7/M3Zg/Z6ckpg5n3m+tmckqrRw800A3Ly8MAgj8/QIR80sBuSZuv2PF/ELg
RvYNM4pWq/VtYuYJgRtVUI+iPymD7modJ8mGeV4gSeJ4HSj/sAwLMk42aZbnW+ZJgTzP0k0yU96t
yrAi402WF1W1Y54WqMoiT5P4nnK+tJOsqA51c2SeFmjqfbVN51X5uSijaJ2kxa5u+9Pb9MyiwAdT
WwfKeP15fd+u7byqu2E6n6dpHMeBWRQYxylQnadTeyjzu1vlLJkW+3Y4X6/XyzlQLv4aPhyC5PkS
rKbTcbfdfN0pw4M7ycq6G6+vM+RwOi0ubT4MN8Fw+c5aY3so0nvJ8Lwpm366vl7Ow6lrjw2zKHBs
u9M4X8FTV5dZ8nmjDE/uTV41p+l6PQ/dsd7vn94I/KNf3O/rYz+eL5epryslGVZk3+yr4smt6T/8
taLaNzPlA8kxPIyO+3Ibtu7MokCabctDe5rOo1yT/TiN3bxBSuK3Vxn8/UggTtLtLizKG9j3q7sf
pmHeH23CsZxZFFjHmzxsdgJYWHpKcgw7zSJ8ML/fYBYE5sN1kDyNjyWP+3D6uTtHfh4o+eFe4HaU
CTdKJO9VnJ+RdNRUB0ml4mRIOmqqg6RScTIkHTXVQVKpOBmSjprqIKlUnAxJR011kFQqToako6Y6
SCoVJ0PSUVMdJJWKkyHpqKkOkkrFyZB01FQHSaXiZEg6aqqDpFJxMiQdNdVBUqk4GZKOmuogqVSc
DElHTXWQVCpOhqSjpjpIKhUnQ9JRUx0klYqTIemoqQ6SSsXJkHTUVAdJpeJkSDpqqoOkUnEyJB01
1UFSqTgZko6a6iCpVJwMSUdNdZBUKk6GpKOmOkgqFSdD0lFTHSSVipMh6aipDpJKxcmQdNRUB0ml
4mRIOmqqg6RScTIkHTXVQVKpOBmSjprqIKlUnAxJR011kFQqToako6Y6SCoVJ0PSUVMdJJWKkyHp
qKkOkkrFyZB01FQHSaXiZEg6aqqDpFJxMiQdNdVBUqk4GZKOmuogqVScDElHTXWQVCpOhqSjpjpI
KhUnQ9JRUx0klYqTIemoqQ6SSsXJkHTUVAdJpeJkSDpqqoOkUnEyJB011UFSqTgZko6a6iCpVJwM
SUdNdZBUKk6GpKOmOkgqFSdD0lFTHSSVipMh6aipDpJKxcmQdNRUB0ml4mRIOmqqg6RScTIkHTXV
QVKpOBmSjprqIKlUnAxJR011kFQqToako6Y6SCoVJ0PSUVMdJJWKkyHpqKkOkkrFyZB01FQHSaXi
ZEg6aqqDpFJxMiQdNdVBUqk4GZKOmuogqVScDElHTXWQVCpOhqSjpjpIKhUnQ9JRUx0klYqTIemo
qQ6SSsXJkHTUVAdJpeJkSDpqqoOkUnEyJB011UFSqTgZko6a6iCpVJwMSUdNdZBUKk6GpKOmOkgq
FSdD0lFTHSSVipMh6aipDpJKxcmQdNRUB0ml4mRIOmqqg6RScTIkHTXVQVKpOBmSjprqIKlUnAxJ
R011kFQqToako6Y6SCoVJ0PSUVMdJJWKkyHpqKkOkkrFyZB01FQHSaXiZEg6aqqDpFJxMiQdNdVB
Uqk4GZKOmuogqVScDElHTXWQVCpOhqSjpjpIKhUnQ9JRUx0klYqTIemoqQ6SSsXJkHTUVAdJpeJk
SDpqqoOkUnEyJB011UFSqTgZko6a6iCpVJzsZ8mhPRRZsl5FzKLAap1kZd0N49DVVQCLorf/j2i1
3uRV04/T0NZlvonXK2ZRYB3PYN0wjVLyNE5j31RFtkliZlEg2WTF7hiW3tirNXmaztOpPVRFnqXM
okCWF1W4uKfzI8nLZTwd611VFsyiQFnt6jasvMv0YE1erwG5beoD84NA3QTIy/X6XTI8ipp+ur5e
L+PQd13LLAp0XT/MkNepO5Rp/PXsjlZJVhy68fL6ej1P4zCcmEWBYRgDZFh3Q7sv0jjsGt93QfNG
c7s/zuv1cj5P08j8IDCFe2Swmvpmt918Sb7MG8qsPLRhH3RjHJgfBAJ0oBr64768nWQ+DkpRtA6L
sjocu/5tOmZR4F2pbQ7zQebz4n55icKiTNJtuTvUdd2EP8yPAjPTflfm6Xy4/liSH5TZtigr5lmB
siy24Tw4v6X4krytyjjZpFmW5WHCP8yCwLtRGs7V/4O8rcrVOo4T5hcC8fyu548VOS/O8BYpvP5Y
M78QCGCB7e7Sfv9x8Y0cHz4Q+O74ljz4OrEUeKRIjgACf5fAf1ILJSsKZW5kc3RyZWFtCmVuZG9i
ago3MyAwIG9iagoxNzAxCmVuZG9iago2OCAwIG9iago8PCAvTGVuZ3RoIDY5IDAgUiAvVHlwZSAv
WE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDI3NiAvSGVpZ2h0IDE2OCAvQ29sb3JTcGFj
ZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0
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
sP6ebFxWX2z4zgzUQdIV6cfKVefHy+LyvbmRGYQFqAPHoP7lF5eIvQGJZX+990uJ+oskEEkgkkAk
gUgCkQQiCUQSiCQQSSCSQCSBSAL/Vgn8P7hDglkKZW5kc3RyZWFtCmVuZG9iago2OSAwIG9iago4
MjY4CmVuZG9iago3OCAwIG9iago8PCAvTGVuZ3RoIDc5IDAgUiAvVHlwZSAvWE9iamVjdCAvU3Vi
dHlwZSAvSW1hZ2UgL1dpZHRoIDcxIC9IZWlnaHQgMTk2IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5
IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNv
ZGUgPj4Kc3RyZWFtCngB7ZrpbuIwFIXbAtnJvpCFkI2w9/0fb861cYfK0hDC/HSk1s6tcub48zKR
cj4+1DWbwCdds5/mDzIN/usNJQh8fX0t8POOIxJZLOmC0uyRQWWxXGm6rmsrCM3UYSqablqWZera
bB3ILDXDclzXdSxDW86zQ2ZWurX2gjDw1pa+mjcsktFMxw+TNAl9x9Rmynx9LXXLDZNNvklC19KX
mK3XFw9Nk2H7cVZWZRb7tkGQZ8msDCdI8u12myeBYxCceTKmE6RFvauLNHDMN2TWYcZksnD9pky5
a3alkvk1nbQXTCBWbH5hYTeKjcxEVBQbQUJuFRuZiagoNoKE3Co2MhNRUWwECblVbGQmoqLYCBJy
q9jITERFsREk5FaxkZmIimIjSMitYiMzERXFRpCQW8VGZiIqio0gIbeKjcxEVBQbQUJuFRuZiago
NoKE3Co2MhNRUWwECblVbGQmoqLYCBJyq9jITETlf7ChHAbCD78/j7LwwgufxCkNQkEMzXr4ympR
BoLSHROFuAa8ILfgRvePtRHCAiuEMriSGPg/Wm4EaQ5NN2w32rBvvpvItQ1dQ7qDW/rH8/c/0XAo
EWKYpuV48abCZ/VqE3uOZZoG5UTI0BQZpDAMy3ZwuUGcM5k8Dlwq2JbBchlPZWiGNNNee57vIdCR
5tumbbZ5imgHVda2yeImz3RYsMR2gzCKojBKsoLJFFmCO1QCMKK4yRMZAIaZtR+nWZalaZZXddu2
dZXTDSqxv4adp6kVkqFISJoXZZHneQkzHUZVok+VlMdEni0eLuNFWVEhzVFV213b9327QxeFqsgi
j9Imz2Q+uBusuhoTvds1bT8MQ9+y/q4uM1qHz9mQDNiEaVk3gNJ2/bAf90Pf0U1TlyniHRMQQ2aB
hIqPhErT9XCyHw+HA4SGvu8w8Yk/LbPy+bkgxhFWbweN8XA8nU7HwwilDquZjWnxFM3Hj52iboc9
RM50QWg/tHUx1Qxk7nayqulHqFyu1+sFOmPfVBzwFDOPdrr9ESq32w06x333ihmyQ5PlhrAzHM6X
2+37drucDwPMhO6UJXzfKDRZOlJJed2Np8vt+/v7djmNXZ0joTRtfzOh+74iO/vj5QqZ6+W4JzOT
9tPPrmWUbU/YwZi4Gc/Wl9P4cikMC8mvIC2b4XjGTJ2PQ1NSzIkyYD//2tPOfZ9Hmy3onDHdY7fl
K+/5pnwUF1ui2PUjVvHY715YeX+FHigP42Fkk/0aX67FJx2Utzgp+nabx+A7IwDGD4wgKXBgNFi/
wbQD4u+A7nb41gpTHINVwc/OVyZb6DHKthelCOqlkWfPjcaxYTleGCdx6GHJTDiBhYXHllE2Hdf3
fdcx5/Blaph0bFGT/he2ucoLC/jBD9PR8EpgGvQCMOHkfHj4oUs69IbyTtoUcvTCtKD0K96OJr9l
Pdj46UKHX7NHxKVggl8/yjM7TGXms+oxRUARUAQUAUVAEVAEXiHwB9Xs0cQKZW5kc3RyZWFtCmVu
ZG9iago3OSAwIG9iagoxMTE0CmVuZG9iago4MCAwIG9iago8PCAvTGVuZ3RoIDgxIDAgUiAvVHlw
ZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDI1NyAvSGVpZ2h0IDE2OSAvQ29sb3JT
cGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9G
aWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c63rbthJFm9bxTbJkW77Hac/7P+VZaw9I
UXe1+Ry5KfkjsQgQwGzMDYMBfvttfEYERgRGBEYERgRGBEYERgRGBEYERgRGBEYERgRGBEYERgRG
BEYERgRGBEYERgRGBEYERgRGBEYEPgyBL1+ObProike29xmqfemeQ4Pp6h0L1qH2Pkk5ZP3u05PH
H1uHNqi4tfxf+lLy//A5BMFKxX8psVuGDVl/nJ195TkDgv7Z5IK+4hkVd/DIlvY//Svp/3p+cXlx
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
7FsZ2H7ZAKsft0aIe6LguUDN3YUEXXOAv0RAJagKMF5ou95gMNg43smvH1EQFti8aqCOxRssb1Fh
xup9AdqscDU0bb9sgGJNJpFvKpsTEheijoWjTKNaiQTrCSeiziopy6RDN4R9BPFpExZoGT1G6iMB
0UqGRYiK1M1jKwVu7uSsOyt6KcxuFzQPLhtARNovStN+tofZeAsAuR3Huwu43kA1g2k5HQu0yxYw
8+2cvts/2QTsjvtnZyvn9y3oCN592UDwuYTY7BYKD1B6E0ECa64oXQsmJujVYtGzhE5OJQPZ0WdG
V68ayGa3W6aM3M19lj/J+KtMN7nGvdFdlw2slrph7Eaq28Gaz1CcFZXX+hhmy1WVBy+L/TghgB6Z
eu2qAbRD28ht5/fbpjEb+RT5hefZW+pIqvo7L/rSbPt3abPdhlJNeXKHvJ/WaIwrjpNxQKWHhKCc
00fHdWS1oW8c3xcBiORpuZ8rv1dLA5e13RdtsSIpNmBeHIClxbqezAyUJmwUMMhGVUxyRwqv+/dl
q1NSs981ACbtRaM5vyztfqsNa0WFlwgCuSuWTYKsL+rqzzR2in+6MfZE1CB8HcK6972rkhL+6Qe7
8qL70RXnN2yQMENIzs6Qe8R9UMwlcd/aKf7oBz2ginEMXv/Y+EAyoeWWQanFbVvr2XE9oQr4WWiL
gF7n6k1OAJGYCIrnxwD+WWT8QD8gEJ8r9yU5/zx9RooG4wfa/nd8GiHA4Wg+19+/HunfQebuUUYN
9D4X7lX5VzgY/4n5B5hCwNS7SsnTPe7cyd24/UolIIAtwDXWkebxRqXyu34lKvfRglVtbqHeFU/L
sN33zS9WpmOhX1WeNH/w+xcj8RA5QjB8DtX/Jcs7AH5J4kaiRgRGBEYERgRGBEYERgRGBEYERgRG
BEYERgR+AgL/B9z0nqYKZW5kc3RyZWFtCmVuZG9iago4MSAwIG9iago2MzY5CmVuZG9iago3NiAw
IG9iago8PCAvTGVuZ3RoIDc3IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp
ZHRoIDMzMCAvSGVpZ2h0IDIyOCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUg
dHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4
Ae3Y3XaaQBiF4RhBQEFB+Qdz/5fZAZPWtrrjPm3f7yDpcu/lwdMhM8PbG4MAAv++wIYxBR6uifU7
3hlDYCX7C3OzCV+xXSZiXhBYqQLZZvM7ZdB9D4TxjjEE4ijaBsrfLMOCDIxJmmV75kWBLEuTXRyF
ZXm3KsOKjOIkO+TFkXlZoMgPWRIo7xbl8mjH6b44VecL87LAuToV+zReHvCvVbnZbONkf6zqtrtN
y0iBRanvuraujvsk3v6UXJbkLiuquh+naRqHYegZKRCIVqq+rops92tRLn8lk/3p0k3z9TovlPJr
CPsFcrXqLqd98usv5SKZ5mUzzB8fAXJZtowUCM92oAxaQ1Pm6Z3kst/kVTter9dp6Jr6cmakwKVu
umG6flzHtsrXPee25Sw7d/gz2Y7zPPXtpTqdXj4I/KfF06m6tP00z0GyyJbd+0/JaWjPp+Lw4tH0
P64ditOlHaZnksM0dpcy34ejOyMFknSfl5duDCvv4ZocxhAsB6RovZ7z46lAuBCG43e7gj14upt+
7MNWlO3CtZyRAttol4XDzgL2aE02fdi3w6a+Xn/WV2/8eCKwHnbKsH8/l6xPh+Wg+XWN5PdjgeUq
czjVSD7mMT5F0sCSVSQljxEiaWDJKpKSxwiRNLBkFUnJY4RIGliyiqTkMUIkDSxZRVLyGCGSBpas
Iil5jBBJA0tWkZQ8RoikgSWrSEoeI0TSwJJVJCWPESJpYMkqkpLHCJE0sGQVScljhEgaWLKKpOQx
QiQNLFlFUvIYIZIGlqwiKXmMEEkDS1aRlDxGiKSBJatISh4jRNLAklUkJY8RImlgySqSkscIkTSw
ZBVJyWOESBpYsoqk5DFCJA0sWUVS8hghkgaWrCIpeYwQSQNLVpGUPEaIpIElq0hKHiNE0sCSVSQl
jxEiaWDJKpKSxwiRNLBkFUnJY4RIGliyiqTkMUIkDSxZRVLyGCGSBpasIil5jBBJA0tWkZQ8Roik
gSWrSEoeI0TSwJJVJCWPESJpYMkqkpLHCJE0sGQVScljhEgaWLKKpOQxQiQNLFlFUvIYIZIGlqwi
KXmMEEkDS1aRlDxGiKSBJatISh4jRNLAklUkJY8RImlgySqSkscIkTSwZBVJyWOESBpYsoqk5DFC
JA0sWUVS8hghkgaWrCIpeYwQSQNLVpGUPEaIpIElq0hKHiNE0sCSVSQljxEiaWDJKpKSxwiRNLBk
FUnJY4RIGliyiqTkMUIkDSxZRVLyGCGSBpasIil5jBBJA0tWkZQ8RoikgSWrSEoeI0TSwJJVJCWP
ESJpYMkqkpLHCJE0sGQVScljhEgaWLKKpOQxQiQNLFlFUvIYIZIGlqwiKXmMEEkDS1aRlDxGiKSB
JatISh4jRNLAklUkJY8RImlgySqSkscIkTSwZBVJyWOESBpYsoqk5DFCJA0sWUVS8hghkgaWrCIp
eYwQSQNLVpGUPEaIpIElq0hKHiNE0sCSVSQljxEiaWDJKpKSxwiRNLBkFUnJY4RIGliyiqTkMUIk
DSxZRVLyGCGSBpasIil5jBBJA0tWkZQ8RoikgSWrSEoeI0TSwJJVJCWPESJpYMkqkpLHCJE0sGQV
ScljhEgaWLKKpOQxQiQNLFlFUvIYIZIGlqwiKXmMEEkDS1aRlDxGiKSBJatISh4jRNLAklUkJY8R
ImlgySqSkscIkTSwZBVJyWOESBpYsoqk5DHC7yX7pszTePu+YaTA+zZO87Lph76pimwBu/03bEKQ
FVUzjGuwi7bvjBTYRrsFrB+Hh5LtMA7t+XhId3HESIF4lx6O5xXs0Zpsh2ns66o4ZGnCSIE0OxRV
3Y/T0D6UHOd57OrqWOQHRgrkxbGqu8XrieT1Og9dfa5K5huB6lx3w3y9PpBM86oZrx/XeezbpqkZ
KdA0bT/OgWtsqtth53PvXo9HZR2QF8qh7ztGCvT9sELOQ10ekiicGu8k98dzePCv8zyN48B8IzCO
0xywxu583N9Jvi0HynDSvHTDuDL2zDcCAXqh6i6fN5mv+9FmebyzojzX7W0aRgp8MtXnssjul+Rb
kNzGSZYfy6o6nyvmBYHFqTzmWbJerr/W5I1yl+4PeV4wLwrk+WEf7oPLW4qfkG8rZRTvkjRNszDh
FyMEPo2ScK/+A3KlfN9GUcwYAtHyrue3FbkszvAWKbz+2DKGQAALbHeP9uc/5Rs5wicCfzvePnlS
5+OHAs8U+RwBBP4tgR+olCUzCmVuZHN0cmVhbQplbmRvYmoKNzcgMCBvYmoKMTY3MgplbmRvYmoK
NzAgMCBvYmoKPDwgL0xlbmd0aCA3MSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdl
IC9XaWR0aCAxOTcgL0hlaWdodCAxNjkgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9s
YXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl
YW0KeAHtnIl247i1Rbu6PGmwZMu2PFZ3/v8rs/e5IEWVy5IlpRPXe+RaSckgAdx5wkX/8cf4jBQY
KTBSYKTASIGRAiMFRgqMFBgpMFJgpMBIgZECIwVGCowUGCkwUmCkwEiBkQIjBUYKjBT4/0CBb+05
FtdT5x+773AeMPzJIyjD4U//PnX+pzfa8aEofPcRjx3fffTq1PkfrXvIODB8Pzs7Pz8/Ow6LU+cf
AutH3waG84vLy8sL0TiUFYrS97Pj538E1v5xpZ/HD4Hhz7OLy8l0Op1cBosBGvVZ+/Ldsu0tOHw0
/92UdwNtjXfj+wZ6yOoH+nB+OZ1dX89nYqF61wo/fdcvuz3O9LPzq/fz66t+ktTy+eXSgzeDCTt+
MkFLFDVWkQuH+eLm5mYxDxaxUq7bvlPhY7qyajZ0oD3fweFy+sv5+bSBkt9toP3uF9hafwfo3Svm
i8BZPYLHHxeT+fL27u7udikWDGaX9h0Kf352VpbrW8jpC59a4xx1+Hl+aFMwshR7Z9s/BTZLS57N
Gizf1u+g3P1vUMAQqcYqsvPPL65mi9v79Xp9f1u8CGViseq7+pJRIWD7mLLzi4sYg8vLK3BYbc0v
2hRsTAkOQbpo0S8BIA2SsikDbfwYD0HQkFypxtPJ5Ao8Li6uptc394/Pz0+P9/BienkBXdyyvpvN
Znzql2ERAEiCK55JjAELzaHB1vwz8QTJBpqoa8D8WzPO75CxW6NbXyJ9DHz3JmtdooXza575XOBC
yLv18+vb60uwmFxdKCgwaOJ3C57r69n0KqZLAKTBbDaft0Xm18FhOB8JhAJXrF7mzn0liaSAQll7
yhqs0jaYZ32w6ED98F8IAgiT2fViiRrfLBfABjln17f3T68//vrx9qxEaaMCxHR+zXe3Pnwb0xUA
wG2xzAouwnMrDYbzoXkQZc7FGVIoDpKuSBEYQJ3HZQbrq40fQl8vZGoZktuVz+2NWLD2YrV+fvvr
779+vD49rBCoK4QMfmFx+BCF51mhLlPoKhFn14y34RUI3q7uH1/e/h7Ml72QiuUnl8qP+04EO2tn
iWXB4Pr3PKtmVPb62m/fvp+VIWGWcN0s8Q0gsRSJAmJ9d3MNZ9E3oHAj93h4eLhvpgvs0KC7B8zA
ev3AMmBxu3p4evmxmT+bIEnMvrl1LTyP3hTjwd9SopRwlVWFnx8uBfUmaOM+VsgIDdFdgBKHnhMP
xYmXx8YJxSFgwDCxKNM1E7ur2XL1gBpjB9YPUqJxQk5280ECZV8FcQBDmiDeze3d6uaaNaCPSzy5
QEPi8XF9v1rMrs73CZQagUcIGUG84RCduFEnfvx4fQ4jEGQIrjxE8AHmYf34+FA8EhpM0cvLy5M4
QAi+ghWb+TICWbxZwSdYEVt3Bv8gXmy4GN6gRS+QAQ5LJZYHi9vrKcK3mxUicTnVI0jC2+VijvF0
Q818s053nV53tgk5BkamsOFqKXxAg/S8YsqyCDYO3QGtN61b5l+pUMocQAMXphkJmC5YRT7XEvdP
IcP9CtuATnXrhxW7VDsqMVvASJBYIZ6ioPQLF6oJZR7EQWOOApch1QguoDTMh0vo5UQknl9fw7Ws
gXlbiFc3P3x0yYfYuoYEEiQSsAbehw4vz48oAuZ7sZSweqlrtGK3av+ExDVeAhS0pog57H0GzMQd
5evEQm8GFk2CpesEKVuJBD7lBoyhAt9FPPr559pQkEBdkfMeibuHx5LWHon1alnmMRvA6gXytNvK
NnHCHkbAMRQKPzTH7MIf9OzhFr3TMcepCh1YYIHlBDgKEkj4LRqRvwxcIMLWfJzyZ5B4hhGxhCV7
a1m9dPudShHFhpN3qBG2QHMHHSM50s3BG62cIRLhma4inhlLe7cWbAg31zWCBDqJcOEEyv9uzTdk
udjLiccwTuFVEhTyJ/ffrxR/fr+4QomxNTEswSL+q7bcQkKlUJSUWJiHAD0/Im1wBoF+fH5cw3t3
lGkN5DafsW5khzhpKaL2qp8a1CnFntyyHHZzVRpZJFKJkvnYPBALO2FEhSeEHRpZjYfmaIOEGwJB
uGZMcX6lUvTzP4MES3Q4SwTMNvIRzd6HhI7CoOFO76WJxveo3NtIJOY8vyhnhzvWTTy9xIA2ToBU
WK8pUfSOQaJfwnAsRPgcEn+wH1iDBf6lXL0GhkBHqz6kJJ8lTCDoMEgSCe2RNjbhIvLI7yjhZ5HQ
yQ6sE4Tv6HAoEhEoSYyIGErgrjST75HAOYEqMQEOVYwfS5w2SCh6GE8YsZMTaFEC+xIYXU3zE02c
eBkz8HlxIsGCFSqsVhMs1G/g0vsgk2upGzmPlOKcjPsIT0op8E2dYkPGXyHRz6/wJisWElFd7E+M
apydSKhWehFEV6+COLn/Hp0QCQWqwyKmFlZMlbDGX5CIkHYJq8FRYiNCnT1IdCbaeA8riIA6Ipxl
RJtTbh67M3Ca2PgpTHyJ6G6XHU6YVhUWyGgCosh5IdFsnuZiyWuAIMRKWEDIF4fe6cQvOOHXhkoR
kA6JxGKldI9PuLc4/YQdZsOIQexK2+0Tzq4xQhwsEyUgAnstThQbP643M60rc1VIkMcS2+ix61vz
wHfiZNzS5if0qkimQl+8/FTv9AQdOiQ6p8/mvA3bnb4/7CiVEAVXDRKy0HXYJH4cvaucIUqy4YRh
x4ec+EaUQXincGY+AtI5YZhDeEQynizcWKVxwqj5VZxwVcQ1ROnZ7DMBYBQioQRBXSYW8ScG4yVc
eg7TAW2u66IT5tCQEU7AKGMpMxJTmFgnSZMIv5tPcms6ohPuVyAfMnzvOEGUQSr5hvvs1y8+Vla0
OxRPqmtsbYJeRjb8BWjTDDItCQf7i/8JFDvrRLxWAWDSHW3zlCIOwZpIYF5Qqja/Zbcl5ywZKy0r
jb0N+TCGq/XL24+3V3ymyX6Srs8nRQScVCoMJeLvKrOljGYwDUeT58SSW0rCugCCqRfWmCAThEVw
BmegoKxPxFmOIobA+dTf4IXOMqzAjJtGs0Dj5aRHgkwSO1tvpV9LT3cxokiGoJDA64ZN0IUltQ1Z
AagsOWAFW+sp/FbPyCviXkFgAYsTiTooUcpgo+NuvgKV0mYxm0V41pEtjNWVtkpxghPJ032XjV1x
dyCeGr7l6xRiBIz/oVfigNUlTYC+gJyoMKBKcH12PXmDpMg1eLlI3pkEJvKUAkSb75ImKRZ4hb8W
8f9TJhUJk0OiMUsFeVJMMZPd4yRinDCeKWJY9KFiZDBe3k3QFLIaA9SGbb7DaZMKUxoxm0VnUav5
zIlBooVkm/nElGQpfGdgYPhlWYcF8JvuZ9k06Sw4FKMNC3gVHPYXzww6rN+h2EvKFFoiQaniFuMM
krUCqkYSdPNhypieXoRp+kryPSuUHdlghbncZj681e13BZNslbJpi/yDhCpCOtCwAxTcJPnYTo3g
pZsZOk1SSK06gbVSUgKgaIXHgDeoFMytiVh87gupopGjseJDW3gwXxyMb0IIa7YpSbsCmCcBt+pD
OoxKUifAj1iyYJaB/T4kGhbl7lyxdjMSDXq+QOgbDALhQMYUI/Zv6fe7Q8rt+X7GSNDQtWYFFkhR
XEFLDmTIc2O1oqfPp3AIL1jawrorBigxADuwAGqfFN/DnAz4XWo4gCbTAK7OR/zdke3dfFdtS2an
zQqbyBuTbR4wBKVbb/e/Li0M0CMw9ch3LxqkgaFBy5Bqw+OoT/d7sFdG/bIwLcLUXm0wK4Q4mEK8
itkskRo2oJ80WG/nzx6InwHpX+QHa/QDA+hD+7zg/7b36T/Pj7zzV4Heo+9ICsK4kDu9m7ax22B7
wd1/ZZf6v+0P+xfdcD+QH93oh/92nw8+6IbqX1+IhK5xZYZv5NIYPJj09X/Cm5wvWOcPI35m6ddH
IbaFvG+KC8Iyfcq9fUWslCewyNlXnP5XBHIfTFFtPKvO08Bl3/df8r0Wi0qC7kMcfk8kjBv0uLqq
3k19SXLvBAp7qx8t97Dzy6/8cuM9vjKUe2HbOL+9n44fjBQYKfA1KPB/wPqIQqURQeZr0PUwKIJB
krkuxxOVw9b4X39dMQVpuSl8ZW2V1v2vATtgf3DoqyRVNzk4gT5gt3/oU3GwuEZlq9pfqlSSHPQf
2vI/vmxwoADKCVkawixjwZDfKuhGmJJ6Wne3Nw9m5KG69/tkDmaeVDI867ddgVovHYb21Vbx+T/O
+H9kwZwZcXKWHkWRmFOJpdg680z1N0lEw4h2AG5rXeFAUT0HCP84EnGtv3BJbfwjX1WvO6ZqXq0V
10mop6a2q6LjHmy0UyW/7Rb1327uyf8OFx0s24a7Cuxmm+3v6y/fpj3PE0zP+O/SY+jRfQpMdsdm
7W5yecD8tVn56F+sY6BTPilLZymXb8NdNlxky74tNso0vnLM/N8qKwfiNuJ59JdzdnQil0tSFKhF
q6rOjm7s5KOBr4lZNUXy1O9bYVSOC6CHAANvxWa8yJsERxYsrNm3IEk/lz66nBb3SHiEUtZpe9W2
8OkVj0DEYcrwEkPoCgqeYnB0VyckOfsRA1FouPXT2uELzfR2L9O1a/MB5yf2oeegqJBIWb9t5rKe
53THPCfwApAq0rF11COtdkokFzwmshdTM1+HUWETr3rkOLOf5mWaUvQRnslXkxrnxZxk2ULI/zck
Npu5Kg8Ls6PrHo9EcDDScS/0z7OnwIMgAVBMi0eU2nvP1JRhsKsmTWncpuUlYuUBfA6o7dfmPM6O
Cs9Mc6ioAFZYZUdDTj5dGPxO8ubiYGnXY2nvMCRQEAvExWFP7T0qzllxnW4CiEfeiY2E0PeU6D0b
lj+exXkRwzsM1Q7hAXAdlg9WzTRPx9NKqb4crduFQ/XS1dH8oD0THGixs+0gjzFEzmhFjy6j4OYR
tW/bS8Qvh+xcxPj7rzd6TtPw4Fl8XY0ASz4wrAL8XDdobQTesDhWnkACa8KtBlr92rE/oHqK7d0A
WqvdqXtsBhALyG0DTjVMOI+OBmje+iHx1txh+Ptf//rrDd12Lr0QdG3QzML5okhKGRHvej3sj9kc
iB+uGWXW6zaFrQue/OuhOLEFB5tweLJhei/EgmL8ZV2f8O6DpK6WjbqV4DSRgBMoBc0CBauezxPG
4FAo5EW6buiwPwUJGRGqAof9ijnbt2+B4Fk+2K6ecTlSLY/0gaDUxBW2/QCbbR++ay1nNBz57gWd
ePNeAtrEGSkd2XYC2tmS5izJVS+8exAkjteJ5l/Tc42weJnDw/24WfTBVkqCuBgY+2cQ8TTZ2HHf
332wUTMdRroF7LA3VLyIgTBx0K7i89bOgfQYwV4Pfr1+khe2RvKma9Y5XJYMEs4uBMiWL2Ta0L98
BaY1u4lDAtHWpJazcxo3666EF2+YRSO5cAJM11/LRQy6Z2hSW6RrLkGIb+s2nqfX6Y20h/4ZQ0yL
sLHhERgwhWiNzr26EZI9KpNEqTVMXi0RaIQLj1cNXMZDxqV18yAXd4xSqzWLd+g9NtaLGC8Ch01u
/WuFIkhERm2xAr2069kaub9j7mMEI02IsIwAOD1nHht5KpqO+KQ1qOsvtU0RqO2rVBCK9n03aHQ3
KHrTIjjRCmarqt/SpFL8TVfYBnf7L492EyDR9wV33az6VFw1NrQxwvtljKRDEPUNLCLh3YfCHJQR
L9hWLQ56CiNxLadGNZwpnjYklEI0r3Xn+d0p0lQqYSdnNVcbUxjc5bg/SKTnOsFCumLCMiRhyfUJ
TFMwrw5av3YRDLC2K5LYGpPlU13MDRJwZa2moUsxf9n6aFdXel0q0cllYlRuxElbNytxNeLj5kiT
uyBhn3fauhMvpVddJRggYb80nSeldUGCcA9xstNazY7dSlfhSSoRL9EjgdNseVeQQGCCRHypSPQN
yMSluYrVkIBxvuNOwSeR8B6PNwwrHNAwnxB0lKsrJFDCg5GwVZzrE8a0hyHRbgjisxNUVfL9sf3Z
+WaIxHtx6jjR7gxtcSKOEGoeiESsU25KtjZScCCFPSXmaL6uEycEOBkPaZuKrU6Ym8UP5YJQqatG
t9mVE5CAF4lodBhbVZCdVP/ly4Sw3tOKOEsQ0IgpitFUdWN/IjHl2eP9jkdCq2rQJRKJyog2iYvN
sX8J4ScG4yc0LChaOsD0CGkOjK3fDJsGEBLhC4xVZ819H8GJDomIE0EglpZbdie1d7T4T8tp9Nba
do06jMP7YUIJkwsLYhUBtrsOxyHhFQo1O2Fzl7aewgkvmHvbMoG0JK4CNgGPl8w3w9a/SC6MaU19
xAjndhQS3vx47ZHwGnJVEE6Rp3ZhQK0gIE0gbo2owk05xDDO1UvAJj+t393Erq5PdCY2d5Qr7IBr
Sp6hU3N2xsm5ho0yBQmwgBNmKtXRfVLPU8kTCwuu/se6BMQBC3OiDLtTLnclDTCzMSkiYsDrJiOz
boAx47Y4hssOV9SHK8xk1bgeVMxgn5epaW6QiDxVbh5eHC9QCTwMdQzfFFKTu3YwUgLUhsmJdUxN
caC17f2YR/8TClZhqDWtkoJTfDEeJAMH6Ng7XnpB/s6a5oYTXas+aFgIOclAyYqciJjEyeDOYvQ5
tqOM+z8FruoyGC/Pger6RDkRsn//kwrtRpV/LcnXMNpn5ylEKDddDO91Fkhm/u26xsKDgvknzOr2
J2GF9ZeKY0SipDTVANO57OOGuWhRV+Zz06K/PmF0CCEWJLd5nYLOUn5aTTIosaplbT85ETG8sRPU
stqDniVbNC44xVW0EzYrQZGm2AuSIzMjr1M4Pnih+OSOARmBUCZ2Rw+8TpHaYf82XozA3oWSuTck
LJhDK566SITJO40VdXlDv+AtI69o4H0QbP9DNGQGDtd4e9EB3V2fyE0BWWHNljg8KuKl0CkGIBVo
XnqhAettkms4HxxYb6HJiwVsadHxrEAtoJ09qpLLSkdASW6U6xQM13hBZVGcGe36hAGDMrn5uybi
H9uZr6GYlfVk7s2FGvb5n8FJhSHZ4t7/LsG2Gvz8lzCJBrTkoVTQVdobNKh4XvTjwYIZHGZUxMgK
ouXfGch69VcwrJdd4bBIXyUUrFgCt1M5kTOT2tY2VTDoQWuwZXhz0aImGCcWyBAlWHR/i+PmbWHh
+uZ4lbjiQfXUjRNJa08pPDWudPuyUYMs0jkY7sdLbPOmnXC5RgM1otX/4V/Dl2p4RZF4c7CgtF9h
gNF9rNPROhE8OiAsE/g7gwUbZK3H8e5FAB3+vT2QTwev8zfsSZqiVa0KoJZPC54E9RQT28BtANfu
/Rg/enj4MRw/+Leqp/M2XsHBabTbsUCq1Kc4u4NhOX6CWOgUdaDxnfE/IJO8CEU8jUjHA3bQTLCI
X819RPnA059MnZLbHQTFqR9HoLzKXn5V14rL80TnpPz0VLAOmx+16P0qLrTzrb8RDlqJ8vXeys+T
SyD6zBOtxmHEPPFrsAANwpA6+Pccvrn9Exf+r07HUOvOLarU07op/qtAnL6ZjkfvWVEKP051QKeD
dMwKojF8jlnjS8zpkPgSwIxAjBQYKTBSYKTASIGRAiMFRgqMFBgp8AEF/g0AcSSyCmVuZHN0cmVh
bQplbmRvYmoKNzEgMCBvYmoKNTYzMQplbmRvYmoKNjYgMCBvYmoKPDwgL0xlbmd0aCA2NyAwIFIg
L1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMzIgL0hlaWdodCAxNjggL0Nv
bG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQg
OCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtnYdyG8muhtdrBeacc85JlGTJ9nr3
vv9T3e9HD4PIIUX6iHaVi1PnejUzbEwDjUajAfx9//rrel0lcJXAVQJXCVwlcJXAVQJXCVwlcJXA
VQJXCVwlcJXAVQJXCVwlcJXAVQJXCVwlcJXAVQJXCfwBEvi0us7kZdXs0ynt7Men/PBiv6EHf+tS
T875yBntRNpd53zgQ3/L5//+/Pnm5ubzZ3F6Mu1z2kmQn7lMlid/4WN/qC7c3t3d39/d3tCPk4mf
0U6SvLm5vb11sjz5Ex/5Q/pwc3sfDIVDwfu7m88nD+gZ7cTm7d19IBDQF1Cad/rvFPy9X71DZPe1
+hAIRePxeDQcuLt5vxcegdPbGZv3wXAkEgnxBRjd7cObe80Hz1q8ef4/3nz6fHsfiiUz2UwqHg7c
njygp7f79OnzzT2STCYTsXDwPVFKKii5m8v/I2+b5qJ6F4ymcsVyKZ+Khe5OUCu1PqcdE+MuGEmk
s7ksorw/LkrN+hvMBcbixK5smDnyF/29uQ8ncqVao17OJSOBExX3nHb6RCiezhdLhWwyGpQoD/ZI
dGUtQsEAAjl5Eh2kt3oB3dtANFWstbrtejEdDd6eRvucdnwCUWaK5Uopnz6uMmLzDmsRi8eYy9j/
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
FIdB1QUloXFRZg8Pq/og3AnAsz54WcsURUm9kXWyfbtDgupcWcHwzfvg4ALiCavgmp1vddGAH3Pc
9ptKf+msWJW/GPTXxRXg1DCu2xBXtxNfg2fdDmcbL2sbAUuZMpr2ayRmSFAddKK9gIJuCiKymhJT
NC/aIieXdBUco4K3Ev4SlNUQrkrHuoTsCuMaZsVXtpC+IBkyph541u6VW1yjXr2GBhV1KW57CYJU
55HZgW74Rop4Fu0AwXV05pILi4y29Vv9BJMKKlW65npv3XdwVEOrinu4pAFvSOm60kR3v/3Avd0i
4xL1MkiEULA8EzlZnL5LlspzsvLu4AB154KXcaqevwWdupFzj40puHS9sDcMnLjWtXXPn1t3Wy8t
9kLyhYMocD3kejVbnR4rqLwPnUNyubyD9dH+WffN+r7eOmw9tiFeN9ALXf4P3LvNW7u3sj8OWLEz
RJVf6ZBh0WERXY7C03HOv4JP+rvq3Kbvawm4V2uefuoPdMb5XvI9yJaR4bU0r/wSUt0XTQv+VId/
thGzVr4XB41Q4Igv1NGIcnA0O22Sx0eO9fjZD/6udmLUc0lqDXwPHCKdsEE9xB9WyQmj5ivpJAzV
oHCEHClIqk2Crn7qdw3AR39XU9Sco0QyjSNorqCO4VKxztqUf/RHfwc9rbt2XkhYUSgVWeusMdWT
/1FsblySVY2d/b+XcE7W75D75b7JCoXTiOuhQLEqGFc+1uU++Zsoay2WC2yXc6l2Vuzf1LGP/6xY
3VwfT/9K8SqBqwSuErhK4CqBqwSuErhK4CqBqwSuEvidEvh/W2IA1gplbmRzdHJlYW0KZW5kb2Jq
CjY3IDAgb2JqCjc0NzQKZW5kb2JqCjYyIDAgb2JqCjw8IC9MZW5ndGggNjMgMCBSIC9UeXBlIC9Y
T2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzI5IC9IZWlnaHQgMjI4IC9Db2xvclNwYWNl
Ci9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRl
ciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7djbUmJLFERRYd9v8P9/e1ahdquNCfP1MFdERyuZ
wcOIql21fXtzFFBAAQWeEjg5ROAXU/IVdj8E/rWs4OxQgVL7QdkYu67rnecFyut8/iFZjqU4DKPz
vMAw9EX5TbI59sM4zQ4RmMai/CZZ+7ofpnlZ13Wrf85jgea0zNPQ1+7+85hsC3KYlnXbHSKwrcs0
fFmS7cDux3ndj8vlchzkq162e9ys9nUe+9rbH2uyfuj6admOy/Uq5HNroyAb1rZMffcFsu3sWpAt
2vfNx+SjR+RWD8Emeezr173ddvZQO7s29mWvfb+Qk+slu0s7T25c61zHzd+tfYNs235vJ9H0/FXq
RZtTu+GU5HHcg9yPo+35se6ZThaoN5d2ptTB/AtkO4WG9uLjRIGuG263nF8g99uzs90wnSxwe3+p
03m/vyLrwK4LppAZsaU3yKW9v9zd2g1ybNeiP688/nBfoF28RyHv45BPhSRaoStkwCGRkEQrdIUM
OCQSkmiFrpABh0RCEq3QFTLgkEhIohW6QgYcEglJtEJXyIBDIiGJVugKGXBIJCTRCl0hAw6JhCRa
oStkwCGRkEQrdIUMOCQSkmiFrpABh0RCEq3QFTLgkEhIohW6QgYcEglJtEJXyIBDIiGJVugKGXBI
JCTRCl0hAw6JhCRaoStkwCGRkEQrdIUMOCQSkmiFrpABh0RCEq3QFTLgkEhIohW6QgYcEglJtEJX
yIBDIiGJVugKGXBIJCTRCl0hAw6JhCRaoStkwCGRkEQrdIUMOCQSkmiFrpABh0RCEq3QFTLgkEhI
ohW6QgYcEglJtEJXyIBDIiGJVugKGXBIJCTRCl0hAw6JhCRaoStkwCGRkEQrdIUMOCQSkmiFrpAB
h0RCEq3QFTLgkEhIohW6QgYcEglJtEJXyIBDIiGJVugKGXBIJCTRCl0hAw6JhCRaoStkwCGRkEQr
dIUMOCQSkmiFrpABh0RCEq3QFTLgkEhIohW6QgYcEglJtEJXyIBDIiGJVugKGXBIJCTRCl0hAw6J
hCRaoStkwCGRkEQrdIUMOCQSkmiFrpABh0RCEq3QFTLgkEhIohW6QgYcEglJtEJXyIBDIiGJVugK
GXBIJCTRCl0hAw6JhCRaoStkwCGRkEQrdIUMOCQSkmiFrpABh0RCEq3QFTLgkEhIohW6QgYcEglJ
tEJXyIBDIiGJVugKGXBIJCTRCl0hAw6JhCRaoStkwCGRkEQrdIUMOCQSkmiFrpABh0RCEq3QFTLg
kEhIohW6QgYcEglJtEJXyIBDIiGJVugKGXBIJCTRCl0hAw6JhCRaoStkwCGRkEQrdIUMOCQSkmiF
rpABh0RCEq3QFTLgkEhIohW6QgYcEglJtEJXyIBDIiGJVugKGXBIJCTRCl0hAw6JhCRaoStkwCGR
kEQrdIUMOCQSkmiFrpABh0RCEq3QFTLgkEhIohW6QgYcEglJtEJXyIBDIiGJVugKGXBIJCTRCl0h
Aw6JhCRaoStkwCGRkEQrdIUMOCQSkmiFrpABh0RCEq3QFTLgkEhIohW6jyHXaejP55OTBc7nfpjW
bd/3dS6w0+kd/XSqz+d1349dyCz4kb5Dltd9yOPYt3kc+r5zskDfD+O87QV2b0Uex+XYl3kaitKJ
AsMwzcteXscvkJdjW5ZpGp0sME3Lsh2XXyD3y/V62beidB4KbNs7188V2dUhtB/X67U9J53HAvV8
bFrtdO6+nNqnrh/bWq0lWZLOY4E6UBrWtox9V0f55/Wn7j/jvG7tuGnz+HtevHFTKqttncd2jfyA
fHs7nbs6z283zEb0eGW/eONjHTXHtrP/vgPVlbxJLsvqPC+wLO+O3yHr5WYcp2l2nhVo18T3F+q/
K/KtluS5q/u6QwTqHbD9YeKLYz0lb5T5xcj0p8Dt7zvfHG+StSodJND+hvHDsX5tnzpQ4F/Gz0/g
F71u/RPM/xVQ4H8t8B9CAJDmCmVuZHN0cmVhbQplbmRvYmoKNjMgMCBvYmoKMTQ3NQplbmRvYmoK
NzQgMCBvYmoKPDwgL0xlbmd0aCA3NSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdl
IC9XaWR0aCA3MSAvSGVpZ2h0IDE5NCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xh
dGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh
bQp4Ae2aW4+jOBCFp7u5E8KdcA8hEHLt///z9pTJeBN5pDH0w+6DUatTKYWj8le2QfL59Utdawl8
zNfa2+f7SOPz85M+fiBEGl90kdJqHah8aZqu65r2tV6HqRimZVmmsV6HVHTDsl3XtS1DX1sPZDTD
cj3f9z3XMrR1w2LFWO42iOIo2LrWynJYMbYXxNkuiwPPXlkOeq2ZzjbOirLI4q1jauj68qZTsy03
SPKqrvIkcC1q1ioZ3dqEadG0TZGGGwZnnYzthVnZ7tsyCz2bGK+ViXYVZKpd9GOZfbdXMu9toIVp
e0Cs2LyDwTfFRkDCE4oNRyEEio2AhCcUG45CCBQbAQlPKDYchRAoNgISnlBsOAohUGwEJDyh2HAU
QqDYCEh4QrHhKIRAsRGQ8IRiw1EIgWIjIOEJxYajEALFRkDCE4oNRyEEio2AhCcUG45CCBQbAQlP
KDYchRAoNgISnlBsOAoh+F+xYafqwkniokNfsk1gTJrxJjPbDuQdFaQB/4SmG86Wn2tuHUPHiTiz
Zggc/5QgkS+I6IbpbuPn8Wi8dU0DhgppZwYbjm4YpmnZGz/Oa5yy1nnsb2zLNA1WkoTDY4YCCcdx
XA9n/LNMEnguMpCSc2ZABu4JZ+NtcflRWtRd19VFGvmU8DaOnKOCZp3peH4YRvhLsrLpDl1TZgl9
DUPfc0yZ034qBkyiJM3SNM3yqoVMW+XsW5pEYESOij/15jUHGRQTpruiKPI8L5v9oT/smxIxMrs0
RDmyMuhzWdd1VVV12/XHvmtZXNflbjZmyFVD06WBY6Ft91AZoMPitqkWyMyTF0wOXXfoj+M4HnsK
idEuwnSWGhTO9jfkwuj6/ng8DuNpOo0Doh5jgy9jI+XL+PhAw10/yZuuH6Bxms7n83SC0tB3TZ74
LhouM42p416UVfueKjlfrtfrBULj0O+rDO4OmTHNp/IWyimaw3CaIHK73SA0nYZDU6AYScsKWw3k
Uan2x9P5ervTdbueT0cUA8eKrJ3nSSfOm8NIMo/Hg2TGQ4N1LkmGJjSWFdZDmKKc6XJ7PL4fj9tl
QjFw4diGtH2GhkV2IlbO7fH9/f24zcUwa5FEm6iYJ+VNkJYo53pHNfcriinTYJkl6Ek52tWgAzh3
KqYmK48s33/LoTlYtETnTmRaarbUVjNLsP9s16GmdwOmzmUaOt7sl1/9NUTTQRkbetOP03kae2o2
NhqZZfAqTnupxSj3WOH9cr6z2LPp9LSj3Y9tELTr/XW/eq0FMSuHVnqN7aumlS25mN51nk3Hg6qs
SpjRljb7t9pM2QuTLMsStpEv5TsrsWE5XhBFUeA5q4ZEQmxYeH7iYSn7rPw9krdPGpZh0sPcpif3
4i49xVAOveSYeJGgV5u1MjQsEqLXmh/6TdkrExNZOvFe+eD9jV7g6OM1vTwmBVzLb1R3KAKKgCKg
CCgCioAi8B8R+AcpZ88RCmVuZHN0cmVhbQplbmRvYmoKNzUgMCBvYmoKMTA5NgplbmRvYmoKODIg
MCBvYmoKPDwgL0xlbmd0aCA4MyAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9X
aWR0aCAzMjkgL0hlaWdodCAyMjggL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRl
IHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K
eAHt2MtaGzsUROHYfb/Z7/+2Z6uBxIC9Qk1P1p4AroLB/0ktNb9+OQoo8P8XuDg/FXi5GH76B+w9
CHzXbOHVyQQa2hfKk7FzMoHr9atkW41d3w9OItD3XaN8WJPl2PXDOE7T7PxUYJrGcSjKR8mCLMd5
WVbn5wLLMpfkZ8hrV47rtr/N5rDAh9NakrUkP/Z2O2j65njcbkeb955fXgmcSoW1lWRbku+U9U3X
T0s53u8l+eq3/fxB4HjD2pap7x4ga2dP696ycuRVbXoK7MfRVt2+Tm1v/16RddTM63673W/FuDh/
F9i2vbRu+zo/HDfnmT2vtVpr1y9LO9YdFJimpT0J6zn4AvLYl3kaht5hgWGY5qUehc8ha9vvW7sZ
9dl70j/YrnfAcd4a2LMVue/ns7M/XyDrJHJeClzrUGmn8/4Ccq/TvJ6d7WLkkMAJubT3l+crsiDH
di36uKn79YVAu3iPQr7QCT4WMsCiqpCkE2RCBlhUFZJ0gkzIAIuqQpJOkAkZYFFVSNIJMiEDLKoK
STpBJmSARVUhSSfIhAywqCok6QSZkAEWVYUknSATMsCiqpCkE2RCBlhUFZJ0gkzIAIuqQpJOkAkZ
YFFVSNIJMiEDLKoKSTpBJmSARVUhSSfIhAywqCok6QSZkAEWVYUknSATMsCiqpCkE2RCBlhUFZJ0
gkzIAIuqQpJOkAkZYFFVSNIJMiEDLKoKSTpBJmSARVUhSSfIhAywqCok6QSZkAEWVYUknSATMsCi
qpCkE2RCBlhUFZJ0gkzIAIuqQpJOkAkZYFFVSNIJMiEDLKoKSTpBJmSARVUhSSfIhAywqCok6QSZ
kAEWVYUknSATMsCiqpCkE2RCBlhUFZJ0gkzIAIuqQpJOkAkZYFFVSNIJMiEDLKoKSTpBJmSARVUh
SSfIhAywqCok6QSZkAEWVYUknSATMsCiqpCkE2RCBlhUFZJ0gkzIAIuqQpJOkAkZYFFVSNIJMiED
LKoKSTpBJmSARVUhSSfIhAywqCok6QSZkAEWVYUknSATMsCiqpCkE2RCBlhUFZJ0gkzIAIuqQpJO
kAkZYFFVSNIJMiEDLKoKSTpBJmSARVUhSSfIhAywqCok6QSZkAEWVYUknSATMsCiqpCkE2RCBlhU
FZJ0gkzIAIuqQpJOkAkZYFFVSNIJMiEDLKoKSTpBJmSARVUhSSfIhAywqCok6QSZkAEWVYUknSAT
MsCiqpCkE2RCBlhUFZJ0gkzIAIuqQpJOkAkZYFFVSNIJMiEDLKoKSTpBJmSARVUhSSfIhAywqCok
6QSZkAEWVYUknSATMsCiqpCkE2RCBlhUFZJ0gkzIAIuqQpJOkAkZYFFVSNIJMiEDLKoKSTpBJmSA
RVUhSSfIhAywqCok6QSZkAEWVYUknSATMsCiqpCkE2RCBlhUFZJ0gkzIAIuqQpJOkAkZYFFVSNIJ
MiEDLKoKSTpBJmSARVUhSSfIhAywqCok6QSZkAEWVYUknSATMsCiqpCkE2RCBlhUFZJ0gkzIAIuq
QpJOkAkZYFFVSNIJMiEDLKr+AHIa+uv14rDA9doP07Lt+77OBXa5vKlfLvX5vO77sa9CMuFbekKu
5fUc8ijIeRy67uqwQNcNY628E+zJijyOY1umcRh6hwWGYaydXV5PV+Rx3G77uszTNDosME3zsu63
23E8fUYW5G3f1mWZHRZYlnUrx9v3FdkNU235+72ifdtWhwW2OrCP2/1+ns7dw6l96fq25yuq1VqH
uvM3gXoONqw6U/quTvKP60/df85TqK3W9gh1WKAhve/ssV0j3yF/1UWy9nbb904iUOfJNPzZ2bUs
L+cNs04iJxGoG875IvjnbbItyb7uRnxWmX4RqDt3/2lB1pIsyaIc+Ppk+kmg3lzqLfD3A/LjwLkW
ZccXetNPAuXV/sHzZ2Of37W3cX7BNP0m0NC+ONaP7VMnFPjO+HtZhn/pX66/UPRjBRRQQIGvAv8B
NBaQ6AplbmRzdHJlYW0KZW5kb2JqCjgzIDAgb2JqCjE0ODYKZW5kb2JqCjY0IDAgb2JqCjw8IC9M
ZW5ndGggNjUgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzI5IC9I
ZWlnaHQgMjI4IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRz
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
4zrsb8il3f1Mf/obOv74KrWMzvSn4/vr78hpB95GGM6Z/vR3jMKBOnWuycVhlxM2vvGEO1DhT0h+
Oav16ydUeK7i3APnHjj3wLkHzj1w7oFzD5x74NwD5x440AP/B82Wc3sKZW5kc3RyZWFtCmVuZG9i
ago4NSAwIG9iago2MzM3CmVuZG9iago1OCAwIG9iago8PCAvVHlwZSAvRXh0R1N0YXRlIC9DQSAw
LjUwMjAwMDAgPj4KZW5kb2JqCjU5IDAgb2JqCjw8IC9UeXBlIC9FeHRHU3RhdGUgL2NhIDAuNTAy
MDAwMCA+PgplbmRvYmoKNjAgMCBvYmoKPDwgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgplbmRv
YmoKNjEgMCBvYmoKPDwgL1R5cGUgL0V4dEdTdGF0ZSAvQ0EgMSA+PgplbmRvYmoKODcgMCBvYmoK
PDwgL0xlbmd0aCA4OCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBvVrdkhw3
Fb7vp1CcWqfHwb36lzrgQLJOkRCg4nggVGEuUlubilM7GK8NPBHvySd1nyP1qGd7Bwp2LzzWtKTz
853v/PS+FS/EWyGFHCR+tNHWRSWCGocRP8JZKe5uxHfir+Ly6p0S1++Eyr/vrrHJmfmxA+/oeO2W
1+bDjQyjiUbc8nVl5Ufxw5N0g043QBr8vrvu3uKq9FEJawaVBbLjOIRgR3F9EJ/vhbX5AfyjvB6M
tUE8xX/2B3G53zts3P8g/iz6R7tODlb0fgdZlOjdr3fiaV6Jn+ZPTvS/oA/fDOkpPP2cHrrYib+I
/W/EF/tkrW5LqGxLLfbXlXjGhSEGu5Sug3T9q15eKr0T+5/m889Q2gY1eOdMOrZbKN1DZjpRDlo5
H72BWiZ4G6THJxe0s2OyMwBAKmnphtGNURggwAMO3bGdZaVCmAzcf/CoXFbOsiG5CnedddaH1VmX
39zcXd/87f3fv78Vd6+TmDIMPuiQnR7s4FVUUcQ4SOONE9pBQW98Evryq4My4vmbjO/gByjrJrA4
Nxg5yhGnmcGqqLFvHJwOJoEq7bPTvtFp1/0TOv4kLr+9uf3+/et/3Fy9uX1z9/pw8/7u9XWSKUfF
1UvYU49SjR6GHOxolQrJxsHkH/HyCrCZQiwABRI3JFwDginqaGlUQxyNH4XReoCWCLdDfsZ5iKtH
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
RpUmm9xbuYH2EHlrXfGzOY82qGT/VlaeSbz1+AyXyp+MgfLaj7fRXW3w0zCJIctS0B4+pHARj6Bo
Nz07S971rQqLWewZ2Kl8iqnfoPHXHqvpm1n7vvqkW23V58Zqs486CTaD6VN0+LuQUqmUdLhRV2QK
7Ka/w0HWTG2Kwnv0mQKXV1ZzApsArszibwJycbR4l/bi38liQQ4KZW5kc3RyZWFtCmVuZG9iago4
OCAwIG9iagoyNDk3CmVuZG9iago4NiAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDMgMCBS
IC9SZXNvdXJjZXMgODkgMCBSIC9Db250ZW50cyA4NyAwIFIgL01lZGlhQm94ClswIDAgNzIwIDU0
MF0gPj4KZW5kb2JqCjg5IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9J
bWFnZUMgL0ltYWdlSSBdIC9Db2xvclNwYWNlIDw8IC9DczEgNyAwIFIKL0NzMiA4IDAgUiA+PiAv
Rm9udCA8PCAvVFQzIDExIDAgUiAvVFQ1IDEzIDAgUiAvVFQ5IDU1IDAgUiAvVFQxIDkgMCBSIC9U
VDcKMjMgMCBSIC9UVDExIDU3IDAgUiA+PiAvWE9iamVjdCA8PCAvSW0xNiA5NiAwIFIgL0ltMTcg
OTggMCBSIC9JbTEzIDkwIDAgUgovSW0xNSA5NCAwIFIgL0ltMTggMTAwIDAgUiAvSW0xNCA5MiAw
IFIgPj4gPj4KZW5kb2JqCjk2IDAgb2JqCjw8IC9MZW5ndGggOTcgMCBSIC9UeXBlIC9YT2JqZWN0
IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNjMzIC9IZWlnaHQgNTE0IC9JbnRlcnBvbGF0ZQp0cnVl
IC9Db2xvclNwYWNlIDcgMCBSIC9TTWFzayAxMDIgMCBSIC9CaXRzUGVyQ29tcG9uZW50IDggL0Zp
bHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tCU+IQGHAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgx8BgblqAABCmVuZHN0cmVhbQplbmRvYmoKOTcgMCBv
YmoKNDI4MAplbmRvYmoKOTggMCBvYmoKPDwgL0xlbmd0aCA5OSAwIFIgL1R5cGUgL1hPYmplY3Qg
L1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMzAgL0hlaWdodCAyMjggL0ludGVycG9sYXRlCnRydWUg
L0NvbG9yU3BhY2UgNyAwIFIgL1NNYXNrIDEwNCAwIFIgL0JpdHNQZXJDb21wb25lbnQgOCAvRmls
dGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0AENAAAAwqD3T20PBxEoDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DPwPDHHlAAEKZW5kc3RyZWFtCmVuZG9iago5OSAwIG9iagoxMDA3CmVuZG9iago5MCAwIG9iago8
PCAvTGVuZ3RoIDkxIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDMy
OSAvSGVpZ2h0IDIyOCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA3IDAgUiAvU01hc2sg
MTA2IDAgUiAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVh
bQp4Ae3QMQEAAADCoPVPbQdviEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgHBm85AAEKZW5kc3RyZWFtCmVuZG9iago5
MSAwIG9iagoxMDA1CmVuZG9iago5NCAwIG9iago8PCAvTGVuZ3RoIDk1IDAgUiAvVHlwZSAvWE9i
amVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDcwNCAvSGVpZ2h0IDUwOCAvSW50ZXJwb2xhdGUK
dHJ1ZSAvQ29sb3JTcGFjZSA3IDAgUiAvU01hc2sgMTA4IDAgUiAvQml0c1BlckNvbXBvbmVudCA4
IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwb+AwNf
8AABCmVuZHN0cmVhbQplbmRvYmoKOTUgMCBvYmoKNDcwMgplbmRvYmoKMTAwIDAgb2JqCjw8IC9M
ZW5ndGggMTAxIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDI2MyAv
SGVpZ2h0IDE2OSAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA3IDAgUiAvU01hc2sgMTEw
IDAgUiAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4
Ae3QAQ0AAADCoPdPbQ8HESgMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBwODAI+wABCmVuZHN0cmVhbQplbmRvYmoKMTAxIDAg
b2JqCjYwNAplbmRvYmoKOTIgMCBvYmoKPDwgL0xlbmd0aCA5MyAwIFIgL1R5cGUgL1hPYmplY3Qg
L1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMzMgL0hlaWdodCAxNjkgL0ludGVycG9sYXRlCnRydWUg
L0NvbG9yU3BhY2UgNyAwIFIgL1NNYXNrIDExMiAwIFIgL0JpdHNQZXJDb21wb25lbnQgOCAvRmls
dGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0AENAAAAwqD3T20PBxEoDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGzgcGzYIAAQplbmRz
dHJlYW0KZW5kb2JqCjkzIDAgb2JqCjUzOAplbmRvYmoKMTA4IDAgb2JqCjw8IC9MZW5ndGggMTA5
IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDcwNCAvSGVpZ2h0IDUw
OCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBv
bmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3a224bVwJE0Yh3UqRIihKv
4vz/Z05Tju14IgODekkBWedFRuwCCru22ydN/vGHgwACCCCAAAII5ASeHAT6CXwt+LfeIweBagKf
nv5d4eE/j0ZjB4F6AqPRIOv/GDzYOx5PptOZg0A1gel0Mn4Y/IvAD30ns/li6SDQTWCxmD8M/kXg
Qd/JdL58Xm9eHASaCWw269ViNh0E/ssDeHj6Tuer9Xb3+noYzquDQCOBh5v73ct6OX88gX8I/Hj8
zleb3eH99HmODgKFBL7J+f66XS9nk5/+Pi6/0+V693a6XG/X6+VyOTsItBEYvLxeB0Evx8P2eT4d
/7gBPx6/s9XL4XT9uN8/hj/gINBIYLD3Yejlfb9Zzn71d/68e7t83P9zv13P51Phvx0q/dsJnE7n
y/CEHRQ9HV5Ws58X4Ken8XSx3r9f7/f77XJ6f3v8P5yDQBuB9+O3K8L5bbua/7wAf/q72R+vHx+3
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
G77cMHzB7Fd9HzeIh8Hj8cRBoJrAIOnob/p+3oEfCjsItBN4fDH5r5eH779u+8KyPgh8SeC7sH4i
gAACCCCAAAIJgf8C9gosfwplbmRzdHJlYW0KZW5kb2JqCjEwOSAwIG9iago0MDgyCmVuZG9iagox
MDIgMCBvYmoKPDwgL0xlbmd0aCAxMDMgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFn
ZSAvV2lkdGggNjMzIC9IZWlnaHQgNTE0IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBv
bGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry
ZWFtCngB7J0HeyM3sq7PHnuUJVIUcw5iJpUn2N71/f//6r5fAZ2bFKUZje093c+uR+wAFAqFQiVU
/c//FFeBgQIDBQYKDBQYKDBQYKDAQIGBAgMFBgoMFBgoMFBgoMBAgYECAwUGCgwUGCgwUGCgwECB
gQIDBQYKDBQYKDBQYKDAQIGBAgMFBgoMFBgoMFBgoMBAgYECAwUGCgwUGCgwUGCgwECBgQIDBQYK
DBQYKDBQYKDAQB4G/pV38+9+7x8J9N8Gqf8Krr8MogCAf9Q8/iOBjqb43eC/+8Oob/cXDf2vLjWY
fvZTfgcACISf0uGP6OQ7gRay/9LBBvC/GY53f5jCutr55Zdff/31l19EeqmnP+On6F4AAMI/h/K+
C2hNtrt+Bn7z+qD39836uz/MQKFZ/3R0dHx89OlXWE7m+cffAAW/fgIAIPjnUN73AG1E+wsL/S9a
6Uzpu2f93R+m6Qgk/Prp+PTs/Oz0+OjXX/4ClqcpPDo5OxcE0P5fAEEaJwf8/h6gxWx+/fXTp09u
kzmgtx/+yrtn/d0fZoYAEj6dnF2WSqXL85OjV+b9I/YHDeXo9PyqVBYE4nkZGP9+N74HaL5lizk+
OTnRSn99oX0I0t8y63H0v4lc4h9m/v7XL5+Oz66uq7VqpaR538NwtL17JSTTzPtv/AsITi5KlRoQ
XJ0dQ/rvb+unffkdQBvdHZ+eX1xcnLHSX1toH4T0w2c9idM3kEvyw9QvYeHo9LJSb3XaDeb9aM8K
1LtsEU40SbXz/p+0+uvxWanaaHda9crl6T+C5X0P0NAsA74sXV+Xr85PX99jPgDpb5n1xMy++8NE
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
QEYgI5ARyAhkBDICGYGMQEYgI5ARyAhkBDICGYGMQEYgI5ARyAhkBDICGYGMQEYgI/CjIPD/Aaq1
0csKZW5kc3RyZWFtCmVuZG9iagoxMDMgMCBvYmoKNTM1NzgKZW5kb2JqCjEwNCAwIG9iago8PCAv
TGVuZ3RoIDEwNSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMzAg
L0hlaWdodCAyMjggL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0Jp
dHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt2M162kgU
hOEAAgECBOhfgtz/Zc4RJBiPKVBtZ76zCXHV48XrlrqbX78YBBD4XwjMmMkCckFM/g0UnwR+co7h
PGbBTBUYuULtX5Yj42KRJEtmskCSJIvR8htlQC6S5SpN18xkgTRdLcPyG+UNcrXebLMdM1kgyzbr
1fI75bgiV5tsnx9PzGSBY37YbdJvlLEkA3KXn4uqqitmkkBdV+U532/SZPH1fMeSXK6zvKjbru+6
lpkg0AVVWxfH3XpclH82nfuS3J/rbrhcLkNgMp8E+n606uvisE2Tx6YzSqZZXrbD9Xq9BHXbMG8F
2nh4b1hddczS5ZPkIiSPVXcZIdt4U5bMW4HYTpr+cv197evT8+M9m8VrcneqI7v0TVWcTkfmrcDp
VJQj5bVvzvvN6vGi/JIc+qY85ftdxrwV2MV5sWi6eFG+luyGvq1OhzhvMh8E4ux9jFUZK+/lmox9
vSnyLM7tzAeB1Xp7GM863UvJqoslORKP93LmnUDcCGNjqdq+q1+tyart4uG+b0VPX8Dx8adA3GTi
sFMGmJJsyjgexUHz2/dE/OeHwHi73uax5yD5w8b7AZKel24jqW28BEnPS7eR1DZegqTnpdtIahsv
QdLz0m0ktY2XIOl56TaS2sZLkPS8dBtJbeMlSHpeuo2ktvESJD0v3UZS23gJkp6XbiOpbbwESc9L
t5HUNl6CpOel20hqGy9B0vPSbSS1jZcg6XnpNpLaxkuQ9Lx0G0lt4yVIel66jaS28RIkPS/dRlLb
eAmSnpduI6ltvARJz0u3kdQ2XoKk56XbSGobL0HS89JtJLWNlyDpeek2ktrGS5D0vHQbSW3jJUh6
XrqNpLbxEiQ9L91GUtt4CZKel24jqW28BEnPS7eR1DZegqTnpdtIahsvQdLz0m0ktY2XIOl56TaS
2sZLkPS8dBtJbeMlSHpeuo2ktvESJD0v3UZS23gJkp6XbiOpbbwESc9Lt5HUNl6CpOel20hqGy9B
0vPSbSS1jZcg6XnpNpLaxkuQ9Lx0G0lt4yVIel66jaS28RIkPS/dRlLbeAmSnpduI6ltvARJz0u3
kdQ2XoKk56XbSGobL0HS89JtJLWNlyDpeek2ktrGS5D0vHQbSW3jJUh6XrqNpLbxEiQ9L91GUtt4
CZKel24jqW28BEnPS7eR1DZegqTnpdtIahsvQdLz0m0ktY2XIOl56TaS2sZLkPS8dBtJbeMlSHpe
uo2ktvESJD0v3UZS23gJkp6XbiOpbbwESc9Lt5HUNl6CpOel20hqGy9B0vPSbSS1jZcg6XnpNpLa
xkuQ9Lx0G0lt4yVIel66jaS28RIkPS/dRlLbeAmSnpduI6ltvARJz0u3kdQ2XoKk56XbSGobL0HS
89JtJLWNlyDpeek2ktrGS5D0vHQbSW3jJUh6XrqNpLbxEiQ9L91GUtt4CZKel24jqW28BEnPS7eR
1DZegqTnpdtIahsvQdLz0m0ktY2XIOl56TaS2sZLkPS8dBtJbeMlSHpeuo2ktvESJD0v3UZS23gJ
kp6XbiOpbbwESc9Lt5HUNl6CpOel20hqGy9B0vPSbSS1jZcg6XnpNpLaxkuQ9Lx0G0lt4yVIel66
jaS28RIkPS/dRlLbeAmSnpduI6ltvARJz0u3kdQ2XoKk56XbSGobL0HS89JtJLWNl0yRPO3Wy8V8
xrwVmC+WaXYsmq6tz/vNKsDuf4nZbLFc705V27fVKJks5sxbgUUySpYB9lqyuwXbNCiZtwIBudmP
S697KVl3Q9eU+W6TrpgPAukmOxQ3sFdPdwRDGOe7bLth3gpss90hluRw6ZuXkv3lMrTV+Zgf9sxb
gUN+PMdb8nJ9LVlFch3auizOzAeBohxX5PUmeTvs/N2750lsRVV3uf6+Dl3b1MwHgabtYt39vvb1
n2Pjl+RqmxfNqHwZ+q5rmbcCXdf3w3V8gss8S5M4fz8kF8v7rj4MQx+SzCeBkAyqOH/HwfxL8lcc
zZN0eziV9fiXaJgJAjep6nzInl6TsTBncf1Zb/fHU1GOUzAfBO5M52NAPi/JkByv5Ok22x9yZrLA
Yb/bBuTj1n17V87m82S5Wm+2jCGwWY8368d+c5eMVRnX8mVcklJmmkBY3b7s+btx37fveL5jWcat
PWEmCwTXfPwC8g/h45/xC7m3XyUR/hAYzR6ATx/GnzOewBMfHxFA4L8q8A/U7ibjCmVuZHN0cmVh
bQplbmRvYmoKMTA1IDAgb2JqCjE2NTMKZW5kb2JqCjEwNiAwIG9iago8PCAvTGVuZ3RoIDEwNyAw
IFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMjkgL0hlaWdodCAyMjgg
L0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25l
bnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt2Nt6okoYhOEoOwEFEZCd5v4v
czUkK5uZGmOdznz/gY9TWnPwpoWmX14YBBD4+wV2zLMCf1wMz/4HfO+LwO+a4cN9mIh5VmDlCmrf
KVfGKIrjOGGeFQhaUfQL5boaozhJswPzvECWpnG0rsrPRRkc4yTLi/LIPC9QFnmWBMpPyLAg4+RQ
HKvzuWGeFTifq1NxSOMvSzJcH5OsrJq265nnBbq2qcpD8rkk1wWZFqemH6Z1RuZngU1q6JuqyD6X
5G4XJYfy3I3z7XZb5u07vDwUmOdlCVZjdz6GJfn/7SZApvnpcp1vr/cVchwH5pHAOE7zfLvf78tw
qfL047e9/bKrdlzur/dlGq593zGPBPr+OoSf7/1+G7u6WG83bxugAJkVdTeGT5bx2l6a5sw8Emia
S9uvkgHyXK4XyU/IMkAut2XqL3V1OpbMI4HjsaovffC6jb2EXOahrY9F/vzm/l/9ZthzX67TsmjI
eQ75Kc/SZ582/93vZfmx7oYApn7awzwNXV1uTz3ryQbzJ4EoPL8UVXud5kFCTtPQVuEmtB1pfDlz
4+0vAuFkYtsvBjANOV4vp/zLI8/nqQbvvgpsTzDHph+B/MrivwfSN5MNICWLHwLpm8kGkJLFD4H0
zWQDSMnih0D6ZrIBpGTxQyB9M9kAUrL4IZC+mWwAKVn8EEjfTDaAlCx+CKRvJhtAShY/BNI3kw0g
JYsfAumbyQaQksUPgfTNZANIyeKHQPpmsgGkZPFDIH0z2QBSsvghkL6ZbAApWfwQSN9MNoCULH4I
pG8mG0BKFj8E0jeTDSAlix8C6ZvJBpCSxQ+B9M1kA0jJ4odA+mayAaRk8UMgfTPZAFKy+CGQvpls
AClZ/BBI30w2gJQsfgikbyYbQEoWPwTSN5MNICWLHwLpm8kGkJLFD4H0zWQDSMnih0D6ZrIBpGTx
QyB9M9kAUrL4IZC+mWwAKVn8EEjfTDaAlCx+CKRvJhtAShY/BNI3kw0gJYsfAumbyQaQksUPgfTN
ZANIyeKHQPpmsgGkZPFDIH0z2QBSsvghkL6ZbAApWfwQSN9MNoCULH4IpG8mG0BKFj8E0jeTDSAl
ix8C6ZvJBpCSxQ+B9M1kA0jJ4odA+mayAaRk8UMgfTPZAFKy+CGQvplsAClZ/BBI30w2gJQsfgik
byYbQEoWPwTSN5MNICWLHwLpm8kGkJLFD4H0zWQDSMnih0D6ZrIBpGTxQyB9M9kAUrL4IZC+mWwA
KVn8EEjfTDaAlCx+CKRvJhtAShY/BNI3kw0gJYsfAumbyQaQksUPgfTNZANIyeKHQPpmsgGkZPFD
IH0z2QBSsvghkL6ZbAApWfwQSN9MNoCULH4IpG8mG0BKFj8E0jeTDSAlix8C6ZvJBpCSxQ+B9M1k
A0jJ4odA+mayAaRk8UMgfTPZAFKy+CGQvplsAClZ/BBI30w2gJQsfgikbyYbQEoWPwTSN5MNICWL
HwLpm8kGkJLFD4H0zWQDSMnih0D6ZrIBpGTxQyB9M9kAUrL4IZC+mWwAKVn8EEjfTDaAlCx+CKRv
JhtAShY/BNI3kw0gJYsfAumbyQaQksUPgfTNZANIyeKHQPpmsgGkZPFDIH0z2QBSsvghkL6ZbAAp
WfwQSN9MNoCULH4IpG8mG0BKFj8E0jeTDSAlix8C6ZvJBpCSxQ+B9M1kA0jJ4odA+mayAaRk8cNn
IKsijaP9jnkksN/HaX5q+nEaunOZxfvd2x9jt4+zsu6GaRraAJkESeaRQBQlAfJyDWAKcpynsauP
h1WSeSQQx+mhrNphmkcNOU99UxWHLGV+EDgUp3M/zn+AXJY5LNVTWRY580igKMrTOSzIZRl7cY0c
l9ttvnZNXVcn5pFAVdVNe52C12+QaVF34+1+v01D37UX5geBrg/rMXD9eo2M0iJcO5f76/02j8Nw
ZX4QGMbg+HpfhrYu0rBdfN/+7KIkPzb9tC7JZZ6maWQeCQSheVmx5uvllCfR7gNyn4SN5Hb1DDec
8DXmJ4F5XpYl7Lvr8vAJ+RJ25Gl+PLf9sP4dBuZngQ3q2p5PefrxYPPyEp4d4yw/1s2l7dZpmR8E
NqVLUx+LLPm4RIYL5W4fJVleHsN9nXlWoKpOZf7dMSzJfRSn2SEvmOcF8vAMuK7H91vNdufeJOMk
PBhlzHMCwSqJt5Oyt73P+2s4NdrvoyhmnhcI5xr77+txxdzO3x6dHfHZ7wIr2rf1+PaPzZIXR0Ao
EiGAwF8l8B9l0ChhCmVuZHN0cmVhbQplbmRvYmoKMTA3IDAgb2JqCjE2ODYKZW5kb2JqCjExMCAw
IG9iago8PCAvTGVuZ3RoIDExMSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9X
aWR0aCAyNjMgL0hlaWdodCAxNjkgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRl
IHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K
eAHtnYd620bTheM4EnvvvVewiaq24+S//6v63zMLsKhYdGSZ8RfgeeKQALHl7Oy0nRn99lt4hQiE
CIQIhAiECIQIhAiECIQIhAiECIQIhAiECIQIhAiECIQIhAiECIQIhAiECIQIhAiECIQIhAh8C4EP
33r433j2Ibh+/HSDlv/9KDPS393FJwFhQ/8xiARtq8kf0+J7tSIQPv6h6+PvvxsC/j9v75CGfv+o
tj9+VMtvb/AdW2Ckf1xcRiKRywsBwfWRyxB5a68C+OKStmmaBt/a3Hu+LxQuo/FEIh6LXLJsWr2L
CxDRAr6tY2jhj4tILO43/dbmXh7M28lXQ72MJdKZbCaViF5CwFBGNBoVJG/FAYQvovFUJuOafmtz
L8GgrafrLdvuwweGmszkS6ViPg0OkHAskUwm40ACDi91fdJ9mo7E07kiTWcS0YuP70MOPv9x+/ik
cT39kYghEs8UK/VGrZxPx6PRGMuXy2XTidjlH29aPw3vMpbKl2uNeoWmL99MXU+Hzx1j8DAg42z/
FGjBEE3mK81Ot90o51LxWCKVLZTKJdYv8rb1M4QT2XK93e3QdDL6NlSfxUDC3fGfeCzKeP/puoHl
RSxdrHcGw0G7VkgnEqlMoVKrV0u5VOxt68cAL6KpfK3dHw06tUIqdvF9gxTfe2Huv+0eCAUYfCqd
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
AiECIQIhAiECTxD4f0QLTXIKZW5kc3RyZWFtCmVuZG9iagoxMTEgMCBvYmoKODczOAplbmRvYmoK
MTEyIDAgb2JqCjw8IC9MZW5ndGggMTEzIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1h
Z2UgL1dpZHRoIDIzMyAvSGVpZ2h0IDE2OSAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJw
b2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0
cmVhbQp4Ae2dh5bbyI6Gx9cdlLOoTOUcO7nb9oR9/6fa70dRoSWqg90az/ERz91xi2SBBRQKhQLw
1/7xx/k6S+AsgbMEzhI4S+AsgbMEzhI4S+AsgbMEzhI4S+AsgbMEzhI4S+AsgbMEzhI4S+AsgbME
zhI4S+D3kMCn9fVOdtbNPr2tnb3+tldP8xYd+J8udeQ9X3hXOxF313s+8ZHv8vX/ff58cXHx+bNY
fTPp97WTLD9zmTjf/I0PfVE9uLy6ur6+urygG2+m/a52EubFxeXlpRPnmz/ygS/ShYvL62gsHote
X118fvOQvqud+Ly8uo5EIvoGivMKA07HX3vrFSJ7j9WFSCyZTqeT8cjVxeudCNq/p53xeR2NJxKJ
GN+A071OPP+pSRHYjOcPfurXp8+X17FUtlAs5NLxyOWbh/Q97T59+nxxjTCz2UwqHn1NmhILeu7m
80/xttNYRK+iyZxXqVVLuVTs6g16pebva8fsuIomMvmiV0Sa1y9LU3P/AqOByXhjZ3b4OfonHb64
jme8qt9q1rxsIvJG3X1fO30kls6XKtVyMZuMSpov9kg2IxaNIJE3z6Sj9IIHdPgyksxV/E6/26zk
k9HLt5F+Xzs+gjQLlVq9Wsq/rDaS4BU2I5VOMZ9ZB/YMl8zUa0yFPWf2XEVThVp7MBp06sV0TEJc
v/gC0Rfbrdtv/nWMFiv1eq0sRtX9w0uvwye2MZ7OFQr5bEpavuX0eYsNcdrsX9tnjibP/yelyniN
7mg67vlexiapfXC38bOG9uBYu2dvbn7Y/EgXyrVa1culZI3EqVlW/uP8COP9D+tQHC2vYjPyacZU
nEr0roHelZUKbtrtMErbTwftWMQjiWyp2Z/MJoNmKRO3+XOEqPucOqjFP6TdhvzeH1LHWCrnlSul
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
FJI1FOeR01PIXnBaCsHHXufiZ6W1+Q+mkHKpdZA3+dx4jDdlJkrBFbsE2ZrI6ouG3PpmyPhEOchx
vanKVKn0okKCMF+np8n+uwJrjfdURdW1aI8HC6ySrmuB1RF/VxHwDWsDdEgpOU3bfE9b0nSXSlfq
akCMDG5CRRpDtlcZbFUDvVpXm6KL5Pk1tTkdX0OIhwsSNlWBrH6n6NNDM/kQXmsuoN60B1JaqnCp
hcBYVy8NXRxPoNGwTVr683r7SlbViLSvcF1dm3lARtE0f0nFum1RrOyCRGNMvgFqRfGrfwOdxRA5
CmVuZHN0cmVhbQplbmRvYmoKMTE2IDAgb2JqCjI0NDYKZW5kb2JqCjExNCAwIG9iago8PCAvVHlw
ZSAvUGFnZSAvUGFyZW50IDMgMCBSIC9SZXNvdXJjZXMgMTE3IDAgUiAvQ29udGVudHMgMTE1IDAg
UiAvTWVkaWFCb3gKWzAgMCA3MjAgNTQwXSA+PgplbmRvYmoKMTE3IDAgb2JqCjw8IC9Qcm9jU2V0
IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdIC9Db2xvclNwYWNlIDw8IC9D
czEgNyAwIFIKL0NzMiA4IDAgUiA+PiAvRm9udCA8PCAvVFQzIDExIDAgUiAvVFQ1IDEzIDAgUiAv
VFQ5IDU1IDAgUiAvVFQxIDkgMCBSIC9UVDcKMjMgMCBSID4+IC9YT2JqZWN0IDw8IC9JbTI0IDEy
OCAwIFIgL0ltMjEgMTIyIDAgUiAvSW0yMCAxMjAgMCBSIC9JbTE5IDExOCAwIFIKL0ltMjIgMTI0
IDAgUiAvSW0yMyAxMjYgMCBSID4+ID4+CmVuZG9iagoxMjggMCBvYmoKPDwgL0xlbmd0aCAxMjkg
MCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMjk0IC9IZWlnaHQgMTY4
IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDcgMCBSIC9TTWFzayAxMzAgMCBSIC9CaXRz
UGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7dAxAQAAAMKg
9U9tCU+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBv4DA0LuAAEKZW5kc3RyZWFtCmVuZG9iagoxMjkgMCBv
YmoKNjcwCmVuZG9iagoxMjIgMCBvYmoKPDwgL0xlbmd0aCAxMjMgMCBSIC9UeXBlIC9YT2JqZWN0
IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNzA0IC9IZWlnaHQgNDA4IC9JbnRlcnBvbGF0ZQp0cnVl
IC9Db2xvclNwYWNlIDcgMCBSIC9TTWFzayAxMzIgMCBSIC9CaXRzUGVyQ29tcG9uZW50IDggL0Zp
bHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7dCBAAAAAMOg+VMf5IVQYcCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMDAy8AAJsMAAQplbmRzdHJlYW0K
ZW5kb2JqCjEyMyAwIG9iagozNzgwCmVuZG9iagoxMjAgMCBvYmoKPDwgL0xlbmd0aCAxMjEgMCBS
IC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMjYzIC9IZWlnaHQgMTY4IC9J
bnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDcgMCBSIC9TTWFzayAxMzQgMCBSIC9CaXRzUGVy
Q29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7dABDQAAAMKg909t
DwcRKAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBh4GBgXmAAEKZW5kc3RyZWFtCmVuZG9iagoxMjEgMCBvYmoKNjAxCmVuZG9iagox
MTggMCBvYmoKPDwgL0xlbmd0aCAxMTkgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFn
ZSAvV2lkdGggMzMwIC9IZWlnaHQgMjI4IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDcg
MCBSIC9TTWFzayAxMzYgMCBSIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNv
ZGUKPj4Kc3RyZWFtCngB7dABDQAAAMKg909tDwcRKAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgz8Dwxx5QABCmVuZHN0
cmVhbQplbmRvYmoKMTE5IDAgb2JqCjEwMDcKZW5kb2JqCjEyNCAwIG9iago8PCAvTGVuZ3RoIDEy
NSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA2MzMgL0hlaWdodCAz
NzMgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNyAwIFIgL1NNYXNrIDEzOCAwIFIgL0Jp
dHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0DEBAAAA
wqD1T20MH4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwcBgYz30AAQplbmRzdHJlYW0KZW5kb2JqCjEyNSAwIG9iagozMTEy
CmVuZG9iagoxMjYgMCBvYmoKPDwgL0xlbmd0aCAxMjcgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0
eXBlIC9JbWFnZSAvV2lkdGggMzMwIC9IZWlnaHQgMjI4IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xv
clNwYWNlIDcgMCBSIC9TTWFzayAxNDAgMCBSIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAv
RmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7dABDQAAAMKg909tDwcRKAwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgz8Dwxx
5QABCmVuZHN0cmVhbQplbmRvYmoKMTI3IDAgb2JqCjEwMDcKZW5kb2JqCjEzMCAwIG9iago8PCAv
TGVuZ3RoIDEzMSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyOTQg
L0hlaWdodCAxNjggL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0Jp
dHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtnYd6HDey
hS1T5OScc86BwyBStnd93/+t7n8K3T09QUPSlrweu+fblclpoFE4KBSqCsDhTz9FnwiBCIEIgQiB
CIEIgQiBCIEIgQiBCIEIgQiBCIEIgQiBCIEIgQiBCIEIgQiBCIEIgQiBCIEIgQiBCIEIgX8cAp/+
cT363h365H++94v/2vdZL35Uk7z8Z/f5dMUK5Q/0D+qDMLr5rM/Nzz+oiR81vqH3Wi9ubm5+pg8/
Yqw/gdHtXSwWu7u9XpgAiZG+vb39DFA/ACa9/i6eTKWSidjt5x/RQmjEv+eP3hSzVwokRjoej8fu
fsSU4P2f7xKpbC6fy6Ti0qbv2ZMf9y7fmNr8MpBiiVQ6nU7GDabv3PCnTze38XSuWKmUi9lkDGX6
zg38mNcJF6aYZ4fUiVgykysU8tlU4u67d0KqFEvmyrVmq1EtZhJXoky24Nze3d1hh2SuNR/S+VKl
WinmUrHbm+9smdRAPF2stXv9brOST33/cfgRuiSpb2OJZDIRBxJ5MRrqUq3RrFcKmcTd97YbDMpt
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
+Ui9+Op/0cXv0qbrj3V632t7s/9E//U/rpwVtK8CEfSbHu6/9b859+qg2hX9YD3bdy8kufck+CYo
GXwT+uG4sE3FizVClaMfIwQiBCIEIgQiBCIEIgQiBCIEIgQiBCIEIgQiBCIEIgQiBCIEIgQiBCIE
IgQiBCIEIgQiBP7GCPw/2ghB9gplbmRzdHJlYW0KZW5kb2JqCjEzMSAwIG9iago3ODM3CmVuZG9i
agoxNDAgMCBvYmoKPDwgL0xlbmd0aCAxNDEgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9J
bWFnZSAvV2lkdGggMzMwIC9IZWlnaHQgMjI4IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRl
cnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4K
c3RyZWFtCngB7djHUhtRFIRhK0zO0uSR/P6P6Ts4IGzRqLeu/ywooLtYfJwJV9++MQgg8P8LHBhX
4NlS7H/jyFgCu9k/ljvj6XQ6My8LBK7j8W/LfR9P5yiK4zhhXhIIVHF0frN8XMsdMoqTLMuZ1wWy
NNktH6/wAHmOkqyo6rphXhWoqzJP453yfSn3jUzzqumu12vfhy/MlwKB6dLWRRafH5fycDonedX1
4zTP88S8IrBLDZemSKP3pXy7SaZl20/rtm3rujBfCqxvVPNwqfOHpdzvknFeX6f1dr/ftiAZvBkh
sCzregtY29y3YSn/XN67ZFK0/RKy+7bO08h8ITDNy3b7/v22jl2VvV/eh8MpSopuCJK3bZ72Wykj
BcJzeZzDFXxbp0uVxX9ulLtkWnZjWNhtHq5tU1eMFKib9jKEm+EuGW6U/0gu27aMl7Ys8oyRAnlR
1l0/r9s6XZ9LLlPfVFmS7Cch5nOBJJximsu4rMvTnRyWdR4vdbGfgBgpsB8Iq3aYl3ANP9nJYV7n
oSvDS3s4ljNK4HSOk6Lpp2VfvX/vk4F46oPk/lBnpEA4XAfJ6zgLyfCiGc6R7ydyvnsm8Osog+Qz
HOt3SFpcooykwLEiJC0uUUZS4FgRkhaXKCMpcKwISYtLlJEUOFaEpMUlykgKHCtC0uISZSQFjhUh
aXGJMpICx4qQtLhEGUmBY0VIWlyijKTAsSIkLS5RRlLgWBGSFpcoIylwrAhJi0uUkRQ4VoSkxSXK
SAocK0LS4hJlJAWOFSFpcYkykgLHipC0uEQZSYFjRUhaXKKMpMCxIiQtLlFGUuBYEZIWlygjKXCs
CEmLS5SRFDhWhKTFJcpIChwrQtLiEmUkBY4VIWlxiTKSAseKkLS4RBlJgWNFSFpcooykwLEiJC0u
UUZS4FgRkhaXKCMpcKwISYtLlJEUOFaEpMUlykgKHCtC0uISZSQFjhUhaXGJMpICx4qQtLhEGUmB
Y0VIWlyijKTAsSIkLS5RRlLgWBGSFpcoIylwrAhJi0uUkRQ4VoSkxSXKSAocK0LS4hJlJAWOFSFp
cYkykgLHipC0uEQZSYFjRUhaXKKMpMCxIiQtLlFGUuBYEZIWlygjKXCsCEmLS5SRFDhWhKTFJcpI
ChwrQtLiEmUkBY4VIWlxiTKSAseKkLS4RBlJgWNFSFpcooykwLEiJC0uUUZS4FgRkhaXKCMpcKwI
SYtLlJEUOFaEpMUlykgKHCtC0uISZSQFjhUhaXGJMpICx4qQtLhEGUmBY0VIWlyijKTAsSIkLS5R
RlLgWBGSFpcoIylwrAhJi0uUkRQ4VoSkxSXKSAocK0LS4hJlJAWOFSFpcYkykgLHipC0uEQZSYFj
RUhaXKKMpMCxIiQtLlFGUuBYEZIWlygjKXCsCEmLS5SRFDhWhKTFJcpIChwrQtLiEmUkBY4VIWlx
iTKSAseKkLS4RBlJgWNFSFpcooykwLEiJC0uUUZS4FgRkhaXKCMpcKwISYtLlJEUOFaEpMUlykgK
HCtC0uISZSQFjhUhaXGJMpICx4qQtLhEGUmBY0VIWlyijKTAsSIkLS5RRlLgWBGSFpcoIylwrAhJ
i0uUkRQ4VoSkxSXKSAocK0LS4hJlJAWOFSFpcYkykgLHipC0uEQZSYFjRUhaXKKMpMCxIiQtLlFG
UuBYEZIWlygjKXCsCEmLS5SRFDhW9LXkPHRlFp2OB0YKHE9RUjT9NM/jpc7jAPbzH3E4nKK07IZl
nYdLlcfn05GRAqdznJbtMC3LZ5LLeG3KNI7OjBSI4jSvu3Fel+nZTo7LFpayq4ssTRgpkGZF1V6n
APZccr2FpL80VVkwUqCs6vYaNu/2qeQ9RMO161pGCnTdtQ8beXuTzD48cc5J0Q7L7R4o53EYekYK
DMM4rdv9fl/HS/X2svP72X08J3nTz3t225Z5nhgpMM/Luu17twxtmUbhrfFdMs6qbr/wb9u2LsyX
AmuQ3C/ua1Mk5z+S3w7hTTMtmssYqMPfmJmvBZZ1Xeapb8uH22RYzP30k5VNdx3GMdwmmRcEAlR/
aas8iU6/L+43yfDWHt6RmrZjXhZom7rcId8v7rCT4foOB6AsL0rmdYEiT/+C/EUZxUmSMq8LJOFc
/WEj9yd42Mrj6XQ+R8zLAuFoHj7rebhJ7pA75Y4ZNJlXBfaPi4LaT7/Hr/ITOcJPBB4FP3z/SZ9f
PxH4AMcPCCDw/wr8ADTwJKcKZW5kc3RyZWFtCmVuZG9iagoxNDEgMCBvYmoKMTY2MwplbmRvYmoK
MTM0IDAgb2JqCjw8IC9MZW5ndGggMTM1IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1h
Z2UgL1dpZHRoIDI2MyAvSGVpZ2h0IDE2OCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJw
b2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0
cmVhbQp4Ae2dh3rbRtOFv8RWYe+9VxAEm5otO+2//6v63zMLUKRESZQlW7EDPE9iEiC2zM7Onqn6
3//iK6ZATIGYAjEFYgrEFIgpEFMgpkBMgZgCMQViCsQUiCkQUyCmQEyBmAIxBWIKxBSIKRBTIKZA
TIGYAo9Q4LdH7v+Hbv8WXW8/56jlfz+VGenv7uKTCGFDfxuKRG2rybdp8Xu1IiJ8+Kjrw++/GwXC
/72+Qxr6/YPa/vBBLb++we/YAiP9eHJ6dnZ2eiJCcH3gMoq8tlcR+OSUtmmaBl/b3Pd8X1Q4PU+m
UsnE2SnLptU7OYEiWsDXdQwvfDw5SyTDpl/b3OODeT37aqiniVQ2l89lUuenMDCccX5+LpK8lg5Q
+OQ8mcnlXNOvbe4xMmjr6XrNtvvtN4aazhUrlXIxCx1g4UQqnU4nIQl0eKzro+7T9FkyWyjTdC51
fvLh+7BDKH/cPj5qXA9/JGY4S+bKtWarUS1mk+fnCZavUMhnU4nTj69aPw3vNJEpVhutZo2mT1/N
XQ+Hzx0T8Aggk2zfSmiR4TxdrLV7/W6rWsgkE6lMvlSpVli/s9etn1E4la82u/0eTafPX0fVgzTQ
4e7kTzJxzni/dd2g5UkiW272RuNRt1HKplKZXKnWaNYrhUxC6/dI70fcZoAn55liozucjHqNUiZx
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
dHJlYW0KZW5kb2JqCjEzNSAwIG9iago4NzExCmVuZG9iagoxMzIgMCBvYmoKPDwgL0xlbmd0aCAx
MzMgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNzA0IC9IZWlnaHQg
NDA4IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29t
cG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7drJchvZAURRkZgIAsRE
AMSk/v/PdIHUQMlShNOrdPi8RVPdykXGzdsvigV8+eIggAACCCCAAAL/NYEHB4H/CQJ/Uvxe/NFB
oJ7A3dTfDX6XdzQaOwiUExiNHh9/N/h+9Y7Gk+l05iBQTWA6nYxHg8C/3MAPd3tnT/Pn54WDQDGB
5+f503Ryv4I/CTxcv+Pp0/PyZbV2EKgmsHpZzGeT8S838HD9Tp4Wq83ude8gUE3gdbd5eZ4NN/Cn
C/hhNJ49r7b74+l+3hwEGgm823k67reDwMMF/P0BYnh6GE3my+3hdLler5fL2UGgkcDl8i7oab9Z
Pn26gN+ffp9Xr2/X29evt+vQ/EN0/0SgiMDg5eXd0Mtxt3qe/nwCvvs7W2wO5w99396OBweBNgLH
49vpfL3988/ttF8v7g8Q354gHh6G396Gx4fLbbh9h8eL193WQaCNwG73ejier8Mjwnm/Gfwd/ebv
8XIb9D3sNqvVi4NAG4HVar19PZ6ut9v58P4A/Lu/5+v1fNytl8MrYgeBNgLDZ2sv69fhBh4u2b/4
e37br5fz2XTiINBGYDp8wvay2Z8ulz/7ezhfTsfd/d3weOQg0EZgPHxEvFjt3gZNP16g/fb8MLz+
PR2272/W6r9Cp+D/I4HxdP6yPZ6Hp4Q/PT8cTt//4v71NAeBLgKPw3d05i+bn5r+2/179/f9xdr3
T+b8RKCGwMdrXv7WDKJIRIC/ES7hMgL8LRtEnYgAfyNcwmUE+Fs2iDoRAf5GuITLCPC3bBB1IgL8
jXAJlxHgb9kg6kQE+BvhEi4jwN+yQdSJCPA3wiVcRoC/ZYOoExHgb4RLuIwAf8sGUSciwN8Il3AZ
Af6WDaJORIC/ES7hMgL8LRtEnYgAfyNcwmUE+Fs2iDoRAf5GuITLCPC3bBB1IgL8jXAJlxHgb9kg
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
cmVhbQplbmRvYmoKMTMzIDAgb2JqCjM0MzEKZW5kb2JqCjEzNiAwIG9iago8PCAvTGVuZ3RoIDEz
NyAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMzAgL0hlaWdodCAy
MjggL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21w
b25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt2FuTokgYhOFWQQ4iqICc
dP7/z9wqd2J0tnNoOy9n3y+iI4xssy+eroKCjw8GAQT+foEN810BtSgef2PLfEcgmn2yDNl2u9vt
EuZNgYC1224/WQbHoJjumW8IpGnysHxdlhEy2Wd5UTJvCxRFnkXL1x0eIdOsOFTHum7i1MyawE+j
Y1Xm+0j5XJQPyLJqzpeWeV/gcqqrIlC+LMrNNtkXx1PbD+M4MG8JRKn+0lR5+rIoN5tdmh+adpiW
ZZnniflaYJ4D1XS91GWWPK+UYXOHJXm5zrf7/fagHJk1gQA9LwFrmfpTXJS/tnfY3FnZtONy/3EP
0GHZXpk1gbD9x7DsgtZwORb75/aOkodTN8YlOQ1917YXZk2gbbs+Ut6Xsa3LfdjeP+/eQTI/nPrp
FpbrtT2f1g4A/C4KNKdzN8y3W5BsHhfK3yXHcA0d2nBnL8uCWRMow8n73I3hpjN2WnIe+9OxLLLs
G49M/8evZnle1ufrNM9yTQbjaWibQzi2J/HpnPmjQHhBkVdNN05/kBzi+ehYZGl8x8GsCIR3PVlZ
h/N3XHqfr5PdMI19vKknj3dF8d0bowXi654geR1XJM+/HTSfT+Z8ehWI7yniowySryrOZyQdNdVB
Uqk4GZKOmuogqVScDElHTXWQVCpOhqSjpjpIKhUnQ9JRUx0klYqTIemoqQ6SSsXJkHTUVAdJpeJk
SDpqqoOkUnEyJB011UFSqTgZko6a6iCpVJwMSUdNdZBUKk6GpKOmOkgqFSdD0lFTHSSVipMh6aip
DpJKxcmQdNRUB0ml4mRIOmqqg6RScTIkHTXVQVKpOBmSjprqIKlUnAxJR011kFQqToako6Y6SCoV
J0PSUVMdJJWKkyHpqKkOkkrFyZB01FQHSaXiZEg6aqqDpFJxMiQdNdVBUqk4GZKOmuogqVScDElH
TXWQVCpOhqSjpjpIKhUnQ9JRUx0klYqTIemoqQ6SSsXJkHTUVAdJpeJkSDpqqoOkUnEyJB011UFS
qTgZko6a6iCpVJwMSUdNdZBUKk6GpKOmOkgqFSdD0lFTHSSVipMh6aipDpJKxcmQdNRUB0ml4mRI
Omqqg6RScTIkHTXVQVKpOBmSjprqIKlUnAxJR011kFQqToako6Y6SCoVJ0PSUVMdJJWKkyHpqKkO
kkrFyZB01FQHSaXiZEg6aqqDpFJxMiQdNdVBUqk4GZKOmuogqVScDElHTXWQVCpOhqSjpjpIKhUn
Q9JRUx0klYqTIemoqQ6SSsXJkHTUVAdJpeJkSDpqqoOkUnEyJB011UFSqTgZko6a6iCpVJwMSUdN
dZBUKk6GpKOmOkgqFSdD0lFTHSSVipMh6aipDpJKxcmQdNRUB0ml4mRIOmqqg6RScTIkHTXVQVKp
OBmSjprqIKlUnAxJR011kFQqToako6Y6SCoVJ0PSUVMdJJWKkyHpqKkOkkrFyZB01FQHSaXiZEg6
aqqDpFJxMiQdNdVBUqk4GZKOmuogqVScDElHTXWQVCpOhqSjpjpIKhUnQ9JRUx0klYqTIemoqQ6S
SsXJkHTUVAdJpeJkSDpqqoOkUnEyJB011UFSqTgZko6a6iCpVJwMSUdNdZBUKk6GpKOmOkgqFSdD
0lFTHSSVipMh6aipDpJKxcmQdNRUB0ml4mRIOmqqg6RScTIkHTXVQVKpOBmSjprqIKlUnAxJR011
kFQqToako6Y6SCoVJ/tacrpejsU+2W43zJrAdpfsy7odxmlomzJLtpuf/4/NNskPp26Yp2tbl1m6
222ZNYFdkmaHphumWUuO8zx0TVVkaZowawLpPiuOpz6AjWpN9uOyhO1dV2WeZ8yaQF6UVXMZpmXR
ktPttozduamr6sCsCVTHurn00xK85JqcbvfbPPbt5cR8IXC+tNdxud9vnyWzsunG2/1HoByufd8x
awJ9fw1b+/7jvgxtXex3L/fu3eOmHn93m6dpHAdmTWAcx7C1w5Kcr+djvt9tnqeg3T6vznHjh0vl
HCyZrwTmaDWP3ekQTo1Pyc02zcr60o9TZAzizFcCU6Qa+vOxDE8yvyQ/wtF8nx/qc9tfw/TMGwLB
qWvPdZmnz8vkx8dmEx5/8sOxOZ2Z9wVO8ez925IMkvFJMivKQ1VVx/DDvCNwKMPz4OveDk/fD8rw
DJTlzPsC2X6fhK39vErG9xiBcrvbJUnKvC+QJOFdz38gI2XEDJrM2wLB65Pjv8syajLfE4hycr73
Z/7n35aChAgg8NcJ/APDTCRGCmVuZHN0cmVhbQplbmRvYmoKMTM3IDAgb2JqCjE2ODkKZW5kb2Jq
CjEzOCAwIG9iago8PCAvTGVuZ3RoIDEzOSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0lt
YWdlIC9XaWR0aCA2MzMgL0hlaWdodCAzNzMgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVy
cG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+Pgpz
dHJlYW0KeAHtnYd6G0eyha9XIomcc84ZBJOC7V3f93+r+5/qGWAADChSXl1SVuPbtYiZDtWnz1R3
hR78z//4j0fAI+AR8Ah4BDwCHgGPgEfAI+AR8Ah4BDwCHgGPgEfAI+AR8Ah4BDwCHgGPgEfAI+AR
8Ah4BDwCHgGPgEfAI+AR8Ah4BDwCHgGPgEfAI+AR8Ah4BDwCHgGPgEfAI+AR8Ah4BDwCHgGPgEfA
I+AR8Ah4BDwCHgGPgEfAI+AR8Ah4BDwCPwsCv7nPzyKul/OfgQCs+5c+/PvPGJAfxU+BALT78OHj
xw8fRL2fQmIv5D8BAbTdh49X19fXVx8/eOb9E2b05xgD+u7j1U0ylUombq48836OSfv/kDJ+8TNj
4L/RvXh3nUhlc/lcJpW4+niq89TRi/t5TdkXN+oL/n8jYOQK/xPpPLzk/j29cen7cS19U0nt764S
6XypUikXc+kjnXdc47TdyF3X0MmFSHn/58+EAPOIoflBn6jBGbl8diOY+mCUESK4P2W46nNo8rf/
oY+PN+l8ud5qt+rlPDpPq604yX+DsjH9WDvBf4J+wsL86xr4mcD2soYIaNplal7ZRxZnML9mCnBZ
xsAV5kDAE5U3SoXTbhf2pD1waN8klgRtwrvrVK7c6A6Gg26jbDrvg+tKNkfYvyvs+Bgw7CMfBDBj
2C4Fhe3KK5bncMT+3/eAgGiHpXmTSCT5JG4Ci1NE+fCRy0mMgdTRDVUQTQKKuJL6rgsBhyDr9Y0q
72uql0SmVO+N54vZuNso5dLs81yNoKOwdMh968caQrqEE41HJBRWV2gA7r4HHL0Mr0NAvLtiy5/O
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
gumS+FFVRWXq0mVHjxrTgSMZU6RiTOH8WTFwlIdVCrnJrkp/DFjluQMhDmh2tGUZYonF1MOL5Kvj
f6FItmgru14kxWdFh7OiDhHygByEBXe/YoIL0w8Jx8zw4lfyJglAHpzgYrIvWtgXWYOPgzi8bMCJ
DiMrWHweBUq3YcGG+mbWyrCNaR/QQn+Kls2ODmYS85lyFJEBVD7iMHTCFpg0TBhUMGp4xU327Mjc
KlgBIKDTYpuMH3Q2fCot3LXJm6QhAU3C7AhLqlzhfDq2nYy34Vr0Tl7gyo93mbksXDu4hRLmGEWj
OF+lApgWVOBzwIDNNw68GR2S2CmkJ1WDgBk0XoOE8NjcWL64aZhmx02DIeSGdHb3IDrb4mH8vpEc
PYrOBo6EznBp6t061h1lOnsR2sBjC4jHlvXOGek0IIX2SneBXXeZ6AR9wQ0GZ/oAzg4wFk8QwGUC
h9LS3v6xFbGRAJWnDoBCMIKaFG++eCD5QXBIDTENZw05QkfMIIT/Pu/saQzu4Etj+Qzl8RaMrI13
Or0TCuV6/fdBcL/fw6NPb8VfYpmpBo7kGwGpbD+9lXwtoSGZZIBmwARKYC00VlhmqDsESr5iQlsG
RmZM0AyPeRYg2o5rRH6U7nKYMcQrQHQt4sthjTgbnl2IA8WQJJAV4pD7DuaLN4+hMjNX5T9+xz/3
qiaSsBw9sYf+Ti4ffWf/AIOO+3cKZW5kc3RyZWFtCmVuZG9iagoxNDQgMCBvYmoKMTA3NQplbmRv
YmoKMTQyIDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgMyAwIFIgL1Jlc291cmNlcyAxNDUg
MCBSIC9Db250ZW50cyAxNDMgMCBSIC9NZWRpYUJveApbMCAwIDcyMCA1NDBdID4+CmVuZG9iagox
NDUgMCBvYmoKPDwgL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0gL0NvbG9yU3BhY2UgPDwgL0NzMSA3
IDAgUiAvQ3MyIDggMCBSID4+IC9Gb250IDw8Ci9UVDMgMTEgMCBSIC9UVDUgMTMgMCBSIC9UVDEg
OSAwIFIgL1RUOSA1NSAwIFIgPj4gPj4KZW5kb2JqCjE0NyAwIG9iago8PCAvTGVuZ3RoIDE0OCAw
IFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBpVjtjt00EP3vpzAShVzQemM7TpzS
QumCQKV/Ki4UqVtAWlEhtItU9pl4Hx6J8cccO3Fyd1n2Sk3q2DPjOWeOJ3kvX8n3spe96unPWDM4
r+WkZzXTn3RDL//6Tb6Wf8rzi1str26ljr/bK1rkbJ52gxUCY9cYy8ZtP83WW3kNd2Xkd/nuk+DB
BA8UDf1ur8R7chVutRys0jGgYZ7VNA2zvLqRz49yGOIEujijxnGkkM/oP8cbeX48Olp4fCffyO5T
dRC9GmRnDhSMlZ1/Gm5o4KuDPIs3T+KNk905j/DcR3FAy+7DsIaubAwzVTbGRmFrzCtg4vJyNbU/
CPJPEfFUtnXBXnEDq/BbRfhWHl+Ir48RzTZpmlwEOFPSTEpavJzRvylbAVfKVvf3QR7/SKYYcgaE
mHJ/214NxCcCg1yI5MJmFx8EFzJGu8b8bheihG+mxNrgosG8oJWQRtY4w08zJ5BXhuCHmHojuzOm
AgPbxwFCizPPD/zjYIyWPA740tV/y/ixVXDA8whfOSAgfRFJQUzDGgfPNBSwRvZiTd4HILEG3w6z
cs6PVfZmVMxHnIPLg3Z8nwdF93EcoWKxfDMSpr2iEcoMEZoycNmtIl3U9imcm0gHNyhSJlNFmmu7
+7lQ6QQ5s0UKjESOaH4lC4mGUavR2zoNRTjGPtCGkNC0r4fVmDNa9fM0NcELEqZfshwAaJARZMAj
ponHo5dYLQonShomUqsomtabu+ufNy26BdkoZ7T9/Ur4PsRAFYHAoagsk9jA65oQ9wgzsdqQ/mur
rHMupDBLCUcb1DjV9xSJV2k8Br4IM4iaCOSbNFV0yCSih0pwhWMR5lKtkz1iOHt+xOWKrXvnsQ6p
8+4ZhwhbP8URskXTM4QiHMiNzFpLKdiTcDoSXXi2FnJRqeydOrHroRLy7Oj/yfnS0bacL3dUwH7R
HtxI9JMIA+GM7OIRMGC9hpzu0VcUQu9TgjnCRMBMHkjuKlss+YjsPodBENRyGGzWJ/ZTOLaMoWbY
dpPAsJzUSjpxZxu1cg+hWjE3VQmtHDtsupLBT8oOUTGLF7Fo6H78kgvHfx7vath550gycMlpEqXt
47k1Z05qqZl9VYgVe/tG4EPnSZqXjkN2BFVi8uQB0TUyxWQBuFm3qh7VsVkmdt7HhjXs0HmH+8Yn
23PsfIpVRbK6IVULIk1zPm2MdVWGJOl3+MUL6beawpGUFUTnhvCfcoqf6Dl3PIjiQWulje3jQZEc
ZU38b51n44g7EmzFGOXC+1LAfOGoSNUbwMbYpNyKcg7h1OETBTrVrHUeJHZg/MvcwTYoAl94wGrG
lYFGkYzBGMkMrGMtT4WNwh+sxjPeJC/CmYipG+3Fd7FKiGS8iiZvHYcNMFk76sYOGNnJULtXQdS0
DmMfoqM9K7qWqm8oODhN573pvYrH7I10PQ0Q7/LAdRqgGVOacS15CQY233Crk77ZWsO5gRrJeTKx
kdzh3H6OxYkWbk0JsAc3xe4zloMWqYUa6JAhSshYS8EmTEE3+w1oAqMIGm680wtP6Yw2HRQlCO82
Wk8B/db4g0+P/K4OTnMSkKimEp/nXhGtX9Wzp2Ods18K/G3uV12d9vyZgj0WM7E7EN3GOQgRgZ2t
OltGge8RzR4xAGsbhfxZCJ3qOMuB6BADJwKrkZH9KXjCr+q0uJTpmgt69ZYDIYgMK98HRPomxAEh
Dk7tUq6r14Zmv5R1Ro+vbASMwA023rZo/PHgV5ZBzG1vbGuQO4nkW3Dyi5ryjqDoHC3M7+yjekNq
3TbpkAXtdo8PgXBTL4Z+Vn6ym4VdN58PYcrgZmX94DeN31c1TjDUpd6xkfYVQ/NXS5ypqAPUYKFZ
kKTyciA7xppnFF3Awb7SjqpaeRFfG38YqKm6tWF0+drSt5vQ8a0/P4U9l/a++l4b+iN+cX31L4HU
QrgKZW5kc3RyZWFtCmVuZG9iagoxNDggMCBvYmoKMTQ1MAplbmRvYmoKMTQ2IDAgb2JqCjw8IC9U
eXBlIC9QYWdlIC9QYXJlbnQgMyAwIFIgL1Jlc291cmNlcyAxNDkgMCBSIC9Db250ZW50cyAxNDcg
MCBSIC9NZWRpYUJveApbMCAwIDcyMCA1NDBdID4+CmVuZG9iagoxNDkgMCBvYmoKPDwgL1Byb2NT
ZXQgWyAvUERGIC9UZXh0IF0gL0NvbG9yU3BhY2UgPDwgL0NzMSA3IDAgUiAvQ3MyIDggMCBSID4+
IC9Gb250IDw8Ci9UVDMgMTEgMCBSIC9UVDUgMTMgMCBSIC9UVDEgOSAwIFIgL1RUOSA1NSAwIFIg
Pj4gPj4KZW5kb2JqCjE1MSAwIG9iago8PCAvTGVuZ3RoIDE1MiAwIFIgL0ZpbHRlciAvRmxhdGVE
ZWNvZGUgPj4Kc3RyZWFtCngBpVZtaxQxEP6eXzF+KOwJl8vLZpOIirRWpfWDxYUKKgiHRaQVan+T
/9PJy0x2e1t7rXdwm8smM5PneWYm13AG16BASYUfY03vggavo4z4Adcr+P0dzuEXbI5uNGxvQOfv
zRY3OVuXXfEOwXOXPFeNW+WjDRYu2V2b+QEXT5MHkzxgNPi92YprdJWGGnordQ6oj1F630fYXsHh
CH2fF+DD6CC1jQOs8c94BZtxdLhxvIDP0H1ZrcRaSQ3degU46KGTKwwLnxuaOMgDXGKPaMSDt7So
7BIdLv4K4wkcjxm/3TDVgAGHvoZpQg4zP9b4W+JDJAXG1/1ZwfizmCKQCQLkZn/bUQZlvO0BXYji
whYIuiczFzOU73chWvjGF50kFzson6gMk4XuMIFrIMFUYH+eB050DCm/Cjwa0i4k4GVZDF3dtUCW
OyBCHTtlO6/zfuSW97PXdxQQ026SUys6pnh30yuyxx5OaYZU5OjEciXukVdg12huSUQeQchatz6p
PvSiaL2xoBbhD4Sf47OE21CK7gOFzCjtG0bVMhKKlQKVu4UWkTZaDjb4xcAGlY6MxGoE+3En1lHJ
6JxetM+0fMxcQteO/TbLZJLuvNYxqwHFVGVKLAYWDL86IsERfu44eUPTuGTxUJFo1PNaUHLbpMfa
9NInrmu61orVBT/L11x3F0qCX3AhsCpm2yo9dC8HE2LCrXqqWbtHYZiU3yVHqfw2R3bgwjB3VI4k
sAgTuAw8ITlNiFIuGjm0ZpeH9xV+psrR2mfpzbT6/CMzRCsSi5lxbzxcLjYkNY6Dz8WpRhHyxL7a
qSWg5h6k3GMZWe/koBc4bv1vmoHicWLtjcP+quJMSaJ12ZQG1MVa02LhmOCnDTHXEOzT03PcnQ6n
D0yHibNb6eCkc8OQOuRcpY9Mh4mjB6cD9xASMkt81iGKAEk4fH2ZJFFpOCR6WvmipkerhWyf+sTt
5pD6bDHGym2l8TzXSMwqFjySgsFNaitPVE+T3GoGKT6e4VygNzzxiVxis18SLV8KDbJ5123LItGm
XbjwQigeeuG603y7cGUv/3fnmntZvHNNz9KS+w3BxDchQrKWxnxdLTpi8hqxJJwQsx28vdF2ktA3
InrGw9lf0Apd0wplbmRzdHJlYW0KZW5kb2JqCjE1MiAwIG9iago4NDkKZW5kb2JqCjE1MCAwIG9i
ago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDMgMCBSIC9SZXNvdXJjZXMgMTUzIDAgUiAvQ29udGVu
dHMgMTUxIDAgUiAvTWVkaWFCb3gKWzAgMCA3MjAgNTQwXSA+PgplbmRvYmoKMTUzIDAgb2JqCjw8
IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdIC9Db2xvclNwYWNlIDw8IC9DczEgNyAwIFIgL0NzMiA4
IDAgUiA+PiAvRm9udCA8PAovVFQ1IDEzIDAgUiAvVFQxIDkgMCBSIC9UVDMgMTEgMCBSID4+ID4+
CmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA3MjAgNTQwXSAv
Q291bnQgNyAvS2lkcyBbIDIgMCBSIDE4IDAgUiA4NiAwIFIKMTE0IDAgUiAxNDIgMCBSIDE0NiAw
IFIgMTUwIDAgUiBdID4+CmVuZG9iagoxNTQgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2Vz
IDMgMCBSIC9WZXJzaW9uIC8xLjQgPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9Gb250IC9T
dWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQgL01BUU9UQytIZWx2ZXRpY2EgL0ZvbnREZXNjcmlw
dG9yCjE1NSAwIFIgL1RvVW5pY29kZSAxNTYgMCBSIC9GaXJzdENoYXIgMzMgL0xhc3RDaGFyIDMz
IC9XaWR0aHMgWyAxMzkgXSA+PgplbmRvYmoKMTU2IDAgb2JqCjw8IC9MZW5ndGggMTU3IDAgUiAv
RmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAFdkMFuwyAQRO98xR6TQ4TtM0KqUkXyoW1U
Jx+AYbGQakBrfPDfF4iTSj3sgZl5MCw/9++9dwn4lYIeMIF13hAuYSWNMOLkPGs7ME6n/VQ1PavI
eIaHbUk4994GEIIB8O+MLIk2OLyZMOKxaF9kkJyf4HA/D1UZ1hh/cEafoGFSgkGbr/tQ8VPNCLyi
p95k36XtlKm/xG2LCLlRJtpHJR0MLlFpJOUnZKJppLhcJENv/lk7MNo92bVS1Gk6W/NPp6Dli69K
eiXKbeoeatFSwHl8rSqGWB6s8wt+2nBKCmVuZHN0cmVhbQplbmRvYmoKMTU3IDAgb2JqCjIyMgpl
bmRvYmoKMTU1IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvRm9udE5hbWUgL01BUU9U
QytIZWx2ZXRpY2EgL0ZsYWdzIDQgL0ZvbnRCQm94IFstOTUxIC00ODEgMTQ0NSAxMTIyXQovSXRh
bGljQW5nbGUgMCAvQXNjZW50IDc3MCAvRGVzY2VudCAtMjMwIC9DYXBIZWlnaHQgNzE3IC9TdGVt
ViA5OCAvWEhlaWdodAo1MjMgL1N0ZW1IIDg1IC9BdmdXaWR0aCAtNDQxIC9NYXhXaWR0aCAxNTAw
IC9Gb250RmlsZTIgMTU4IDAgUiA+PgplbmRvYmoKMTU4IDAgb2JqCjw8IC9MZW5ndGggMTU5IDAg
UiAvTGVuZ3RoMSA1MDY4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ab1Ye3BU1R3+
nfvY3ZBQkwCySVju3V6WvCWJSoFQWTa7ISEBAgG6iyC7STYmMZEMhlSw0B0LVhakKkIVHJU+rECR
y4bBG6gYGR11WhV1tL5mlPrqdGTsi46K5vY7d5OVMMrkD8Z75tzf85zzne+cPffe7Vm7LkpjKUYi
NayIdLeSdY17BKKkuSvSnbSz/wSZ29zboyZtuYBI7GztvrEraTvuIxrjurFz/VD77Pfh72yLRlqS
cfoKcnobHEmbXQM5pa2r59aknX0U0tG5pnkonv0mbFtX5Nah8eld2OrNka5oMn/czyCndK+5pWfI
rocs614bHcpnQeB7mRi8At1LaXQT2aFloqwisv99jIskRHkcV9lL7zy1+orZ5yjLYdmrF/zKki/2
H3/i8+hX+en3OL6AI204n0tb4WAhUQZD/Gz6PamI1Q43waDGYoNqUeegXotaXDzXSTH2KN2N+giq
SO1sG61H3Yr6AKqU0vbD6mfbEpLDe5ytp1w235suKUvH5yjOMenKqwazHX1Iecv5wQmWg9U7w3IS
Yylt7hj2CHuYWkhhvycP20A1VMD29BV2KmGE9lM3agxVtO6M7U9MrlBOshLySAxtptJkiR1TPikv
VT4qNwSWUE7lGxLE05Nhea9QBlwPKU+5blROoh5Mhg4UIuOYst/VqeycbLA9CeVel8HQ5p6kWOdC
02NKV+FupaXcitfvNoSDCWUm4su96cr0GW7lWteHyrR8w8Fgl7rqlaLyF5UpaIg0FZ16vFnKJNdO
ZRZCk12B/FmoJ9gBtpeK2N6EZ75yHCqm21dbOGO3wW7rqyko9xhsg3d6TcHuwpp8T2G94imszs+H
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
f5kYXjAahheOiuFFKaQjGG4A5kWc4cXfH8NLRjDceGmGl6ZwA+QyoF1qMbz8MjH8k9EwHBwVw6EU
0hEMrwDmEGf4+hTD3jydLjyHYxcdu3TZD+aVF1CONyU5m3zMBYV/PuMDGlcGviwyIN0pD/5vQuH/
//iIpNP4dhPxH1BV8n8ZxzSDJFRHpkF0GpXb0MV3oUPaIUXItHfpOFoRLS8+jp5kyLLyq7PcWfmo
PmmH8dXf5Ce/rDKkBefxnY8M6zKj+G75tgtxJtjX3dxeUVZRbSUwfIklZ2DDf1O0YO7iRUurimui
nb3RnvbmCHKSUZ6MOE0yhy7uSOlMncbt/wOesmaDCmVuZHN0cmVhbQplbmRvYmoKMTU5IDAgb2Jq
CjI3MTkKZW5kb2JqCjIzIDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAv
QmFzZUZvbnQgL09STVJFRCtDYWxpYnJpLUJvbGQgL0ZvbnREZXNjcmlwdG9yCjE2MCAwIFIgL1Rv
VW5pY29kZSAxNjEgMCBSIC9GaXJzdENoYXIgMzMgL0xhc3RDaGFyIDM1IC9XaWR0aHMgWyA0OTgg
MjI2IDQ5OApdID4+CmVuZG9iagoxNjEgMCBvYmoKPDwgL0xlbmd0aCAxNjIgMCBSIC9GaWx0ZXIg
L0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AV2QS2rEMAyG9z6FltPFEMezKhhDmTKQRR807QEcW0kN
jW0cZ5HbV3bCFLqQQNL/6dVcu+fOuwzNewqmxwyj8zbhEtZkEAacnGetAOtMPqKaM7OOrCG435aM
c+fHAFIygOaDkCWnDU5PNgz4UHJvyWJyfoLT17WvmX6N8Qdn9Bk4UwosjtTuRcdXPSM0FT13luou
b2ei/hSfW0SgjYho95VMsLhEbTBpPyGTnCt5uymG3v4rHcAwmm+dmBRCkZg/AjlLTnBymlfy0Ih9
xDAevUWrZDESD4o6XCgk4/xiD2wXltnlR/ebzJoSnVMfWS8tFziP91/HEMvG1X4BXyWBHQplbmRz
dHJlYW0KZW5kb2JqCjE2MiAwIG9iagoyNTcKZW5kb2JqCjE2MCAwIG9iago8PCAvVHlwZSAvRm9u
dERlc2NyaXB0b3IgL0ZvbnROYW1lIC9PUk1SRUQrQ2FsaWJyaS1Cb2xkIC9GbGFncyA0IC9Gb250
QkJveApbLTUxOSAtMzA2IDEyNDAgOTcxXSAvSXRhbGljQW5nbGUgMCAvQXNjZW50IDk1MiAvRGVz
Y2VudCAtMjY5IC9DYXBIZWlnaHQgNjMyCi9TdGVtViAwIC9YSGVpZ2h0IDQ2OSAvQXZnV2lkdGgg
NTM2IC9NYXhXaWR0aCAxMzI4IC9Gb250RmlsZTIgMTYzIDAgUiA+PgplbmRvYmoKMTYzIDAgb2Jq
Cjw8IC9MZW5ndGggMTY0IDAgUiAvTGVuZ3RoMSAxMDQ1MiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+
PgpzdHJlYW0KeAHlmnlcVGXbx6/7HBiGgWGTTdkGj+DC5oLmlk7AIEouCFMzagoihqXBg5JLkfT0
lD6oWdleLpXZgubhaDWWmZWtpm1mpVZWtliSVtqiAe91nx/g8jy9f7zv5/M+f7zj/M73vq77updz
XeccZ+bDvJraCgqielKpb/mcsmoyX6kORmL5tfMk+RV9kshinVl95RzY8X8SBXa5cvbCmbBTLyVS
SisrymbAJu6nQZXsgC2ymT0q58xbADs1jBk2u6q8vT/VybZtTtmC9vXpENuOa8rmVDD51WujPFTX
VLT3Cw9R1INmV/tBCG7Uj8g1zf0L62h/CJH0+QkHhdELFEAKM4tKiYLLxSXkx72y33+Nr//Jq23T
Qoefoq5WdhA9/8P1b0u+vuTxZWcOtKwIPBbwKscG8gx48biANS0HeMvrzhw4fUvgMXOm9k4Tfk2B
qk/5w0hMSPIpvxuJaYzfjMR0xq/AKeAk+n6B9TPwE3ACOA78iMhm4BicPwDfA0eB74BvgW+Ar4Ej
RmIgb+IrWF8CXxgJEew8bCR0ZXxuJGQxPgM+BQ4BBxFyANYnwMfAR8B+4ENgH/AB8D7wHvAu8A6w
F5vYA7wN7AbewrJvIvIN4HXgNeBVYBfwCvAy8BKwE3gRc+4AXoBzO/A88BywDfABzwLPAE8DW4Et
gAE0GfH9OYM6sNmIH8DWU8AmYCPQCDxpxPfjkCeAxzHuMWAD8CiwHngEeBjDHwLWAWuBNcBq4EFM
/QBwP4bfB9wL3APcDdyFcXcCq4A7gNuB24CVwK2YegWGLweWAQ3AP4GlGLAEuAW4GfgHcBPwdyMu
m/NyI1APLAZuAOqA64HrgEXAQmABMB+4FqgF5gFzgRrgb0A1UGV0G8ibuAaYA8wGrgauAmYBlcCV
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
btnsWdNrZmXkVM2Wf4D4X9aKx/0KZW5kc3RyZWFtCmVuZG9iagoxNjQgMCBvYmoKNTI1NQplbmRv
YmoKNTcgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9udCAv
TVpYQVBDK0hlbHZldGljYS1PYmxpcXVlIC9Gb250RGVzY3JpcHRvcgoxNjUgMCBSIC9Ub1VuaWNv
ZGUgMTY2IDAgUiAvRmlyc3RDaGFyIDMzIC9MYXN0Q2hhciAzMyAvV2lkdGhzIFsgMTM5IF0gPj4K
ZW5kb2JqCjE2NiAwIG9iago8PCAvTGVuZ3RoIDE2NyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUg
Pj4Kc3RyZWFtCngBXZDBbsMgEETvfMUek0OE7TNCqlJF8qFtVCcfgGGxkGpAa3zw3xeIk0o97IGZ
eTAsP/fvvXcJ+JWCHjCBdd4QLmEljTDi5DxrOzBOp/1UNT2ryHiGh21JOPfeBhCCAfDvjCyJNji8
mTDisWhfZJCcn+BwPw9VGdYYf3BGn6BhUoJBm6/7UPFTzQi8oqfeZN+l7ZSpv8Rtiwi5USbaRyUd
DC5RaSTlJ2SiaaS4XCRDb/5ZOzDaPdm1UtRpOlvzT6eg5YuvSnolym3qHmrRUsB5fK0qhlgerPML
ftpwSgplbmRzdHJlYW0KZW5kb2JqCjE2NyAwIG9iagoyMjIKZW5kb2JqCjE2NSAwIG9iago8PCAv
VHlwZSAvRm9udERlc2NyaXB0b3IgL0ZvbnROYW1lIC9NWlhBUEMrSGVsdmV0aWNhLU9ibGlxdWUg
L0ZsYWdzIDY4IC9Gb250QkJveApbLTkzMyAtNDgxIDE1NzEgMTEzOF0gL0l0YWxpY0FuZ2xlIC02
IC9Bc2NlbnQgNzcwIC9EZXNjZW50IC0yMzAgL0NhcEhlaWdodAo3MTcgL1N0ZW1WIDk4IC9YSGVp
Z2h0IDUyMyAvU3RlbUggODUgL0F2Z1dpZHRoIC00NDEgL01heFdpZHRoIDE1MDAgL0ZvbnRGaWxl
MgoxNjggMCBSID4+CmVuZG9iagoxNjggMCBvYmoKPDwgL0xlbmd0aCAxNjkgMCBSIC9MZW5ndGgx
IDUzMTYgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBvVh7cFTVGf++e+8+AqEmEGST
sNy7LksemxgSBYFQWMJuSAiPQIDu8pDdJBuTlEiKIRUtdMeClQWplUIVHJXWWnnJJUG8ISVEBked
VgtabbXOKPXV6cjYh3SsaG5/926yJVSZ/MF4z5z7Pc93vvM73322rVsfpREUI5Gql0daG8g8Mh4C
KahribQm5FH3gWbVtbcpCdnyByJxe0PrbS0JOSVMNMx525oN/eNHHYL+gcZopD5hpy9AJzdCkZD5
ZtDxjS1tdybkUTFQ+5q1df32UU9AtrZE7uyfn96GrNweaYmC4shYg1NB69o72kyRMqaDTmxdF+33
5yCR9ANiaAXaTSmml0BpaKuIbH8d5jQ1hh3HE+OiKauvm36R0u2mvHr+T0z6cteJZz+Lf5GT+mBK
NuKkmPEMC8ZZ8/ryiFIZ9kmpD9qJO80hAydBoxovnyALd9FSL58CW0YllENOpEC0wnuKu2nGFZrf
0LQrNCdpsqm5vn8UneLjNJ9m0i2US47+QM9SmBYO0mj/N1kX5dENlEXJQCe4hyRa7tX4GSWwscnh
16jSq9FM9EnoXu8sB8X4SXoA/XF0kZp4G21A34r+MLqU5PZD6uJtHZLdd4I3UBbP9Q2X5CUZmbJj
2HD5VY2txx6V33S8182ZKLXznNkxglJmDePH+TGqJ5l/RR6+iyool/d05q2RwzDtp1b0GLponpn3
d4wrkXu4gDwSY8wEGifxcfmj4kL5g2JN4A75dI4mgTw3DpLvOrnX+ah8ynmb3IN+MGE6kAeP4/J+
5xp55ziN93TIDzo1xpifJsh6J4Yel1vydsv1xaZ93m5NONghT4V9mW+4PHmKS57kfF8uytHsDLnQ
OU/OL35ZHo+BcFMQ1ONLl8c6d8rTYBrnDORMQ+/mA7yX8nlvh2eufAIslttZmTdlt8Z3d1bkFns0
vss3uSJ3d15FjidvnuzJK8/JAb/sRdtm2wrbLFuJzWvLtU2wuWzZtgz7SHua/Vv2VPswu91u0/hQ
x0zZ2s0HURUyH+y0W+0WjZ+GUurmw6by8LN2yS7YyZ6h6e8eM8o3Q+ODx1CITGCOW03OqvFhFLGh
OuyTJYOTTEOaYPA44UwC2wWaSyrfr1lpy/XtMx0zR85In1ru/7pT2LQMnL1ffzjYqe6uqgmqB5wh
tcRgdGdowN0xwHwtbVsPU7TM661avKGzvbW5IRB1B8LuQBQ9rG5rb3SosVpFOdrcahgUVZwQrq1r
NGgkqra6o3612e1Xjrab464wNxjmdrf/KDUElgSPNvii/o52X3vAHfGHOmvL1q0aNNfW5Fzryr5i
rjIj2Dpjrlpz3BVzrTLMtcZcq4y5Vhlz1fpqzbmMxQeaasruaEN1KoGmKkXNrVErFy0Pqkok5Nf4
SSj96y29lGY5SbmWGGVJRSQT6W+iv2XQvqX6h5YXKK2vRf+HWIo97TK60DdzOvXS/bSXjpCVngKf
S7fSQ/QSN+PSXknH6A0eRzfiOSGRRvPod6zr56iBnoB/G52mXXSUUjGmhUbDuoM9+l2QfeBrabP+
CxpPU+heOklTEXUHXdD3652wLqaldIAOYvxv2S0clUbpT+vvk50WIeZmWM7p8/QjNJIKcD+rhnYz
9bBHfEtvxL2vFNk9Qo/RPnqOPuZ7+JjeqLfrZ/XzqFQHjaUatI18jM+LR6R79Uf0v+l9QCKX8jFr
mHbSLxH/CFovEwf4u9zGO3mX4BPuEY5JWyxj+r4EDnk0B62C1tJ9QKCLztA/6T/8ieAQ08Q28Xl9
kv4vGk5VWKWxkii1o/0YbQfW1M1WnsizuZo38s94F78m5AtLhaDwfeFO4UNxgbhS3CC+Jt0hdVi2
Wx6yDu+7qHfrL+iv0xg8IlbQOtqE1Z2ms/Qpfc4iYo1lD5dyGd+KFuO9Qhfv4y6hmnv5rHCA3+H3
+BO+JFiEVGG04BXahJ3CQeG08IrYJO4SHxbfES9KMyyCZZ/lA6vH9ue+2r6tfa/opfp5/TPcYe3k
ws6U0QJaTRGstpVuph9iFYfRjmDXztDz9JLZ3uOxdIE+AwrEIzmLS3g+2gJeyA3cxI/yCbQeM5d/
C9gIIUVIF8YIY4UaoVZoEWLC60JMzBbzxbnicvEI2oviG+Il8ZJkkUZJo6U5UiVtl1qkPWhPSk9J
HdLvLVMtMywLLMssMctWy3axznLO8oZ1k3WHtcP6ifXvuCvOs621bcfuvISafQ61/L9D4vHIvoRu
pzr2cy3txm7s4wjFUV31fB/waqVcfZW4SZwjTEQ19NDdqNY9tJG2iitpn/4n8QD9EZVivGvE6NdS
GTktP8fu3EMTUUUDbSf2/BCPpkO4Lp6nc/D19i01rzuXpYdyfHn5ebk5Ezzj3Te4FDwRxmZnZTrG
XD86Y9TI9LQRqcOHpdhtVoskCkwFAXd5WFEnhFVpgruiotCQ3REoIpcpwrjSFbV8sI+qGOMiMA3y
9MGz4QpPX8LTl/TkNGU6TS8sUAJuRX3Z71Y0Xr4oCP5+vzukqBdMfr7JP2DyI8C7XBigBByNfkXl
sBJQy9sb44Gwv7CAu3yAYFhhgXFj8dFwI7BKsyMbcf+l2YZHQM1y+wNqphs8bKInEKlXqxcFA/5s
lysEHVSLg5ijsKBJRZ60LbXeXb9N81Ft2OAiK4OqGAmpQtiIle5Vx7j96pi7PnD8TxzgAtsvM6qC
pzwSjZervvA2gGuIYUOKbIdUVaMgrLAlFFR5S38SRo7NyNRIN/HI8ISbFTXFXeZujDeHAS4tDnZk
+bLMe7NK1cGOTF+mKRQWdDk2lbqw+q7CWYWzDFrqcmxK0I9+lNC/2mtQx6Yz74JWLU4CwAYC7krk
qSp15iRuJDvFOEWnULxuCnDCEWIsswn5zFYF1IzoUS2eyogaqxlIo9GfSC7c7O9Iycwyn1FlIfiH
42nTsFPwT3Mr8Yt4mIfdFz4erIn0a6yetItkGI2NTtaKypEBvt14lnqw6kaHu9HY33ZzTyG7HYHL
FJANaIyc1Qw836uDLlUJQYGXzYIqjVKqg0eZd4Q01rdo5Hd24X1bXH0rzAVGqTX5MT+EwgIo8l3g
bixQyjFzuVErSlyJV9bHlXKlEcUkeUwKQzQeKgKCNUHgREswoy+UnWSjodA0xCky4mAI3OMhRGju
jwBqqoq+hNPEAjxrxQnVwUVBNebPVn3+EHYB5dtbHVR7UbmhELyKk5kiY+OlOpFzCXIuzof9pkQU
vNrEECIUjxsxa4Jul9obj2fHjestIWtMVyp8/QqNDBcDco1j1RgL4nZlm3vgcruQVsjA9GaU9EBF
4ZX+6ghPTuaNkbcg28kmwlOuEcJTh4LwtCEhXJrMdBDC05FzqYHwt785hGcMQnjm1RH2JfNGkrOQ
rc9EuOwaITx7KAj7h4RwIJnpIITLkXPAQHjON4dwxSCEK6+O8Nxk3kiyCtnONRGed40Qnj8UhBcM
CeGFyUwHIVyNnBcaCC/65hBePAjhmqsjvCSZN5JcimyXmAgvu0YIf2coCAeHhHAomekghJcj55CB
8Iokwr5slS6/D8euuO3SNb8xr7wMcrwpWUZSGQ/8jcL3NY5UfHmkgrrwvZ3QEL5BKqAR8I5O0ll8
24lkoybjH5NG9iKNJHR7mkZ0Ft2Q07pI5O5PIYGzmZwIe8rb+Lp/JhDUiIuyu4j5zAw8cE0FGQri
nhmhLpJYw1DGUAu4icU3pbvSc9DLpB3aF3+xnPx8tibNv9SJfEj/FD2Kb5+vOmBnwbb+9qaSiSXl
pgPjay6xJqvx/2r+8uCs6tneiuia9mhbU12kcGHtmqbv4Y8kBiYDGj/Mxur9h6FN8qwUGfJ/ARMx
nRsKZW5kc3RyZWFtCmVuZG9iagoxNjkgMCBvYmoKMjg3MgplbmRvYmoKOSAwIG9iago8PCAvVHlw
ZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9YRUFHQkQrQXJpYWxNVCAvRm9u
dERlc2NyaXB0b3IKMTcwIDAgUiAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcgL0ZpcnN0Q2hh
ciAxNjUgL0xhc3RDaGFyIDIwOCAvV2lkdGhzIFsKMzUwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAg
MCAwIDU1NiBdID4+CmVuZG9iagoxNzAgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9G
b250TmFtZSAvWEVBR0JEK0FyaWFsTVQgL0ZsYWdzIDMyIC9Gb250QkJveCBbLTY2NSAtMzI1IDIw
MDAgMTAwNl0KL0l0YWxpY0FuZ2xlIDAgL0FzY2VudCA5MDUgL0Rlc2NlbnQgLTIxMiAvQ2FwSGVp
Z2h0IDcxNiAvU3RlbVYgOTUgL0xlYWRpbmcKMzMgL1hIZWlnaHQgNTE5IC9TdGVtSCA4NCAvQXZn
V2lkdGggNDQxIC9NYXhXaWR0aCAyMDAwIC9Gb250RmlsZTIgMTcxIDAgUgo+PgplbmRvYmoKMTcx
IDAgb2JqCjw8IC9MZW5ndGggMTcyIDAgUiAvTGVuZ3RoMSA2ODcyIC9GaWx0ZXIgL0ZsYXRlRGVj
b2RlID4+CnN0cmVhbQp4Aa1Ze3hTVbZfe++TR180LdBn2pwQGqRpLRSwQDtt2iYFpyIFiiZYJAUq
LYKtFhQVIYwiEBGQq4ziAx+jol7lNEUmBR2qqDOiCFcd3wo+ZtT5BkG/Tx1fPfe3TwJSx2/uPze7
v7XWXmvt19rr7LPTLLtieRulUpgEeRcsbe0i45PbDta14MplaryelkNkbr6ka9HSeH3oEiLTF4uW
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
SXRhbGljIC9Gb250RGVzY3JpcHRvcgoxNzMgMCBSIC9Ub1VuaWNvZGUgMTc0IDAgUiAvRmlyc3RD
aGFyIDMzIC9MYXN0Q2hhciA1NyAvV2lkdGhzIFsgNDc4IDUxNCA1MTQKNzkxIDM0MyA1MTQgMjI5
IDIyNiA0MTYgNTEzIDUxNCA1MjkgNTE0IDUwNyAyNTIgMjUyIDMzNSA1MTQgMjI5IDM4OSA1MTQg
Mzk1CjU3OSA1NTcgMjUwIF0gPj4KZW5kb2JqCjE3NCAwIG9iago8PCAvTGVuZ3RoIDE3NSAwIFIg
L0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBXZJBbtswEEX3OgWX6SIQLTpxDAgCihQB
vGgTxO0BKHLkCqgpgZYXvn3f0E4KdPEJPA5nOJ+c+nn3bZfGxdRveQp7WcwwppjlNJ1zENPLYUzV
qjFxDMuNyl44+rmqSd5fToscd2mYTNtWxtTvpJyWfDF3X+PUyxfde81R8pgO5u7X877s7M/z/EeO
khZjq64zUQbKfffzD38UU5fU+10kPi6Xe7L+nfh5mcXQERmra0thinKafZDs00Gq1tqufXnpKknx
v9AtoR/Cb5+rtnnqOGy3hiWyNJbF25J5O9O46x39cCverLpWZe3jQ0eJBkTWbshrGwciok+KaxCB
UfEBRBxuFB9BRHSluAERGBS3IAKdogcROCj2IAJFMYBo6G0pFUFEdKNRAZG1rtw7gAjDmut4LpW1
660i5lQ0uVbEnIpSBTHnrgbLYcy5YnCjTTrMqcjVx3GYU4FeEXMqLtImHeZUtIFfPuvjjfXfdL4+
5yGcc2YUyhCWKdHfH5N8zuk8zVqg6C8R4MUtCmVuZHN0cmVhbQplbmRvYmoKMTc1IDAgb2JqCjM5
NQplbmRvYmoKMTczIDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvRm9udE5hbWUgL0RX
T1NFTytDYWxpYnJpLUl0YWxpYyAvRmxhZ3MgNjggL0ZvbnRCQm94ClstNzI1IC0yNzYgMTI1OSAx
MDE0XSAvSXRhbGljQW5nbGUgLTUgL0FzY2VudCA5NTIgL0Rlc2NlbnQgLTI2OSAvQ2FwSGVpZ2h0
CjYzMyAvU3RlbVYgMCAvWEhlaWdodCA0NjcgL0F2Z1dpZHRoIDUyMSAvTWF4V2lkdGggMTMyOCAv
Rm9udEZpbGUyIDE3NiAwIFIKPj4KZW5kb2JqCjE3NiAwIG9iago8PCAvTGVuZ3RoIDE3NyAwIFIg
L0xlbmd0aDEgMTU2OTIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB1XsJeFvFtf/c
e3V1te+7rM2y5EW25X13fL3I8RLHdmwldlY7trOR1UkIIQRSloY6LIUAbWmBQmmBGqiiQHEoBUrT
jZZSKC/ta4FC6d662ysQUmz/z9wjOba7PHjv+/7f9xSf+5tz5szcmTPnzCblwPjBMaImxwhHikZ2
De8l0sf/B4COkUsP+JE3rSeEt2zZu3UX8nbQU5q37jy8BfkA8O7Hto0NjyJP3ges2AYC5JkywKxt
uw5chrz/WsBtO/eMpPIDVcBX7Bq+LPV+8irw/t3Du8ZQvz4LMGfv+FgqnxkgxMhi3r966ghhIM/F
+ImBvEkEwgJGyRC0fJpZSWSQS/P5u6dOeS793SZ93dvEqQABIV/5/RXfo/it4w+euFA2812VRZEB
pZVA+IFywt0zPyFE9dkLZRfUkE+YO1N5CK5TSm6KvTzpXeabYg8jXJb0qoE7hHBp0lsD3EGEA6iy
P+mtBeF40lsHsA9hL8KepLcehLsRdmGBnQiXJD2NkLcDYXvS0wTctqSnGWArwhaEMYRRhBEssBkL
DCMMYd4mhI3JjBjUsgFhPcI6hLUIgwgDCGsQViPEEfoRViH0IvQgdCOsTGa0wIu6kFuB0InQgdCO
0IawHKEVIYbQknS3Qy3NSXcHQBNCI4KYdHeCsAFhWdK9Arh6hDqEWoQahD6EaqyzCqESK6tAKEco
wzpLEUqwXDFCEUIUoRChACvLx+IRLJeHebkIOQjZqBlGCGGBLIQglstEzQCCH8GH4EXwJF0robcZ
CO6kqxs4F4ITwYF5dgQbCq0IFgQz5pkQjCg0IKdH0KFQi6BBUCOoEJRJZw+8XZF09gIICHIEHkGG
KhxyLAKDQCRg5hBmEWakAsz7yP0d4QLCewjnEd5FeCfp6PNNMW8j/C3p6AfuvxD+ivAXhD+jyp8Q
/ojCaYQ/IPwe4Xeo8luE3yD8GvN+hfBLhF8gvIUqP0d4E4VvIPwM4XWE15L21dDAVxF+mrSvAe4n
CP+Jwh8j/AiF5xD+A+EVhB+iysvIvYTcDxBeROH3EV5A+B7CdxGeR83vIHwbhd9C+CbCNxDOJm0w
8zFfT9oaAJ5D+FrStg64ZxGeQXga4asITyF8BeFJLHcGYQqFTyB8GeFxhMcQTiMkEU5huQS25UvI
PYrwCKo8jDCJ8EWEhxAexHIPYIEvoPDzCPcjfA7hPoR7ET6LcA/C3UnrZuj0XQifSVpHgPt00joK
cGfSOgbwqaR1C8AnET6BcAfC7Qi3IZxEuDVpHYYCt2CdH8c6b8Y6b0K4Eau+AQucQJhAzY+hyvVJ
axxqOY6VfRQruw7hWtS8Bmu5Got/BOEYwlUIVyIcRbgC4QjC5UkrrB3MYXzDZVj1IYRL8Q0HsS0H
EPbj+8ax+D6EvQh7EHYj7ELYiXAJdmUHvm87wraktQLevhVhS9JyNXBjSQuNo9Gk5SqAkaSFmmAz
CoeTFhG4IRRuQuHGpOVKEG5IWq4BWJ+0XAewLmmGtZhZmzR7AQYRBpJmFXBrEFYnzbDaM/GkGZZ5
ph+hD2FV0gzLPNObNMMyz/QgdCdN1Fgrk6ZWgC6EFSjsROhAYTtCG8LypAnWTaYVVWIobEFoThqX
Q15T0kini8akcQBATBoHARqSxrUAyxDqk0Yam3UItQg1CNVJYwTyqpLGfIDKpLEaoAKhPGmkzS3D
F5UilCSN1KzFCEVJIzV5FKEQ21KAkI9NimCT8hBysUk5CNnYiDBCCCELIYgFMlEzgE3yYyN8+D4v
ggc1MxDcWNyF4ERwoKYdwYYNtCJYsJ1mfJEJwYjlDAh6BB2CFlU0yKmThg1gAlXSsBFAmTRsAlAg
CAhyBB41ZajJoZBFYBCIOAfl56DGWcAZoPeB/g50AWTvwSvOQ/pdoHeA3gb6m36z77+A/qof8f1F
P+r7M9CfgP4INA3yPwD9HvJ+B/xvgX4D9GugX4H8l0C/gPRbgD8HehP03gD+Z0CvA70G9CrQT4F+
otvq+0/dNt+PgX4EdA7oP0D2CuAPgV4Gegn4HwC+CPR9oBeAvgf0XaDngb4D9G3tJb5vaXf6vqnN
830D8Kw23/d1kD0H6a9pd/nEuWe1O3zPaLf7ntZu830Vcp7SFvu+AvQk0BnNPt+UZtz3hGa/78ua
A77HgR4DOg18EvAU6CSAvgT0KNAjQA8DTQJ9Eegh9ZW+B9WX+x5QH/Z9AfDz6it896uP+j4H8vuA
7gX6LNA9QHcD3QX0GaBPA92pLvB9CuiTqgd8n1B93ncH4O1AtwGdBLpVtc13i+pq38dVn/bdrLrL
d5PqHt+NIL8B6Dou5LuWq/Jdw1T5ro4fi39k8lj8qvjR+JWTR+Pqo4z6qPto59EjRyeP/vSoaJKr
rohfHj8yeXn8cPxQ/LLJQ/En2Y+RLez1Yl380smDcdlBy8EDB7m/HWQmDzItB5migwxLDhoO+g9y
mgPx8fj+yfE4Ge8ZPzaeGJfVJsbfGGfJOKOamnv29Ljb2wooXjGuNbTui++J753cE9+9ZVd8BzRw
e9XW+LbJrfEtVaPxscnR+EjV5vhw1VB8U9WG+MbJDfH1VWvj6ybXxgerBuJrQH91VX88Ptkf76vq
ja+a7I13V62MrwR5V1VnfMVkZ7yjqi3ePtkWX17VGo9B50mGIcOfwRloA1ZmQEuIm2kqcovuN9x/
dsuIO+F+1s2Z9C6fi83VO5nmbiezx3mV82Ynp3e86GBFR25+q97+ov1n9j/ZZWbRnlvYSmwGm9/G
WWnfbF39tG+nbQ0tiMXlUl+7bMFwq97K6K0+KxvzWRlifMP4ZyNnfcbwooHV6xm9fk7PinpQ1+t8
OpY+5nScqCuubNVrfVqWPua0nE3UgoQ2PlvT09+qV/vUbLxB3a1mRXVDc6uoLihqJRzjZ+DwaQDg
FLQ1jNXXOsWQ0zaGZ6aYj5/q74tEOqeEuVWdCUXPugRzfSLUR59i79qE/PoEia9dN3CKYW4aPMWw
zf0JS2fvWuSvu/FG0uTpTHj6BhKf9Qx2Jo5BQqSJOUgQzykbaRqMbNx/cH8kcmAjPDbuPxCR/oBj
DlIOPpABf/sPAE//AQBPaM6//qAa6G3aDx+pGqz9Xxf5v5zD/F9u/P+Htjs2baQXIcLdhMyeXHQz
0kN2kP1w33SMfJTcSE6SZ8hPyWZyDaQ+RT5LvkAeIgnyNfId8qNFpf6XzOxhfhfRcE8QOTETMndh
bnr2C0BTvG6B5CRwZpn/omTOMPfHJbI/zp6cM8xOyU1EJZXVsi9Dbf/FzMxdYBugpHaugvLscUjr
pTf9Rbh79kuzDyzqQAdZQfpJnKwma8gg6SYrgXpIL+kiG8gmMkxGyCgZI1vIVrKNbAd7XUJ2kl1k
N9AWsofsJfvIONjwADlILoX0gZQE+cvIYXI5OUoQj5ArIH0YnpdLqSvJVWD5j5A0Xp3ir14guYZc
B+NxLTw/So6T68nHAOlzsWwxN0FOkBtgPG8iN5N0+mJqoZSmP05uB7qF3AqjfhukPwljfyf5NPmM
JD1J7iCfkLh7yH2Qf8ciXZp3Uf8ucje5B/zmXtD8HHjPA0t0qeY95CnyVfCpb5KnwduegdRz5Ayk
nyM/I2+QX5Bfk9+Q3zIRpoJZTv5K/kZeBOtvAatTm++VntvhuXXe4ofAtpcTtOyVYMuFlpqAEcE8
tPDVktXQihPkENj0OIzG1QvKTEjjRUeJ1kWtmrb6RYuirailLsrQcifnJRftmR6Hi5LbF9lssQXv
BKvfscCiadsvtOzC9L1kIbcw/TnyeRiD++FJx2Epl5Y/CBFO6YtkkjwMKXxe5NOpR8ij5EswF5wi
p8nj5MvkCTI1zz8G3MX8JGg8Nq/zz+VPkq9IXvAMeVYa/6+Ts4TKniFfB1/AXPSMrwP3FMifI9+C
Wei75HvkBfIN8J1vSfRd8n3wj5fIyzBrvUpeT3nQOcmDgkyE/IC8JAuTH/M6hueeJc+xK8llwP+I
/RT4OuF/QXRi66aNG9avWzs4EO/vW9Xb072ya0VnR3vb8tZYS3NTo9iwrL6utqa6qrKiPFpYkJ8T
DmUFM30Oi9Gg16pVSoUg52Ucy5D8WLB1yJ8IDyVk4WBbWwHlg8MgGF4gGEr4QdS6WCfhp+WGIWuR
pgiaW5ZoiqgpzmsyBn8dqSvI98eC/sQLLUE/nIF7ByB9Y0tw0J+YltJdUloWlhgtMIEAlPDHHNta
/AlmyB9LtF66bSI21FKQz5xSq5qDzWOqgnxySqWGpBpSiZzg3lNMzjJGSrA5sZpTLFFo6WsTXCg2
PJro6R2ItbgDgUFJRpqluhLy5oQg1eXfnoA2kxP+U/nPTtwwZSCbhyKa0eDo8PqBBDcMhSa42MTE
8YQxksgNtiRyL/+FAww4lsgPtsQSkSA0rHPV/AuYBB8yBP0TbxNofHD6D9DqBZLhlEQeMrxNaCbt
4ryZEsxwOk2gbdBC6F8gQNtyYkokm4FJHOsdQN5PNruTRIxGBhPsEM15Np1jjdOcY+mc+eJDQbBs
LBgbSv1dus2ROLbZX5APIyv9hRKyEOT7E1x4aPPINorDYxPBFugh2JL0w+awBRLicMqYsVNFUdAf
HoJObKdm6B1IRIN7E5ZgE1obBFBJKLa9b0AqgtJYwtKcIEMjqVKJaAzKgovEJujA0AbSuoK9A2dI
6dwbp8r87tOlpIwM0nYkbM0wKOHYxMDoloRvyD0K/rnFP+AOJMRBMN9gcGBskI5S0JDIfQNeBx8Y
QKkU9G2JdloZup0QQgr/AOvmBulogcDfCo9gUx1kGBJyZOmINtX5Bxg3SavBW1IaNLWoHmC4UHMb
FAaEos1t7gA4t/T5N01yYwegGQnFfJtk0Aj+YpvwPf+yaahNG5Trj421LGjgokqBkRqYqu2ft5Ol
tkgZA5qgoMPZRvtQkM9C2g/ZigQL/ZREdBQd/gTp8Q8Ex4KDQfAhsWeADg61tTS+nX1BegCRRjvl
Jf2LOMyvwrwECXT2D6QZOL4MJFoj0rjSYZX45RI/z7YtyW5PZ/snFMHOvgn68mCqQuKHCILBkYfb
h09UmcogWFthogy2Dgf9Bn/rxPDU3LHNE6dEcWJvbGhbDYTBRLB9dCLYN1AHYynF/VH35fTVJtLJ
dPY3FeTD3NN0Kshc33tKZK7vWztwxgBfTV7fP5Bk4fA11DR4KgvyBs74CRElKUulVEhV/JShNa0C
RiHpu8+IhByTcmWSQOJH4PwnyVAJZAwZmWJRZkjrsSCToUyUZIPwgQhzbIMhgHk45h+lw3PF4LaJ
oUEaXMQGQwl/TIIJLiMJNrgMjoxyTUIVHGtKqINNVN5A5Q0ol1O5EGxKMDYGjDMFc9LEUBDmKXC5
ATiKD4J3GKj3syH/1Nxc/0DgBff0YABCYj3Q2oGEMgLrAB/qAL3llIZAvDxxbGSYtoPEIdRpZLaP
DEIspCsElfaEEmpQpmoAjVapDHVHKDQCYwMDKJU/Bkzi2GBiMEJfOrCdtsjvNyRIW7AGhh3r5MP0
RdHBCVOwhDo2qCZUoeMUlNA2AodhSeIGFl4GEy7tkaCBlo8EIWtkyA8jICMjfeDqOJeq6LiBZAym
RFl4TCKVO5VJaLe4kFqrSigLoUL4o2l1IVQIf8IgGIV2XuKOpxTg3YaEGloUXmDKVAGwDmS107bA
33FoPFX9Gq2md4qsCl4GUyNttPQqAbIT2lD7MEz+WF4NkmBVujDUpQhREa3jLEoF2nMN2J0L9U/N
PRA8TGeA9KcgP0gXB+qYxH0GHJsMTiwVJNZFCvIVS6VaSTwxodD+8wJoL4V2HqEWIqNf1b9IiOze
uedZGVkl85Berp+skPBl0iWrm6uHdBNQA3MOSd5PGigvc5OVMs/cefZp0sB5iJJ9lOyTHQTykL1c
LuGZubnbWZ50wDv80Bv8zp8QDZzP6oAPECf8MsBAVERLjDC8GtDg4eSmIwr4vt9JHPC7CDPoqomJ
WImNsMRC7FCOfh4kDzKtzI1sDnua6+F+Lfs0Pypn5JfKnxZuUWQpblVWKJ9Q7VQb1I9olmme1ryr
jWjhFwNQO5ndz/0ETo8cvLlWOgV2P15gK7Ap6hpVzDRpJwIzCi/yMzdAIxhmVDTJ2FClnOt1a417
e5neFoGFzr/2+msbXn/tBcAXmOhr0+emDTPnpk3V1dFocRFjDBglsuhYQZDLg5mFbGVlRUVpacky
tryskA1m6oDC5WXL2MplXGmJl2WoKmpKUlCmUu4n76/jumfk7BFfbPfKLNbn1lk0POPnfXZFfXeh
WR8oz8kRoz5BJWd5hVyRW9OS2bKxxjX7OCeoBZXfZnPpeJmgUSj9TrNTJ5tt5XUX/srr/t4s2/n3
27jisq2rKvhPqhSsTC5/ym0P1bYGnBG/WW82aHS82WaSC2aTOlzfMXNCYXfZBZVK0BhUSofDplCq
5BrDTBVh556fuyDL5i0kk4TJV59kj7JXkoEIvRmLD4g1DoOZ6QpptFlarS2sVgVVwUxHVpaKsWUF
w6FpUQ0s51FpGZssh2gYG6fRmDyrTHE+nhNxNDQ0mKqjBDbsEXu1yV5d6uqaLjGWMtGzJdXOaGlp
qeHo8bNnjUypAQCsHnGLgf95tcVFgyEbHZZCNpsLcDoOBihcUcng+NiFIBOQZXGcOSfT5jcqmKKZ
Xz7Ea+0htzdLJ1ez9wkGV44nkOtUsTczs/cxz9bb3DoZJ2iUTO3st1VaBcfr3DZZUq1TcJxCr75x
5giNhlVzF5gLYDsriS2xnN5K1CqrmqhkvGFVyhxgAyb6zdKSYriQVf9jHu0BbTY4mxlbLUC8qW2Z
DpffJGfPM1pbwOHwm+WsU9AIPA8P2avpFAGX752b5t7knodxrCU3PslexR6bH8nTSo/CO8V86bFw
drhWMcU8+gTRhxkzFy6eYr2i3UyUtdmesJwLtOe95+qoOC/qurgV0hjCoDVMN0hNn34FxvK16VJj
qWHaWF1Nu2H7AAVpv9JBhP2DEJGVltjsNKYgTAQhHIaQklktXpaGWCWXL8vKs7gM0B5ty4bx2p7t
y+zWaOeOGwYHryoxy8I5FrdBxvwwuqulYk1zsQ+uiSsilXuGOkxOo04mqJVf9K8Q86rWH6ivuum2
G/Y0tzWsM+g4hUb4QyxW2n/J+O78YKw6WL/zVvgZFENWgNVWc98h5eT4EptlZBAjNY8np+zdHB/P
8Kp3oh3+d3KI0+BkVZzTckEMdVEjubpmXpH8fLoBEhsi00x0+mw1zCRuMePDFgVr0cmEugHaxEZN
AtayWnQwE9FJB2znlXGrBZ1Zo/MWd9aII+1FXu3awcYNjXkGhVKm1DrqutcX33uPtWTl+B3DOR2N
5R6BW2kKB2yeLG95fOfureGtO/y5fr1OEwh6nVke8/331d9ycuISEVzMZUr5kqwabv3yScNSu4iq
QEFDJmQoMyupeVzWzHwuuxWESgWR64rey+ioWepA4D8wGYD7U7uUlhw9rqMh7xadH7joP3iRLGUJ
1j4fLWk3kkxWyRVwWXlWl4Fn/ZIX1a6pDVkFW1HnjhMDkRXLyqxbGJXF73T4TDw7ew6cqTzeUuw3
NLUvdKUHA50Nub6yWHuHr+bjt5y4pMkcKHQys4KWBqBWmNkcaytetWPf7sLhrXU7bl0DUdgF/nQX
RGEhrJBLPOrLeSWVchlRTrE6URk0arycxRKMTrFa0UqC8qcrK/O8RqOm5KW8Ds3PRG/KtSD8jNVR
I0yl4FavwBoVtVdD/Nml+DN/gFJpjwrK5VbLAm9ihYXRCGFYRqOQFai/cXeJ179y2w6BH9kjbuks
UiqVMoVWoanvHy0Z/OhgvrNi9aHPbO4/2Jn5UE9H42hXpXHL9hvjQfaXsMrlBZa5R3eYbWatRpXh
cSk1drMmp++K/sbbb/3olmV5Tb2VpQ0FK8aqXAV1sPrUz56U9fOHyVq4n619osBo639LXL5jilku
GodqDPrCt9aSmract2zdyhU56fCMNMCMdPbszNmzhlfBOuBXsHqU2ARp0qezZ2r6zw6nowWnFXM6
fEpTq7bdRqNKloo1mIeY1PyL0y/3stsoe5RVWWHa9RnkzN2zl0waa/p3xwqqBZmMk8kVKkHQ6q2G
vPqIR3P/MZUaFnGNVnWl01DXv7vFnp/l4nkZK+MVarlgcgZsubW5XrWRvYY3ZOR5vCEjy8sNGble
b5aJ5Z7IsL9/u0KtkMngwVnff7j/SG+2Ts5rVDKz1W7RcBznquyv5Uq0JoXdYTOpj/Qd6c3hYR3n
DSrOaHWYNXJBAJXqdYw1I2xXqezhjIyQU6l0hsArm2ZPSmtDHdyTP5Y2ZGqV15aW1dXV9/Z4Muoz
6pfTkA6rc0lGWR3JkPGV7b7e+lJZlvheUUeO8m2Tyb7ifFaX/U2R78apTxqBKJmOwEjQKKeLXGn0
7PRZWN4hyukCL42QW8z8H9cILszToYHVa/GQVlRULnTif7OkeAzLd39iqO9juXo1wwtqg1KTVTfY
WLGmMVdlzFQbWtfvru7c1pCB08M/LDOrm0t8etithaW5obDnsu6cgF1l1sttNodZbXXZbPkt0XWX
BUKdDdklaw7Fam45eWJX08KFp6Rv5749BZG2Um/9zpNrYN1pmLvAJfh9pJEcXTIewUJnViNsHYJq
h7qxTMab3xOrO4JOFckqlHtzW70reFyaqa1h7aFmZ6KwqzKWvoCbC9cHLkdn1ZTPmysq0nvb+UhK
7Z4oL2BMWC1ygSuGmKATp5Fn9sA2xB3xle/Z1GnsYVWWgMMJYpZRsUprgKrImB5ep9fLDS3r99SK
a6tdCsGZdnM239Xo8BQFLct23Raf3ZcW81UKDY0DjWJ2u6uivMgU7GzICzWuLctqCdK1CSzH/ImP
wskil+xYbLvHcn0WL5liN4tqlc/rtfhyZVlOPUwnX+bFrHZnakvzete0UTLauVemjbCdgZXoif9G
l06iiyaHNDe/+PyWN2bkeT1hE0S1yQ2pkJmdffeiSU7DaiNZhGdk31sSoH8vTveduxZ2+7TvAt2b
0J7+BXzESpYv7qdogP2lqCKwxYQNZmvKIaQ+uVJOAA60NBM6kQqX9L5Y+NXFBi4cs/khujgWqfbw
v4a1bR15YEl7qlsKCgqr7bbMwMrMdWQdvBx2l6qqTHVfhzHnPbG9o6oQAobYCtSZ61a2VOtKl7WX
rsiY9+SUK8+cbQBPjp6FfaaxtATWvLMAsGOWhkgMfNi6lno3rm/zywR1+CWi1L475ez2iz7Pb2Vw
HTDKWfD54vqSS4Y6qMenF4c9Al9SV7oDhekweJxRmj0Wq1svYzL1sfW7qutWV7o4S+v6nVXNa6sc
i0LBU+YSV9RfcnL17O60M7D53hpnfftiIXcdeAgcQjTCw5mwzQ1Ud0eDKxrywk0DZcEW+KF/amaB
UaohR5aMUrjY5XKHZTqO6BkLp9eFrO+JFR0hOOq49MVhhT/S7l8BCy2e3XBygeMaHQ4YgvlxsP33
pWi40Jli4dzyb03NJRTCPpgz0tOKwJfVL51UFlmzZeO+empD9hz0eub7F03mq7HVd/5bk+U2D8As
shL2aS+BlezwvxoGFtsJ7mxYn6gkDoODNXOOLLokqjWet80duW+JwsV9GWxn6ZFomu5kVf+YLRkB
txfpvaqAtwfpo46MeymjeuDQJzYMfWwgz12zRkoN5j1qLe6uqtvcVR0y2YpXVtUP0xS7v+POm6/c
WFk4cKy3486brtpYGR04trakp9Ibad+852BVSU+VN9Kxee8B2FWdn72N+wH0LQ9277cu7puoDZRX
aLTl2nKH1u6AqdIrZkTsmorygEwoei/cYdc6/DKTu93UXX1+QV+lAMWV5pXpKJ00cXmH1Z323vXB
K1hglewF/oEHwVT8pe5YBMFG96sy7ge4LBd0LCuzxVklzKN22LUzM6y0wYfg0jXDMXHFVjHjEVik
syv2DnUaA9GdLeVwPAzo2WtrbrntxM5Gkz/imu1Jry2y38GhEEJpMtDZmFe25lB3pK0sow7W5s+3
xkr6d4zvxUhi/wp2LCU7l1hRlWM0ekwZxJOhmWIcokEs6DBlGHM82XJ7ZrsdQyi1PNO1mRpMmsTO
wDXJv1dfYB9pOz5voyVzkw1aBuuEVqEw272WzMHVy43dFydzutqkZp6AvaGjN9sY9Nrlcu4zMrvX
7zYJKqF22019s3vScXNxVrk/d0V1Ji8o5XI6lyjnptnfgwVaySOLLfAUTCEzcNFQBmeZiK0W/pGg
vkx0x17M8fNFvMhzvOpFscP/Xg7JM+SxGi4v+rro/ufHZZjoYQdzlt6+GaYNUjhl/W/qQhOmz9As
3CtAwKXuhhZvIGHHQ8+RcD7wsnYb+3u5Wq/UBIqaC/NbCh3lPRu6yyu33ro22tdcpFUIrFy6Qcus
XFVf2V3mLOte311etum63vDyuny1mtupCvhtZofFGan05pTn5db2NbQeXlOss7k1CqNGYaObdrfP
7S6oC+SVR/Kq+8SmfX2FGpNNraKW3jf3J/YbskdIjEwstrSYW5EfqYw0KZSNysZKZSRSVGmvtJOi
prbKxjpF/lvKSKCiTX9eDMxPTGDO6ZIXqqthMYVnNGqqTgUsnJikuza3aP4ApdOeGOT+9ckRTlt4
qmJL06cqAU6QNvYbrFyl1il/NSaTR4rcOR6bQqGE05Gg8OdF7VWrqtwsz3NjR9UaucasvTLCqGHN
lHaUkV/pVdxJpdVmM6pmVdYyY2lUqVKq4ReCXocg6NRyR2lXhcbj9+uYC1qzLuS3nYNrOplMqRHO
0RtmsKPsBtgddpCNpOIMWQtHSUtPjaboLW001JrTWNNmPh/qgg1T2sjSaZK8EDkLVpuhJ8riovkt
ceDD9jwAx1Dzon0id60UlA4/bBzuno1+KHP4YScdYZu9Rnk/bC7hoEiPjLzRkwMpEzu/R+OsH9ZO
bhfTsWQLCh64F1bEn3NPwb3FwbRxUifETLWDFNeVFAeznA6idmQVO4N1JUo4G3rb88+LBmpOumeg
d4V4AIQ96Fl6IDFKtxT2D1AGnC1t9vkjXcX8Rag0DqnbwfSOm8tnVCaP1eLW82zAENuwp7plQ7VT
KexJbcrgdLJbLldLp5OhTlM3o5b2aiB2gh/K6LX6Q5mdYk6ocbA8EAuyZel91czLriqPtzjLUr/z
9gHmprQYLATfPnBm+B1cMdm12EJPwVcnncRDgmyH6OQ9jmxemw3/4AsQRfCdwrZM5TuipTN1Xi5p
mC6BNQHcLRo1VsPcZ3jT8CZdRDX/XDc1m8HXCwID/iXdWATmv32oZDAtK4U8zszKZKzcaZvlmLs0
Glau0OiUMz80m2QynoUvLk1alsxer9VyvFKjV7KCWc/dzputcCuW7Zq5w2RU2Gx2k9pqEmx2C6/Q
Gh0GdofRpLTZ7UaViTBzt8++zlTAr77sJPOUBvYOK5M6wfxVphf6mZO6b44Y/gbfqEx/E6IINoDQ
aJge4B7enP6ipKI0elqbBxsbBSc8ZecNzlCGM2BWPFy9v+r7ei2vMKgZ86Vuv0HOa81g8Y65d5k8
6Y2+p2BXNg5fMZnhf4UIC+OXXrfS1y3eajF5vErvyM/MyLIoeLXenhv2BC3Cp3ThnEyHRmF2Gw3Z
4YBdqzK76Ozrh5F9ng+QZvKFxTf5Z0gMfo6s1LNdJMboOXGKLXrCZMom2UTrmmJHk1Xawq8wRSSL
+Jh8UekyN3CK0j6TOMWET4uKfhzyma/RqJh5JXWBB+MON3jFRbB1jLgfl6r9EHXAXRcUHJS6G4Bb
Yrp8wXGOTx/eU5dcKXtTbxEE6hqrOLlSa1DNlGtNKp7TOKxM18p9XYUuhT7UUla9rb9arYJLJkGp
FtSN6/fWDV3Z7tEEG8ZuHrnA5hh12+U2u8OkgfVRpfKHs01MVsuhrWvaau2OyiJ/Zm7QYlaYbTaL
WVBnZTorVg1Fcldv2nHk5v5zTvpdHwPf/8H/+oWPHM6ypGVNd1+sO9I8vHP75vHtBe0HIDFC/h8A
4yCVCmVuZHN0cmVhbQplbmRvYmoKMTc3IDAgb2JqCjg5NjMKZW5kb2JqCjEzIDAgb2JqCjw8IC9U
eXBlIC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQgL0hQQ1FOTytDYWxpYnJpIC9G
b250RGVzY3JpcHRvcgoxNzggMCBSIC9Ub1VuaWNvZGUgMTc5IDAgUiAvRmlyc3RDaGFyIDMzIC9M
YXN0Q2hhciA5NiAvV2lkdGhzIFsgNDg3IDU3OSA2NDYKNjMxIDIyNiA0ODggNDg3IDUzMyA2NjIg
NDU5IDU0MyA0NTkgNTI1IDQ5OCA1MjUgNTI3IDUyOSA0NzEgMjUyIDUwNyAzMzUgNDIzCjI1MiA0
NzkgNjM0IDc5OSA0NTUgMjI5IDM0OSAyMjkgMjUwIDUyNSAzMDUgNzE1IDM5MSA1MjUgMjY4IDYx
NSA1MjUgNTU3IDUwNwo2MjMgNTI1IDQ1MyA0MzMgNTA3IDUyNSAzOTUgMzA2IDU2NCA0NTIgNDk4
IDM4NiA0OTggMzAzIDMwMyA1ODMgNDIwIDg1NSA1MTcKMjUwIDMwNyAzMDcgNDYzIF0gPj4KZW5k
b2JqCjE3OSAwIG9iago8PCAvTGVuZ3RoIDE4MCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4K
c3RyZWFtCngBXZTNjpswFIX3PIWX08UoDsZkIiGkaqqRsuiPmvYB+DEZpAYQIYu8fb9jMlN1Fgfp
4Hvt8xnjzfPhy2HoF7P5MY/NMSym64d2DpfxOjfB1OHUD8k2NW3fLHcX3zXnako2NB9vlyWcD0M3
mqJIjNn8pOWyzDfz8Lkd6/BJ777PbZj74WQefj8f45vjdZr+hHMYFmOTsjRt6JjuazV9q87BbGLr
46FlvF9uj3T9q/h1m4IhER3bNVIztuEyVU2Yq+EUksLasnh5KZMwtB+G7g1117xWc1KkvqTY7g2P
lkdqeVQ2dt5rPnT4rTpSFVetSe32v2Jv10B1d0+SUi5Z6/cl66VYZG22lXVYhA2yGRZhd7I5FmG9
7A6LmCqTfcIiRp3sHouwnWyFRdhctsY2sTeVbbHI2h3xizRgkbV5XKgrC8cOYpXKEV/qaqvMjvgS
owrpiC+xkAAd8SVrqcGyvxILKbODRqJXmR00EvsZF4LGRaI8LkR8FxHyVsUgSPTWstBI2LguNG4l
iutC41aiRsUiQiwkmwEn0fskC5yE1V5lwElkFiC7G4VV5gw4iWIR8WWi4K1kgZPYjTgKHJ9SU2lj
2aEoigWYASdRHGMAl62AQsiAk+gVYAachI3FwHFmsGw+o8BJjGpmD5yEVSoPjWTdXqk8RBKj4uU0
RTGVvoKHSGKvdJA8NBKj+goeGh+/EWcPC5HE2Xj7D9aDn3/4DzycPsLBRB9gEmdZB9ADJvE7idUD
JjGqT+0Bk7CKkAMmkYiA/OJvP5v+dt1K77dIc51nLpB4dcW7RXdGP4T3220aJ00Q9Re/Z0jcCmVu
ZHN0cmVhbQplbmRvYmoKMTgwIDAgb2JqCjYxNwplbmRvYmoKMTc4IDAgb2JqCjw8IC9UeXBlIC9G
b250RGVzY3JpcHRvciAvRm9udE5hbWUgL0hQQ1FOTytDYWxpYnJpIC9GbGFncyA0IC9Gb250QkJv
eCBbLTUwMyAtMzA3IDEyNDAgOTY0XQovSXRhbGljQW5nbGUgMCAvQXNjZW50IDk1MiAvRGVzY2Vu
dCAtMjY5IC9DYXBIZWlnaHQgNjMyIC9TdGVtViAwIC9YSGVpZ2h0CjQ2NCAvQXZnV2lkdGggNTIx
IC9NYXhXaWR0aCAxMzI4IC9Gb250RmlsZTIgMTgxIDAgUiA+PgplbmRvYmoKMTgxIDAgb2JqCjw8
IC9MZW5ndGggMTgyIDAgUiAvTGVuZ3RoMSAzMDM3NiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+Pgpz
dHJlYW0KeAHVvHl8VdW9Nr723mee5zFnyknOSTiZ5wGSA5kTAgQIJEAgYUZlHmUQnBWlTqjFOrXW
ocVqOExB2kp76bW2xdpeq520ejtobWm1oyI5+T1rr7NCQL3v+/n8/rkv8OR51tpD9vqu6bu+e222
bNq6gujJPiKRkmVrhzYQ+U/Fs6AvLtu2JczSuasJUWat3LBqLUtPuokQrW/VNdeuZOnKHxGSfGH1
iqHlLE0ugqtWI4OlhQpwzuq1W3awdPnjhAiGa9YvyxyvbEb+bWuHdmR+P/k10uF1Q2tXsPO33UbT
GzatyBwX+nA7y4b1m7ew4/bp4JLLj5vwK5DbJISJhfwHURMRXExwR+vdwg1EgaP0uPLRkQP//qF1
iXnyP4lXgwxCTv9pN8pDyEu3PnPHJxdG79D+WX0CSS3uwP7gOvWjo78kRPf4JxcuPK79s3ynzEGZ
mlJaKTwi3nRM6xE6IW7k4gYurudiHxd7ubiOiz1c7OZiFxc7ubiWix1cbOdiGxdbudjCxWYuNnKx
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
8F8uVaIzKEn3Nmz5+tVTN/bVmTUqyWTUVs5Z3zxteXN2Ys613btQV2qV3qTdOG1NR9xX0VNZNzS9
DK6MWsI4bq/rXZ9ccNvCwnDDgvqm9bMKhU39d62sdgZCJhPms5yscG44u6G3rLovmY3u4bR7zers
ZH91XkdVKJoXVZr9LrPbarKjnovmbm2bsqanVi+qK2ddDV9jsVAjPSJ14P8y8JPAMWJSO/XfFHT4
Dwqs+OnBWPg6Jr3yc7K3wXxJ+ZtglzXjWbKU9IjbPIq4qsMq/sPmmKglKS8UysvJzk7Ppwv43Oxs
2jtX4P9ZGFFEMMYbjtqyLBhzz1EvigUExscJQaATYFWVy01fs48oVDrVxb/qLVoFZiC9ePPoXszb
Ij6g0EsOnVFssPodeim9hc6QWJM6DUphilCp0ruiAUxGoiq9WRlHUBN/BHxdLchKRfC/XrTPauqZ
MTPRNHTNmqWb1vx/MANj6AplbmRzdHJlYW0KZW5kb2JqCjE4MiAwIG9iagoxNzE2NwplbmRvYmoK
MTgzIDAgb2JqCihNYWMgT1MgWCAxMC45LjUgUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagoxODQg
MCBvYmoKKFBvd2VyUG9pbnQpCmVuZG9iagoxODUgMCBvYmoKKEQ6MjAxNTA2MjMwMDE0MDBaMDAn
MDAnKQplbmRvYmoKMTg2IDAgb2JqCigpCmVuZG9iagoxODcgMCBvYmoKWyBdCmVuZG9iagoxIDAg
b2JqCjw8IC9Qcm9kdWNlciAxODMgMCBSIC9DcmVhdG9yIDE4NCAwIFIgL0NyZWF0aW9uRGF0ZSAx
ODUgMCBSIC9Nb2REYXRlIDE4NSAwIFIKL0tleXdvcmRzIDE4NiAwIFIgL0FBUEw6S2V5d29yZHMg
MTg3IDAgUiA+PgplbmRvYmoKeHJlZgowIDE4OAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAyNzQx
NjYgMDAwMDAgbiAKMDAwMDAwMDg2NCAwMDAwMCBuIAowMDAwMjI2MzU1IDAwMDAwIG4gCjAwMDAw
MDAwMjIgMDAwMDAgbiAKMDAwMDAwMDg0NSAwMDAwMCBuIAowMDAwMDAwOTY4IDAwMDAwIG4gCjAw
MDAwMDIyNzEgMDAwMDAgbiAKMDAwMDAwNTA0MyAwMDAwMCBuIAowMDAwMjQwMDEyIDAwMDAwIG4g
CjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDIyNjU0OSAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAw
IG4gCjAwMDAyNTUzNDYgMDAwMDAgbiAKMDAwMDAwMTEwMCAwMDAwMCBuIAowMDAwMDAyMjUwIDAw
MDAwIG4gCjAwMDAwMDIzMDcgMDAwMDAgbiAKMDAwMDAwNTAyMiAwMDAwMCBuIAowMDAwMDA3Mjky
IDAwMDAwIG4gCjAwMDAwMDUwNzkgMDAwMDAgbiAKMDAwMDAwNzI3MSAwMDAwMCBuIAowMDAwMDA3
Mzk5IDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDIzMDEyMiAwMDAwMCBuIAowMDAw
MDE3ODk3IDAwMDAwIG4gCjAwMDAwMTkxMDIgMDAwMDAgbiAKMDAwMDAxNzA4NSAwMDAwMCBuIAow
MDAwMDE3ODc3IDAwMDAwIG4gCjAwMDAwMTAyNzMgMDAwMDAgbiAKMDAwMDAxMTQ3OCAwMDAwMCBu
IAowMDAwMDE5MTIzIDAwMDAwIG4gCjAwMDAwMTk4MDYgMDAwMDAgbiAKMDAwMDAwOTA0NyAwMDAw
MCBuIAowMDAwMDEwMjUyIDAwMDAwIG4gCjAwMDAwMTMxMDMgMDAwMDAgbiAKMDAwMDAxMzc2MiAw
MDAwMCBuIAowMDAwMDE1NDMzIDAwMDAwIG4gCjAwMDAwMTY2NDAgMDAwMDAgbiAKMDAwMDAxMjI1
MyAwMDAwMCBuIAowMDAwMDEzMDgzIDAwMDAwIG4gCjAwMDAwMTM3ODIgMDAwMDAgbiAKMDAwMDAx
NDk4OSAwMDAwMCBuIAowMDAwMDExNDk5IDAwMDAwIG4gCjAwMDAwMTIyMzMgMDAwMDAgbiAKMDAw
MDAxNTAxMCAwMDAwMCBuIAowMDAwMDE1NDEzIDAwMDAwIG4gCjAwMDAwMDg0NDEgMDAwMDAgbiAK
MDAwMDAwODk1OCAwMDAwMCBuIAowMDAwMDA4OTc4IDAwMDAwIG4gCjAwMDAwMTY2NjEgMDAwMDAg
biAKMDAwMDAxNzA2NSAwMDAwMCBuIAowMDAwMDA3ODMzIDAwMDAwIG4gCjAwMDAwMDgzNTIgMDAw
MDAgbiAKMDAwMDAwODM3MiAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAyNDUyNTkg
MDAwMDAgbiAKMDAwMDAwMDAwMCAwMDAwMCBuIAowMDAwMjM2MjY4IDAwMDAwIG4gCjAwMDAwNjY3
MTMgMDAwMDAgbiAKMDAwMDA2Njc2NiAwMDAwMCBuIAowMDAwMDY2ODE5IDAwMDAwIG4gCjAwMDAw
NjY4NjQgMDAwMDAgbiAKMDAwMDA1MzU0NSAwMDAwMCBuIAowMDAwMDU1MjEyIDAwMDAwIG4gCjAw
MDAwNTgyNDAgMDAwMDAgbiAKMDAwMDA2MDE0MiAwMDAwMCBuIAowMDAwMDQ1ODU4IDAwMDAwIG4g
CjAwMDAwNTM1MjQgMDAwMDAgbiAKMDAwMDAyMTc0MCAwMDAwMCBuIAowMDAwMDMwMjAwIDAwMDAw
IG4gCjAwMDAwNDAwMTQgMDAwMDAgbiAKMDAwMDA0NTgzNyAwMDAwMCBuIAowMDAwMDE5ODI2IDAw
MDAwIG4gCjAwMDAwMjE3MTkgMDAwMDAgbiAKMDAwMDA1NTIzMyAwMDAwMCBuIAowMDAwMDU2NTIw
IDAwMDAwIG4gCjAwMDAwMzgxMjkgMDAwMDAgbiAKMDAwMDAzOTk5MyAwMDAwMCBuIAowMDAwMDMw
MjIxIDAwMDAwIG4gCjAwMDAwMzE1MjYgMDAwMDAgbiAKMDAwMDAzMTU0NyAwMDAwMCBuIAowMDAw
MDM4MTA4IDAwMDAwIG4gCjAwMDAwNTY1NDEgMDAwMDAgbiAKMDAwMDA1ODIxOSAwMDAwMCBuIAow
MDAwMDYwMTYzIDAwMDAwIG4gCjAwMDAwNjY2OTIgMDAwMDAgbiAKMDAwMDA2OTUwMyAwMDAwMCBu
IAowMDAwMDY2OTA5IDAwMDAwIG4gCjAwMDAwNjk0ODIgMDAwMDAgbiAKMDAwMDA2OTYxMCAwMDAw
MCBuIAowMDAwMDc1NjI5IDAwMDAwIG4gCjAwMDAwNzY4MzUgMDAwMDAgbiAKMDAwMDA4MjYwOCAw
MDAwMCBuIAowMDAwMDgzMzQ3IDAwMDAwIG4gCjAwMDAwNzY4NTYgMDAwMDAgbiAKMDAwMDA4MTc1
OSAwMDAwMCBuIAowMDAwMDY5ODk4IDAwMDAwIG4gCjAwMDAwNzQzNzkgMDAwMDAgbiAKMDAwMDA3
NDQwMCAwMDAwMCBuIAowMDAwMDc1NjA4IDAwMDAwIG4gCjAwMDAwODE3ODAgMDAwMDAgbiAKMDAw
MDA4MjU4NyAwMDAwMCBuIAowMDAwMDg3NjY1IDAwMDAwIG4gCjAwMDAxNDE0MzcgMDAwMDAgbiAK
MDAwMDE0MTQ2MCAwMDAwMCBuIAowMDAwMTQzMzA3IDAwMDAwIG4gCjAwMDAxNDMzMjkgMDAwMDAg
biAKMDAwMDE0NTIwOSAwMDAwMCBuIAowMDAwMDgzMzY3IDAwMDAwIG4gCjAwMDAwODc2NDMgMDAw
MDAgbiAKMDAwMDE0NTIzMSAwMDAwMCBuIAowMDAwMTU0MTYzIDAwMDAwIG4gCjAwMDAxNTQxODUg
MDAwMDAgbiAKMDAwMDE2MTg2MCAwMDAwMCBuIAowMDAwMTY0NDI4IDAwMDAwIG4gCjAwMDAxNjE4
ODIgMDAwMDAgbiAKMDAwMDE2NDQwNiAwMDAwMCBuIAowMDAwMTY0NTM4IDAwMDAwIG4gCjAwMDAx
NzA1NDMgMDAwMDAgbiAKMDAwMDE3MTc1MyAwMDAwMCBuIAowMDAwMTY5NzE4IDAwMDAwIG4gCjAw
MDAxNzA1MjIgMDAwMDAgbiAKMDAwMDE2NTcxMyAwMDAwMCBuIAowMDAwMTY5Njk2IDAwMDAwIG4g
CjAwMDAxNzE3NzUgMDAwMDAgbiAKMDAwMDE3NTA5MCAwMDAwMCBuIAowMDAwMTc1MTEyIDAwMDAw
IG4gCjAwMDAxNzYzMjIgMDAwMDAgbiAKMDAwMDE2NDgxOSAwMDAwMCBuIAowMDAwMTY1NjkyIDAw
MDAwIG4gCjAwMDAxNzYzNDQgMDAwMDAgbiAKMDAwMDE4NDM3NSAwMDAwMCBuIAowMDAwMTk1MjAz
IDAwMDAwIG4gCjAwMDAxOTg4MjggMDAwMDAgbiAKMDAwMDE4NjI3NiAwMDAwMCBuIAowMDAwMTk1
MTgxIDAwMDAwIG4gCjAwMDAxOTg4NTAgMDAwMDAgbiAKMDAwMDIwMDczMyAwMDAwMCBuIAowMDAw
MjAwNzU1IDAwMDAwIG4gCjAwMDAyMjE5MDMgMDAwMDAgbiAKMDAwMDE4NDM5NyAwMDAwMCBuIAow
MDAwMTg2MjU0IDAwMDAwIG4gCjAwMDAyMjMxMDEgMDAwMDAgbiAKMDAwMDIyMTkyNiAwMDAwMCBu
IAowMDAwMjIzMDc5IDAwMDAwIG4gCjAwMDAyMjMyMTEgMDAwMDAgbiAKMDAwMDIyNDkwNyAwMDAw
MCBuIAowMDAwMjIzMzU3IDAwMDAwIG4gCjAwMDAyMjQ4ODUgMDAwMDAgbiAKMDAwMDIyNTAxNyAw
MDAwMCBuIAowMDAwMjI2MTExIDAwMDAwIG4gCjAwMDAyMjUxNjMgMDAwMDAgbiAKMDAwMDIyNjA5
MCAwMDAwMCBuIAowMDAwMjI2MjIxIDAwMDAwIG4gCjAwMDAyMjY0ODQgMDAwMDAgbiAKMDAwMDIy
NzAzNyAwMDAwMCBuIAowMDAwMjI2NzE2IDAwMDAwIG4gCjAwMDAyMjcwMTYgMDAwMDAgbiAKMDAw
MDIyNzI4OSAwMDAwMCBuIAowMDAwMjMwMTAwIDAwMDAwIG4gCjAwMDAyMzA2NTYgMDAwMDAgbiAK
MDAwMDIzMDMwMCAwMDAwMCBuIAowMDAwMjMwNjM1IDAwMDAwIG4gCjAwMDAyMzA4OTggMDAwMDAg
biAKMDAwMDIzNjI0NiAwMDAwMCBuIAowMDAwMjM2NzY0IDAwMDAwIG4gCjAwMDAyMzY0NDMgMDAw
MDAgbiAKMDAwMDIzNjc0MyAwMDAwMCBuIAowMDAwMjM3MDI2IDAwMDAwIG4gCjAwMDAyMzk5OTAg
MDAwMDAgbiAKMDAwMDI0MDI3NSAwMDAwMCBuIAowMDAwMjQwNTM3IDAwMDAwIG4gCjAwMDAyNDUy
MzcgMDAwMDAgbiAKMDAwMDI0NjAyMSAwMDAwMCBuIAowMDAwMjQ1NTI3IDAwMDAwIG4gCjAwMDAy
NDYwMDAgMDAwMDAgbiAKMDAwMDI0NjI2OCAwMDAwMCBuIAowMDAwMjU1MzI0IDAwMDAwIG4gCjAw
MDAyNTY0NzkgMDAwMDAgbiAKMDAwMDI1NTc2MyAwMDAwMCBuIAowMDAwMjU2NDU4IDAwMDAwIG4g
CjAwMDAyNTY3MTYgMDAwMDAgbiAKMDAwMDI3Mzk3NiAwMDAwMCBuIAowMDAwMjczOTk5IDAwMDAw
IG4gCjAwMDAyNzQwNTIgMDAwMDAgbiAKMDAwMDI3NDA4MiAwMDAwMCBuIAowMDAwMjc0MTI1IDAw
MDAwIG4gCjAwMDAyNzQxNDUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAxODggL1Jvb3QgMTU0
IDAgUiAvSW5mbyAxIDAgUiAvSUQgWyA8MDZiYzJmMTVkNTgwZjMyM2U5YzE2NmMwM2E5YmU4ZDU+
CjwwNmJjMmYxNWQ1ODBmMzIzZTljMTY2YzAzYTliZThkNT4gXSA+PgpzdGFydHhyZWYKMjc0MzAy
CiUlRU9GCg==

--_004_D1AE1DC8B3290kwatsenjunipernet_--


From nobody Mon Jun 22 22:16:29 2015
Return-Path: <phil@juniper.net>
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 E2A551A1ADB for <netmod@ietfa.amsl.com>; Mon, 22 Jun 2015 22:16:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.798
X-Spam-Level: 
X-Spam-Status: No, score=0.798 tagged_above=-999 required=5 tests=[BAYES_50=0.8, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 q3t_TYg7ZBJM for <netmod@ietfa.amsl.com>; Mon, 22 Jun 2015 22:16:26 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0127.outbound.protection.outlook.com [65.55.169.127]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 732C11A1A78 for <netmod@ietf.org>; Mon, 22 Jun 2015 22:16:26 -0700 (PDT)
Received: from BY1PR0501CA0025.namprd05.prod.outlook.com (10.162.139.35) by BLUPR05MB708.namprd05.prod.outlook.com (10.141.207.24) with Microsoft SMTP Server (TLS) id 15.1.190.14; Tue, 23 Jun 2015 05:16:24 +0000
Received: from BN1BFFO11FD056.protection.gbl (2a01:111:f400:7c10::1:102) by BY1PR0501CA0025.outlook.office365.com (2a01:111:e400:4821::35) with Microsoft SMTP Server (TLS) id 15.1.195.15 via Frontend Transport; Tue, 23 Jun 2015 05:16:24 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.17) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.17 as permitted sender)
Received: from P-EMF03-SAC.jnpr.net (66.129.239.17) by BN1BFFO11FD056.mail.protection.outlook.com (10.58.145.11) with Microsoft SMTP Server (TLS) id 15.1.190.9 via Frontend Transport; Tue, 23 Jun 2015 05:16:23 +0000
Received: from magenta.juniper.net (172.17.27.123) by P-EMF03-SAC.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.146.0; Mon, 22 Jun 2015 22:16:22 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5N5GLD62052;	Mon, 22 Jun 2015 22:16:21 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5N5Eeve014975; Tue, 23 Jun 2015 01:14:41 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506230514.t5N5Eeve014975@idle.juniper.net>
To: Kent Watsen <kwatsen@juniper.net>
In-Reply-To: <D1AE1DC8.B3290%kwatsen@juniper.net>
Date: Tue, 23 Jun 2015 01:14:40 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD056; 1:KPMriEHKkZU8ErL0nG8hdDyiNCzJ1cvZ8QxZE0CMsGWP9Bul7rldn4fiyJfdc7RRAm1eT5jDG2ljgVNP6BeJRFbGhCRVqdfOvflPLz4K75W84ip0xuxUeNrSz345JyocirZDah4PZzQO2cUTPjYDDmXE1k6upGh2vvmy+A3WxBQAbU6ifuMHEZhQ2GX698+4VkJnPhIb8z8d0tAzEJnTeVGFNYxj1Mu0xc3DbjHsbp/lOxPLv60GLTBvExrC0mmD0c8byNxqT+i7aY+Am5o00j16unGUTmZTs6jh6CHfiTYs0FyiA+bTxroDgcRhSZbi
X-Forefront-Antispam-Report: CIP:66.129.239.17; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(189002)(164054003)(199003)(189998001)(110136002)(62966003)(76506005)(86362001)(5001960100002)(92566002)(87936001)(6806004)(5890100001)(53416004)(105596002)(5003600100002)(54356999)(46102003)(50986999)(50466002)(2950100001)(77096005)(106466001)(450100001)(77156002)(48376002)(47776003)(4001450100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR05MB708; H:P-EMF03-SAC.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB708; 2:glUzToW0IDl2u/8+DsqWRWX3+78v/SbCMCBJ6qiqfdXJWi+FA/2EP3psA0LNZ7y2; 2:yVxgdRTrSt/BZyAmyKREnAXVl1glY2vbGSIPwVHGGdrEVOMgW2YoVVvdMentmoLgmySoIVyA1u7b3qYuzv7OvYSJoHA8m7ls7+52oUUvqgJ86F0cub+ownO62pbssnl1N6HPwOBXpV7CFBSoJHnT4hcLqwIzgeSHQI+z4oZNDFPtPvFX2s/Hu60d+Z2IXNUNarQrCFcR0xoOEhLALC+/lG+5B0ajHiU3H41D8h5A8/c=; 6:g/DpIm4AuthkNOGPV9dwGcxn8DVmjH53jM2z2Y4KCBUNhVmwUps798vlo8GtKFno5ZPTgSwj1ZLt7HTaOsE6c4mF57R8hxJ2rETynT3sxq0DUdn/e/6yMtsdvrCcFeyfF/Rh1b5zMvFKvllZwbY2PEVVbnDo+F5n4M7YHks9C59GyCZ3f3+eTYE/QI8aqKCnZUx/TcH2kfPAfKeaL4ftgBkKh5JbULF8GfHVIE1JW6OQki0ZjG0LJ9vkiMjxoMoQuramxVFLfUVHKKUtsOG/QUUvHwW55LCZrPx0bz2i8xRHOTSwGD2B+u7Y9Yws4JjWaybUEAvykOqmyLrEioXseYj8lJxAyVDYAiskwyoVZjcyXWSHibQp+EVK243zpcq6JmnffvTOebyD6uLS4MlJKJPyAU4Mk6fE3h/PrK32donKArXSTjfIQ1QWSyqLWf7fX+hnpT58hUT410oOs9I3JHFcF5pWBwzMF1hy5RQFW7rS590sut5i3P3So7PLFyFq
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR05MB708;
X-Microsoft-Antispam-PRVS: <BLUPR05MB708DC7AC565B892DC5CA70EC9A00@BLUPR05MB708.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(520004)(3002001); SRVR:BLUPR05MB708; BCL:0; PCL:0; RULEID:; SRVR:BLUPR05MB708; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB708; 3:W0lSW3+yG/c2p574eKvBtgTSwUms9tsaTT2SQ1yx0CJ+FlAQOusjpcbAu6virtc1WLnloWFJLXCsoyX+nscAk3p/Lzj3Ud32kB4cSknXZP+BOFoQRjSMADWgE2pAcwFZ72V6vK69WQMFLKSxZqA0ZpaXFV+FrEUt2gPoqfw9BI6nlsErwOcwS4qJaxMbZkhybeA0nSaBqRWjdE5ihzGIfx7s8JbbuxRTAesUZJv/Z9wICXdbndzFOBP52WLu0eN8EleL27jpYyQb2b4dy8kNrtK5K25bNiAbgcVjwP/vqubrY20K8C53MsYRgSGAw2sS
X-Forefront-PRVS: 06167FAD59
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB708; 9:JgvjsxoGNJQ14p3E00cWvWQc2aCWmzG+F6iIAiE/IHZS6t2ayoGVT51nE87QjozPDbivVlG1pMiZhMV7frlk5QAEki6ON3cywabSCCupO6ANCPrU9WN7yoLtd53J50HWfgQISgXc7ovwuZyfmDS6/QnpEnxDNnDLu1+pWxoO4op20PCwVLk425tkpO2qoEpzTMtayuQ4/wGJTscpeRxgeX+JkjAcAPT1oSyyLQuMY9FNBfSCHxNo9oXp88kBH3VX0S94fjOT+QGhwigYxslZc6KsO9wirSMM0OVUiJnLEVG8o8BPISmQxdQZy7tSY3lTHFi9RduAB0fjl3paJowiFKs90qGfDRre/zLs7qT2jeCTov9filtuwHa61ExOlqveCDPsdgOAAENWCL3dfWroP+/4oNqJoCHn/Skgytct6un/XyNx72lp3zUGNvCKfBcqKDyh32q5UUo4Oi+ElChk/7jVYyfRS1I6YuNJ1Tk9Lmg1xIMGBAJQkuje3lwehfOD4ZMD2eGpwYTXxIJhOxivnGggbgfW3q7yNKbUg9ou86PSVk+8TAz320+9+X3fiVO4l7NSGE3batF/cSuWAXzr4HLNRs+HozYKtyW1YwMGRgbpyeF1scZRqRe1porVR8LttDVOdt4pJYfAgPXsR2OSFeHHuRSFESVuj2jKV22UG/n+ym82GqlEMMqdX633fGxawnG6arSdMrz5znwfx/EDc9OTTnfeqMVmFZsoFicMBXHx0nTpxWptMDURq12/G9lqxn+YTYPKJeNWocnI7nAtSB0hIQd6BI8T0ychgRQ3vabI1Z6S/Edl0uPSL6Em59npfvIEdaLQY6ueuyaOvP2VOQ==
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB708; 3:JNO8odNI1Jo1TXxFMpxtbYUr6WO/CJ5cns83UNGanV0fSWQEIgtPrneZMrVZxRxoaoNAJ0kT3ogDofruMfQJHPy/st32xJUtTjdBssLe+ozEVcPnavkfTKD42aefDd4KnjtWtk3zW2aMHmlDnfejmg==; 10:ev1vpiMyZmLNK+3+XHzNdermbFC5T01hBGAYrlL819JDCadZuKi8W9mMC6fQsTrOZBAs1GsRRrTzkvh6AyU+75tTxcR7Tr4C3CGjUDURxrs=; 6:QQXuZ85WHx47aLPL+HUigpqDAGXf5pxTqwBd2NMmtbfYS3z7T7izwq1IPLUOAvEh
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2015 05:16:23.8483 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.17];  Helo=[P-EMF03-SAC.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR05MB708
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/-PByJTVjA6CiVjiKUe2jSzQl00I>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 05:16:28 -0000

Kent Watsen writes:
>Attached are some slides that I put together, with feedback from Andy and M=
>artin, that attempt to capture a high-level model we can all agree on.  Com=
>ments, questions, concerns?

Slide 3 calls negotiated values (e.g. duplex) "actualized config",
which is imho wrong.  Calling transient learned values "config"
makes the meaning of "config" useless.  Are bgp learned routes to
be considered config?

Perhaps that's the bit that's missing, a delineation between
learned values and config values.

Part of the question whether ephermal config is really config, or
just learned values trafficed in terms that mirror config.

But then slide 4 seems to distinquish between "protocol negotiated
values" and "protocol learned values".  What's the difference?

There are other state and state-like values, such as connection
tables, route tables, and MAC address tables, that aren't completely
config (but you can configure the port on which a listen is posted)
nor completely state (since you can have static mac entries and
static or interface-based routes).

And let's not miss the chance to discuss default values, a perennial
favorite ;^)

If I were picked terms, I think I'd go something like:

  base config + ephemeral data + defaults => intended state
  intended state + learned values => actual state
  actual state + counters => operational state

where:

base config == config suitable for startup (persistant, drives initial intended state)
defaults == both data model defined default values and system defaults
ephemeral data == learned values trafficed in terms that mirror config
learned values == data acquired by interaction with the real world
counters == well, you know.....

Thanks,
 Phil


From nobody Tue Jun 23 03:57:57 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 785621B2AE7 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 03:57:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.961
X-Spam-Level: 
X-Spam-Status: No, score=-1.961 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 XNTOiGiMfXE8 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 03:57:55 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5A6971B2ADD for <netmod@ietf.org>; Tue, 23 Jun 2015 03:57:54 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 82EA613F2; Tue, 23 Jun 2015 12:57:51 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id o3N8kLNz1A8O; Tue, 23 Jun 2015 12:57:50 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 23 Jun 2015 12:57:49 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id E57C32002B; Tue, 23 Jun 2015 12:57:50 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id a-njRm6X7vTN; Tue, 23 Jun 2015 12:57:49 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 6F5D220013; Tue, 23 Jun 2015 12:57:49 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 225EC3478F6C; Tue, 23 Jun 2015 12:57:47 +0200 (CEST)
Date: Tue, 23 Jun 2015 12:57:47 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Kent Watsen <kwatsen@juniper.net>
Message-ID: <20150623105747.GA34924@elstar.local>
Mail-Followup-To: Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D1AE1DC8.B3290%kwatsen@juniper.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <D1AE1DC8.B3290%kwatsen@juniper.net>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/NRUG_sk7QytZA5jTC4RrbNOhWoQ>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 10:57:57 -0000

On Tue, Jun 23, 2015 at 12:17:15AM +0000, Kent Watsen wrote:
> 
> [As an individual contributor]
> 
> Attached are some slides that I put together, with feedback from
> Andy and Martin, that attempt to capture a high-level model we can
> all agree on.  Comments, questions, concerns?

I am lost on slide #3. Operational state reflects what the device
actually does, I am not sure what 'actualized config' really is.

I am also lost on slide #3 and #4 concerning what protocol discovered
values (slide #4) are and when they differ from the middle box on
slide #3. The difference between counters and statistics is unclear as
well. RFC 3535 only distinguished config, operational state, statistics.

Why is it hard to provide generic access to counters? Processing the
data model easily gives you the query to retrieve all counters (but I
am not sure this is operationally a good thing to do anyway; is
blindly polling counters really how networks are managed?).

What is important I think is that data has different life times. You
can have config that is provisioned for interfaces not yet present,
you can have an interface operationally active that is not configured.
The model in RFC 7223 supports both. Can someone explain using
concrete examples what the RFC 7223 model is not supporting well or
are we searching for terms to describe what the RFC 7223 model all got
right?

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 23 04:06:48 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 36EEB1B2B05 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 04:06:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 hTOwtetYVP2f for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 04:06:46 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C7E8F1B2B03 for <netmod@ietf.org>; Tue, 23 Jun 2015 04:06:45 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 14A191337; Tue, 23 Jun 2015 13:06:43 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id uvDV9J9HP32z; Tue, 23 Jun 2015 13:06:43 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 23 Jun 2015 13:06:34 +0200 (CEST)
Received: from localhost (demetrius3.jacobs-university.de [212.201.44.48]) by hermes.jacobs-university.de (Postfix) with ESMTP id BBDB2200DB; Tue, 23 Jun 2015 13:06:14 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius3.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id tvdtIIERdUd3; Tue, 23 Jun 2015 13:06:08 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 05AC120037; Tue, 23 Jun 2015 13:06:07 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id AFD7E3478F9D; Tue, 23 Jun 2015 13:06:06 +0200 (CEST)
Date: Tue, 23 Jun 2015 13:06:06 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Phil Shafer <phil@juniper.net>
Message-ID: <20150623110606.GB34924@elstar.local>
Mail-Followup-To: Phil Shafer <phil@juniper.net>, Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D1AE1DC8.B3290%kwatsen@juniper.net> <201506230514.t5N5Eeve014975@idle.juniper.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <201506230514.t5N5Eeve014975@idle.juniper.net>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/8EXnRJqbi4KnzbKuCB1y_tPEVpQ>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 11:06:47 -0000

On Tue, Jun 23, 2015 at 01:14:40AM -0400, Phil Shafer wrote:

[...]

> If I were picked terms, I think I'd go something like:
> 
>   base config + ephemeral data + defaults => intended state

I like intended state way more than intended config. I would change
the other two slightly:

  provisioned config + ephemeral config => intended state

>   intended state + learned values => actual state

In reality it is more like this:

  intended state + learned values + device properties => actual state

In other words, even if you know the intended state and the learned
values, you most likely won't be able to predict the actual state
precisely without knowing device specific properties. But we likely
ignore that nasty part of reality...

>   actual state + counters => operational state

This should be:

  actual state + statistics => operational state

Statistics is largely dominated by counters but not only counters.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 23 06:39:14 2015
Return-Path: <phil@juniper.net>
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 214171B2C04 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 06:39:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.302
X-Spam-Level: 
X-Spam-Status: No, score=-1.302 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_34=0.6, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, 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 EfvNSdSTmXXw for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 06:39:12 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0142.outbound.protection.outlook.com [65.55.169.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C4D061B2C03 for <netmod@ietf.org>; Tue, 23 Jun 2015 06:39:11 -0700 (PDT)
Received: from SN1PR05CA0041.namprd05.prod.outlook.com (10.163.68.179) by DM2PR05MB718.namprd05.prod.outlook.com (10.141.177.147) with Microsoft SMTP Server (TLS) id 15.1.190.14; Tue, 23 Jun 2015 13:39:10 +0000
Received: from BY2FFO11FD051.protection.gbl (2a01:111:f400:7c0c::105) by SN1PR05CA0041.outlook.office365.com (2a01:111:e400:5197::51) with Microsoft SMTP Server (TLS) id 15.1.195.15 via Frontend Transport; Tue, 23 Jun 2015 13:39:10 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.17) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.17 as permitted sender)
Received: from P-EMF03-SAC.jnpr.net (66.129.239.17) by BY2FFO11FD051.mail.protection.outlook.com (10.1.15.188) with Microsoft SMTP Server (TLS) id 15.1.190.9 via Frontend Transport; Tue, 23 Jun 2015 13:39:10 +0000
Received: from magenta.juniper.net (172.17.27.123) by P-EMF03-SAC.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.146.0; Tue, 23 Jun 2015 06:39:09 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5NDd7D07235;	Tue, 23 Jun 2015 06:39:07 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5NDbQD5017860; Tue, 23 Jun 2015 09:37:27 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506231337.t5NDbQD5017860@idle.juniper.net>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
In-Reply-To: <20150623110606.GB34924@elstar.local>
Date: Tue, 23 Jun 2015 09:37:26 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD051; 1:CINGo9uVoURLQcrryeqXfn2TEhtflMo0JUSCZb36I+vX6IjxIOjZBlw90/t3rsRkSJgt8DcJ/nSucM/PtqNQ51NgKZnY/y8Z8fva2/b32voW/G4UEcZNXAZqBtjKCkQT13ti2+721JB2qYUSJj1dABiL5Zd5BzhNOg5XZYFBRHCDS9DYPamwgAGlh1I4deQkhWz8a2hIPHc2ehjgWsevPhcYPPzxQFFz75eHaB6M2hbBcFrNfzsKUo9uPaIGDxkkHAT8ha/cuEiGBukQmVB7eswC5JaSd6gnlvxTv6OjXr50/B8p1UCXKPhpwhmTpSVI
X-Forefront-Antispam-Report: CIP:66.129.239.17; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(189002)(199003)(24454002)(164054003)(106466001)(53416004)(62966003)(46102003)(54356999)(50986999)(92566002)(76506005)(50466002)(2950100001)(105596002)(77096005)(77156002)(48376002)(5003600100002)(47776003)(189998001)(6806004)(5001960100002)(110136002)(19580395003)(87936001)(86362001); DIR:OUT; SFP:1102; SCL:1; SRVR:DM2PR05MB718; H:P-EMF03-SAC.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB718; 2:TEBebwNLzMQt3Y2YhI0xwds2OXi3eCB+UhX4NLI+VlLPRMdQWKQt1vR7sSIGbi6J; 2:Gk2J/WM5P5qUK7XpH49rjTS6cZFD1lzBZumoB3rvndA+evX4okiWKEudpcCW6IyMz15z+4h8nZwsZTBGXc+veNrFgGlUKHp2SmPTf5wY49T03UJlO+NYp0pi5QIwTu8Yl5WXf7P9+78dRLXR1XpgzfbbI3XCxoMInxggsIfRBgfAnTEqUY2bmWIr5ByPpxScuvxORSrsSU9hvpJUHAvkd0J/U5EWQ7FJtAn5KhZ8zWY=; 6:xVAhQN44mj1EyQmwfSBDGAm7xKrFftODTLnuf4v15kEpXpbUY86g/ErCn7w27CFMrSJGc35zMCt8DaqT7YFAHKQcLAyXDZfvP9TC8HlRwCdS/8Ddw0uAIG8gSPxj4aY79bb7baN7pj+vthghAZOkKfjbl53zHWNgan+GYddOd8Ry8EPzFMuFuM3nzxNrLrliZsaWpVnC28rFZO41OnpimuCsGYTCiBIwQRuPoLEGCKwq5dmou1vhZlKjORLMGGqri+IbtoI2z7X3OifVYpSwrsflRhhPnVkdU6E/HK4ur7DnYLhkrwZX0fHHaj6csB0Iv0eoZTQ44zzxZAmXRGwRAupUWHHr7vXKjCxxBbFdzsHob1tp+i/G4t7Xi1rrKKxdLecdzCzqOeYf+MkFWf7IHkUzYswn4fGErKCoC0uRsMJ7R1CqHK3r1me/p+cAM3eq3SpJleTSSx9Pzazt7kiZVBVy0Gaa6k6aQj0KfpMM+iodeulF1P/P9TZLljlKdgD+
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR05MB718;
X-Microsoft-Antispam-PRVS: <DM2PR05MB71841D54E199CB200BD0A21C9A00@DM2PR05MB718.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(520004)(5005006)(3002001); SRVR:DM2PR05MB718; BCL:0; PCL:0; RULEID:; SRVR:DM2PR05MB718; 
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB718; 3:tdTCpSyftUfvnX4l3/nG7SUwRFwbGVGUI7ls5iYBCFueNsDta/X4VPrjRd0UJ714Lf+SJvMyCgjL0jdxG2Am8CpcImhP51SCcBC/p6cdsp356CainyrjBug+CNuBXGpPso81S+WtdNleHOZPXGxB36Pax39Jh4KqgP7OaXEdoblknT6gLZ4RxaVyTmZRDuh59f6T4lyiOFvHuuvSYFvmVpQZRInYGokY0BRBH3nFZouPnXAlFSdm5pJJV0dOeZGMo2QFUaNp38DIZh+QBXCrWnJy9bmqNXrTVFDKfpJpWvo9QEXglBFuRwqOhNqqP7AO
X-Forefront-PRVS: 06167FAD59
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB718; 9:CiqEf2+gTb7bEsfoHsd2JXCtrjKX4+ytxIpgy/PG8GynkWPZ6mhbaCsUVxa2c/cLjKRtpc9kscYlBxijxCfWM3Dn+DdPO6jeDxNh5JXmRIHPFBlfObMXi11lwPw5qn8DqAc2c1p0azkAM7hb1gsvLv+8N6vUryxdqMiP+weIBCDGe5/iacBSHF+a5iKNny3eB7iUoNxsjXgUDfxe3ECNkztj7P2m5NIWOc4yEwyL/YT5qpGXZQyom+sl6tGgjvbNkfbz/8MLMacqLK7+ymSxk43v27365lummyQiN+1Xzgss+SSnYHoBYtxBPeAbtHwcxfaYm7oQ4YcmFikI1EzsYU8V2hkI0aHi86Or7mufaNSHdcRJTVL0xmgMgNQFvLz0vEafwsr7WvTdeu0lOCyK21u2TqQKj61qhQ8m28/bf72WXezNOYW30R1lthqNSbU9/eLjii+pDmRTp49GmhP1VeV4H7t+Q0VWGJmmFVvWwKYJi9rHdKHbGAIUedFfF5RsRqvxNGCZjvIvLgSlo5JrG5zcmbcOJo19RHLRav1h95eCQ8Y8+05LVQyT5R5onh0xRiDc32K8jGWcx1X4xp+fCTgh3yeGKIgifft5N22OLc2kG0vHesiEWKJaUG2MLUjoyD/kdpPU9VLxxfqcoxwtJXpzDI+6KLyyP3IM5VkeWGdGxesKCRs6MfX5pAPWBUP/zn2nMqhtRs1w7v9L+3/zdCpgPz3lYw7WWJWUcwdVHya8nMVoTkw3wDV9q4Q4KWi1CHFAZNpTmVkvc1hxINnYcFzrNeP9m/rlPhZRs15oZPU=; 3:hXo3ykxF1yFxPdFr5tDZo8cpV7MwcJexJIIG0aUAW1EcGQPx/fBDSjyRfQXmHtR73yZwjAiwVVTE/H3iuWW88s1dw/oWrFEb4AWTv84loXaISk9eGdejoHMbtcqsbSnYfbFCjMrir6xCAPqaTU9XjQ==
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB718; 10:b0NkvdMl4S227+VbMW9OLaPSkHlEn4r5HTHA0MF+4KMjNo6ZU3ykv/VrcLaNuNfMfWAGS+HOmcEZMcXcuuwAoEHgkST6UekFyaLegtyzHLs=; 6:Z4nwSAONVTNF1MEbT1VlTEeCyjXDyGX5pQ8JDI8TKxMTQeKh4G0nmXxOrKOiu9Gz
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2015 13:39:10.0514 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.17];  Helo=[P-EMF03-SAC.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR05MB718
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/L9QyKcw1PGDk-TXORFbCcOwn9hs>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 13:39:13 -0000

Juergen Schoenwaelder writes:
>On Tue, Jun 23, 2015 at 01:14:40AM -0400, Phil Shafer wrote:
>> If I were picked terms, I think I'd go something like:
>>   base config + ephemeral data + defaults => intended state
>I like intended state way more than intended config. I would change
>the other two slightly:
>  provisioned config + ephemeral config => intended state

I dislike called using "ephemeral" with "config".  We did this in
JUNOS and it was confusing.  It's not really config.  If we used
BGP to tunnel stanzas of XML that looked followed the conventions
of bgp.yang, would it be config?  If so, what does "config" mean
as a term?

"ephemeral data" makes it plain that we don't consider this config.

>>   intended state + learned values => actual state
>In reality it is more like this:
>  intended state + learned values + device properties => actual state

Yup, completely agree.

>In other words, even if you know the intended state and the learned
>values, you most likely won't be able to predict the actual state
>precisely without knowing device specific properties. But we likely
>ignore that nasty part of reality...

Yup, and reality can change when you swap FRUs.

>>   actual state + counters => operational state
>This should be:
>  actual state + statistics => operational state
>Statistics is largely dominated by counters but not only counters.

Sound good.

Precise language is so important, so I think well-defined terms
matter.  Then again, one can be completely precise while being
completely useless, like my current favorite word, sphygmomanometer.

Thanks,
 Phil


From nobody Tue Jun 23 08:44:32 2015
Return-Path: <bclaise@cisco.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 8F8761A89C7 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 08:44:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.396
X-Spam-Level: 
X-Spam-Status: No, score=-5.396 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, HTML_IMAGE_ONLY_28=1.404, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_DKIM_INVALID=0.01, 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 MZvezX3Fii6H for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 08:44:28 -0700 (PDT)
Received: from aer-iport-3.cisco.com (aer-iport-3.cisco.com [173.38.203.53]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 658FB1A8AD4 for <netmod@ietf.org>; Tue, 23 Jun 2015 08:44:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=574748; q=dns/txt; s=iport; t=1435074266; x=1436283866; h=from:subject:to:message-id:date:mime-version; bh=eji8VO2w6fk0J7Y+qyXBse9CuP6Pb0Qd47nCnkLAQGs=; b=Dr08VNPRN5yRN5oWgn8T58y1WTHkK4thdDzd8cwDQeafDbL0RNgxUl9d BH8LaOuoGX1Bq7LTpf6kRT1TXjZ/BdaVVgv+TNpil7DUVZlnuAb5bJT7z H3qkHh2q1H/RA/ppjKVTYV+jaBmUdfmU5QJC7fBmOR5UvUeAdBUjcOdcP c=;
X-Files: daajbbea.png, agedjhbe.png, gadigehi.png : 79126, 155327, 180978
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CfBABnfolV/xbLJq3NBQICAYEM
X-IronPort-AV: E=Sophos;i="5.13,666,1427760000";  d="png'150?scan'150,208,217,150";a="534323898"
Received: from aer-iport-nat.cisco.com (HELO aer-core-1.cisco.com) ([173.38.203.22]) by aer-iport-3.cisco.com with ESMTP; 23 Jun 2015 15:44:24 +0000
Received: from [10.60.67.87] (ams-bclaise-8916.cisco.com [10.60.67.87]) by aer-core-1.cisco.com (8.14.5/8.14.5) with ESMTP id t5NFiLgO017959 for <netmod@ietf.org>; Tue, 23 Jun 2015 15:44:21 GMT
From: Benoit Claise <bclaise@cisco.com>
To: NETMOD Working Group <netmod@ietf.org>
Message-ID: <55897ED5.2080809@cisco.com>
Date: Tue, 23 Jun 2015 17:44:21 +0200
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------000909070608010606030501"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/aIxnkYdEqbQ4Ysl9xxd3PQy3RKA>
Subject: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 15:44:30 -0000

This is a multi-part message in MIME format.
--------------000909070608010606030501
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

Dear all,

In order to clarify the situation, I compiled some points from my notes 
and created a couple of diagrams. This was initially created for my 
personal use, but if it helps with the discussion, please use it.

The first open issue is terminology IMO.
     - intended, applied
     - synchronous/asynchronous
There are two synchronous levels: the protocol (NETCONF) and network 
element implementation. As Kent mentioned: "Kent NETCONF is a 
synchronous protocol but state may change asynchronously."
It would beneficial for the authors to explain what happens in the 
following NETCONF server two cases:
- an example of (non-NETCONF) asynchronous: RPC and leaf update (first 
intended, then applied)
     - example of full NETCONF synchronous: RPC and leaf update. In this 
case, duplicate leaf.

The second open issue is that it's not clear which exact features are 
requested: a breakdown per RFC6087bis, per YANG language, and per 
NETCONF would help. This is what I've been trying to do with the couple 
of attached pictures. I would like to get confirmation from the 
openconfig that the understanding is right.








Some additional questions:
- Don't we need an extra /startup for startup parameters? Or startup 
parameters will always be the intended configuration?
- "The way we represent op-state must be consistent across all models"
What if one of the models is not consistent? In that case, only the 
description will make the link between the config-false and config-true 
leaf, right? So don't we need that link anyway?
That makes the link to "Ability to relate configuration to operational 
state must be consistent".



--------------000909070608010606030501
Content-Type: multipart/related;
 boundary="------------050903020201060500060904"


--------------050903020201060500060904
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Dear all,<br>
    <br>
    In order to clarify the situation, I compiled some points from my
    notes and created a couple of diagrams. This was initially created
    for my personal use, but if it helps with the discussion, please use
    it.<br>
    <br>
    The first open issue is terminology IMO.<br>
    Â Â Â  - intended, applied<br>
    Â Â Â  - synchronous/asynchronous<br>
    There are two synchronous levels: the protocol (NETCONF) and network
    element implementation. As Kent mentioned: "Kent NETCONF is a
    synchronous protocol but state may change asynchronously."<br>
    <div class="ace-line" id="magicdomid1295"><span
        class="author-a-bb1xinz83zz90zz90zjz74zz76zuugn">It would
        beneficial for the authors to explain what happens in the
        following NETCONF server two cases:<br>
      </span><span class="author-a-bb1xinz83zz90zz90zjz74zz76zuugn">Â Â Â 
        - an example of (non-NETCONF) asynchronous: RPC and leaf update
        (first intended, then applied)<br>
        Â Â Â  - example of full NETCONF synchronous: RPC and leaf update.
        In this case, duplicate leaf. <br>
      </span></div>
    <br>
    The second open issue is that it's not clear which exact features
    are requested: a breakdown per RFC6087bis, per YANG language, and
    per NETCONF would help. This is what I've been trying to do with the
    couple of attached pictures. I would like to get confirmation from
    the openconfig that the understanding is right.<br>
    <img src="cid:part1.06050006.07030704@cisco.com" alt=""><br>
    <br>
    <img src="cid:part2.05080203.09020600@cisco.com" alt=""><br>
    <br>
    Â <br>
    <br>
    <img src="cid:part3.09060008.03000305@cisco.com" alt=""><br>
    <br>
    Some additional questions:<br>
    - Don't we need an extra /startup for startup parameters? Or startup
    parameters will always be the intended configuration?<br>
    - "The way we represent op-state must be consistent across all
    models"<br>
    What if one of the models is not consistent? In that case, only the
    description will make the link between the config-false and
    config-true leaf, right? So don't we need that link anyway? <br>
    That makes the link to "Ability to relate configuration to
    operational state must be consistent". <br>
    Â Â Â  <br>
    <br>
  </body>
</html>

--------------050903020201060500060904
Content-Type: image/png;
 name="daajbbea.png"
Content-Transfer-Encoding: base64
Content-ID: <part1.06050006.07030704@cisco.com>
Content-Disposition: inline;
 filename="daajbbea.png"

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
AAAAEI2oBgAAAAAAIBpRDQAAAAAAQDSiGgAAAAAAgGhENQAAAAAAANGIagAAAAAAAKIR1QAA
AAAAAEQjqgEAAAAAAIhGVAMAAAAAABCNqAYAAAAAACAaUQ0AAAAAAEA0ohoAAAAAAIBoRDUA
AAAAAADRiGoAAAAAAACiEdUAAAAAAABEI6oBAAAAAACIRlQDAAAAAAAQjagGAAAAAAAgGlEN
AAAAAABANKIaAAAAAACAaEQ1AAAAAAAA0YhqAAAAAAAAohHVAAAAAAAARCOqAQAAAAAAiEZU
AwAAAAAAEI2oBgAAAAAAIBpRDQAAAAAAQDSiGgAAAAAAgGhENQAAAAAAANGIagAAAAAAAKIR
1QAAAAAAAEQjqgEAAAAAAIhGVAMAAAAAABCNqAYAAAAAACAaUQ0AAAAAAEA0ohoAAAAAAIBo
RDUAAAAAAADRiGoAAAAAAACiEdUAAAAAAABEI6oBAAAAAACIRlQDAAAAAAAQjagGAAAAAAAg
GlENAAAAAABANKIaAAAAAACAaEQ1AAAAAAAA0YhqAAAAAAAAohHVAAAAAAAARCOqAQAAAAAA
iEZUAwAAAAAAEI2oBgAAAAAAIBpRDQAAAAAAQDSiGgAAAAAAgGhENQAAAAAAANGIagAAAAAA
AKIR1QAAAAAAAEQjqgEAAAAAAIhGVAMAAAAAABCNqAYAAAAAACAaUQ0AAAAAAEA0ohoAAAAA
AIBoRDUAAAAAAADRiGoAAAAAAACiEdUAAAAAAABEI6oBAAAAAACIRlQDAAAAAAAQjagGAAAA
AAAgGlENAAAAAABANKIaAAAAAACAaEQ1AAAAAAAA0YhqAAAAAAAAohHVAAAAAAAARCOqAQAA
AAAAiEZUAwAAAAAAEI2oBgAAAAAAIBpRDQAAAAAAQDSiGgAAAAAAgGhENQAAAAAAANGIagAA
AAAAAKIR1QAAAAAAAEQjqgEAAAAAAIhGVAMAAAAAABCNqAYAAAAAACAaUQ0AAAAAAEA0ohoA
AAAAAIBoRDUAAAAAAADRiGoAAAAAAACiEdUAAAAAAABEI6oBAAAAAACIRlQDAAAAAAAQjagG
AAAAAAAgGlENAAAAAABANKIaAAAAAACAaEQ1AAAAAAAA0YhqAAAAAAAAohHVAAAAAAAARCOq
AQAAAAAAiEZUAwAAAAAAEI2oBgAAAAAAIBpRDQAAAAAAQDSiGgAAAAAAgGhENQAAAAAAANGI
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
JCwDnN3RrS9eVLX3wlo+u90uZoOLxWIymSwWi9VqlX+lps55Wqkm3FGr0jdFYg6hwhPxBL1e
L2ztarV62q7PKix3NBqNmm0PAJHyR3fTDQEAIJbQDSAZNY2678hl73a7drudf2U+n5dsM6ZU
U5iqa71ex7S80Iyzk4PFZPPr2Pvv72+4zcjXI8ICWJ4Wr6lznlaqKaT7f39/I784m81+f39X
q9V+vz/7gZhDqPBEPMHn52fY2tM768kKD4fv7+9m2wNApPzR3XRDAACIJXQDSEZNo+5CNvbr
6+vqV76+vsKvnGbSby3VLJfLcIOnr+nENGOxWJx+JiabX8fe9/v9rdvcbrdnN1hT5zytVFM4
rl6vF/Ot9XodfutsvSTmECo8EU8wHo/DXcfcjLUaDAZhe35+fpptDwCR8kd30w0BACCW0A0g
GTWNugulmna7Xf5iTeF1jbMp8jsmVSus0nH13ZFCM9rtdpZlpx+LLEjUsfdCmvvqNsNOK2yw
juY9rVRzOHlZZDabXf1KTO9FHkKFJ6JuhXeAGl8bpnDhVTh5HQC1yh/dTTcEAIBYQjeAZNQ0
6i6Ualqt1nA4vJSezrKskPg+u5zGHaWan5+fcLMfHx+Xpr0624zxeHz16EpaUsfeV6tV8jTF
7AAAIABJREFUIe1ess2/v7/ww5+fn3U3L6bOsdvtVoHNZnNpp+UKFYhOp1O+qcKcaZdexIk8
uRWeiKPpdNr/p6rWs8myLKYA+RyFt4ve39+bagkAt8qf3k03BACAWEI3gGTUNOo+LdUciwGn
2eftdltY9vzSMh53lGqyLPv4+Ag33u12z64sstls3t/fw0++vb1dSr4Xjm46nT5z74WSydvb
29ltLpfLbrcbJugLlYw6mhdTqqlwVflCV7Tb7bPnIsuy6XTa+qdLy9tEntzTvd99Io7Crjuq
8HWTwhtIZ0uhz1E4+xaqAUhI/vRuuiEAAMQSugEko6ZR99lSTavV6na74/F4Pp+vVqufn5/h
cNjpdAr57ksvE9xRqjkcDtvttrCLVqvV7/cnk8lyuVytVpPJ5PPzM3zt4JhPL1krvvA+R6jw
rTr2vt/vC1NItdvtwWAwmUyO76lMp9NCFaF1oTJRefOeXKrZ7/eFGlKr1Xp/f//+/j5eY7+/
v9/f32Gl5GgymVzaZvzJrfBEHGou1RT6vKT+VLfCwjkNFo0AuFX+9G66IQAAxBK6ASSjplF3
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
fH19xbfz8/OzJBlaSKwUVucOFQ42Pk+a6/V6p1me+ko1FZ7Qwtn8+/trt9sx2xyNRuWnsqpu
PFRUqvn9/Y1vSbvdPv11/H0Z0qYup1yF91S8zWYT0+But7ter8P/U5LlbLYnK7yer7q7VFPf
o/6mR2iMLMvG43F8U2ez2aVNVXvUTyjVPPiYfYVHwX3XxuMP4ZskdDs8It/vM3cKAMAdRGwA
yahvsJ1l2dlf7x4n6plMJv1+/zRt9Pb2FpPcL3y33+9Pp9PVajWbzUajUWE+tJJtHg2Hw0Iz
3t/fPz8/J5PJZDIZjUanv439+Pi4lAwN2zmdTi+lxj4/P8NvneaSOp1O3obJZDIYDM7OffTz
83N6ODdNUxNZqqn2hIY7LZyy42xL4/F4MBic/VVyyU/dK+zGQxWlmtPcaL/fnwQGg0HhA+12
u9Bjd8w71ODllH+rsOVH7qlIm83m9IfzvV5vPB5PJpPPz8/wXwvdfqlU02xPVns9X3XfBGi1
PurjH6GRTrvreAqO/fn19XVakDibuK/8qOsu1Tz+mH2FR8Ed10YlD+F4ad0Oj8h3/eT9AgBw
KxEbQDLqG2yf/qp0Op2efmw+n5+mUc6macKERa7T6ZxmlHa7XSFXMhgMLrXz9Deq39/fpw34
+/srVIAuLScQtjM/tHa7PR6Pjz+JHY/HnU4nXAshy7LCxqfT6dlOWK/Xg8Eg/GSv17t0aJG5
v8hSTbUn9NLZPN3m399fIZd36WxW3o2Pl2rClr+9vW02m9PP7Ha7QmMuXVqR7Wn2cjrUcE9F
KhzL2Q6fzWZnc51nM93N9mRNe48U/7JdrY/6yEdopNMrczKZnP1Y2NROp3OaRq/8qOsu1YSH
88hj9qamvsKf12ofwlcldDs8KG/Vk/cLAMCtRGwAyahpsF34MXi32/37+7v04c1mU0gSnf1J
+GnW6e3tbb1en91mlmWFjMnZX0Zvt9swXdJut0vaudvtCr/IPrv303Z2Op3CtDD7/T5MyhTy
WVd/Ed//58IVl2ZrqbBUU/kJPe2l9/f3Sz8r3u/3hZ+6n023Vd6ND5ZqClNslUzEl2VZeGl1
Op2zH4tsT7OXUx33VIzCJdrv9y9No3SaF25dyHQ325M17T1SZKnmOY/6q4/QGIUrs9PplKxK
MpvNwgYUsu11HPVzSjWPP2bjm/oKf14rfwiXS+h2eFzenifvFwCAW4nYAJJR02C78FLL1cWZ
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
WPg5wwAAAABJRU5ErkJggg==
--------------050903020201060500060904
Content-Type: image/png;
 name="agedjhbe.png"
Content-Transfer-Encoding: base64
Content-ID: <part2.05080203.09020600@cisco.com>
Content-Disposition: inline;
 filename="agedjhbe.png"

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
czewm8PtzN3c+rK59aWnl5y6/qjfh73V2tuPnT5UstuPd+vUmTVReMRnW51mRJDs5ta/ZHdk
zgCJXHkrdzzbWn794eTVhwfOzAZ+O71u+ea0CNT8fNvBqRunrj9aeFELnBkku3uldgoNT4sa
ue5pQ+IVLNOnZLcS+16igsluYDWW8K/g4NSNfMehSLJblSvRgJPdTnWg6zGpXJtashupSItv
nNtWAACpkeyWJvz0d6+xU5+EE+gDZ2Zj3mSQ/cuBpu+5B6ttX1K554sTb781hBeTHu6U49kx
PDxz9/TNx7dWXsX83Abcq5IJVE7Jbj/ebcCjN5JaCyq1WCKf/iW7I3MGSOTKW7njGXZr5dWp
64/aJhM5tl5n1wycuHravvvz3+OXFs49WF17+zHmoEl290rtFFp8LZWG9CtYph/JblX2vUQF
k91AyzEwv3GnQxFz4e7TbMxJXYkCj0/1o6p0GnhtzG4/3mHkk91xblsBAKRGslua8FK7/XiG
MYdwC+3E5cWYN+l0h3380kLpBQ400Ts1HgJtlUNnb2fP1A9y69oOTLz91hDuVYysPH3S+vhw
15Q3sMbVUHp/ug64qUo96Udpc79bYPL5TgFVEZ2uApLd3PqX7I7MGSCRK2/ljmek5dcfpudW
ik/UHH8QAqNhum5Hz8+fuLw4Pbdyb/VN7dNWrwdNsrtXaqfQ8NN18a2MSlSwTOnJboX2vUQF
k916rgmZ246dPTh1I+bjiiS7VbkSBUZC96Oq5F5nt3JtaslupCItvnFuWwEApEayW5rwPGnH
LtwfdgHr9W6dGgXbG71mPzEC7atO3fq1T1udXhLZpzBgibffGsJL7UYO+O6T8OSZy68/tL4k
cNjzTZ4ZI9CV0/WLqEo96Udpc7/bgEdvdPo4yW5u/Ut2R+YMkMiVt3LHs1ebW1+ygbyBtU7D
273VN10/JRBLtN3H0zcfn3uwuvCi1ilqaiXZjZTaKfTQ2dvFy1OVCpYpN9mt1r6XqHiym2NC
5rYTHkTOXlAk2a3KlShQVfrxtFbuZLdybWrJbqQiLb5xblsBAKRGslum8EKkbeOlQQo0z7It
csroQfYvd3pOfOL3f/ZOgNYksI/bO7ulF7KgxNtve4UXaR5WDQ93v3Zq+AXWjupfB1xgZH/X
rpwK1ZPSS5v73QIv7Mco804LvEl2c+tfsjsyZ4BErryVO55FbLz/fHHx+YnLiz2tyNu1SGtv
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
mf6XlhXGfNbyzo4qr4T310C9hOk3a7PZ5D2VzGazwvu9st/WKIq2263h1iiproXryduvzLu+
sgyXsn6/nzTTLJvsPv4yUu/WgSdV+O0wLVt7aXK3dEcpAaBFXL7wqkh2bZDsdkFmsmuIdZMH
P/E3q9XKZlviVUvC8gn8eDyKBZvIlmxiGKHX69l379vtdpaZrmo+n1vmx5kZ2Ol0KrVTw+Ew
71VdB5PdvHeLXUh2xWF3XbeWd6CPp5/W1pPd0+lkeIttroTb7dbya+i67m63q1DI5BdB77Rt
0O/3zUFytWT3fD6LfxoOhxXOgqjMk8mkwkrQZSS7l8vF8ls2Ho/NP8o2bUcS/X7f3AFR5G1R
FOkDAGSuVr9KN53s6u0/dIPBIBkAIP2btpLd6/Wa9yOitqi73W6WpzLheV5mwGOzbF5pzUe+
rspWY00rSy1/Xtujy+Wibtecoq2/OFeI53nmAqg/cGnlqVBhmkh266qBegnH43EYhqPRyLxC
13XND7mlvq32l9nBYGDfuk4dkPn+m+3CS1lyTOyT3bYuI/VuHXhShm9H8bK1lyZ3S3eUEgBa
xOULr4pk1wbJbhfoya7adj7Ter0Wb/kto4LlcqmvzXJZ0eV0MBjct98ZqsWuicKex1EUFbaV
NhgOhzZtqPUMzPf9CjuVF+52Ktk1Ny1vPdnVj9UjZ/+ql35a2012D4dD2XqYtj7JvAoZuK5r
s7N6slt4IdV5nmd47V4t2Y2/+NI8UbbvuN4op+nB8PF4b57sHg6HUr+VhsYN+gzrZq7rGr5Q
Im8zN7xT9ft9ET83muzajAuSrkf9cCvJ7ul0yos61JvS2+1W6sKbyAyWbBbMK63hyNdY2Wqs
aaWIc2f4wVXPhblFqT5XiOG3VW3/pJ67ChWm9mS3xhqol3A4HNoHfobnXPtvq+/79m3ynKKb
IpU6ILNjPRxUJvtLmfhkXhra4mWk3q0DTyrv22G1bO2lyd3SHaUEgBZx+cKrItm1QbLbBeJ5
z+bl5u120597bXLHvDcINk+PIktWc4taiAb+omamU0uOx+PMJ2TXdc1vH/K6Prium0wulU56
lNe/1qZjhB4vZb5D6ff7yQyyhjcsmX2pu5PsFo5e226ye71e9e/Rk06yG3cs2c0cNtDzvKRK
512+kqnXMtPWXq+XTqicySaSF4vr3/d+v7/dbtOJ0PS5ctNy5r0crJzs6l2HLUdZSIkLvud5
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
a2FVjmrZ83A4lFZk2/bhcMh/Y+oU07sdxd0BAJfiPhYAAAAPi2T3/7iuu1qt4hnkdrvd8Xi8
pElxabpkSrrD4dDcvIJRFAVBkPTrrVar/BeHYei67n6/T5q32+3yR5+ILslWgyBwXXe9XjuC
zWZzOp2usPao+eOSc46dz+fdbhevd7Vaua574WikK59jovg4Jqvebrf654/Kdd3D4ZDsmQs/
eg1p7vJVTfjtd//8b/+pE+6+/s5u/cnzttuL7qJHrBZSanVnya5lWZoXeTUBHQ6HmnVV1WjT
KBoaW4E0wXLqvMoq3/ctyxLfmB+FVshNpQG7OeVyVev1Wtpv/X4//y0VWqiuxTRNzRsPNdwt
bCEAAIW4jwUAAMDDuuFkV+qWSiXOR5eauvm+P5vNUieXs217uVxq9kjGPM+bTqdZRen6/f56
va5r80XiKJmcrsC4eVn7yrKs6XSa9faye1sUBEFOxbVYr9dzHCdrb1+y9uiKxyX1HDsej+ow
F+P7ioP6qXaN26Iztlh8TTI4Kf/zknMEVUEQrFar1CKL8UcvTr5d103+3uIo7fx91Yr9sy+k
EDdniuYf/Ow3h+d/bbvJ6CJ6xPKJT7HkkC5iSUnUHN1Mf1OTXc2vSHXArn7yF1PvEzSTV33S
91fhw3AJdd7jnE0rm5sej0dp4dPpVH+jorRgOP/1FZJd9dzYbDb6LVSnZS4cLQ0AQD7uYwEA
APCwHjrZ3W630iAMVb/f1xk2EYbhfD4vbI9hGL1er/YxKMmqbdsufE2h6XSqDietnK0ul8us
GFJlWVZqT1/ltV/5uKjnWOoMk6K4wp/OwmvclmrJrs7nxbZtnd14OBwKz4p4USS7OX70i99L
ye7mD/+VM5aX4rtQ0SOWL3UgaS06WFAgSkvvbNvWnGFCje7KPjWVOplzjdNRhGEoLVw/QHVd
dzQaTafTOJV3XTfnSaayual6q1A4xbFEfYAsfwbssi1UD03ZE1idNXo8HpdaAgAAEu5jAQAA
8LAeN9lNrfuVyrbt/A6yIAh0GpMwTbNsn12+pCs2q/BbYb4oUbvbqmWr6hgXHWo0WG3t1z8u
0kmlv/mO4+Qvud5tqZDsbjYbzVVblpX/edntdpphv2VZ4vSPJLsS78uvpOz2p7/+U/jtd6un
f3n9nR3Fd6GDHrF8JLuFFVsT0qM/pmkWltdVqcN26x3crI5tLTU1i6YKI2LjJ5kcx1kulxUi
T3VGlvxEvGwL1di+wv2S2sgmdj4A4HFwHwsAAICHdcPJ7na7jac0FPsB40l9E2LHVk6UOx6P
HcdJqs+qQx/ye9nUyG06nW42G9d1fd+Pa4hKnZWmadZVT/R0OiWL3e12qTtKXHU8a67runED
4q1WN0HqSy27t6O0kmzj8Xi/37uuez6fz+dzXClWXbU6+2KFtUdtHJesc8w0zfl8vtvt4q1O
nZs6f1bDerelbLLb7/fFLDYetHQ4HOJtkcoWGoaxWCyyNkQcgxuL516O6wTHG5I6HahBspvm
7Q8/lYJb78uvoijyv37501//ieK7KESPWD6SXc1g1fM86Y3VJlLe7XbScrIeWatG/TIdDAa1
z6RSIdm9UKnJoiu0UJ2xo0Iou1qtpIXU+5gjAODRcB8LAACAh3XDyW5C7M/K6SpNTd0Gg0Fq
oVO1+ymrD0vq9u33+1kFXxeLhdSPVstgBTFATV2gOEJlPB5nTasodadmdfNp7m3f98Us0LKs
nJ7T/X4vdRpm9Uhqrj1q6biknmOpcyOrUyvnDHWtfVvKJruJ4XCYehylFD9n9k4pfp5MJmoL
wzBMLQhNsqvyv375xpMPxB6Nt957mvxX78uv3nrvKcV3kYMesXwku5rF4NUdVa2A/fl8lpZT
byyaNf/EeDzebDZ1zfx85WQ3DMPxeCxtUY3JrvgEYWwwGFRo5+FwkJZTOGEJAAA5uI8FAADA
w3roZHc0GuVUj5Omnkut/yp1Qdq2nR8KSoXKaunSSrrzhsOh+l+Px6O4xvzmSXl2areg5t6W
OnkLh2VIna1ZpWc1197WcVHPsX6/n7NqaS+lDnVtYluqJbv5A7CkUDl1CLJ0lPNHYqljvkl2
U60/eS5FtvtnX4gv2D/7guK7yEKPWL7tdjvSoF75C9+SM7dBi9RkV/ON6pjRrCeQChmKastJ
FYahNCGzZDAYLBaLw+GgWV041RWS3WSWi6xKDTUmu+pAav05ukVBEEjLodQuAOAS3McCAADg
YT1usmuaZn63l+/74utTEzIpzdKZVk4MjHOGNmoKwzAZGpvaQrE/zrKs/KWJmzwcDlO7ZTX3
tjijtebYDnFPLpfL1Ndorr2t46KmoakPBCSkLmbLstT1NrEtFZLdwmKEUgKd2u0rztusU4JR
GuBLspsq/Pa7N1cfiZ0abzz5IPz2O+k1FN9FKnrEaiFd+auVhtWJkCXiJAoXvj0mJbumaWo2
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
eKc7XOEMabfbTSXcZ3NFyW46TbIQidWttEaMf76oar/f3zZwyW6kbf00u9v8Wdrtdo98qSs+
wsx8fn5Gvl9SOIWOPHp+s9KnxEtVy96C5TtYIl+dz949+vj4KLSsZj8jAJCgug+QN9hPTYJO
9MOGBi2Xy20XqgG7kHfDVzDJLilo/dwtJbuFRQpDYca2Xq/z/YB19fv9MwzOOCx2zex9dew8
NXDZZHc+nx9QgRVJUlPJ7mw2O/ibHQwGMbljI83kUgrd/a1W6+7u7kTHCvOzAxZbvbhrSXaT
apKFwbLPz8+1Ku14hfO83W7nwzzJbqRt/TS727BRjEajg2etr5vsxnt5ecnv+cij5zcrfUq8
VLXsLVj+wpIfgHuAZj8jAJCgug+QN9hPTYJO9MOGBk0mk+3XZMAu5N3wFUyySwoKHVU3k+y+
v7/vjQrC7sJwFc9Mu90eDofbdRlHo9Gu4WW9Xq/BztlQYSBO3mAw2JZwMBiUZhvtdru6I/I8
NXDBwGk6nZZOdNzr9bJlWSumQd6V8TSS7BZWUiyU7eHhYVv5/X6/dLP8wL5dGmkml1L4Kisq
80jhEqetK1xkd3MlyW5qTbLw1Yf3xOVy+fb2lpUt2zgr6vPz8/Exz2q1KhS+MO+rZDfStn6a
3e1isSg9i7rd7nA4nE6ntd7uajbZnc/n0+n06ekpvDsfefTqFrG5XLVUF6ywyO6R94tmPyMA
kKDqZ6eS7U9aGsjUPS85s/V6vf0BZsAuFNzwFUyySwoKXVQ3k+wWejY7nU7WEb9NxcKQ4/n5
Oeyzq1jTcTablWZs9/f3J5qWebFYhIFTu90ej8fh2LX1ep1fnG+r1+vt6n88Ww1cMHAqVODD
w0OY2H1+fpYm3O12e2/XbXy+lff9/V2asD49PZWOSvz+/i4dWr13TNLxzeRSPj4+ws97ioVv
v7+/w1wwnXqo5SqS3aSa5NfXV+EQ+cJ8fX3tevdlq9/vHxO1Fuo8/Moku5G29dP4nvfOc9Dv
919eXmJi/oOT3e/v72zS4NFoNBgM9s5kfuTR85vtekq8SLVUF6yQxR7/fNvgZwQAElT97FSy
/UlLA5m65yVn9vr6uv2OrnFAAJzUDV/BJLukoNAtdTPJ7lan0yl8qOVymS2ilv+fpblRzNzC
hTkPM0dO+rdLGKPuHSD7/f0d9vm+vLyEW56zBi4YOG11u93qWVLyj2dbhfFzew8Xk+yu1+vC
BLBZ8fY+E4YZT6vVql5N+chmcinr9Tos+SmmRy6NdTudzpUOxrqKZDd/zl+8SYYzfm/fHqg1
Df5wODxgVebCwP1OpxNe3iW7kbb1c4qd7xpoXtDr9SaTScWZUDfZXa/Xb29vB6zFfuTR85tV
PCWev1qqCzabzfIbNNLN0tRnBAASVP3sVLL9SUsDmbrnJee0XC63Xa4n6giGq3bDVzDJLiko
9EbdWLLb6XQiB0+Eoen9/X1kr1zpDMmND9rIL9yQ6Xa7MUN8wjUsS7ONc9bAxZPd0sgk5kB7
i3pAshvmVe12O3LwVhjzVC89e2QzuZTS0eSNl3mxWJTWTyLx9gGuKNlNpEmGk6J/f38ftvp4
v9+vNbnucrksJEalt2PJbqRt/Zxo/8vlcjKZxISs3W531ws3tZLd6XS6d2xuq9Xq9Xqj0agw
uPzIo+89LS9VLdUFKzSWplpKI58RAEhQ9bNTyfYnLQ1k6p6XnNO2r6rX63mvE0I3fAWT7HJS
8/l8HKHQD/X4+Lj3T9JMf0t72V5fX2P+NhyuGh+tZcJYtPEBheEHjB+AEgZjhS7OM9fAxZPd
yM7Wwip9rVar0+lU/8kByW74zb69vcUULxNmThVJ5DHN5FJKJ8DctcDqwebzeelIrDQvd5Gu
KNlNpEmGuelqtRqNRmGBY1RMfb+3nLuun5LdSNv6OfWBFovFeDwO510oKL1fx0eYpZNqZLJZ
9F9eXqbT6fZ9l8LTXek+T5HsnrlaqgtWqLTG39E55jMCAAmqfnYq2f6kpYFM3fOSs1kul9th
NMn+LIfLuuErmGSXkyodRtmINJecDCOrbrcbud5tmI3VzbpKe11rJaPVPj8/Czt/eHiI//Nw
8cjRaJTf4Mw1cNlkt9vtxh8rTKyr38Orm+yG9Va3NsLVlyvOjWOayUXMZrNwCtzGl7IuPUrr
ymPdzfUku+k0yfA1gnCyhPv7+/F4PJvNlsvlcrnMljvdle5EnquFo3S73V2RsGQ3UsxJ26zV
avX+/j4ajUpfoCm90kZGmJ+fn4UL1N3d3cvLy3w+33WeXDzZ3TpdtewtWGE/p3uH6YDPCAAk
qPrZqWT7k5YGMnXPS85mO1FSoYMV2LrhK5hkl5OS7MbfWwtj9drt9gHLaoZ5Q4OxUPht1p3i
Lwse7u/vs2HZhcErZ66Byya74/E4/ljhcOfqwL5ushtm6geM7ylMvNnanXUd00zOrzRwjZy2
98ijtK4/1t1cT7KbTpOsvm+Gy1Hn7VqIt3Rd87zw5YyKwYWS3UgxJ+3pfH19hc0nnIwhMsIs
3FuHw+HepLDQTEq3OU+ym9dstewt2GKxyG+wtyVm1uv1MQurR35GACBB1c9OJduftDSQqXte
AqTjhq9gkl1OSrIbP2dg4Q8Pm0g5XKDx6enpgP2Uuru7y++53W43OATk/DVw2WS31pSMYTtq
NtkNZwA+YG2OcFjhrnj44GZyfqWBa7vdbjbHCgfDZUe53rV1864l2U2nSVbcN/v9/tfXV3XZ
vr6+whdcql+UWa/Xhct79Y1Dshsp5qQ9tcKXFb5GExNhFqbcuL+/jzn0pdbZjdFItUQWLH+H
HQ6HMcXbHv3u7m4wGBz2ItHezwgAJKjuA+QN9lOToBR+2AAc5oavYJJdTkqyu7cXPhNW1GFT
9n1/fxf2E7PGaoxwacnIvt1I56+Byya7tYbjnDRGCmfJ7vf78WXbms1mhf3sGgR5cDM5szC+
ytQdql5tvV6HFdJut29mWcRrSXbTaZK77pvx646HL8q0Kq+ohbGVvV6v+q0dyW6kmJO2rvf3
9+FwmJ1Rka0p3wbDefIL6yyUnmOFbzzm7rxerwvvDJVuFnP0TH6zMEC9SLXEFGyz2Tw8PGw3
iJyM5OXlJd8eT/QZAYAE1X2AvMF+ahJ0ih82AOdxw1cwyS4nNZ1OBxFaP5eNUaj2/Px86Q9X
IkxoIv8wTC8O7ihvBQ7bT8HeVXKPdP4auGyyW+tYJ42RwlHOh32zq9WqsJ9d/cgHN5NzCocg
ZxofXhzO63tLse7mepLdWqW6SLJb62WX8Lza9cZG+E7G3muvZDfSYWdXtfylqd1ux8yvkB/D
HY7GLrwOVfpVFq6HMV93eJKUbhZz9Ex+s/A6fJFqiSnYZrN5fX3NbxPz+JofQ7+9Izf+GQGA
BFU/O5Vsf9LSQKbueQmQjhu+gkl2SUGh+++w7CQmQi5YLBZN/XmmkGG02+3IwocLnR68imcY
mzWyIGhhZsJWzWUp9zp/DVwwcIo/MTInjZEKnc4N2lWlBzeTRhppjNFoFH6cUwSuy+WyMA/z
jcW6mytJdpNqkqXJbt05ElarVbfb3VvI5XJZ2CxmHVDJbqSYk7auQuK490ZcmG9jMplU77D0
q/z4+Mhvs/clg+VyGTnJf1MB6kWqJaZgm81mvV7nW9neUHZXjt74ZwQAErS9d8duf9LSQKbu
eQmQjhu+gkl2SUHr5w5Ldlv15bvqjvzzTCHDiJ8JeXDcALLqXTUy1W3Yld/s4MXz10CagVOp
Sy3qeaS7u7vSIx7cTA4oQ93AabVa5WfO3Op0OqcIXMNYPc3ZCI6RZkNLuUmWTgN+wOz04QsK
4UW78EpNv9+PWT1dshsp5qQ9wP39fb7yK5aIXq/XhXMvnAq4kBeWXoIKGWGv16vIJr++vgrL
Nle0kZijZ6rP5M0lqiWyYJvgUn93d7frwWw+n+df97m7u8s3yWY/IwCQoO29O3b7k5YGMnXP
S4B03PAVTLJLClo/dzPJbvwoq7Ab9IAayDQ4rXFeGEE1m+yevwbSDJxKnTRGCmdtbUrkCsfx
zeSAMtQ6+b+/v/NzV251Op3Dxv7uFQ5VT3PJ4WOk2dBSbpKlye4BLxaEM4oXBvkVDtRutyPP
c8lupJiT9gCFEbStVuvx8TE8A6fTaaH1PT4+lu6wML72/v5+PB6Px+N8cFi4R9/f339+fhb2
s1wuX15eCvMQbO26uMUcfRMRoF6kWmIKlilcBDqdznQ6zRdvtVoVbsedTqdQaY1/RgAgNdvb
d+z2Jy0NZOqelwDpuOErmGSXFBQ6qm4m2Y3PMA6enzYUBiGNhFJhkvH+/n78brfOXwNpBk6l
ThojhR+kKZHJbnzNH1CG+MBpsViEs9e2Wq27u7tG5jMvVUgOdq1MfNXSbGgpN8lw6evWQePt
whAov4T29/d3IYHr9/vjOOEbCU9PT4VtEsl6bzLZ3eyeRb/f7w8Gg9JLWb/f3zXQtjASdCt/
RVosFmFke39/PxgMxuNxNvt9/p/a7fZ0Os1f4nY92sUcfXPQ0NgzVEtkwTabzXK5LB3K3Ol0
BoNBaRxeOiS32c8IAKRmeweP3f6kpYFM3fMSIB03fAWT7JKCQifUD5jshh2IB9RAJgxCGpmC
7+3trbDbZsfsnr8G0gycSp15zG4Y0hxm1/yxCSa7Hx8fpR3rg8HgdB3iq9WqcLibXAcxzYaW
cpNcLBaFnXc6nVrFy3x9fRX28/T0tP3XcOn0Zo0bXYj9YLea7G5qTrfQ7/crTtHFYhEui9tq
tbrdbn6z+EXZt7MN518C2PXmSuTR8/9U8fhx/mqJLNhms1mtVuFqEaU6nU7FBOwNfkYAIDXb
m3js9ictDWTqnpcA6bjhK5hklxQU+qF+wGQ37Ow7OI5tcMHavHD6zWZTqPPXwJGBU7gaa3yR
koqRwp03m9mHUkt2w7cWMk9PTzFrjh6ssI5jq3LRxOuVZkNLuUmu1+vCewaHJbvhCSbZPfPR
t7Vxov0vFotw/HRBt9t9e3uL2VXp2y2FV1s+Pz93jWTN9Hq9/B2kcHXddVuPOXr+/1ffpM5c
LfEFy7y/v5eOrN0ajUZ7n38a/IwAQFK2t/LY7U9aGsjUPS8B0nHDVzDJLiko9EadOlg6nYMz
jOFwWKiEg6dQLkz3VxhccrDZbFYo4cvLSyN7zpy/Bo4MnGol6CnHSGGu+fz8XKt4dR1Z880K
6zZzhuGzYbSWyAS2zUqzoaXcJDebTbje8wFjx8MTLJ+2SnbPYFsbJz3KYrHIpkl4eHgY5Dw/
P4dL4VZYr9fv7+/5eRdms1np2y3ZZk9PT9tjPTw8vL6+hnft1Wo1z6k4jfcePb+fmBe/zlYt
dQuW+fz8fHl5yRdsPB6/vb3VWmq9qc8IAKSj7gPkDfZTk6Dz/LABOIUbvoJJdklBoUf4B0x2
w7n1DhtpsV6vC/u5u7s7YD+hcILQx8fHujtZLpfv7++l3bvnr4EjA6fCn1ffIFKOkcLFOE8d
taaT7JbGuu12u9k1pHeR7B7w5001tJSb5KZsDupaeU8mfGkjf1GV7J7BtjbOfFwAAK5U3QdI
D5qcgx82wPW64SuYZJcUFHqEf8BkN0zX8tNmxgs76w/IX3cpLDh3QGZcmNJ5MBhso6zz10Dh
y7q/v691oHCGxoqNU46RwtVeD5v6NV4iyW5prNvpdM421On7+7uwMvFNroaYZkNLuUluykLZ
AwaRv7y8FHaSn+57sVgMDlWYF6HVavX7/cI2idzHJbsAAFyRug+QHjQ5Bz9sgOt1w1cwyS4p
KPQRJ9IjfICDI6swXet2uwes8RmOfG2wMsNF3eoOIwsHom0H756/BgpfVq1pq8MRzK2rTXY3
ZVO/HpBufnx89Hq9wWAwHA7H43HpzJyZFJLdyWQSfoO9Xu8ms9XLSrOhJd4kl8tlYf91E/FN
2RLFBy9eXhAuu57scHPJLgAAV6TuA6QHTc7BDxvget3wFayQ7P7i1z99/O6/zH+/XP6fv750
0fiBFPqIf8Bkd7PZ3N/fF+qh7pSw6/W62+3m99Butw9YnXGXMAyru9RuYdRvoX7OXAPh4eIP
9Pr62gpUbJ94jDQajQr7PyBGCuPh19fX0i0vnuyWzkPb7/ebyr3IS7OhJd4kN2W5bK2lx8NQ
/OHhIf7Pq0l2Ix1wzgMA8COr+wDpQZNz8MMGuF43fAUrJLu7/vtH//zfXbqk3LJCH/GPmeyG
02/2er1ag1bDsKHBrvzNZrNcLgszo3Y6nfgw7P39vVC8wkq6Z66B4XBY2Dg/VWmFMD/ee4NI
PEYqHRlZqxmGk2m32+1d391lk93VahV+fb1eT6x7Imk2tMSb5KbsglnrfYvjX5SpINmNFHPS
AgDAVt0HSA+anEP4sxzg6lz6Utq8+e+Xkl0ubv5z1xuxHBNZlcYYo9Eo8s8/Pz/DBSkbz8jD
uY6Hw2HMHy6Xy/DTFbKQM9dAuAhlZHASjnDde4M4c4xUyNLa7fbeQ4RTbXe73cgB36vVKlx3
8/n5edf2l012w6Cx3W6fbW3dH1CaDS39Jll6PYxcbTd80+Kwye13kexGijlpAQBgq+4DpAdN
ziHsawO4Ope+lDZv/Td/+/cn/1qyC404MrIqnXq0IiHbms1mhYmOWwdNqLvXYrEIn+jG4/He
PwxnFi0dTXvOGgiHIO/9LOv1elfa1Eop2Q3XM947SrJ02O7d3d3eyHO9XoejA1uVM8deMNkt
/ZiFseNnM5lMBj8Xc6pfnTQbWvpNclMW0Macrh8fH+HFsNmTXLIbKeakBQCArboPkB40OYdw
bTaA6xI/dOy6rP76//3Df/bb6mT3n/yr/3DpYsIVOD6yChPQbD9fX1+l26/X65eXlzA46XQ6
1UnDwUrD1+FwuGuk9efnZ7gCa8Xkt+esgXCgaqvVen5+Li3bbDYrjTC3Kg505hgpHCXZ6XTe
3t4Wi8VyuZzP56V/Hh4lUzFMcD6fl9ZJ9e3ygslu+I232+3B0WotgLoVpn3nX3L4PBJsaFfR
JDc7qm40Gu26fobTKpzivJLsRoo5aQEAYKvuA6QHTQD40a3/5m9nf/nffvlnf/GLX//0i1//
9Ad//J7vC/vVb3536QLCFTg+slqtVoWdbD0+Pk6n0+2c1bPZbDQala5D2TrxWsWl4Wun0xkO
h+/v79sSTiaT0oF31ZPfnrMG5vN56d+22+3Hx8fx33l6egqLFL6zWHGgM8dI4YrFBbvm0C6U
c+vu7m44HE4mk23Nj8fjXRvvXd35Uslu6YDdRhwWa/04yW6CDe1amuRyuSy9Hrbb7aenp+31
djqdjkajcFL0bMvG3/KR7EaKOWkBAGCr7gOkB00AADhWI5HV9/d3aQd9pHa7fdJYd7PZrFar
XalejL3zgp6zBqpHB+6SjUkt/M+Ko5w5Rvr+/q5eBqXf75f+4ZHfbKvVGgwGe5fzvFSyWzqc
sRGS3b1Sa2jX0iSzvw2nPYjU6XRms1mtjxZDshtpWz9nPi4AAFeq7gOkB00AADhWU5HVwQHb
3d3drlmLm7Ver8NcKsbr62vM/s9WA6vVqm5qsp1quPD/K45y5hip9E/yOp3Orj88+JtttVqD
wWC1Wu39OJdKdg+Ox/aS7O6VWkO7oia52WxWq9UB0fjpbgeS3UgxJy0AAGzVfYD0oAkAAMdq
NrKaTqe75iUOdbvdl5eXvcMlm/Xx8RGf1vT7/YpJmEudpwZWq1XpSr2hTqfz/v6+/cPCv1Yc
4vwx0mbfENVd63Rman2zrVZrMBjERzuXSnY7nU78J6pFshsjqYZ2dU1ys9lMp9Ndk8+HRqNR
zGsWh5HsRoo5aQEAYKvuA6QHTQAAONZwOBzkPD8/H7/Pt7e3x8fHijjk4eEhn4Kc33Q6HQ6H
u0qYLaV5zIyg56mB7+/v5+fnXUHy3d3d6+trIXoZ/FzFzp+fn/Nb7lpTc5fpdFo41t4QKPP5
+fn09FRINDudzmAwWCwWe//84+Pj6empOkx6fHysG+qcopnEGJxMTGWGJpNJYT9nq4oLSqSh
XWmTXK1Wb29vg93zGfR6vclkElmYg81ms0aawBlIdgEAuCJ1HyA9aAIAQNLm8/l8Ph+Px+Px
+PX1dT6f1x0Ce2r5Eo7H4/f392YHcp2nBhaLxfYo0+l0Pp+fZ4LrU/v6+jr4g2R1Mp1Os2qZ
zWbJDtHjWtxqQ4t3TJNcrVb56+HHx8d8Pj/dIN3rJdkFAOCKSHYBAAAA+EFJdgEAuCKSXQAA
AAB+UJJdAACuiGQXAAAAgB+UZBcAgCsi2QUAAADgByXZBQDgikh2AQAAAPhBSXYBALgikl0A
AAAAflCSXQAArohkFwAAAIAflGQXAIArItkFAAAA4Acl2QUA4IpIdgEAAAD4QUl2AQC4IpJd
AAAAAH5Qkl0AAK6IZBcAAACAH87nf/4fv/yzv0gk2QUAgFpiHzhP+jgLAAAAAA1a/83fzn+/
nP9++fbbv/rVb373R386/8M/+fNCoHupZLfdbl+6SxAAgKsU+cAp2QUAAAAgOb/6ze925bWR
//3hn/z5mcs8mUwu3SUIAMD1GY1GkQ+ckl0AAAAAkjP56T8eE+v+wR+/L/7r/7r0hwAAgCZJ
dgEAAABIzvTzPx0c6/7Rn86//vv/vvQnAACAhkl2AQAAAEhO3WT3D/74/R/803/z+m//8vt/
/t9Llx0AAE5CsgsAAABAcnYlu3/vl//yF7/+6Re//ukf/4t//6vf/O7tt381//1SmgsAwI9A
sgsAAAAAAACQOskuAAAAAAAAQOokuwAAAAAAAACpk+wCAAAAAAAApE6yCwAAAAAAAJA6yS4A
AAAAAABA6iS7AAAAAAAAAKmT7AIAAAAAAACkTrILAAAAAAAAkDrJLgAAAAAAAEDqJLsAAAAA
AAAAqZPsAgAAAAAAAKROsgsAAAAAAACQOskuAAAAAAAAQOokuwAAAAAAAACpk+wCAAAAAAAA
pE6yCwAAAAAAAJA6yS4AAAAAAABA6iS7AAAAAAAAAKmT7AIAAAAAAACkTrILAAAAAAAAkDrJ
LgAAAAAAAEDqJLsAAAAAAAAAqZPsAgAAAAAAAKROsgsAAAAAAACQOskuAAAAAAAAQOokuwAA
AAAAAACpk+wCAAAAAAAApE6yCwAAAAAAAJA6yS4AAAAAAABA6iS7AAAAAAAAAKmT7AIAAAAA
AACkTrILAAAAAAAAkDrJLgAAAAAAAEDqJLsAAAAAAAAAqZPsAgAAAAAAAKROsgsAAAAAAACQ
OskuAAAAAAAAQOokuwAAAAAAAACpk+wCAAAAAAAApE6yCwAAAAAAAJA6yS4AAAAAAABA6iS7
AAAAAAAAAKmT7AIAAAAAAACkTrILAAAAAAAAkDrJLgAAAAAAAEDqJLsAAAAAAAAAqZPsAgAA
AAAAAKROsgsAAAAAAACQOskuAAAAAAAAQOokuwAAAAAAAACpk+wCAAAAAAAApE6yCwAAAAAA
AJA6yS4AAAAAAABA6iS7AAAAAAAAAKmT7AIAAAAAAACkTrILAAAAAAAAkDrJLgAAAAAAAEDq
JLsAAAAAAAAAqZPsAgAAAAAAAKROsgsAAAAAAACQOskuAAAAAAAAQOokuwAAAAAAAACpk+wC
AAAAAAAApE6yCwAAAAAAAJA6yS4AAAAAAABA6iS7AAAAAAAAAKmT7AIAAAAAAACkTrILAAAA
AAAAkDrJLgAAAAAAAEDqJLsAAAAAAAAAqZPsAgAAAAAAAKROsgsAAAAAAACQOskuAAAAAAAA
QOokuwAAAAAAAACpk+wCAAAAAAAApE6yCwAAAAAAAJA6yS4AAAAAAABA6iS7AAAAAAAAAKmT
7AIAAAAAAACkTrILAAAAAAAAkDrJLgAAAAAAAEDqJLsAAAAAAAAAqZPsAgAAAAAAAKROsgsA
AAAAAACQOskuAAAAAAAAQOokuwAAAAAAAACpk+wCAAAAAAAApE6yCwAAAAAAAJA6yS4AAAAA
AABA6iS7AAAAAAAAAKmT7AIAAAAAAACkTrILAAAAAAAAkDrJLgAAAAAAAEDqJLsAAAAAAAAA
qfv/MoDX957cnegAAAAASUVORK5CYII=
--------------050903020201060500060904
Content-Type: image/png;
 name="gadigehi.png"
Content-Transfer-Encoding: base64
Content-ID: <part3.09060008.03000305@cisco.com>
Content-Disposition: inline;
 filename="gadigehi.png"

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
8Lxws+PMzfkOc5E0d+wbmz8Dg6dt3R5nHoIMr+wXyRWel43Nn52P6ew8Oh8ojPM6KXSaG542
mv6Xre1JJs1t1GxoOzlaNjotR8bXv/wIt2vZrpkC1QCFaHkjPJ87jT56lWPZ9uYaX+Wb0Ow8
Dl4qZZ43OfBpri59ISqWanxd+r60WZHUEsVNcyNsoeLs84fF3JICAMBgk+ZmMb38PnBDMrnw
pt8FrFZb3WhdvP8izZu0HPoJr//W1nH6xpMcHxmubG3nct9bdxy8VOrkpr3lHfvi2uccx6oO
Xiplu2kPpzIpL55CmH9bzvGE7zw6qQfivE6Km+bmWBXUzpU0t9HF+y8CxagF4c2ER8YrW9vt
ThdLM2WtWDVA/C1vnOczUdnazncQf+eV1vlmiuGp7bkc43OvMxRs4NNcXfr4K5Y4u/S9b7Pi
qSUKmubG2ULF2edvJvKWFAAABp40N4vwmHXf12RLhO+0U842CA/9hHcay3CcvvEkl319NjZ/
5rL6U7O7zcxzXMJ37OtffnS4fFzjke2mPTwCNTArYuUyXzNwZI6947xOipjmdmPUKTlX0txG
4Vq35fLs4ZHx8CMmux6Nm0HWKVwNEHnLG+35rGZKVto9OpkuluHyznaMPnrVbtkGPs3VpY+8
Yom2S9/jNiuqWqKIaW60LVScff5dRd6SAgDAMJDmZhG4kzl4qdTv0v1/4du/NMNwgaGf8GyG
5Pjtn/9OXZ87dX0u/VJjJ8Yfdzj6s/7lR3gLtFyOiacrGcoWuGPf2Px57NrDbhT1xPjjtmZI
VLa2w2+Yy/Bc33V7WCc5ztyczzA9Jc7rpHBpbveGgA9eKjWrAIc2za1sbQfW50zTMgZGxpc+
fM2w+Gd4kkcRa4CYW96Yz2c11wn6gSPbvKIcJ0SmOdodxB/4NFeXPuaKJeYufS/brNhqicKl
uTG3UHH2+XcVc0sKAABDQprbtvCYdeC+tPfCN11pZlg2u8P87Z//mp2E/SN3zt9+1rh2WWVr
u/RyLc08uWx3mLVPSXnf+9s//43PvZ5/W55/W97Y/Fn+vpn83+Nzr1OOHGWYotrsfI4+ehXe
B+vgpdKp63Ojj16NzSyPzSxfvP/i1PW59Hf4bQ1ULX34Gv512v3WESq9XEt56s7cnJ9afJdc
G9VqdenD1/m35enl9+dvP0v5sPzZWwvtFi/O66T8fTMZya07Au9/7NrDXV+SHLuOx+U4fpdy
AkHtJ1768LWytZ381mMzy+Hz1qwCHNo0N/w3debmfMt3CIyMZ9gm8PDovcyl3fXyiKEGiLbl
jfx8pkmqTl2fG5tZnl5+P/+2nJzGpDaYXfk4NrM8+uhVmoUuM7SPKZdO3Vm8WtCSnL2kvjpz
cz7lCWy3kIOd5urS7424Yom8S9+zNivCWmLpw9fGTl2zN98/cqdZPzAwnzXH3mDkLVScff5G
MbekAAAwPKS5bQuPm2dYxa57wvddafZGaneLptM3nrRcTnNx7XPLsZVsu7tVUzw1vH/kzsX7
L1oWcv3Lj5YPwh+8VGp3KLPZ+Ww2RnDwUmlsZjnwjPz82/LZWwstf5fDo/fSj6aFL5sB2DR3
duVjyzkTBy+VJhfetJxTMr38Ps24SbsjJoW4TlqWdm+m+RN5vVuaRSNHH70K/8Srn761O7t3
aNPccK2e5k+g2ch4tgnWgba4uDVAs6O/LW/k57OytR0ePh599Krl2UveZ+LpSsuR6LYyoZZl
S+r2NMVL3m1q8V2aE9jWzKfBTnN16aOtWKrRd+l702YVopZINIses/WL8uoNRt5CBb5pVH3+
mFtSAAAYKtLctoUXa4rq9iO8Mmqax4fTD/3sH7nT1t316KNX4XdLOTDRVmnP3Jxv620X1z6H
79t/++e/ttKvtobSWkZNNUsfvra8MU7/6xToCs9g9dO3ls/XX7j7vK21AcfnXoeHivaP3Gmc
2hJQiOskTWn79W7l75vhX/m3f/5b/fQt5bvNrnxMM5kgOYYzzW05YyPN4q5tbQp47NrD0su1
2o+YTP6YXHhTq7Gb/b4DVgP0veWN/3wGLs79I3faTSwqW9vhhKmt8fHwjq0nxh9n6AhVtrbD
v/LeFFtK7zTYaW6BOjy69HVH37v0vWmzClFLJCJMc+NvocLftPHoV58/5pYUAACGijS3beH7
6qi2FA1vgJpmIaOUd5gZbuSqrcZB2l2rav3Lj/Ad+66bdLZU2doOP2Xf1lzVlOfz8Oi9ds9n
y63F0p/P8APdyeJjxdVyYcAMAWS1Wl368DV8+R0evZd+xK0Q10ma0vYrzQ3Pwjl940m7g0Tr
X36k3ClwCNPclicn5TlJOTLeMmaYXfl44e7zZv/rINUAMbS88Z/PQItWermWoWyVre3w6pcp
W8nVT98CkUCHG46GL6HwOuR1BjvN1aWPs2IpRJe+B21WUWqJRIRpbvwtVPib1r1nnPeG/W1J
AQBg2Ehz2xZ+mLTfpasXGAXYP3Kn5cvT3GFmG/dJhMfR2rqRC9+xt7vs1U4tR3/SD2imOZ8H
L5XSzxrcKTzoc/BSKWWCFb677s2qrV0S3hJ4/8idTibitBzcSb9mYyGukzSl7UuaG/6VM0S5
iZSB7rCluRubP1suPJiy+k0zMt5Jc1MdrBoghpa3EOezWXWXYeZZzcbmz0BtkDJnCsyN2z9y
p/M/2/BDLemnjuWY5kZIlz7CiqVakC59D9qsotQSidjS3EK0UOFvWjv63uePtiUFAIBhI81t
WyDrSjOY0mPh+KHlQECaO8xObrcqW9uBJCDNVINE+I49ME8rl3Kmf5Y/zfns0rjP3tTjMuHn
uKOaqtKu8Pjg5MKbDt9/ce1zYNAk/bphhbhO0pS2L2lu4AI+euVBJxdweFCs9hGZ3z+zfqW5
adagTn/ZpxkZ7+Syrw5WDRBDyxv/+Vz99C3H2mmn0su1Zu986vpcmncI/ASdhFU14YV508+m
Guw0V5c+woqlKF36HrRZRaklErGlufG3UIn4+/wxt6QAADBspLlt++2f/5rdePRlHD+sw3mW
Le8wj1172OHGNotrnwPvn/JZ/sCEgBPjj3PZemfpw9dmN+37R+6kjIhans+2FnlrVNnaDows
pLzlDg8XdlK8/mo5ZTOXTwmP7qUcfSvEdZKmtL1Pc8O5Zufrtk0uvAn/NEOS5s6ufAwvyd7u
NV9NMTJ+5uZ8J2UepBoghpa3EOdzduVjs9dmm+dUs7H5M9Al6CRmznG/wEAPMP0f5mCnubr0
sVUs1eJ06bvdZhWolgi/VV/S3EK0UIn4+/zRtqQAADCEpLltC2RdEQ79hB9MXvrwNfzylneY
uexqExgrTLNQVfn7ZuA2tZN1tOoE0ou87tg7vCuuBicmppxyUawrPL3Az3fwUin9BlctBUaH
Uw7AFeI6SVPa3qe5gSkInU/oSYQXaRzgNHf+bXlq8d3F+y9azsetHb/981/6wbiWI+MtG6yw
QaoBYmh5C3E+A2eyw8up2lAVHB69d+r63IW7z8dmllumQYGrPcflJXP5lMFOc4vV4dGlj6pL
3+02q0C1RCKqNLcQLVQi/j5/tC0pAAAMIWlu2wLb5ES4KFB4S6SWAzfhO8y8vm/gWf5j1x62
fHkgv0m/sFuH5Uw5VBE+n7k8Kh6Y05AyzQqMo6X5OaIV+MtNv7tVGoFn2PemG4ssxHWSprS9
T3MDyxJ2PuSUCP++Eaa5v/3z36nrc5mPwEhl+Dh4qdRW2BMeGe+8uRmYGiCSlrcQ5zOwimMu
y2yOzSzPvy1nqFsCNXC7a90HBC4kaW5Clz62iqVAXfput1kFqiUSUaW5hWihEvH3+aNtSQEA
YAhJc9vWg6GQHIXHGjoc+ml3R6WAwPSIlsOFgSeOO7/JzLGc1Vbns8PNhxKBW+7zt5+leYdi
XeEphZdcy31IOnCdpFkwrRDXSZrS9jjNDewA99s//7VbkoDYpnOF09x+He1O8wq3Vh0Ovw5S
DRBDy1uU8xko5+HRe32f91PZ2p5/Wy69XBubWT5/+9mp63P55lXTy+87/4Ma7DQ3cBlH2OHR
pc+rhJ2Xs9rlNqumELVEIp40tygtVCL+Pn/kLSkAAAwVaW57yt83A3dc7aYgPdC9oZ+Dl0o5
7mcTKGd4xbPK1nbgC+a4lFYiMKzZ+fPXnS+lVQ3mOimvz4GcmzvxdKXZl8pr96ydxudeN/u4
NMNwhbhO0pS2x2lu4LTnOwoc+CBpbnK0u99etVVr1eECmwNTA0TS8hblfG5s/gxcVCfGH+fe
SYhKLvX8AKe5uvSxVSzF6tJ3tc3qmRx7g/GkuUVpoRLx9/mHvCUFAICoSHPbE5j7NWxDP/l+
2cB9Znh6ROYXZhM4IR0+f33wUimXEgZOSMohjMAz5odH7+VSyN4L7DaXy2PvdcIVRcvH2Atx
naQpbY/T3GYjiXtzGg6rCUxTkOYevFTKtvliuLXqcKxwYGqASFreAp3P8DbPh0fvZXjyoCik
uWG69LFVLMXq0ne1zeqZgUxzC9RCVQvS5x/mlhQAAKIizW1P+LHxCJdlCwzD7U2x8VLgDjPf
uW6Bx373j9wJvDAwmJJmLKZdq5++Nfu4NEu5Bs5nXk+LB8YUUl6fgTR379//5lLI3gtsoNWl
jZoCn9hyxkYhrpM0pe1lmhuoQ/IaDqupbG03m8I+5GnuifHHmQOeQGXe+VkdmBogkpa3QOcz
MElr5wU2NrM8eJv2SXPDdOljq1iK1aXvapvVMwOZ5haohaoWpM8/zC0pAABERZrbtsBtTL5b
M+bi7K2FQIFbjsQF7jBzv1vLtn/V6RtPmr2qG48JB8b+9o/cablOXQ8mRnR+x/7bP/8Frpmi
zDbYKXBOwgOLnQjMDBibWQ6/thDXSZrS9jLNDQzLdmNQvtmfydCmuUevPJhceNPJWp2BkfGz
txY6OT+DVAPE0PIW63yWv28Gtg+oOw6P3jt/+1np5VoRW7qa8vfNqcV3Z27OB764NDcRuBh0
6TsxDF367rVZPZBvLZGIJM0tVgtVLUiffwhbUgAAiJM0t22Bx28jfBY7sPRoJ0M/aYY52hW4
Ew4MMwUGjLq0Z1W2IapE4I695d1+Sp3fsXd4zUQokHV1b7g2MMx34e7z8GsLcZ2kKW0v09zA
rzz66FW7xWjp4v0X8bQC/U1zT994kktlG/iT6XBAc2BqgEha3sKdz2Z/reHjxPjji/dfzK58
zP2c5279y4/5t+WxmeUzN+fD62Fm+Jsa7DRXlz6eiqVatC5999qsbuhqLZGIJM0tXAtVlD7/
wLekAABQCNLctgXu/HNfz7Nz4XmWmffyOTH+OPeiBkYMA5uBZbix7N7RcnJDIe7Yw0v5ZdsR
s79mVz42+zrdG3EL/NYtJ20U4jpJU9peprmBF47PvW63GC01G7kbkjT31PW5i/dfTC2+y3FD
4sBgaId5/MDUAJG0vIU7n5Wt7XBfqOVx+saTiacr+W6/nU0SyUwtvhubWT5/+9mp63Pp50tl
+6UGO83VpY+nYqkWrUvfvTarQ72vJRKRpLmFa6GK0ucfpJYUAACKS5rbtsA6YHvj21U0MFB1
ePRey5c3u8PsxsqlgWGRZvft4T3Pen+0TDp7sGlZ53fs43OvA9+xS9Mjuipw2ruxE1siMJzU
8ocoxHWSprS9THMDe3plKEbmckaY5v72z3+nrs9lO07feDI2s1w7phbfdW9HtEAT0OGA5sDU
AJG0vIU7n9Vqtfx9M7wlfMrj2LWHo49e9WxfwKUPX5NI5vSNJx0Oo9cd0tyELn08FUvhuvTd
a7PaEkMtkYgkzS1cC1WgPn9BW1IAABgk0ty2hRcaimpsa2PzZ6Cop288afkOze4w07y2XYFh
kWZT6wJ3p305Si/Xsp3PvfkFTp3fsZdergW+YzeCsW4L5HzdG3ELBGwt58EU4jrpUmkzv9vo
o1e9vGgLlOZG1SoFZBj9T2lgaoBIWt7Cnc/E0oevx649DPyltHUcvfLgwt3ni2ufc/+m5e+b
43Ov801lGg9pbkKXPp6KpXBd+u61WS3FVkskIklzC9dCFavPX5SWFAAABpU0t22TC28CtyVR
ZV3Ty+8DRU3zhHKzO8xurFUVOLHNlixb+g06Ph0AACAASURBVPA1r/vJXI6Wv34h7tjDZ7V7
D7Z3T4ZRxc4FTmPLga1CXCddKm3md8u2rmNmzeZhSHMzC/ydthxVz/zOxaoBIml5C3c+aypb
24HHPrIdx649zKtann9bDk8VzfGQ5iZ06eOpWArXpe9emxUQZy2RiCTNLVwLVaw+fzX6lhQA
AAabNLdti2ufc7z17arwvVaa5Zt6OfQTuJtt9nG93y0yfLR86LsQd+zh+R/Hrj3MpZy9FBiM
7t7YQeCHGLCRnUjS3GbDiHu7k+Y2q3ykuZkFRmA7/AUHpgaIpOUt3Pmss7j2Ofc5bb/9818n
s4uWPnztRkIT2CxTmpvQpY+nYilcl757bdauYq4lEpGkuYVroYrV56+JsCUFAIBhIM1tW2Vr
O3DrG1XWFYg39v79b5r7pcgf5A9sU9SXYzDS3Gq1emL8ceBr9ncAd2Pz58bmz7ZecuHu826f
9karn741+9ABG9mJJM09c3O+2Qu7MUum2TQpaW5m3RsZH5gaIJKWt3Dnc1dLH76ev/3s4KVS
4G+n3SPb2hWBKz/bcXj03oW7z+fflgM1gzQ3oUsfT8VSuC59L9PcyGuJRCRpbuFaqGL1+evE
05ICAMCQkOZmEX44ut2oqUvCQ1QHL5XSvEkvh34CQxUTT1d2fUnhHuQvyh17eCe5/q6FlZzD
E+OPL95/Mb38Ps2fW+DS6sseWgM2shNJmtvj2Rj2zc1d90bGB6YGiKTlLdz5DJtefn/h7vPD
o/cCf0Tpjwt3n7f16YGKq63j6JUHZ27OTzxdWf30Lc1Jk+bW6NJHUrEUrkvfszQ3/loiEUma
W7gWqlh9/mb625ICAMDwkOZmEd5nq3u7JbUlPCxy9tZCmjdpdod55uZ87gUO3H43u5sN3J0e
u/YweeS8l0fLkc2i3LGHt2dLefF0SeMUzJbJ7sTTlahGdn7757/wa4tynXSjtJnfLbAKZbOx
4040awWkuZl1b2R8YGqASFrewp3PlJY+fB2bWe586cj0JyGwokDL49T1ubO3FsZmlmdXPpa/
b7Z70qS5Nbr0kVQshevS9ybNLUQtkYgkzS1cC1WsPn9LvW9JAQBgqEhzswjcFO39+9/TN570
u4DVaqv7/5T3h83uMHO/96sGRwybDYuUv282e8nh0Xu5l7BzRbljD2+dm3IWSJeEl/Na+vC1
8SWB09695bxKL9cy/xBFuU66UdqizMZo9nHS3My6NzI+MDVAJC1v4c5nuzY2fybTjI5eeRD4
ywocsysfW35KIHLY9TtevP9i4unK/Ntys1SmkTQ3DV36SCqWwnXpe5DmFqWWSESS5hauhSpW
nz+93rSkAAAwbKS5GYU3Ft01UuqlwJhIcqRcO66XQz9nby00K+3ONcHqBL5jZWs790J2qEB3
7OEd2vp1hYdTq2YDRoHN2LqxwGAiMN2n5TyYAl0nuZe2G+N33ZhN3mxjNmluZt0bGR+YGiCS
lrdw57MT619+TC68OXtroa19AVsWafXTt8DCucmRbGw5vfw+c2cmUCtKc3fSpc+9zMPQpe92
mlugWiIRSZpbuBaqWH3+zAXoRksKAABDSJqbUfhx6f4uRVttte9p+qkGze4wuzE789i1h80K
HHjGPHBbGBgw6pcC3bEHirr373/H517nUtp2hS/s0Uevdn1VIOs6Mf6490VtVs6aAl0nuZc2
87strn3u5a/cbPRfmptZ90bGB6YGiKTlLdz5zMvi2ueL91+k3BcwHAGGn5fa+/e/528/63zH
1kBPVZq7ky597mUehi59t9PcAtUS4QL3OM0tXAtVrD5/53JsSQEAYAhJczPa2PwZeGJ6/8id
9Itc5a6ytR2+R5pefp/yrQJ3mPl+wcrWdqDAgRcGZlREstvZTgW6Y69sbQeu8MOj93o/T6L8
fTM8TWFx7fOuLwyck/0jd7r0RQJbRk0uvAm/tkDXSe6lzfxu4Ss291+52WdJczPr3sj4INUA
MbS8hTufuZtafNdy6cgLd583e/nqp2/h1+bVewn8TUlzd9Klj6FiqRatS9/VNLdYtUQikjS3
cC1Usfr8OeqwJQUAgOEkzc0uMMLV39uP8bnXgYIdu/Yw/VsF7jDTjx+lsfTha7MP+u2f/wIv
bLbeaYZhiB4o1h17+AqfeLqSS4HTC09PCY8WBcYLuvTcd2BouOVGUMW6TiJJc6vB0bR8f+VA
fSXNzayrI+MDUwNE0vIW63x2w8bmz/DyvIGKNNyW5bjPdy4dpGFIc6u69HFULMXq0ne1zSpW
LZGIJM2tFq2FKlafP1+dtKQAADCcpLnZBRb27MbgSPpShecvthXCBe4w811rN/MHBV54ePRe
jiXMRbHu2MMRUY+n57acnhJeyiwwUNuNeV3hyqHlynjFuk7iSXN7thZrYHhdmptZV0fGB6YG
iKTlLdb57JLwMHSgBxJoy/JtWAMrtUpz6+jS51jsIenSd7XNKlYtEX6r3qe5xWqhitXnz13m
lhQAAIaTNLcjZ27OB+7fDl4q9Xioa2PzZ3jNonaHAAJ3mOHn69sVGE0I75UVuEHd23zp3czK
3zdPXZ87dX1u9NGrsZnl2ZWP82/L6U9p4e7Yw09M93K2SmD2wN4UCyFOLrxp9tpubKMViBXT
fFyxrpN40tzSy7VA1dduSQIC1aw0N7OujowPTA0QSctbrPO59OHr7MrHsZnl87efnbo+d/BS
Ka8sJLzB/K6fsrH5M/CSHBe9CC8+n34v2CFJc6u69PkZki5999qswtUSiXjS3GK1UEXp80fV
kgIAwNCS5nZk9dO38FPzv/3zXy9vQsJDUXvbfyQ5fH+V13JVgZvMNIvIBUa7ztycz6WENRNP
Vzr5rYtyx14zvfw+fEV1nrKkEQ6r9v7978X7L8LvEFj3L8crOVHZ2j54qZS5qNWiXSfxpLnh
Cdx5zayaXfkYuJakuZl1Nc0dmBogx9J20vIW4nyev/2s2QNJebVc4fBp1z+9np26cPOdvp4f
njRXlz6XYg9Pl757bVbhaolEPGluIVqomsj7/HG2pAAAMLSkuZ0K72y0t4dbPQWGFZIjw/PI
4aGfNPeoHZY8zdZQ4d3OwlM22xLOitKMekR+x76r8PTco1cedPs2u+X0lJYTcxOB3y7fScbh
v5o0mWKxrpN40txqtTr66FW+13+jwKyjvdLcDnQ1za0OSg2wN5qWN/7zGegb5HUOq9VqYBx/
1wU2w4+D5LhqdHhBC2nurnTpu1ryAevSd6/NKlwtkWjWO9o/cidD2TrsDcbfQqV5hxj6/HG2
pAAAMLSkuZ1quZ3n3r//PXNzvtuP87ccgdqb6WHk8D3q4dF7nQ+slL9vBk5gmjKHH8HO8aY9
8BT/3nSTJCK/Y99Vy+m5R6886N6ddng7pbZGEwJ7ne4fuZPXo/qVre1A9pxyXcRiXSdRpbnl
75sd/pGGBZbvq/05dPgRGUhz0xiMGmBvNC1v/OczcBrz+jsNLIjabHX3wILwOf61Ln34Gp5m
Ks3dlS59hyUfqi5999qswtUSicCzbhmK12FvMP4WqibyPn+cLSkAAAwtaW4OWi4Du/fvf3/7
578uJV6Vre3wk+ydjICEh372tr+pUqOztxY6v0sMB365rLAaHqLaP3Inze8b+R17M4HfKDlO
jD/OccJETZoo9+ClUsqPLn/fDIxbnRh/nMv4bHiiQ8rguVjXSVRpbjW4OmXKadzNtFyHs61a
K0fS3DQGowZIjhha3vjPZ3jxxvD+nSkFnnZqthFp+K81l+5KZWv72LWH4UtImtuMLn0nhqpL
3702q3C1RCKqNDf+Fqom8j5/nC0pAAAMLWluPlouiZYMZORyz7PTxubP0zeetPzozHt9tRz6
2fv3v7MrHzOXPzzvM/1NbPh9Dl4qdT7mGN7AbDDu2JsJD3slx+HRe51cCbt+aMsot93zFp7v
0vmKYS1HgVNeh8W6TmJLc8PTTTKvDb7+5Ud4xe/a+2d48w5Jc1MagBqgdsTQ8sZ/PgONyLFr
DzsfzQ8M5TfL28Ij47ksXBlYcL52SHMDdOmzGbYufffarMLVEolAlp/hJ+u8Nxh/C5WIv88f
YUsKAABDS5qbmzRDMMndYy5P9Fe2tieergS2makdh0fvZR74SDP0c/BSKduKVbMrHwOhS7uD
COHkr8PJo+EF2dJP+Iv/jr2Z8CZeuV/eU4vv0lzb7e5gF17Bb2+6Td0Cbx4u8+ijVynfqljX
SWxpbrXVMGWGQDdllLtXmtuBHqS5A1AD1I4YWt74z2e47T5zcz5z8aqtJus3mz9X2doOP27S
YRvacjX45Dh27WHKN8wxzZ1/Ww4c7X/XLtKlb9cQdum712YVrpZIBOqKDPOJc3m2L/wF+95C
5fVNW+qwzx9hSwoAAENLmpubNKvC7v2/sZKJpyudfNb08vuU0cL+kTuLa58zf1CaoZ+9mUZ/
wuM+GfY0ahk3Hr3yINsQVWDvpeRI/3x3/HfsAeH1xHZeDGMzy5lHmpY+fE05iprtefCW29Fl
G9wJX89725xMU6zrJMI0N7yTWVLDjM+9TvOLVLa2x+det1xgeWc90+5X7pw0N72i1wA7jxha
3sjPZ2VrOzzgPj73OkPxqq2e8Dgx/jjw2vDmBZlHxjc2f7bcFiFDTZVjmhsuUvvfuIt06dt6
5+Hs0ne1zSpWLZEIPEh3Yvxxu/cFufQGI2+hcvymYR32+eNsSQEAYDhJc/OUfvRn79//Hrv2
8OL9F22tabb04evF+y9abnRUO/aP3Olw8duUQz97//734KVS+nvOlulI+iead2q5OF67g27r
X360HPU4PHov/RSB+O/Yw8Jr09Wd6vO3n7U1nlV6uRbYc6vx/bMN5FW2tn/757/wm5++8ST9
Coobmz9bLli3f+ROW6PexbpOIkxzq+lmkx+79nBy4U2zv9/1Lz8mnq6kHGSvHdLczHqT5ha9
BmisCfvb8sZ/PluO5p+5Od/u38ji2udwzRCeTtTy982QDq5++pa+c5hcOSnfeTjT3KouvS59
ByXsvM0qVi2RCCflp288aWtGdV7P9kXeQuX1TcM67/NH2JICAMBwkubmbGPzZ/pEqna3fPbW
wtjM8tTiu2S5ufL3zY3Nn8n/Pb38fmxm+cLd5y03Lm18204e4U+kH/pJjt/++S88hDG9/L7l
UMLh0XuZ9+BJc/KPXnlQerkW/oj1Lz8CI5g779jbGrIpxB17QGVrO+XE2Z1n+8zN+bGZ5eR6
TiLY8vfN5P8tvVy7eP9Fy6GWxms7W5RbO0Ut1zPcP3Ln4v0X4fGd8vfNyYU3af4w2/1xi3Wd
xJnmVtPtfZgcv/3zX3KVJseZm/PpB/EbL/h2v3LnpLltKXQN0OwC7mPLG/n5rGxtpwkwLtx9
niZpWFz73LJv0HI6UWVru+XXPHV9LmUXrvRyrd12OTlSTpUb2jS3qkuvSx/U1TarWLVEIrzh
ca3MtePE+OPDo/eavVtevcHIW6gcv2lA533+CFtSAAAYTtLc/FW2ttNPYezScfTKg/QPGge0
O/STHIdH7124+3zi6UptO7TxudcX7j5PsyVYu4MpdcrfN9OPkZ2+8WTniFttlC394F27j8YX
4o49LEOgm+9xePReJ1FuIs2QU3Icu/Zw9NGrnRfz1OK7sZnl9BfJ2VsL7RavWNdJtGluNfXy
4O0egTFcaW5mPUtzq0WuAQJHH1veyM/n4trnNO+8f+TOqetzScdgZwnn35bHZpbP336WZiz7
4KVSmr+4lD/xmZvzpZdrSSJYe23yONT08vuL91+EOzz7R+4EHpZK2Usc5jS3qkuvS99ct9us
AtUSidVP3zJcYM0C4xx7g5G3UEXp80fYkgIAwBCS5nbL1OK79Fst5nu0u5hV+Fs0+5R2FyBN
c+Qy+WD107dulK3xuHD3eY7nM6o79rDK1naXQrKWx9ErD/K6ve/NX+j5288yzEop1nUSc5pb
DUYR2Y5kl7XAJZqhkB2S5mZQ0Bog2pY35vNZTbFZZi5HW/uDtrsoRbvHsWsPVz99C1xLKbOr
IU9zE7r0GY6B79L3oM0qSi1R09ZKzsnR7CLJvW8ZbQtVoD5/hC0pAAAMG2luF61++tbt+/C6
4/DovQ531aoTvsPMNyY5du1hXqnDxubPbp/5JNHJ93zm8t17kOYmSi/Xejy4ef72s7bWfGtp
ce1zmskl2Y62tp2rU6zrJPI0t5rrDN3aH36zfyDNzazHaW61sDVAtC1vtOczkX7p9cxHWx2w
8vfN7sVUtVBh6cPXZv/mzM35NOWU5iZ06ds6hqFL34M2qyi1RE2G+d/NKvbce4PRtlDF6vPH
1pICAMCwkeZ2V2Vre+LpSrv7Y2U7Ltx9nm/WVU1xh5nX6M+p63P5Fr6ytX321kI3zvP+kTtD
csfe0tKHr+1uKZftyH1Ms2b9y48MMwlaHifGH3eyLmKxrpP409xqtbq49rnDH/rolQc7L8LA
P8tcyMykuZkVtAaItuWN83zWdG9e0eHRe6WXaxlOV+5RTV0XpbK13exfHrxUSlNIaW6NLn3K
Y0i69L1pswpRS+zU7m4so49e7fo+3egNxtlCFavPX42vJQUAgKEize2Fytb22Mxyl54I3j9y
5+L9F3mtw1YnzR3m+NzrDr/axfsvsq2d2NL08vt879tP33jSSTRSuDv2NObflrs3bWL/yJ1u
jGnutLH5M98/z86v52JdJ4VIcxPjc6+zTSgfffSq7jdt9i+luZn1Jc2tFrYGiLbljfB87rS4
9jnfBmv/yJ3RR68yN1Ibmz/z2oq+WW8wsO3r9PL7liWU5tbRpQ8fw9Ol71mbFX8tsdP6lx8n
xh+nL1Kz6b9d6g1G2EIVq8+fiK0lBQCA4SHN7Z2NzZ8TT1fausUNH8euPRyfe93VO5+Ud5jl
75vZBhpO33jSg61xphbfdf5g+7FrD9sd0di1JIW7Y09pevn92VsLOa69fPTKg25f3jttbP68
eP9FJ+XfP3Ln/O1nuSRnxbpOCpTmJqaX35+//SzNWN6J8ccTT1caf9ONzZ+Bl+RSyLZIcztX
xBog5pY3qvPZaHzudS7T3c7cnM+lhJMLbzqZ8RmOAKeX3zd7YZr6Spq7K136xmPYuvQ9brNi
riXqVLa20+9wcezaw13fpKu9wahaqGL1+XeKrSUFAIBhIM3tg9VP30Yfvcp8/3Ps2sOxmeVc
Vh1sqa07zNmVjynzvIOXShfuPl9c+9yDr1BTerl2/vazdk97UtS8xqdmVz6euj6365HXSsLl
75vNPuLi/Re5fERAZWu79HKtk1j32LWH528/69eeSeXvmxNPV9odxzx1fW5y4U2Ok2mKdZ3k
W9oefPea+bfliacrYzPLF++/qH3K+dvPxmaWdw1xawLjYu1uMpeLZM3zZkeXpnnlbmrxXbOv
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
V8Ljx4+fPHlyamoq/SWd6DDNzfd6AwAAAKDvpLkA0GcDk+bWpVDz8/PVarVSqfz++++7hn97
9uxpzAWTV7VUqVT27dtX99rp6ek0r93Y2Kh77fj4eAffO1TIiYmJZtlnY8yWJmPb2NjYGU/W
TmP6APXkyZN1Lz906FDg5ZVKpS6Mb2nfvn0jIyMpi1RXntoFUC6X//jjjzQf1Piei4uLjQFw
nZMnT66urmY7abU/0sXFxcafo86hQ4fGx8fTP2qQOc3txvUGAAAAQN9JcwGgz+pSlgFLcwNR
7p49exoT2cuXL6f5rPn5+cZ32zXYazQ9PV33wm6sQ7u0tNRWAlr7Ci2ncu763X///fc0pZqY
mGh8bSBBn52dbZlWNnPgwIE0CyPvmubOzs6mTCX37Nlz7ty5uu/YeF3tat++fZOTk2nO265p
7q4ns5kjR46kDI+zpbndu94AAAAA6C9pLgD0WV2+Mkhp7uTkZDhMunr1al1YePz48TSfNTIy
0vhuKV977ty5na/65ZdfOvveu5idnU0ZKDY6efJky3mcu379llfO0tJSY6muXr3a7N9PTU1l
+wo1+/btazkBtDHNLZVK7X5Q7SGAXc9MuIRpsvzGNLfltd3owIEDaabDZkhzu329AQAAANBH
0lwA6LO6cGVg0txSqdQyYVpfX6/LVvfs2ZNmhd5m6+imyaXq8uNAnJlNIIw8cuTI77//Xtt+
tdm3OH78eHjGZKVSaXxtywWTGzdS/fXXX5t9UOMM5kSy9ewff/yRfIXLly+fPHkysKzxr7/+
Gj5ddUHp+Ph442Vz4MCBkydPnjx5stkVtW/fvnK5vGvCeujQoeS1zUr4xx9/tPxN617euEvu
kSNHJiYm5v/P1atXd50pu2/fvpZribeb5vbgegMAAACgj6S5ANBndcnKwKS5daFpLZCrRUpJ
TDU7O9vuGdjY2GgWX7XcOndxcbHuJWlWA05vfX1918Tx3LlzuybN6+vru+4OW7d6cKPV1dXG
D/rzzz+b/fvGSasHDhxoNi21Uqk0LrAc3v9112A+Ec4vAznrvn37/vrrr7pCrq+v7/qSuqz3
l19+mZ6erittqVTaNWSdnZ0NlLBlIZvtu7xrMt0yOm0rze3Z9QYAAABAv0hzAaDP6mKVgUlz
aw4cOFD3pcrl8tWrV5PktVKp1MVRLYOlwArALbfOvXr16s5/f+TIkc6+9P+oVCq//vprXZEO
HTrUMizc9RuVSqXwq3bdt3XXPLsxMm/2LxN1Z2lPMPrdadfFnP/666/AS5oFpUeOHAmsSxxe
Ufny5cvNEtONjY3GKaotL7lmhWy5ePKuayBPTEwEXpI+ze3x9QYAAABAX0hzAaDP6jKVAUtz
0+wVWjdZ8MCBA+F/32wO6J4Um+DWJXnhoLFdjfFqym1Zq7sFbGk29G1MGQ8dOlQ3KbNcLjdO
tA3H3nX/Ps32tzWNJyH8RXYNSg8dOhQ+bxsbG81WXW6Z6C8tLdW9pOVqxs3S3DQTuxuj9Mbf
aKf0aW7vrzcAAAAAek+aCwDdkmyf2VJdplLbkTQgzsR31zQ3PA0x0RgshbPDnR905MiRulQv
kGatr6/XfVDLTUzb0ngGJicn07+8cQnclgtH75rU1s00/f333+v+QXix38bFqAMLOO+qMQwO
/ONdg9I080R3nZ6bbKDb8rV1oX7LKdq7FjLNhruJv/76q+61zRZnrraT5vb+egMAAACg96S5
ANAtjUltXlpOJeyLxmzp0KFD4S1CE4374F69erXZP66bWPnXX3/VJW2BqLsuNj5w4ECa4qU0
PT3d4c/UuEzx77//nuFz9+yYMzo5OVn3P+3bt291dTXwhpcvX657ScuVe+s0Lv8bSFgbg9Lj
x4+n+ZRdv3jgytmpMV4N//vGQrY8jTuVy+W6XzZ9RtvsX/bregMAAACgx6S5ANAt0tz06xjX
pWXpV5ednp6uSx8De6DWTUZsuVtqWxpnOrYbglar1T///LPuTQJL8tY0Lj2dzL5dXV1tXI44
zcTupaWlZGb55cuXMyR8jd8iMGG6MShtuVRyYn5+fk+DlOsMN/5thl+YuZA16X/ZlGluH683
AAAAAHpJmgsA3SLNTb8i9Pj4+M4X7tu3r1mqVBdibWxs1E1SbLZqbqVSqYs20yznm96BAwfq
vn6GYKzuPOxJF9FVKpXGkz8+Pt44RzbfALuZxnS5rTQ35Xq/jetmh5d03qlxx9l209w06znv
1Lh7brO/jpRpbh+vNwAAAAB6SZoLAN0izU2/FG1jMrdrpFeXyCZL8jYu1LxrMlcXp+3bty/H
ZZZXV1frypByueBwIfekXjp4cXGxcRpunV9++SXHr9xMpVJp3Km3rTQ35WXTeM388ssvKQvZ
uFVzW2nuoUOHUn5QTblcrvvEZjPX06S5fb/eAAAAAOgZaS4AdMvU1NTJFBoTqZYvaXeV195o
THPbevkvv/zSMuuqW1y3dh6OHz++87/vOuuxbqvUfLcILZVKKbO6sMZkOn05w08P7Nu3r7aZ
bu7W19dnZ2evXr3aeD0n2kpzU84xbUxz//jjj5QF7jDN/fXXX1N+0E51s2mbPZORJs2N4XoD
AAAAoDekuQDQZ3VpSvrViXdKExvXWVpayuvliboUKv2yt4m67W93XTC5LrCszd8dGRnZ+d93
XU+4rnjZznMzjSv35qVZ5rerxqWVayYmJnL5phsbG/Pz85OTk1evXv3jjz+axbd12kpzU5ak
Mc1N/5RDh2nun3/+mfKDdqq7ApvNJE6T5kZyvQEAAADQA9JcAOizujQlW8qYIbaZn5/P6+WJ
uhSq2f61zdTNu92zW8C2M63cuVRyy61zl5aW6t683X1Pw7q3qnb61YOr1er6+vqu6y2nn7Ta
7G1HRkZOnjzZcjHnZtKnuQcOHEhfqrpPSb9KcIdp7uXLl1N+UOBNmn3TNGluJNcbAAAAAD0g
zQWAPqtLUwYmzc2wGu2hQ4d2vkPddNK6VWF3plwtt84dHx9v9tpc1E0OzlG7ofiuJck8MXdx
cfGPP/7o/FukT3PTf98+prmTk5MpPyjwJnuazEJOk+bGc70BAAAA0G3SXADos7o0ZWDS3AyJ
6blz53a+Q92M0roJuHXRXd3WuXV5W12QNj4+3m7Z2ip5jtpK15rNzd23b9/q6mpb32hjYyPl
Kso7P+XPP/8slUqNAfCApbmZl0Ov+9Bd/1mav6NIrjcAAAAAekCaCwB9VpemDHOaW5fX7lxL
uVqt/vXXX4EC1K09uzMJbjlzt3ONcyXPnTt3NQ9tTasN7Jv766+/7jyZYevr67/88kuay+Dk
yZPnzp0bHx/f+XM0Zo3S3MY3OXTo0K7/LNvc3L5cbwAAAAD0gDQXAPqsLpUZ5jS3UqnUTS3d
+Sk7378u6K02bLu7c1PSuuiuGzuDXm3YxzTb75hvGeqkDDsrlUqzVHjfvn0nT568evXq9PR0
YLLvwKe52eZ21/2BNLsOs+2b2/vrDQAAAIDekOYCQJ8NTCrTeZpbrVbrFum9fPly8t/rorvf
f/+97oWNSfDS0lLyP/3555/ZMr/0Jicn637HkZGR3D8lYHFxse7r79u3r3HV5cYMvlHdHsOJ
Q4cOTU9PpyxM3QnfM3Bpbu2ybEvdz9HsDyTN31HfrzcAAAAAekaaCwB9VpfKDHmaWxezHT9+
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
83q9Kr/JqcVisd/vdW49yj0ej/1+L0X7lmWpn2PLM5v+ofThgy5XGIau67quu91ubdve7Xau
616vV+m265OPX2BySHMBAAAACYHBDPWUBn0gzdW5gbdbp7l2cShb7nA4FFXr+774J83hB4tI
u0WKco2CCYMxDz0dvxjc1NPQqdeviTQX4xcEQRAE7u9dr9duxyYVl+/7fhAE9JbDFL1er/TL
fLvdxO9zEAQ9ZfzP57PlLcC3OZ1OUpqr/5QtZo80FwAAAJAQGMwQaW55neI4bDoz52U8zxOr
FRs3pUfLmw3XlpF2i9q9QHOuX0wRae5cTT0NnXr9mkhzAQD4DMdxpFueoSvCiJDmAgAAABIC
gxmabpqrE4K2T3MXi0X2Ap0JbjO3202sVuwKI3bbrdXfN5c6iZRqu922XAvGqafjF4Obeho6
9fo1keYCAKDjcrkEQdBm8hdpRvBaT9li9khzAQAAAAmBwQz1lAZ9IM3VWWb7NFdc436/11lp
KggC8b1imrvf77N/X61W+svMlZvmLpfLzWYj/suAs/ehP6S5czX1NHTq9WsizQUAQId4U7Za
rQ6HQ623h2Eo3ezUXQLmjTQXAAAAkBAYzFBPadBs0lxx4GLHcXRWmpL65oojLYtp7mKx0F9m
LjXNXS6Xr9fr9XqJxTPe8iz1dPxicFNPQ6devybSXAAAdEjjJBs155oRRzZK8aAqRKS5AAAA
gITAYIZ6SoOkqWF13jLONFesarPZ6Kw05fu+WK04y6/UHqG/zFzSblmv11lqK9XAeMvz09Px
i8FNPQ2dev2aSHMBANDheZ4Ux/q+r/ne+/0uPqJqGIZpmkmS9FowpoU0FwAAAJAQGMxQT2mQ
dMeu8xbLsrLXjyfNXa1W5S8ocjwexWrFFgcp6haD3gbKpxOWxls+n89t1oWx6en4xeCmnoZO
vX5NpLkAAOh4Pp/GT6ZpimMXFVGjXMMwjsfjB2rGhJDmAgAAABICgxnqKQ2qm7wmSSK+fjxp
rjgqcq29tNvtxNYK8U/SIMzilLolfN+3bXu/37uue7vdsn8v3y1hGIotIKZptgyPMSo9Hb8Y
3NTT0KnXr4k0FwAATeJ9WXZjcjwei+aCeb1e0o1YarVa0TEXEtJcAAAAQEJgMEM9pUHlHUZV
QRCIrx9PmiutVIxRS0RRJGao0hDHUgCgOc7Yer3O3rLf74sqLN/Gov2Aierp+MXgpp6GTr1+
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
BYAecSpDh8bWCFXX1OsHAADARI3tQpT7xHmj9bwl0tzxrL1zpLnAJ/G1nxnSXADoEacydGhs
jVB1Tb1+AAAATNTYLkS5T5w3Ws9bIs0dz9o7R5oLfBJf+5khzQWAHnEqQ4fG1ghV19TrBwAA
wESN7UKU+8R5o/W8JdLc8ay9c6S5wCfxtZ8Z0lwA6BGnMnRobI1QdU29fgAAAEzU2C5EP3mf
+Hw+b7eb67qO49i/t9vtLpdLFEWaSwh+T3xLGIaHw0Fcpuu6jbOZKIqu1+t+v7cF+/2+WZ1x
HGdFZhu+2+3O53OSJCULCYLA87zdbmf/5DiO7/thGJa/N7Ver7OPeLvdBoKigh+Ph842vlt/
oEWfZhzH5/N5u92KW+26bvkmF2mzG99dp7lRFHme57quVIzruuW7ve4HmruEj32dcje85THV
zPV6lfb2+XzO1tgszR12T7b8Puvr5CTW7bm0q3P+SDZNWlqzM0N/5XV4fu789+gzvx3p2UNc
muu6z+cze8Hr9crKEP/9e5DmAkCPOJWhQ2NrhKpr6vUDmKsoinzfF9smbNs+nU6u616v10FK
ejweJffSzTyfz/P5LLb8prbbred5mg0xADBRY7sQ/cx9YhzHh8PBKLXf71+vV/ly9vt99vrL
5fJ+v5/P52azKVrmZrO53W76dUZRJK4i1+FwqGwNFxeS/q5dLhd1UYvF4n6/q/vKdV3LssrL
MAzDtu2iH83K9xo/P3Gx4OVyWbmjOvlA1U8zSZLT6VS+yZrt8p3sxnd3ae7r9TocDqZpllSy
XC7T/aCq3Aqj4BAe5Osk6uqYqiVJkvP5vFwui9bo+/67Zpo77J7s6vusr81J7N3PubSrc/5I
Ni3V8szQX3kdnp/Li0kVrTr396jX347Ks8d2u01/2lzXzf7xO7sa5358tRfSVTU/FtpFZQAw
LE5l6NDYGqHqmnr9AObn9Xo5jlNyC7parT5fVRAE5ffSdV0uF/Gh7CKmaeq06UNVuW/b43MB
WhrbhWh2dPe3ivP5rBNCpM7nc8mipDbcIAh0lnw8HnXqvN1u5U3qGcuyclv5c+sMguB+vxct
SjqpPh4P/X2Vym3l13ljUcGVv/hdfaDSp/l6vVarVeUCTdMs3/kd7sZ3R2luGIb69Wy3W7VT
oM4b+9sPzdb+7vSY0pckyXa7rVzj8XjUT3OH3ZMdfp/1NT6JvXs7l3Z1zh/Jpr27ODN8bM+3
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
SXVW5Ww2MzzW4/FQ0ySr1crw7YhKs1PycrlIDaA2lZtRt2o2b+RlikkdFdlcrbx+fHz4/X6X
VvDWSpJEm4TTPmsi0b7x+Xx+fX0ZbuQ8Ho+1baPB0Yv/qyJPHL5aDAuWF69snf9i2dbrdcVs
3Zbf0dzj8Sj+0CbPx6zX6/z12abd+coWSZJUfELjNxYV+1znW4YDABBG3pdZv9FHaQAAQFHf
s6F9Lz8iIY1Ama+rBkBFNrdMmqZqEsJqBqc6EF82XK7umGu7g+n397f0CaPRyPztiEezU1Kd
umeen1DXBm+zVGzZ9s85srlaef04/+Tn86k2jwrL5VL6hGbZ3Pv9bnXcjDpj1VPStJNqMSlY
5nw+a6cya00mE+0C6e2/o7niA0wmV63j8Vgsf/aPxbWaR6OR9kLU+I2S4kMn1StnAAAQrbwv
s36jj9IAAICivmdD+15+REIaeyKbC7RBNrdMccg4Yzvb9Xa7SZ9QNutRncvYYFRd3Xa3Yiow
otXglFRb2nw+Nz+iOj3XZIlvLXXv3sViIX042VytvH7cfqy6vehoNPr6+tr8ndVqpV46pJ1E
GywprN0IfDKZ5If++vqazWZqwlK9SDY4evFl2iixq2qpLVhG+0jEZDJZrVZZ8dTptuop7+Q7
misWab1e177+dDpl1wppX4B83u10OtWu/9z4jZLiYstJkjjZLxwAgMDyvsz6jT5KAwAAivqe
De17+REJaeCJbC7QBtncMmqGtcFijGquQvsydfpUgyubOr4fbdoMFRqcksV1RzNWuyY/Hg/p
7Y1nqkmNMNsPtS/N8iWzucUtRQeDwW6302at9vt9cSmCJEm0+bBiAmxQOYdbmrc6m820D5c8
n8/NZiNdJ8uutOZHL75Mey3tqlpqCyaESNNUeiRiOp2qtXe9XqWOQ8qhuv2OtYo/ouGWwI/H
Yz6fS9OX0zSdTCbb7dbHGyXFLx7tdQkAgAp5R2b9Rh+lAQAARX3Phva9/IjE4LfXzuZaLeuq
dT6fmw3MBXO5XLxOiYi/Btq4Xq8t51/6y+Zer9c267Waa3+aaKnLzzaoavVD1NaoXdK5Yh/E
Mtvt9q0uj3Hq5JSUJtg1yMXu9/vNZrPf78/n8/l8bnZOSdmj8XicpinZXEONB+OqFS9B1asL
SL+U9uphmLaUrmmTyaT6giYtFF82s9xh0rSTajEpmFAeJPr6+iqLkR6PR/Hcl1bXd/sdqxUX
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
6F+zWIjV6tfUxvxdw+GvV55OYrEQ+33p4YozLCteBlvBwoAwDYYmBwAAAADAG2A4MqyybO6g
6XrLUWVzpW+E+L1nnolsbgNWZ3fnpfWN2mjgBbK59HFv7vEQw+GfXz9JxOOhec3z+Wt24+Eg
hBDn859/mUz+fM52+3NlqFh9VzpiH8+aOIUJA8I0GJocAAAAAADvgeHIsCqyuYNG6y2TzUUb
l4s4n3/+mk0Q750+ZnM7/6Wszu7OS+sbtdEA2Vz03WLx8+t/felfo4Z54/HPfMePj5+tSYt/
2jxfZrf7eZnhrquoFSYMCNNgaHIAAADA/9/e/QK1kix6AEZGIiORyCORkUgkp+oKxArECiSr
kIitLSQSsQKxAnlk1C0kEnEFklpFrcpu1Vb1E+GFoWcy6fmbzjnfVyPuOwtNp6enk9e/dDfA
j8F05Ljq09zptPH5WNJcaGoX09yt83QXaY0WpLnstKenj1u/bp1l+HxIavpVs6XtYhGm04+f
bPG1P8pGePMdrcPocgAAAPBjMB05rvo0d28vnJ11KlCaCxvlk6HmU5ONPN1FWqMFaS477eTk
49avOwA1hPD6Gh4ewuVlmM02fN6bTsPJSbi+3pyWnZ9//NbJSa+v6kc1wpvvaB1GlwMAAIAf
g+nIcUXh63T66fvvy+vbt/YFSnNho3wy1HxqspGnu0hrtCDNZXe9vn4cTbq3F+7vU39xPv8U
jC3H+bu78Pzc4K+vzkBdXk9PLV4Bnwz95rvFDqPLAQAAwHfKdOS4yuHrt28V351P329ZmgtN
5ZOh5lOTjTzdRVqjBWkuu2t1CuneXphMGpx+/fYWDg7innN11bgCxW/+nZ83/nUiQ7/5brFx
tfyOAAAgAElEQVTD6HIAAADwnTIdOa7K8PXsLJ52Sd9vuWOaO5+Hq6swm4XZLOzvh8nk/X9f
XKQuEX5+DvP5+xW9itW/L68uiuUUM4CHh3B8HA4Pw+FhOD4O19drTyYrenkJt7fh+DjMZu9z
Xk1fdY3X13BzE87OwmwWptNweBhms3B+Hh4fP/1Ysd2i/1TUrg0Xi0+/VVP+4+Onn1w34bhb
7X99Hc7P39v/y5f3kosrS8bJUPutSeKdinz7Fq6uPuownX409cPD5m+NtH66E2tb/LFo2dDb
W7i7++gk+/thNgvHx+H2tmsK+PISrq/D6el7yQcH7w1ydbVh+dHQrVHWfXyurMNoTR2pSXOf
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
QI7+D3tWwbzyFsKSAAAAAElFTkSuQmCC
--------------050903020201060500060904--

--------------000909070608010606030501--


From nobody Tue Jun 23 10:09:15 2015
Return-Path: <heas@shrubbery.net>
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 B917D1B2E2E for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 10:09:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.726
X-Spam-Level: 
X-Spam-Status: No, score=-2.726 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FAKE_REPLY_C=1.486, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, 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 xge_El_7GnZf for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 10:09:12 -0700 (PDT)
Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ietfa.amsl.com (Postfix) with ESMTP id 957E61ACEA6 for <netmod@ietf.org>; Tue, 23 Jun 2015 10:09:12 -0700 (PDT)
Received: by guelah.shrubbery.net (Postfix, from userid 7053) id 3684674E82; Tue, 23 Jun 2015 17:09:12 +0000 (UTC)
Date: Tue, 23 Jun 2015 17:09:12 +0000
From: heasley <heas@shrubbery.net>
To: netmod@ietf.org
Message-ID: <20150623170912.GA24097@shrubbery.net>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20150623105747.GA34924@elstar.local>
User-Agent: Mutt/1.5.23 (2014-03-12)
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Lmo63pOsFw3nsuISYA4J_6_diJA>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 17:09:13 -0000

> Date: Tue, 23 Jun 2015 12:57:47 +0200
> From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
> 
> Why is it hard to provide generic access to counters? Processing the
> data model easily gives you the query to retrieve all counters (but I
> am not sure this is operationally a good thing to do anyway; is
> blindly polling counters really how networks are managed?).

FWIW, we do this often - collect every entry in a particular mib table,
and discard what is uninteresting to us, because it is usually much
faster than individual OIDs.  I expect the same to be true collecting
statistics via netconf/restconf.

> Date: Tue, 23 Jun 2015 09:37:26 -0400
> From: Phil Shafer <phil@juniper.net>
> 
> Precise language is so important, so I think well-defined terms

yes, please.  Great to see this dialog.

> matter.  Then again, one can be completely precise while being
> completely useless, like my current favorite word, sphygmomanometer.

or northbound/southbound.


From nobody Tue Jun 23 10:51:11 2015
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 8E3EA1B2F33 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 10:51:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.378
X-Spam-Level: 
X-Spam-Status: No, score=-1.378 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_34=0.6, RCVD_IN_DNSWL_LOW=-0.7, 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 9xrS6H563QfB for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 10:51:07 -0700 (PDT)
Received: from mail-la0-f42.google.com (mail-la0-f42.google.com [209.85.215.42]) (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 C97D21B2F18 for <netmod@ietf.org>; Tue, 23 Jun 2015 10:51:00 -0700 (PDT)
Received: by lacny3 with SMTP id ny3so11371764lac.3 for <netmod@ietf.org>; Tue, 23 Jun 2015 10:50:59 -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=oVZn869fq9jW3WHNLFlF3Y01DZKkJjEIfLkzZe+YurM=; b=Mb15mWYpRcnkUbipSUW1Z3hWzP+4U+sPcXnk68/Uy6ctkQdfIemL1DJqrBpU1meL2w JEOdnFrMkWOFe8Y0RnmxctVgMfh8NngVTN5omsZxlwQFCzxfyKjfXbdff24BEvF+sRp8 XmshzX6AFjTWdSqU4ciaI0/Rw9AnE9LiwN4lFWTa/IyvypyZkNH+KpWQvRmeormKrOST ZKCIam7o8i8g0H3BIojbsINymE7JWv8ejl2PUVhctJJtVaqCPX+0sGuepksBRjUnzLnH WpxM2qZt9pzB1cQFs4o1a7l2qMxAPR171NoexlG4nptZngAGEMXL4gkq82GAI0JjDZRS 030Q==
X-Gm-Message-State: ALoCoQnA0z8LUxqZpds4zDwOjebmOdbF68ck3tcWyS8W/ewiDhU/P5aBtZXrMuMo7yBhyK+cgMDw
MIME-Version: 1.0
X-Received: by 10.112.124.71 with SMTP id mg7mr36276829lbb.38.1435081859333; Tue, 23 Jun 2015 10:50:59 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 23 Jun 2015 10:50:59 -0700 (PDT)
In-Reply-To: <201506231337.t5NDbQD5017860@idle.juniper.net>
References: <20150623110606.GB34924@elstar.local> <201506231337.t5NDbQD5017860@idle.juniper.net>
Date: Tue, 23 Jun 2015 10:50:59 -0700
Message-ID: <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Phil Shafer <phil@juniper.net>
Content-Type: multipart/alternative; boundary=047d7bfd0d8673197405193308f3
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/6fX5F19O6iGbGEObtTVTZJ2tp2E>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 17:51:09 -0000

--047d7bfd0d8673197405193308f3
Content-Type: text/plain; charset=UTF-8

On Tue, Jun 23, 2015 at 6:37 AM, Phil Shafer <phil@juniper.net> wrote:

> Juergen Schoenwaelder writes:
> >On Tue, Jun 23, 2015 at 01:14:40AM -0400, Phil Shafer wrote:
> >> If I were picked terms, I think I'd go something like:
> >>   base config + ephemeral data + defaults => intended state
> >I like intended state way more than intended config. I would change
> >the other two slightly:
> >  provisioned config + ephemeral config => intended state
>
> I dislike called using "ephemeral" with "config".  We did this in
> JUNOS and it was confusing.  It's not really config.  If we used
> BGP to tunnel stanzas of XML that looked followed the conventions
> of bgp.yang, would it be config?  If so, what does "config" mean
> as a term?
>
> "ephemeral data" makes it plain that we don't consider this config.
>
>
But it is config.

There is absolutely nothing "learned" about I2RS data.
The client connects to the server and the client is authenticated.
The authorized client requests to change ephemeral configuration
are attempted by the server. Just like configuration.

Negotiated data is something the server has a mechanism to alter the
outcome.

Discovered data is something the server has no mechanism to
alter the outcome.

Whether the non-configuration is learned from the local system
or learned from a protocol message from another system seems
rather unimportant.


>>   intended state + learned values => actual state
> >In reality it is more like this:
> >  intended state + learned values + device properties => actual state
>
> Yup, completely agree.
>
> >In other words, even if you know the intended state and the learned
> >values, you most likely won't be able to predict the actual state
> >precisely without knowing device specific properties. But we likely
> >ignore that nasty part of reality...
>
> Yup, and reality can change when you swap FRUs.
>
> >>   actual state + counters => operational state
> >This should be:
> >  actual state + statistics => operational state
> >Statistics is largely dominated by counters but not only counters.
>
> Sound good.
>
> Precise language is so important, so I think well-defined terms
> matter.  Then again, one can be completely precise while being
> completely useless, like my current favorite word, sphygmomanometer.
>
>
IMO getting the concepts right needs to be done first.
Picking the right terms helps if the concepts are right in the first place.

The thermometer example I have given many times needs to be understood.

Let's say the same leaf "temperature" is used in all datastores.
The "running" temperature is the configured desired value.
The "operational" temperature is the current value read from a sensor.

So where does "ephemeral" temperature fit in?  Does this setting override
the desired temperature and have no affect on the operational sensor value?
Or does it over-write the sensor value to the device is now lying
when it reports the operational temperature?

IMO it is quite obvious that ephemeral data is configuration, not state.
Operational state is always read-only.



Thanks,
>  Phil
>


Andy


>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--047d7bfd0d8673197405193308f3
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Tue, Jun 23, 2015 at 6:37 AM, Phil Shafer <span dir=3D"ltr">&lt;<a h=
ref=3D"mailto:phil@juniper.net" target=3D"_blank">phil@juniper.net</a>&gt;<=
/span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">Juergen Schoenwaelder write=
s:<br>
&gt;On Tue, Jun 23, 2015 at 01:14:40AM -0400, Phil Shafer wrote:<br>
&gt;&gt; If I were picked terms, I think I&#39;d go something like:<br>
&gt;&gt;=C2=A0 =C2=A0base config + ephemeral data + defaults =3D&gt; intend=
ed state<br>
&gt;I like intended state way more than intended config. I would change<br>
&gt;the other two slightly:<br>
&gt;=C2=A0 provisioned config + ephemeral config =3D&gt; intended state<br>
<br>
I dislike called using &quot;ephemeral&quot; with &quot;config&quot;.=C2=A0=
 We did this in<br>
JUNOS and it was confusing.=C2=A0 It&#39;s not really config.=C2=A0 If we u=
sed<br>
BGP to tunnel stanzas of XML that looked followed the conventions<br>
of bgp.yang, would it be config?=C2=A0 If so, what does &quot;config&quot; =
mean<br>
as a term?<br>
<br>
&quot;ephemeral data&quot; makes it plain that we don&#39;t consider this c=
onfig.<br>
<br></blockquote><div><br></div><div>But it is config.</div><div><br></div>=
<div>There is absolutely nothing &quot;learned&quot; about I2RS data.</div>=
<div>The client connects to the server and the client is authenticated.</di=
v><div>The authorized client requests to change ephemeral configuration</di=
v><div>are attempted by the server. Just like configuration.</div><div><br>=
</div><div>Negotiated data is something the server has a mechanism to alter=
 the</div><div>outcome.</div><div><br></div><div>Discovered data is somethi=
ng the server has no mechanism to</div><div>alter the outcome.</div><div><b=
r></div><div>Whether the non-configuration is learned from the local system=
</div><div>or learned from a protocol message from another system seems</di=
v><div>rather unimportant.</div><div><br></div><div><br></div><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;=
padding-left:1ex">
&gt;&gt;=C2=A0 =C2=A0intended state + learned values =3D&gt; actual state<b=
r>
&gt;In reality it is more like this:<br>
&gt;=C2=A0 intended state + learned values + device properties =3D&gt; actu=
al state<br>
<br>
Yup, completely agree.<br>
<br>
&gt;In other words, even if you know the intended state and the learned<br>
&gt;values, you most likely won&#39;t be able to predict the actual state<b=
r>
&gt;precisely without knowing device specific properties. But we likely<br>
&gt;ignore that nasty part of reality...<br>
<br>
Yup, and reality can change when you swap FRUs.<br>
<br>
&gt;&gt;=C2=A0 =C2=A0actual state + counters =3D&gt; operational state<br>
&gt;This should be:<br>
&gt;=C2=A0 actual state + statistics =3D&gt; operational state<br>
&gt;Statistics is largely dominated by counters but not only counters.<br>
<br>
Sound good.<br>
<br>
Precise language is so important, so I think well-defined terms<br>
matter.=C2=A0 Then again, one can be completely precise while being<br>
completely useless, like my current favorite word, sphygmomanometer.<br>
<br></blockquote><div><br></div><div>IMO getting the concepts right needs t=
o be done first.</div><div>Picking the right terms helps if the concepts ar=
e right in the first place.</div><div><br></div><div>The thermometer exampl=
e I have given many times needs to be understood.</div><div><br></div><div>=
Let&#39;s say the same leaf &quot;temperature&quot; is used in all datastor=
es.</div><div>The &quot;running&quot; temperature is the configured desired=
 value.</div><div>The &quot;operational&quot; temperature is the current va=
lue read from a sensor.</div><div><br></div><div>So where does &quot;epheme=
ral&quot; temperature fit in?=C2=A0 Does this setting override</div><div>th=
e desired temperature and have no affect on the operational sensor value?</=
div><div>Or does it over-write the sensor value to the device is now lying<=
/div><div>when it reports the operational temperature?</div><div><br></div>=
<div>IMO it is quite obvious that ephemeral data is configuration, not stat=
e.</div><div>Operational state is always read-only.</div><div><br></div><di=
v><br></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks,<br>
=C2=A0Phil<br></blockquote><div><br></div><div><br></div><div>Andy</div><di=
v>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;=
border-left:1px #ccc solid;padding-left:1ex">
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div></div>

--047d7bfd0d8673197405193308f3--


From nobody Tue Jun 23 11:19:16 2015
Return-Path: <shares@ndzh.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 11E6F1A7D82; Tue, 23 Jun 2015 11:19:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -99.054
X-Spam-Level: 
X-Spam-Status: No, score=-99.054 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DOS_OUTLOOK_TO_MX=2.845, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100] 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 MXZsj8M9eeam; Tue, 23 Jun 2015 11:19:12 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9DA261A876C; Tue, 23 Jun 2015 11:19:11 -0700 (PDT)
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=174.124.187.115; 
From: "Susan Hares" <shares@ndzh.com>
To: <netconf@ietf.org>, <i2rs@ietf.org>
Date: Tue, 23 Jun 2015 14:19:08 -0400
Message-ID: <00d901d0ade1$194280e0$4bc782a0$@ndzh.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_00DA_01D0ADBF.9235C2E0"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AdCt3DMPLBEZlsLhQ3mxKrWQI0Jk+w==
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com 
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/_NY04ivbkC4MQH9Bx0ZiZHUnwDg>
Cc: Rtg-yang-coord@ietf.org, netmod@ietf.org, "'BRUNGARD, DEBORAH A'" <db3546@att.com>
Subject: [netmod] Requirements for I2RS protocol and I2RS interim (6/24/2015 at 10:00 - 11:30am ET)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 18:19:15 -0000

This is a multipart message in MIME format.

------=_NextPart_000_00DA_01D0ADBF.9235C2E0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

Netconf Working Group: 

 

The I2RS WG would like to pass you a set of requirements for the I2RS
protocol, and asks that you provide an analysis by IETF 93 on whether
NETCONF or RESTCONF can meet these requirements.   We expect that these
requirements may require changes to the either NETCONF or RESTCONF.  

 

The I2RS architecture document (
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-architecture/>
draft-ietf-i2rs-architecture-09) provides a high-level overview of the I2RS
protocol.  The I2RS has compiled the following documents to provide the
additional details on the requirements for the protocols. 

 

1)       <https://datatracker.ietf.org/doc/draft-ietf-i2rs-ephemeral-state/>
draft-ietf-i2rs-ephemeral-state-00 

2)
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub-requirements/>
draft-ietf-i2rs-pub-sub-requirements-02 

3)       <https://datatracker.ietf.org/doc/draft-ietf-i2rs-traceability/>
draft-ietf-i2rs-traceability-03  

 

The draft-ietf-i2rs-ephemeral-state-00 contains the results of the
discussion from the 6/10 interim and the top 10 requirements for I2RS.  In
addition, the draft-ietf-i2rs-ephemeral-state-00 contains an set of detailed
requirements on how the I2RS WG sees the I2RS protocol operating.  These
detailed requirements are to be seen as suggestions on what type of solution
the I2RS WG would like to see, but I2RS WG is asking the NETCONF WG to
provide its best designed protocol.  Please note as part of these detailed
requirement the draft-ietf-i2rs-ephemeral-states-00 contains the idea of
using metadata to record secondary identity.   

 

The I2RS protocol is driven by data-models.  The approved data models for
protocol independent services are:

-
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-rib-data-model/>
draft-ietf-i2rs-rib-data-model-00

-          Filter-Based RIBS:  draft-kini-i2rs-fb-rib-data-model.00
(released later this week)

-          Topology model which is a composite of:

o   Generic topology model:
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-network-topo/>
draft-ietf-i2rs-yang-network-topo-01 

o   L3 topology model:
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l3-topology/>
draft-ietf-i2rs-yang-l3-topology-00 

o   L2 topology model:
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l2-network-topology/>
draft-ietf-i2rs-yang-l2-network-topology-00 

o   L1 Topology model: draft-zhang-i2rs-l1-topo-yang-model-01 (-02 released
later this week). 

o   Service topology model: draft-hares-i2rs-service-topo-yang-model-00
(released on Wednesday)

 

At this time, none of the Topology models utilize Traffic engineering.  It
is anticipated that these models will support traffic engineering.
Estimated rates of transfer and timing requirements for these modules are
at: http://trac.tools.ietf.org/wg/i2rs/trac/wiki - under the protocol
requirements table. 

 

We hope that NETCONF WG can provide some initial feedback on these
requirements by IETF 93 at the Tuesday I2RS session.   I2RS will use the
6/24 interim at 10:00-11:30am ET  to provide a time for any participate in
the I2RS, netconf, or netmod group to ask additional questions on these
requirements. 

 

Sue Hares 

 

Interim time: 10:00-11:30am ET

Date 6/24/2015

Webex: 

https://ietf.webex.com/ietf/j.php?MTID=m4260bee7be61cb17b0008a3c52069d0f

 

agenda: 

 

10:00 - 10:05 - Bash Agenda

10:05 - 10:20- -  review of requirements from

draft-ietf-i2rs-ephemeral-state-00

draft-ietf-i2rs-pub-sub-requirements-02

draft-ietf-i2rs-traceability-03

Timing requirements 

 

10:20 - 10:30    Review of requirements for mutual authentication,

and transaction in  draft-hares-auth-trans-01 requirements 

 

10:30- 11:30     Open discussion for I2RS Requirements 

 

Proceedings and slides can be found at: 

http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceedings.html

 

Sue Hares 

 

 


------=_NextPart_000_00DA_01D0ADBF.9235C2E0
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 14 =
(filtered medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
span.apple-converted-space
	{mso-style-name:apple-converted-space;}
.MsoChpDefault
	{mso-style-type:export-only;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:1234775001;
	mso-list-type:hybrid;
	mso-list-template-ids:-29033932 960150042 67698691 67698693 67698689 =
67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:-;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
@list l0:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1
	{mso-list-id:1656491614;
	mso-list-type:hybrid;
	mso-list-template-ids:-665532102 960150042 67698691 67698693 67698689 =
67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:-;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
@list l1:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l2
	{mso-list-id:1776749719;
	mso-list-type:hybrid;
	mso-list-template-ids:-1966320430 67698705 67698713 67698715 67698703 =
67698713 67698715 67698703 67698713 67698715;}
@list l2:level1
	{mso-level-text:"%1\)";
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level2
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level3
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l2:level4
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level5
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level6
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l2:level7
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level8
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2:level9
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal>Netconf =
Working Group: <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>The I2RS WG =
would like to pass you a set of requirements for the I2RS protocol, and =
asks that you provide an analysis by IETF 93 on whether NETCONF or =
RESTCONF can meet these requirements.&nbsp;&nbsp; We expect that these =
requirements may require changes to the either NETCONF or =
RESTCONF.&nbsp; <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>The I2RS =
architecture document (<a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-architecture/"><=
span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-architecture-09</span></a><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>) =
</span></span>provides a high-level overview of the I2RS =
&nbsp;protocol.&nbsp; The I2RS has compiled the following documents to =
provide the additional details on the requirements for the protocols. =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoListParagraph style=3D'text-indent:-.25in;mso-list:l2 level1 =
lfo1'><![if !supportLists]><span class=3Dapple-converted-space><span =
style=3D'mso-list:Ignore'>1)<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-ephemeral-state/=
"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:#F9F9F9;text-decoratio=
n:none'>draft-ietf-i2rs-ephemeral-state-00</span></a><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:#F9F9F9'>&nbsp;</span>=
<o:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'text-indent:-.25in;mso-list:l2 level1 lfo1'><![if =
!supportLists]><span class=3Dapple-converted-space><span =
style=3D'mso-list:Ignore'>2)<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub-requirem=
ents/"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:#F9F9F9;text-decoratio=
n:none'>draft-ietf-i2rs-pub-sub-requirements-02</span></a><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:#F9F9F9'>&nbsp;</span>=
<o:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'text-indent:-.25in;mso-list:l2 level1 lfo1'><![if =
!supportLists]><span class=3Dapple-converted-space><span =
style=3D'mso-list:Ignore'>3)<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-traceability/"><=
span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-traceability-03</span></a><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>&nbsp; =
</span><o:p></o:p></span></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>The =
draft-ietf-i2rs-ephemeral-state-00 contains the results of the =
discussion from the 6/10 interim and the top 10 requirements for =
I2RS.&nbsp; In addition, the draft-ietf-i2rs-ephemeral-state-00 contains =
an set of detailed requirements on how the I2RS WG sees the I2RS =
protocol operating.&nbsp; These detailed requirements are to be seen as =
suggestions on what type of solution the I2RS WG would like to see, but =
I2RS WG is asking the NETCONF WG to provide its best designed =
protocol.&nbsp; Please note as part of these detailed requirement the =
draft-ietf-i2rs-ephemeral-states-00 contains the idea of using metadata =
to record secondary identity. &nbsp;&nbsp;<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal> The I2RS =
protocol is driven by data-models.&nbsp; The approved data models for =
protocol independent services are:<o:p></o:p></p><p =
class=3DMsoListParagraph style=3D'text-indent:-.25in;mso-list:l1 level1 =
lfo3'><![if !supportLists]><span style=3D'mso-list:Ignore'>-<span =
style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span><![endif]><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-rib-data-model/"=
><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-rib-data-model-00</span></a><o:p></o:p></p><p =
class=3DMsoListParagraph style=3D'text-indent:-.25in;mso-list:l1 level1 =
lfo3'><![if !supportLists]><span class=3Dapple-converted-space><span =
style=3D'mso-list:Ignore'>-<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]>Filter-Based RIBS:&nbsp; <span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>draft-kini-i2rs=
-fb-rib-data-model.00 (released later this =
week)</span><o:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'text-indent:-.25in;mso-list:l1 level1 lfo3'><![if =
!supportLists]><span class=3Dapple-converted-space><span =
style=3D'mso-list:Ignore'>-<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>Topology model =
which is a composite of:</span><o:p></o:p></span></p><p =
class=3DMsoListParagraph =
style=3D'margin-left:1.0in;text-indent:-.25in;mso-list:l1 level2 =
lfo3'><![if !supportLists]><span class=3Dapple-converted-space><span =
style=3D'font-family:"Courier New"'><span =
style=3D'mso-list:Ignore'>o<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp; </span></span></span></span><![endif]><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>Generic =
topology model: </span></span><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-network-top=
o/"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-yang-network-topo-01</span></a><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>&nbsp;</span><o=
:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'margin-left:1.0in;text-indent:-.25in;mso-list:l1 level2 =
lfo3'><![if !supportLists]><span class=3Dapple-converted-space><span =
style=3D'font-family:"Courier New"'><span =
style=3D'mso-list:Ignore'>o<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp; </span></span></span></span><![endif]><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>L3 topology =
model:</span></span> <a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l3-topology=
/"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:#F9F9F9;text-decoratio=
n:none'>draft-ietf-i2rs-yang-l3-topology-00</span></a><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:#F9F9F9'>&nbsp;</span>=
<o:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'margin-left:1.0in;text-indent:-.25in;mso-list:l1 level2 =
lfo3'><![if !supportLists]><span class=3Dapple-converted-space><span =
style=3D'font-family:"Courier New"'><span =
style=3D'mso-list:Ignore'>o<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp; </span></span></span></span><![endif]><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>L2 topology =
model: </span></span><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l2-network-=
topology/"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-yang-l2-network-topology-00</span></a><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>&nbsp;</span><o=
:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'margin-left:1.0in;text-indent:-.25in;mso-list:l1 level2 =
lfo3'><![if !supportLists]><span style=3D'font-family:"Courier =
New"'><span style=3D'mso-list:Ignore'>o<span style=3D'font:7.0pt "Times =
New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>L1 Topology =
model:</span></span> draft-zhang-i2rs-l1-topo-yang-model-01 (-02 =
released later this week). <o:p></o:p></p><p class=3DMsoListParagraph =
style=3D'margin-left:1.0in;text-indent:-.25in;mso-list:l1 level2 =
lfo3'><![if !supportLists]><span style=3D'font-family:"Courier =
New"'><span style=3D'mso-list:Ignore'>o<span style=3D'font:7.0pt "Times =
New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;color:#222222;background:white'>Service =
topology model:</span></span> =
draft-hares-i2rs-service-topo-yang-model-00 (released on =
Wednesday)<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>At this time, none of the Topology models utilize =
Traffic engineering.&nbsp; It is anticipated that these models will =
support traffic engineering. &nbsp;Estimated rates of transfer and =
timing requirements for these modules are at: <a =
href=3D"http://trac.tools.ietf.org/wg/i2rs/trac/wiki">http://trac.tools.i=
etf.org/wg/i2rs/trac/wiki</a> - under the protocol requirements table. =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>We hope that NETCONF WG can provide some initial =
feedback on these requirements by IETF 93 at the Tuesday I2RS =
session.&nbsp;&nbsp; I2RS will use the 6/24 interim at 10:00-11:30am ET =
&nbsp;to provide a time for any participate in the I2RS, netconf, or =
netmod group to ask additional questions on these requirements. =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Sue Hares <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Interim =
time: 10:00-11:30am ET<o:p></o:p></p><p class=3DMsoNormal>Date =
6/24/2015<o:p></o:p></p><p class=3DMsoNormal>Webex: <o:p></o:p></p><p =
class=3DMsoNormal><a =
href=3D"https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7be61cb17b0008a3=
c52069d0f">https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7be61cb17b000=
8a3c52069d0f</a><o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>agenda: =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>10:00 &#8211; 10:05 &#8211; Bash =
Agenda<o:p></o:p></p><p class=3DMsoNormal>10:05 &#8211; 10:20- -&nbsp; =
review of requirements from<o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in;text-indent:.5in'> =
draft-ietf-i2rs-ephemeral-state-00<o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in;text-indent:.5in'> =
draft-ietf-i2rs-pub-sub-requirements-02<o:p></o:p></p><p =
class=3DMsoNormal style=3D'margin-left:.5in;text-indent:.5in'> =
draft-ietf-i2rs-traceability-03<o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in;text-indent:.5in'> Timing requirements =
<o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in;text-indent:.5in'><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>10:20 &#8211; 10:30&nbsp;&nbsp;&nbsp; Review of =
requirements for mutual authentication,<o:p></o:p></p><p =
class=3DMsoNormal style=3D'margin-left:.5in;text-indent:.5in'>and =
transaction in &nbsp;draft-hares-auth-trans-01 requirements =
<o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>10:30- 11:30 &nbsp;&nbsp;&nbsp;&nbsp;Open discussion =
for I2RS Requirements <o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p class=3DMsoNormal>Proceedings =
and slides can be found at: <o:p></o:p></p><p class=3DMsoNormal><a =
href=3D"http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceedin=
gs.html">http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceedi=
ngs.html</a><o:p></o:p></p><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Sue Hares <o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;<o:p></o:p></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div></body></html>
------=_NextPart_000_00DA_01D0ADBF.9235C2E0--


From nobody Tue Jun 23 12:57:40 2015
Return-Path: <kwatsen@juniper.net>
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 B39FF1B2FCE for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 12:57:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 oBZ-LuQo_TIu for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 12:57:37 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0725.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::725]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 81ED51B2FCD for <netmod@ietf.org>; Tue, 23 Jun 2015 12:57:36 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB361.namprd05.prod.outlook.com (10.141.51.148) with Microsoft SMTP Server (TLS) id 15.1.201.16; Tue, 23 Jun 2015 19:57:18 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Tue, 23 Jun 2015 19:57:18 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Phil Shafer <phil@juniper.net>
Thread-Topic: [netmod] follow-up from virtual interim and i2rs discussions
Thread-Index: AQHQrUn1tc8m8WdLR0WVXSPXt52vpp25jG8AgACziAA=
Date: Tue, 23 Jun 2015 19:57:18 +0000
Message-ID: <D1AF2D12.B34C7%kwatsen@juniper.net>
References: <D1AE1DC8.B3290%kwatsen@juniper.net> <201506230514.t5N5Eeve014975@idle.juniper.net>
In-Reply-To: <201506230514.t5N5Eeve014975@idle.juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: juniper.net; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB361; 5:ozjnFt4krURBcmrYqZJOyhRoVLIcZa08n2FGfX30gfdUuQMZ1F/hj32mqfST/kKgeZrctXRojFWcTqujUXjdu1yxTTQ3IrGZtQgEcgzQ/3zg6v0cKZU7RRLKa/foTkHYIhn6MHdMX6PZEHi7xLkcjw==; 24:BWh1zIsgDVVtYfctrjJkFG5nd5Vg3OmPQtqURkQLzokoTTwMvTvg8uSxCwcTlldStXzRRQQtRNGhfo+K04NhOb9B0qG49E01kTEi2eUSl9k=; 20:pzzw4H8UcJP7QKftKdQ87ob8rUsCCIJ6By8/83NTmXyxfTuG0GcH4g9TxdeFu7HB4nvBoWQaNBQl2p9P/Ng5GQ==
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB361;
x-microsoft-antispam-prvs: <CO1PR05MB36123C840DDC777C03797E8A5A00@CO1PR05MB361.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB361; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB361; 
x-forefront-prvs: 06167FAD59
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(51704005)(2900100001)(66066001)(2950100001)(5002640100001)(5890100001)(92566002)(87936001)(102836002)(2656002)(4001350100001)(40100003)(99286002)(122556002)(46102003)(36756003)(76176999)(54356999)(50986999)(99936001)(5001960100002)(110136002)(86362001)(189998001)(83506001)(106116001)(77156002)(62966003)(450100001)(4001450100001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB361; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/mixed; boundary="_002_D1AF2D12B34C7kwatsenjunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jun 2015 19:57:18.4465 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB361
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/njHrHneKkPvXRXwyfGf5yFVwOiA>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 19:57:38 -0000

--_002_D1AF2D12B34C7kwatsenjunipernet_
Content-Type: text/plain; charset="us-ascii"
Content-ID: <D24005C4EADEE049A69C0035A2EBA93C@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable


Hi Phil,

>Slide 3 calls negotiated values (e.g. duplex) "actualized config",
>which is imho wrong.  Calling transient learned values "config"
>makes the meaning of "config" useless.  Are bgp learned routes to
>be considered config?
>
>Perhaps that's the bit that's missing, a delineation between
>learned values and config values.
>
>Part of the question whether ephermal config is really config, or
>just learned values trafficed in terms that mirror config.
>
>But then slide 4 seems to distinquish between "protocol negotiated
>values" and "protocol learned values".  What's the difference?

Slides 3 & 4 were meant to be two parts of a single concept - the attached
picture better conveys what was intended.   Does it help?



> Precise language is so important, so I think well-defined terms
> matter.  Then again, one can be completely precise while being
> completely useless, like my current favorite word, sphygmomanometer.


Agreed - this exercise started because the OpenConfig presentation used
some terminology that caused some confusion.    We also needed a
conceptual model that incorporated the ephemeral concepts from the I2RS
discussions.


Kent  [as an individual contributor]




--_002_D1AF2D12B34C7kwatsenjunipernet_
Content-Type: image/jpeg; name="intended-to-operational.jpg"
Content-Description: intended-to-operational.jpg
Content-Disposition: attachment; filename="intended-to-operational.jpg";
	size=65980; creation-date="Tue, 23 Jun 2015 19:57:18 GMT";
	modification-date="Tue, 23 Jun 2015 19:57:18 GMT"
Content-ID: <8B9447E7684DE244876C526980FDA17E@namprd05.prod.outlook.com>
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdC
IFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAA
AADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtk
ZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAA
ABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAH
bAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAA
AAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNh
RVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAAC
ZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAe
AAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAA
AAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVz
RVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAE
pHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBv
AGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcA
QgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQBy
AGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAE
PgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBC
kBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIA
aQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg
1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAA
UgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBp
AGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBj
z4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABn
AGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkA
bAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcABy
AG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwA
IABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBp
AGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkE
OAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYn
BkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIA
ZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3
IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFla
IAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2
Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wA
AMBs/+EAdEV4aWYAAE1NACoAAAAIAAQBGgAFAAAAAQAAAD4BGwAFAAAAAQAAAEYBKAADAAAAAQAC
AACHaQAEAAAAAQAAAE4AAAAAAAAASAAAAAEAAABIAAAAAQACoAIABAAAAAEAAALQoAMABAAAAAEA
AAIcAAAAAP/bAEMAAgICAgIBAgICAgICAgMDBgQDAwMDBwUFBAYIBwgICAcICAkKDQsJCQwKCAgL
DwsMDQ4ODg4JCxARDw4RDQ4ODv/bAEMBAgICAwMDBgQEBg4JCAkODg4ODg4ODg4ODg4ODg4ODg4O
Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODv/AABEIAhwC0AMBIgACEQEDEQH/xAAfAAAB
BQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiEx
QQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNU
VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6
wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAA
AAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgU
QpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS
09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP38ooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK/P3/
AIKL/tZa/wDsp/saabqfgaGzf4i+KdTOm6Hc3cayxaeqIZJ7oxtxIVG1VU/LukUtkKVYA/QKivxW
0L9gv9uLxn8PNN8deNv2+PiZ4S+JF5breNoFjPfPZWEjjf5BkivIkXBIVhHBsBBADjBr9B/2StB/
aV8Lfs3av4b/AGo/EWieMPG+m+Ip7fR9d02RHGo6WIYDDLIVRCX8wzrl0VyFXcCfmIB7ppPxA8B6
98Rda8H6F428I614t0cZ1fRLDWIJ76wGQuZoEcvFyQPmA5Irrq/Dv9ir/laK/bb/AOvXVv8A07Wd
fbXx4/Zl+M/xQ/4KV/BL4w+C/jtqvgT4f+EGsjrfhSC5uUW/8i8knmKpGwiczxMsD+YCNqDO4fLQ
B91UUUUAcsfHPgpfiovgVvGHhYeN2g89fDx1WH+0TFt3eYLfd5m3bk7tuMc11Nfhzff8ruWj/wDY
tN/6jktfuNQAUUUUAFFFFABRRXjn7QGofGLTP2Q/GV18AdF0rX/i8YoIfD1pqUkaW6vLcxRyzMZH
VP3ULyygMcExgYbO0gHsdFfjVP8AsEftyeMfD0nirxt/wUD8c6L8RHQzR6ToD30WkwTYJ2K8NzAq
KcgFkthgZ+VqX/gnN+1H8ctZ/bA+Kf7JP7Rmrv4p8Z+Dre6k0/XLmRXud9ncpb3FtJKADcK3mrJH
K3zbVfJYFQoB+ylFFIxCoWOcAZOBmgBaQEFQQQQehFfzqfADwR4p/wCCqX7T3xm8c/Gr4s+PPDvw
t8MXsMGieDfDd+sCwx3LTGJAsiPGqrHAA8hjLysfvLtqp8Rfh54m/wCCbH/BVz9n7S/gd8U/HHiP
wD471CCHUfCOtXqzNLEbuO2liljjCRSblmJhk8tWR1brjJAP6N6KKKACiivzX/4KH/tHeNPh/wCC
PA/7P/wLvLwftCfFHUYrLR20+Xbc6XZmUI9yGH+raR/3aucBVEzggx5oA/Siivxd/wCCTHxM+MXj
L4nftQ+Evix8T/GPxKfwpf6Xa2Uuu6vPfCCTzdSjmaJpmLKr+Shx/sjiv2ioAKK+HP2rv2dP2h/j
V8RvCurfBn9p7xH8CtJ07TZLfUNM04XCpezNJuExaGVMnbhcMDjHHU1+PX7V/hv9tL9lf4q/B3wt
qv7anxP8YS+P7ye2t7i01e+tlsjFLaxksGnbfn7SDxj7p9aAP6aKK/HKP9g39utbiNm/4KIePAoY
EndqDfobrB+hr9i0VlhRXcyOFAZyMbj60AOooooAKKKKACiiigAoor51/ay+M+sfs9f8E9/iP8Yt
A0fTde1jw7b2z2tjqDusErTXkFv85QhsATFsAjOMZoA+iq5HxZ8QPAfgOPTH8c+NvCPgxNSuPs+n
NrusQWIu5eP3cXmuu9+R8q5PIrzP9mD4uar8eP2Cfhp8XNb0rT9D1bxJprXN1Y2Ls0ELrNJEQhcl
sHy88k4z1Nflr/wWm/5Fj9mD/sZ9Q/8AQbOgD9xKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAK/O7/AIKTfspeJf2o/wBizTIPAAt7j4ieENSbU9HsJ5FjXUo3j2T2odsBHYBH
UkhS0YUkbty/ojRnnHegD8NP2c/+Cqn/AAgY0z4L/tleC/FXgLxnoccen3Hif+zJAW2KFV76zKiW
J9oBLxK4cnOxRX7V+FfFnhnxz8PNJ8W+Dte0rxP4Z1OAT2Gp6bcrPBcIe6upIPOQR1BBBwQa8q+O
37Nvwd/aP+GFz4Z+Kng7TdbYwNHYaxHEsepaYxBxJb3AG9CCd23lGIwysMivyV/4I6ax4n8P/Gz9
pz4MprE/iH4f+HdQinsbhWzbx3QuJ7ZpYx2+0Rwqx7fuR+IBt/sVf8rRX7bf/Xrq3/p2s66D9trx
b4q0j/g4q/Yh0PSvE3iDTNFvLnSxd6faajLFb3Hmau6PvjVgrbkAU5ByBg8Vz/7FX/K0V+23/wBe
urf+nazo/br/AOVlL9hT/r60j/09SUAfZ3/BRP8Aak1j9lz9g19b8GS28PxH8S6kukeHJp4BMlmS
rST3RRvlYxxqQobI8ySMlWUMD8afDX/gmd8YvGnwQ0b4qfEj9rL4yeG/jzq+nLqEEtpqE8yaO8o8
xYJZGlEsjAFd4RowrbgNwAY1v+C2UF1D8N/2btbkjefQLPxHqKX0W35Xd47V4wT6lIpgB7n0r9vN
L1Ox1rw1p2saXcxXumX9tHc2lxGcrNFIodHHsVII+tAH85H7OkfxvtP+Dr/who/7Q9xp+o/FLSdI
vNPv9UskURanDFoVwtvdgqAD5kWxidqnJ+ZVbIr9Xv8AgoH+1Rf/ALKv7DUniPwsttL8R/EV+uk+
FxcwebFbyFS8ty6HhhHGpwpyC7x5BXcK+Ef7T03VP+D3CxbTb+z1BbbQ5bW4a3mWQRTJ4dlDxsQe
HU8FeoPB5qX/AILc2N+fhd+zlrYuLqDRbTX9TguzD1EssVq8TA9mCwzY+poA9C8F/wDBMrxf8Rvh
XpXjv9oj9pv4+T/GrUrcahKNJ1xUtdEnlG8wBZFcsY920+U0SgghQAAav/sO/Gf4yfDr/go98VP2
F/jz4xvfiPqPhm1N74Q8T3rF7ma3CxTCOSRmZ3WS3uIpVDszRFHTcRtC9Rp//BPLxvq2g2OqaZ/w
UD/arv8ATby3S4tLmDxTO0c0TqGR1InwVIIIPcGu++Av/BO/Rfgx+3Pa/tAa58b/AIpfFnxxb2E1
os/iaZZXl8yHyN0srFpJAsfyqpOBhf7oFAHx14qk8X/txf8ABeX4s/s6+OvjH42+FXwm8BWk40vw
z4Z1AWVzrLwNDG75YFJHbzXl3OjlYwAqgFmH3R+zt+xFe/syftNN4h8C/Hz4o+I/hbc6RPa33gfx
Vci7jNwzIYrhJE8uNSu1hxCGw2N2CRWN+1T/AME7vh9+0P8AFmP4s+E/F3iD4NfG2BYynifRMtHd
PEoWJ54lZG81VUKJY5EYKBnftUD5t/Zv/aH/AGofgX/wVY0T9i/9qfXdP+Jdvrtk0vhbxdG2+5C+
VNJDI0xVXmikMEsTCZTKsgHzlRyAftDRRRQB+Qvjj/gsz+zboPh7VV8I+D/il4v8Rw70tLS40+Cw
tZJFOB5kzzM8aH1ETt/s1zf/AATF+D2r+Jvj/wDF39s3x94w8C69438cS3MMWi+GNag1BdIF3cJd
z/aDC7iGQ7IkjhLF0QNu5OB+tfiH4cfD3xbol1pninwL4P8AEen3Kstxbano0FxHIG4bcroQc96/
ATwV4btv2X/+Dtux+F3wNuLmy8C+I5ooNX8OQ3BeKC2utPN3LA2eqwuBPH3VQq5POQD+i6iivz7/
AOCnnxK8WfDH/gkJ471HwbeXemarrN7aaJNqFq5SW1t7iTEzKwIKlkVos9R5vGDggA/GHxX+0Dpv
7Bf/AAWL+M+rfsw+I/CfxM+H3iG2lW+0XzJX06xupGeRbYyJgSG1n3FWjYgxSNGXDlyv6Z/slfsk
+Jvid8dPDX7bn7T/AMRNH+LPxC1O0h1HwZpejTLNpGiREFoWDL8jPFvOyNBsjk3OWkkO5el/Yz/Z
J+AHi7/ghN4U8Lar4X0zXrf4k6FHqfinWFRft0l4zMUKTYJja1b5IwPlUoxIJd93xp4J+Ivxn/4J
O/tJXPwu+K9lrnxM/ZX8QXcs/hrWrCMF7Vzli8AZtscvTzrVmAJ/eITkmQA/ZnwB+0x8Ivib+1Z8
Rfgv4P12+1Dx94HLjxBaSaZNDFCUlELhJWUI+2RgvB56jI5r3yvxr/4JP+DvEvi/Xf2h/wBrnxfZ
fYbr4oeKJho8eeDGLmee7dD3j86VIl6YNu9fspQByHj/AMdeGfhj8E/FPxC8ZaimleF/D+my3+o3
LclY41JIUfxOxwqqOWYgDkivys/YB8C+Jv2g/wBrD4if8FAvi5p7w3+v3U2l/DLS5/mXTNPjzC8s
eeOEBt1YY3H7SxH7wGul/wCCrvg/9oL4k/s6fDL4d/BrwN4p8ceFNS1qe88a22gx7pWW2EBtInPJ
EbNJM/QjfDGTyBnzjwr+1b+3X4J+GegeD/C3/BO3UNH8N6Jp8NhpljBNdBLeCJAiIPl7KByeT1NA
HNf8Ei/+Tv8A9uX/ALGPT/8A0r1iv3Jr+Wj9gz44/tHfDj9o39oO++En7Od78XNT8R65Zv4rsIbm
SE6E63F8VjLhSBuaWdcvwPKz61/UvQAV+FH/AAV9/wCTuv2Kf+w1f/8ApXpVfuvX4Uf8Fff+Tuv2
Kf8AsNX/AP6V6VQB+69fkX+3p+0l8Y9Q/bF+G/7Ff7M+snw58RvGUaP4i8RRbkn02CbcUSKVQWhC
wxzTyyIpdUCbCDur9dK/CLWryHwp/wAHtel33ii4SGy1vSYodDmn+VY2l8Pm3jVT3LzRyxj1aTFA
HpGp/wDBJ7xFH4Ln17Qf2u/jT/wuQWpZNdvL6RbWecLlVbZIZ40L9W81yAc7SRg9x/wTa/am+J/x
H8RfFL9nH4/Xk+p/F74b3DoNSnQefeWsM32WdJ2GA8sMwQeaRmRZVJyVZm/V2vwl/Yikh8Z/8HQH
7YPjvwxN53hO2stWtZbu2+aC4kfU7RE+boQ5t5pAe+zIyKAPS/2w/iH8Xfjl/wAFgPhx+w18MviH
q3wo8J3WkjVPGeuaPK0d5cKYZblot6lWCrDEoVFYK7z/AD5VRj5q/be/YRuf2Wv2NL34z/Bv48/G
qdNP1C2h8S2Gu+IMtcpcSCFZopLdIsMJXTKOGyHJ3Dbhu3/akt/iL4+/4OXtIT9k+HSNO+O/w78D
R32uXOu6isVlqf7sMLYIR8xa2vo4myy7g/WPyy5734o/CD/go7+2ro2hfCz43+E/hb+z78JIdTjv
NeudH1OO8uNRMR+XCR3NwXwSWSMmNd2C7EquAD6a/Zgj8K/sz/8ABHTU/jpqvxE+JvxD8L6v4ai8
cTJ4qvhc3dmJLGJhYwnpkuAmehYg8Dmvjr4CfAT4x/8ABRf4fal+0H+0d8cPiP4P+Hus6hPbeE/B
fgi/FlarbwStG8gV1kjCCRXjBaNpXMbMz425+3f25vAMHhb/AIN8fin8PPBCXFnpHhrwbp1lp8Zb
e62NjcWm5WPf9xCwJ+pr4B/Yi/Y88SfGv/gmt4A8d+HP2yf2hfh7azPe21x4X8NeIJYrHSZYryZD
GkazKE3qFmxgZ87PfNAHRXd/8W/+CbP/AAU0+Dngy9+LfjL4sfsz/E67+wLZ+KLn7TdaVIskUDsj
E4RoWubeUtGEWVGZSm5Aw9S/4Ktfs5S+I/2X/H37RC/FPx5pkfh3w/p1g3gqC5P9kX2dSRPNdNww
3+k7uh5jU1uap/wSotvF3jTwrqfxK/at+P3xKtdCv1u7O08QX/2vy/nRnWJpXfyi/lqCyjPA9BXv
3/BTNWb/AIIdfHgKCx+yaaeB6arZE0AfCv7Df7CNx4v/AGVPgJ8dP+Gi/jHoULTRax/wimnXpj09
Rb3rnyB8/CP5XPy/xHirX/BbSWaD4f8A7Nk9tF59xH4g1N4o8E72EdoQMD1Nfe//AATndX/4Ip/A
EowYf2JOMg9xe3AI/MV8Jf8ABab/AJFj9mD/ALGfUP8A0GzoA7Bf+Cf37Qn7RvgWT4kftNftM+Pv
CvxO1UfbdM8KeG2xpHhckZig8rzArMgIDeWVIIOZJDlzY/4Jj/Gz4v8A/C+vjp+yb8a/Ed/4x8Qf
Di4lOlare3JuJkjgumtbmEzP88sW9oXjLElVZhnG0D9jK/Dr9jwBf+Drr9s0KAAdE1UkD1/tTTKA
PXv25f2gPi/4j/bd+F/7EX7OPiN/BvjrxnD9o8U+J4QVn020dXfbDICGjKwQzzyMmH2iNUYEtXN+
LP8Aglvr/hv4Var4u+Ef7Un7QA+O1rZm5t9S1HX9trqlxGNyxERhZYg5BUM00gXdkhgCD8uftIfD
nU/HP/B2vbeDrr4oeL/hF/wlekWg0XxP4dvDa3tmBozIsUUgZTiWaCSLAPJlxznFfcf/AA7j+Iv/
AEfx+1n/AOFNcf8Ax+gD0j/gnD+1H4j/AGn/ANhe41Hx68dx8R/CmqtpGvXkcCwrfjYskFzsXCqz
IxVgABvjYgAMAPysfxN+1J8Qv+C337Vf7PvwQ8ba9os3jHxTc2uq6/PqE7p4Y0m2uWM00IDfuSQy
RKyYb5gilS4Zf2Q/Y/8A2N/Cn7IHgvxvpnhzxj4l8aXXii/gu7671ZI49nko6oqKnc+Y5LEknI9K
+Af2Kv8AlaK/bb/69dW/9O1nQB9nfshfsQ3X7KHxP8Y67H8bfFvxK0/xBpcVvPpmrWRhSK5STe1y
D57gkjKgFcgE/Oc197UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV8Gfti/sofEz45+N/APxL+C
Pxo1P4O/Fbwfa3NrYzLLNHaX0M7I7RySQnfHynPySK4OCnGa+86KAPxX1H4C/wDBXnx54Uu/Ani7
9pH4X6H4Yuk+z6hqun+VBdzwNwwSS205JgcZ6NGWzgtzX3r+yB+yN4G/ZC/Z5uvCPhq9m8R+JNWu
FuvEviS4thDLqUqAiNQgLeXDGGYJHubBdySSxr6zooA/OT9nn9kT4kfCf/gs3+0b+0N4i1nwZeeC
vHcN4mi2mn3c738ZuL2C5HnI8Kou1YmB2u3JGMjmj9pT9kT4kfGH/grx+zR8evDOs+DLLwd8P5rJ
9btdSu5472QW9+103kIkLI+5W2jc689cDmv0booA+e/2n/2dPCP7Uf7I2t/CnxddXWlpPMl5pOrW
0avLpt7EG8qdVbhhhnRlyNyO4DKSGH5l+Af2Xf8Agqf8Pvhvb/BTw3+0X8NdH+FtrH9jsNb3faL3
T7PJ+S3Z7Pz1YKcKu/CYAR0ABr9uKKAPyK+Cf/BNrXPgH/wVu+Gnxk8KeLtO8Q+ANG8OXSeJL3W9
QnfXNW1a5t7uKa5EXlGJUZp4yB5uQqnO5ss/6B/tF/ADwT+0x+ypr3wo8d/arfTb547iy1GzC/ad
OuojmK4iLAjcMspH8SO68bs17lRQB+Mvg79nX/gqP8APBtr8PvhP8dPhD49+HOnk22hL4kiY3Njb
jiMES2zNGqqAFiWaVEHCjAr63/Zi+D/7Xnhj436/8Rf2of2gdL+IMl7ojafp/g7w7amLSbF2mil+
08RQqZVWNowfKJxI2XPf7jooA/KbxT8FP+ClXw4+PPjfUvgZ8fPAfj74c69r13qdhovjsPJc6QLi
Z5RAhkikIij37VCTBSFyIl6Vtfs5fsT/ABfsf2/n/au/ay+JuhfEP4u21m9poGmeH4mXT9LRonhD
bjHEDtiklVYliChpGcs7nNfp/RQAV83/ALU/wN8RftAfsuf8Ib4P+JeufCbxbY6xb6vo3iLS2kDw
3EAcKj+W6PsYOeVYFSFbBxtP0hRQB+N0Pwl/4LE6Pp//AAilh+0L8G9W00L5UHiC8ghe4jToCzPp
pkLYPJKu2f4u9eyfsdf8E/X+A/xy1n47fGTx4fi78fNWSbfqhV3ttOebInkjkl/eTTOpKGVlTCMy
BQCSf0tooAK8z+MXwm8H/HP9mrxb8KvHlpLd+GNfs/IufJfbNA6sHimjYggSRyKjqSCMqMgjIPpl
FAH4geCv2Nf+Ci37Lv2/wp+zV8f/AIfeIfhfLdvNaaZ4jh2tAWYkt5E1vMsJOct5MoDHJK5rtNO/
4J4fHr4//FXSPFv7eHx/Pj7R9MkMtl4J8Is1vY5PYuIoUhyMKxih8xhx5owDX7F0UAfj58Nf2GP2
nf2WP20NIuf2ZvjXpt1+ztq/iG2uPFHhbxTIWnt7QTIbhUTyXjklMKsqzxmGQ/KrcDdX7B0UUAFF
FFAH5wfsK/shfEn9mX48/tJ+J/Hms+DNU0/x9rNtdaImh3c80kccU9/ITOJYYwhIuowApbkNzwCf
0foooAK/Nj9u/wDY8+Jf7T3x2/Z08TeAtb8FaVp/gXVLmfWk127nhkkjlnspAYRFDIHIFtICGK8l
eeSR+k9FABXwL+21+w5pf7Ven+GPF/hrxXP8OfjR4TQjw94hiDeVKokEqQzlMSKEkBeOSM7o2dzt
fOK++qKAPxh1H4Gf8Fd/Efg+X4b6z+0b8KLPwzcQm2vPEtgVivpLdl2lVlj09Jw+P4l2OSeZOpr7
x/ZF/ZL8Dfsjfs83PhDwvfXniLxBq1yt54l8RXkSxy6jOqbVCoM+XCmW2R5YjexLMWJr6tooA/nw
+Lfwytv23P8Ag468Z+FvhVqN18G5/h5pJh8Z+PdNuZv7S1G4tTHbZijWRQrozrbqQR8kTMxbCJXu
/jr9g79qP4bfCfX/ABn8Nf8AgoF8aL3U9D06e/XS/EV9eC0uRDG0mxnN46LnbjLRMOecCvV/jT/w
T98Z3v7cesftI/svfHK/+B3xO1nJ1y1nsjc2N87bfMY8nCuUR2ikjkQuNw2kAVx/iD9kD/goH8ZP
Clx4J+OX7aPh6D4fX37nV7Lwj4Zignvrc8PG7RQWxIcZBRmZOeVYcEA9l/4J7/HzxN+13/wTM1i/
+MOnafresWer3nhfXbg2ax2+uQfZoZC7xqAgLR3PluqgKSpOAGwPmvTP2E/2wv2XPiV4muf2KPjt
4YT4a6vcfa5PCPjcFmjk6YANvLE7hVVfPUwuygK2doJ/T74DfAzwF+zp+zNoPws+HVncW+g6cGkl
ubp1e6v7h+ZLmdwAGkcgdAAAFVQFUAexUAfmD8O/gz/wUe8WftDeB/E/x5/aM8D+FPAWha3bale+
FvA9niTVkhkWRrWd1gi/dSgbG3SyDaT8h7/dnxt+FWj/ABv/AGTfH/wm166msNN8T6PLYteQpue1
kPzRTBcjcY5FR9pIB24PWvUqKAPxh/Z9/ZW/4KP/AAF1Twl8KdB+OHwqt/gJpXiNLydkiFxdfYTd
edcQQrNZmRGlBclPM2qztiQZJP0H/wAFCf2RPiR+1fo3wZt/h3rPgzSH8Ka5c3epnxBdzwh4phAA
Y/Khk3EeUcg7eowa/RuigAr85PgN+yJ8SPhf/wAFuv2hP2kNf1nwZd+BfG+m3dto9nY3c76hG093
ZzjzkaFUUKtu4O2RuSuOM4/RuigD4P8A20/2JNL/AGp7Dwp4u8NeLbv4a/GnwflvDPiW2VgrYcSp
FMUxIoSRd8ciNuiZnYK2SK+drP4e/wDBYbT9Nj8LJ8af2f76BI1jj8TXNsrzKoG0Eg2GWYDklomJ
PUnmv15ooA+eP2Zvhn8W/hb+z3e6P8bPi9e/Gfx9qWtzandavLE0cNmkkcKC0twTxChiZxhUGZWw
g7/Nf7PP7InxI+E//BZv9o39obxFrPgy88FeO4bxNFtNPu53v4zcXsFyPOR4VRdqxMDtduSMZHNf
o3RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFV57u1tTALq5t
7YzyiKHzZAvmOc4Rc9WODwOeKy7fxLoV38QdT8K22pW83iHTrSG7vbFc+ZDDMXWJzxjDGN8c/wAN
S5xTs2S5xTs2blFFFUUFFFc3pvi3QtX+I3ibwpYXby654fW2bVIDCyiEXKM8OGI2tlUY/KTjHOKm
U4ppN7kynFNJvf8A4c6SiiiqKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
K+Pbm/8AHXxCuvjz4ms/ij4i8AR+BtautK0DTNMitfssbWlnDO1zeCWF2mEryn5dyqIwMcndX2FX
kPif4E/C7xh441HxDrvh+7l1DUkjTV0tNZvLS21VYxtRbuCGVIrkBcL+9VvlAU5HFcGPw9WrGKg9
ul2uj6rXRnBj8PVqxioPbdXa6PqtdHqeFaL4r8e/F34x/C3Sm8ca78PNI8Q/B+28T6tZ6HFAtxJd
PNGCIpJkfyl/egkhSxVQMjJNckPi78TLn4c+BPAy6h4p1/Wbz4ja74avvEPh2Gwj1TU7PS/tDK0P
2lo7ZJpRGgd8jCxylAWIr3Xxh8B9K8cftaaR4t1y0iTwrpvgw6VYDTNUudPvrO6+1CQNC9uUaOPy
t6Ha4yDtKkV3tz8Gvhrc/BjRfh+fDEFt4W0edbjSrezupreaynUswniuI3WZJsu5Mgfexdsk7jny
lgMbJy9+3nd6/D0s0tnqr77HkrAY2Tn79vO71+HpZpbPVX323PmXXfEvx28Mfsp+NPtt34r8NXkX
jjRLPwbrfildPuNTezur2zilS6SzkeJwjvKmchnjYZIOSO88YW114b1Dwx8O4/id8ffFviqWyutS
Np4dTTf7RuYvMjU3E88sMcUUMbtsRNygl8EOFGPX4PhB4Fi+Hk3he5s9b1fS5tVttUnbVvEF9fXE
t1byxSwyNPNM0pCvDGdu7b8uCMEg2PGXwp8EePPE+l634i07UTrFhbyWsF9pusXenTNbyFTJBI9t
LGZIWKqTG5K8dOTW/wDZ2IUXaV3ZLWT7tvZdrJO3SzOj+zsQoO0ruyWsn3bey7WSdulmfGGs3vif
4q/sl/sp+KPEfjDxPpOv3PxFg0+9n077NA0kqyXkAumXy3UXCiDjb8gMj/KcrjrvE3jrxv8ABvV/
2iobfxn4k8cxeG/Aulapop8StBKbW6uZr2FpCYYo8xr5cblSOiHnmvpO5+Cvw0uPgTp3w1Hhz7J4
O067F5ptpZ39xBJYziZp1lhmSQSxssjsQVcYBwPl4rWt/hj4Ht7nWJW0MXz6toFvoOqHULua7F5Y
26yrFDKJXbfxNLuc5Z9x3FuKxjlWKVmp2lZXd3uoOO3XWzMY5VilZqdpWV3d7qLjt11szxZR41+G
P7Tnwc0W4+Jnif4h6b41kvrHWbXW47UhJYLJ7pby18mKMxIGjKMmWXbIvcZPknhrxR8U7f8AZy+F
/wAY9S+KXiLVrzUPHlro95oMlpapp0unz6s1gyMBH5jTgEOJd4wQAFA6/Vvg34LfDnwF4oi1rw7o
1/8A2pBZmzsrjU9avNRaxtyQTDb/AGmWQQRnaMrHtBwAeAK0YvhV4Ch+FOj+CItC2+GNK1SLU7Cy
+2znyrmK6+1pJv372xN8+0sVPQjbxWn9m4l3fNbey5pOz922vXVN699jT+zcS7vmtvZc0nZ+7bXr
s3r32Plb41/EjXtDuvH3i/wD4s+Lmr3fhPV7a2vI7W009fDOnuHt/OsphIqzTkpJ8zoZGRpFwV24
Hs/w8/5SAftG/wDXt4d/9JLitzxB+z18JfFHiPX9S1vw1eXR1u4W51Wzj1y9hsrq4VVVbh7WOZYT
OAi4l2b8gHOea9I07wroOlfEDxH4psLDyNd15bZdVufOdvtAt0ZIflLFV2qzD5QM55zWlHA4lYj2
k2rXva7fSa6rT4l16ehpRwOJWI9pOSte9rt9JrqtPij16PyOhooor2z2wooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4Of4ofDy2+Kw8Dz+MNCj8Wbgh0w3IMquU8
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
F3su/vHg+reOvgHrb6QdSu9PvjpsYjs/tHhS4l8hRjCputzsHA4GOgqa9+IPwJ1Dx9aeJbu/s7jW
bbb5N7L4XuXnTb93bIbfcMZOMHivcv8AhGNI/wCff9TR/wAIxpH/AD7/AKmtFUxq/wCXq+5//JGn
1bE/zR/8Af8A8meGwfEH4E23xFm8Uw39nHrkud98nhe5Fw2RtOZBb7jkcdelR6V49+A2jazqt/p1
7Y2V1qCst3Lb+FbiN5gxywdltwWBPJznNe7f8IxpH/Pv+po/4RjSP+ff9TQ541/8vV9z/wDkg+r4
n+aP/gD/APkzwPTfGvwA0rwxquj2Nzptpp2ojF5bQeE7iOKcdMOgt8MOT1BpF8a/ABPh5J4XW500
aK83nNZDwncCAvwdxj+z7d3A5xnivff+EY0j/n3/AFNH/CMaR/z7/qaftcde/tV9z/8AkhfVcR/N
D/wB/wDyZ4HfeNfgBqHgvTdAu7nTbjSrFt1ray+E7h4YSc5KIbfavU9AOtSat46+AetvpB1K70++
OmxiOz+0eFLiXyFGMKm63OwcDgY6CveP+EY0j/n3/U0f8IxpH/Pv+ppKpjl/y9X3P/5Ibw2If2of
+AP/AOTPDb34g/AnUPH1p4lu7+zuNZttvk3svhe5edNv3dsht9wxk4weKbH4++A8XxAuPEyX1kmt
TgiW9Twvci4bI2nMgt9xyOOvSvdP+EY0j/n3/U0f8IxpH/Pv+po58ba3tF22e3b4g+r4m9+aPf4H
/wDJnzdrvjTwb4s+O3wJ0nwVdXmojTPFU9zdImlXMKW8H9j6lEHZnjVVXfLGnXq4HevrIdBWJb+H
tLtr1LiK3AlT7rHnFbdTh6U4OTm7uTvtbol3fY3wtCdPnc5JuTvordEu77dwoooroOoKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q==

--_002_D1AF2D12B34C7kwatsenjunipernet_--


From nobody Tue Jun 23 14:16:06 2015
Return-Path: <deanb@juniper.net>
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 7249E1A010F for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 14:16:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 inpE3nnFrjiQ for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 14:16:03 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0107.outbound.protection.outlook.com [207.46.100.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A8BDC1A09C9 for <netmod@ietf.org>; Tue, 23 Jun 2015 14:16:01 -0700 (PDT)
Received: from BN1PR05MB424.namprd05.prod.outlook.com (10.141.58.148) by BN1PR05MB360.namprd05.prod.outlook.com (10.141.61.153) with Microsoft SMTP Server (TLS) id 15.1.195.15; Tue, 23 Jun 2015 21:15:59 +0000
Received: from BN1PR05MB424.namprd05.prod.outlook.com ([169.254.8.123]) by BN1PR05MB424.namprd05.prod.outlook.com ([169.254.8.123]) with mapi id 15.01.0195.005; Tue, 23 Jun 2015 21:15:58 +0000
From: Dean Bogdanovic <deanb@juniper.net>
To: Andy Bierman <andy@yumaworks.com>
Thread-Topic: [netmod] follow-up from virtual interim and i2rs discussions
Thread-Index: AQHQrUn1tc8m8WdLR0WVXSPXt52vpp25jG8AgABiMACAACpIAIAARtiAgAA5RIA=
Date: Tue, 23 Jun 2015 21:15:58 +0000
Message-ID: <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net>
References: <20150623110606.GB34924@elstar.local> <201506231337.t5NDbQD5017860@idle.juniper.net> <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com>
In-Reply-To: <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-mailer: Apple Mail (2.1510)
authentication-results: yumaworks.com; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.241.10]
x-microsoft-exchange-diagnostics: 1; BN1PR05MB360; 5:PguIOrbcT97ZKYst9CRtWzGJxFOTk5WVVI4b7+zfhgdoPkgCA2G1j7oYKtCa3LU+Vtf2BOeEmVkQ9fwsKNUOYs96FNXAz9ZvbvUbV278aLBC6ImuP8VsLH1RMaONCBPUdHd0oyjjl/1v/e5OuilbPQ==; 24:FCxvtMdaq3TGFwVkeiqWrp1DQdKvLC7R69o38mPTwPGtf07RbUumCw8LtfivGH5NY8wGcd9v/BKrn/7pgIA7Lyp/PKTn5M/9xUwvVe7CmIo=; 20:VHKX3PehzCl2BxMEtPQkAMdXPWEQ4ttDjZ4c8SbOID7LJJihAQv+NFyhAbeRXToMTM4itYUVVVmj4U/o2JFDcQ==
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR05MB360;
x-microsoft-antispam-prvs: <BN1PR05MB36076690AFA1CD22BFB71CBB8A00@BN1PR05MB360.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BN1PR05MB360; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB360; 
x-forefront-prvs: 06167FAD59
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(377454003)(164054003)(24454002)(19580405001)(19580395003)(82746002)(40100003)(16236675004)(83716003)(66066001)(33656002)(86362001)(87936001)(57306001)(50226001)(50986999)(2656002)(122556002)(189998001)(5002640100001)(19617315012)(36756003)(46102003)(77156002)(76176999)(99286002)(2950100001)(2900100001)(92566002)(15975445007)(102836002)(106116001)(110136002)(5001960100002)(62966003)(104396002); DIR:OUT; SFP:1102; SCL:1; SRVR:BN1PR05MB360; H:BN1PR05MB424.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_5D8650DFB6F3478ABA7B302668293BB3junipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jun 2015 21:15:58.7374 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR05MB360
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/ZwFNGjD0WIAk_UyE-1AsuGadgLE>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 21:16:05 -0000

--_000_5D8650DFB6F3478ABA7B302668293BB3junipernet_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


On Jun 23, 2015, at 1:50 PM, Andy Bierman <andy@yumaworks.com<mailto:andy@y=
umaworks.com>> wrote:





Yup, and reality can change when you swap FRUs.

>>   actual state + counters =3D> operational state
>This should be:
>  actual state + statistics =3D> operational state
>Statistics is largely dominated by counters but not only counters.

Sound good.

Precise language is so important, so I think well-defined terms
matter.  Then again, one can be completely precise while being
completely useless, like my current favorite word, sphygmomanometer.


IMO getting the concepts right needs to be done first.
Picking the right terms helps if the concepts are right in the first place.

The thermometer example I have given many times needs to be understood.

Let's say the same leaf "temperature" is used in all datastores.
The "running" temperature is the configured desired value.
The "operational" temperature is the current value read from a sensor.

So where does "ephemeral" temperature fit in?  Does this setting override
the desired temperature and have no affect on the operational sensor value?
Or does it over-write the sensor value to the device is now lying
when it reports the operational temperature?

Andy,

ephemeral "temperature" would overwrite which ever data store was read to s=
et "running" temperature. If the "temperature" was read from "startup" conf=
ig, then ephemeral would mask the "temperature" leaf in the startup and run=
ning would read from ephemeral data store.
One of the issues I personally ran into while at Juniper was people percept=
ion that configuration is persistent. Ephemeral config was very confusing t=
o Juniper customers, as I was trying to explain them, that if they change t=
he ephemeral and device reboots, the configuration is gone. For many of the=
m, it was running config, but it is not. Another issue was no rollback. Act=
ually, there is only rollback 0, which is done automatically by the system,=
 if the config commit is not successful.



IMO it is quite obvious that ephemeral data is configuration, not state.

I would not say that ephemeral data is config. It is temporary state develo=
pers want to change the device state too.

Thx

Dean

Operational state is always read-only.



Thanks,
 Phil


Andy


_______________________________________________
netmod mailing list
netmod@ietf.org<mailto:netmod@ietf.org>
https://www.ietf.org/mailman/listinfo/netmod

_______________________________________________
netmod mailing list
netmod@ietf.org<mailto:netmod@ietf.org>
https://www.ietf.org/mailman/listinfo/netmod


--_000_5D8650DFB6F3478ABA7B302668293BB3junipernet_
Content-Type: text/html; charset="us-ascii"
Content-ID: <1D50F235B198DE4ABDDCB4B58C7CBE69@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space; ">
<br>
<div>
<div>On Jun 23, 2015, at 1:50 PM, Andy Bierman &lt;<a href=3D"mailto:andy@y=
umaworks.com">andy@yumaworks.com</a>&gt; wrote:</div>
<br class=3D"Apple-interchange-newline">
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; borde=
r-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style=
: solid; padding-left: 1ex; position: static; z-index: auto; ">
<br>
<br>
Yup, and reality can change when you swap FRUs.<br>
<br>
&gt;&gt;&nbsp; &nbsp;actual state &#43; counters =3D&gt; operational state<=
br>
&gt;This should be:<br>
&gt;&nbsp; actual state &#43; statistics =3D&gt; operational state<br>
&gt;Statistics is largely dominated by counters but not only counters.<br>
<br>
Sound good.<br>
<br>
Precise language is so important, so I think well-defined terms<br>
matter.&nbsp; Then again, one can be completely precise while being<br>
completely useless, like my current favorite word, sphygmomanometer.<br>
<br>
</blockquote>
<div><br>
</div>
<div>IMO getting the concepts right needs to be done first.</div>
<div>Picking the right terms helps if the concepts are right in the first p=
lace.</div>
<div><br>
</div>
<div>The thermometer example I have given many times needs to be understood=
.</div>
<div><br>
</div>
<div>Let's say the same leaf &quot;temperature&quot; is used in all datasto=
res.</div>
<div>The &quot;running&quot; temperature is the configured desired value.</=
div>
<div>The &quot;operational&quot; temperature is the current value read from=
 a sensor.</div>
<div><br>
</div>
<div>So where does &quot;ephemeral&quot; temperature fit in?&nbsp; Does thi=
s setting override</div>
<div>the desired temperature and have no affect on the operational sensor v=
alue?</div>
<div>Or does it over-write the sensor value to the device is now lying</div=
>
<div>when it reports the operational temperature?</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Andy,</div>
<div><br>
</div>
<div>ephemeral &quot;temperature&quot; would overwrite which ever data stor=
e was read to set &quot;running&quot; temperature. If the &quot;temperature=
&quot; was read from &quot;startup&quot; config, then ephemeral would mask =
the &quot;temperature&quot; leaf in the startup and running would read from=
 ephemeral
 data store.</div>
<div>One of the issues I personally ran into while at Juniper was people pe=
rception that configuration is persistent. Ephemeral config was very confus=
ing to Juniper customers, as I was trying to explain them, that if they cha=
nge the ephemeral and device reboots,
 the configuration is gone. For many of them, it was running config, but it=
 is not. Another issue was no rollback. Actually, there is only rollback 0,=
 which is done automatically by the system, if the config commit is not suc=
cessful.</div>
<div><br>
</div>
<div><br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div><br>
</div>
<div>IMO it is quite obvious that ephemeral data is configuration, not stat=
e.</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
I would not say that ephemeral data is config. It is temporary state develo=
pers want to change the device state too.</div>
<div><br>
</div>
<div>Thx</div>
<div><br>
</div>
<div>Dean</div>
<div><br>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>Operational state is always read-only.</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
Thanks,<br>
&nbsp;Phil<br>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>Andy</div>
<div>&nbsp;</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
https://www.ietf.org/mailman/listinfo/netmod<br>
</blockquote>
</div>
<br>
</body>
</html>

--_000_5D8650DFB6F3478ABA7B302668293BB3junipernet_--


From nobody Tue Jun 23 14:35:57 2015
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 B09EF1A8853 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 14:35:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 7n4Q9kYvEApU for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 14:35:54 -0700 (PDT)
Received: from mail-lb0-f176.google.com (mail-lb0-f176.google.com [209.85.217.176]) (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 3DDA11A8895 for <netmod@ietf.org>; Tue, 23 Jun 2015 14:35:33 -0700 (PDT)
Received: by lbbwc1 with SMTP id wc1so14968757lbb.2 for <netmod@ietf.org>; Tue, 23 Jun 2015 14:35:31 -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=BTI8V/2q19xPLgFKHEYYsn0TY3EuXefVdzE14IoI+nE=; b=ZJR9dtyyEedLwFFYxlLGtegBCO+/dR+pM+mtcTWlC4hfovkXxv1+ZHnTKtqArRsXLo p9K21HvRyfzjb6hcvwKU4hC/R5faqzQOte6SGmZnb1+QIujYCvDOKNWN8Foe58TRqtut CWdUHzFBDYnSuyp2DYWx+8gH1vK8ot5C2PlLX4IENYjTsvP7Wa9hVbo01nu7o0dWwyfq apqrM8WcoS2azZoR+yywtuI087LuYNWHxS508dsfNX0T4nxF3yPu52Kzqr/D7vqtm8eK x8poum4ymeWIB959TgkFQTYl0qEcYQ79HoP1tufy5GX9Aa1YriHZwVAVod3xyOIo96z9 vT1g==
X-Gm-Message-State: ALoCoQlbgwsxUrO7XcCs8wn5yFBH8bwOf24YbH5M0DDmWC9h4mCxszbx29tF73HVA7xzi/yu2SFk
MIME-Version: 1.0
X-Received: by 10.112.41.171 with SMTP id g11mr6313132lbl.123.1435095331691; Tue, 23 Jun 2015 14:35:31 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 23 Jun 2015 14:35:31 -0700 (PDT)
In-Reply-To: <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net>
References: <20150623110606.GB34924@elstar.local> <201506231337.t5NDbQD5017860@idle.juniper.net> <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com> <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net>
Date: Tue, 23 Jun 2015 14:35:31 -0700
Message-ID: <CABCOCHR+O1016_YQyY5f7VYxdMaa1cOaDwWcS4ir8rR39M36kg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Dean Bogdanovic <deanb@juniper.net>
Content-Type: multipart/alternative; boundary=001a11346d9c76f97e0519362b5d
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/EjvvZT9P0hkXZQeB4vMFuIYzZPY>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 21:35:56 -0000

--001a11346d9c76f97e0519362b5d
Content-Type: text/plain; charset=UTF-8

Hi,

I don't think the terminology is converging.

There is really only "intended state" and "operational state".
There is ephemeral intended state and persistent intended state.

The fact that a configured intended value came from the startup
or from I2RS or from CLI does not really matter.  The fact that
an I2RS value does not come back after a reboot does not
really matter.

Intended state means the server is asked to change the behavior
of the device, which needs to understand and activate the intentions of
the client.

Operational state means the actual state of the device.
It is the result of the device processing intended state and
participating in protocols that affect device behavior.


Andy


On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic <deanb@juniper.net> wrote:

>
>  On Jun 23, 2015, at 1:50 PM, Andy Bierman <andy@yumaworks.com> wrote:
>
>
>
>
>>
>> Yup, and reality can change when you swap FRUs.
>>
>> >>   actual state + counters => operational state
>> >This should be:
>> >  actual state + statistics => operational state
>> >Statistics is largely dominated by counters but not only counters.
>>
>> Sound good.
>>
>> Precise language is so important, so I think well-defined terms
>> matter.  Then again, one can be completely precise while being
>> completely useless, like my current favorite word, sphygmomanometer.
>>
>>
>  IMO getting the concepts right needs to be done first.
> Picking the right terms helps if the concepts are right in the first place.
>
>  The thermometer example I have given many times needs to be understood.
>
>  Let's say the same leaf "temperature" is used in all datastores.
> The "running" temperature is the configured desired value.
> The "operational" temperature is the current value read from a sensor.
>
>  So where does "ephemeral" temperature fit in?  Does this setting override
> the desired temperature and have no affect on the operational sensor value?
> Or does it over-write the sensor value to the device is now lying
> when it reports the operational temperature?
>
>
>  Andy,
>
>  ephemeral "temperature" would overwrite which ever data store was read
> to set "running" temperature. If the "temperature" was read from "startup"
> config, then ephemeral would mask the "temperature" leaf in the startup and
> running would read from ephemeral data store.
> One of the issues I personally ran into while at Juniper was people
> perception that configuration is persistent. Ephemeral config was very
> confusing to Juniper customers, as I was trying to explain them, that if
> they change the ephemeral and device reboots, the configuration is gone.
> For many of them, it was running config, but it is not. Another issue was
> no rollback. Actually, there is only rollback 0, which is done
> automatically by the system, if the config commit is not successful.
>
>
>
>  IMO it is quite obvious that ephemeral data is configuration, not state.
>
>
>  I would not say that ephemeral data is config. It is temporary state
> developers want to change the device state too.
>
>  Thx
>
>  Dean
>
>   Operational state is always read-only.
>
>
>
>  Thanks,
>>  Phil
>>
>
>
>  Andy
>
>
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>>
>
>  _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>
>
>

--001a11346d9c76f97e0519362b5d
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<div><br></div><div>I don&#39;t think the terminology i=
s converging.</div><div><br></div><div>There is really only &quot;intended =
state&quot; and &quot;operational state&quot;.</div><div>There is ephemeral=
 intended state and persistent intended state.</div><div><br></div><div>The=
 fact that a configured intended value came from the startup</div><div>or f=
rom I2RS or from CLI does not really matter.=C2=A0 The fact that</div><div>=
an I2RS value does not come back after a reboot does not</div><div>really m=
atter.</div><div><br></div><div>Intended state means the server is asked to=
 change the behavior</div><div>of the device, which needs to understand and=
 activate the intentions of</div><div>the client.</div><div><br></div><div>=
Operational state means the actual state of the device.</div><div>It is the=
 result of the device processing intended state and</div><div>participating=
 in protocols that affect device behavior.</div><div><br></div><div><br></d=
iv><div>Andy</div><div><br></div></div><div class=3D"gmail_extra"><br><div =
class=3D"gmail_quote">On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic <spa=
n dir=3D"ltr">&lt;<a href=3D"mailto:deanb@juniper.net" target=3D"_blank">de=
anb@juniper.net</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" =
style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style=3D"word-wrap:break-word">
<br>
<div>
<div>On Jun 23, 2015, at 1:50 PM, Andy Bierman &lt;<a href=3D"mailto:andy@y=
umaworks.com" target=3D"_blank">andy@yumaworks.com</a>&gt; wrote:</div>
<br>
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<br>
<br>
Yup, and reality can change when you swap FRUs.<br>
<br>
&gt;&gt;=C2=A0 =C2=A0actual state + counters =3D&gt; operational state<br>
&gt;This should be:<br>
&gt;=C2=A0 actual state + statistics =3D&gt; operational state<br>
&gt;Statistics is largely dominated by counters but not only counters.<br>
<br>
Sound good.<br>
<br>
Precise language is so important, so I think well-defined terms<br>
matter.=C2=A0 Then again, one can be completely precise while being<br>
completely useless, like my current favorite word, sphygmomanometer.<br>
<br>
</blockquote>
<div><br>
</div>
<div>IMO getting the concepts right needs to be done first.</div>
<div>Picking the right terms helps if the concepts are right in the first p=
lace.</div>
<div><br>
</div>
<div>The thermometer example I have given many times needs to be understood=
.</div>
<div><br>
</div>
<div>Let&#39;s say the same leaf &quot;temperature&quot; is used in all dat=
astores.</div>
<div>The &quot;running&quot; temperature is the configured desired value.</=
div>
<div>The &quot;operational&quot; temperature is the current value read from=
 a sensor.</div>
<div><br>
</div>
<div>So where does &quot;ephemeral&quot; temperature fit in?=C2=A0 Does thi=
s setting override</div>
<div>the desired temperature and have no affect on the operational sensor v=
alue?</div>
<div>Or does it over-write the sensor value to the device is now lying</div=
>
<div>when it reports the operational temperature?</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Andy,</div>
<div><br>
</div>
<div>ephemeral &quot;temperature&quot; would overwrite which ever data stor=
e was read to set &quot;running&quot; temperature. If the &quot;temperature=
&quot; was read from &quot;startup&quot; config, then ephemeral would mask =
the &quot;temperature&quot; leaf in the startup and running would read from=
 ephemeral
 data store.</div>
<div>One of the issues I personally ran into while at Juniper was people pe=
rception that configuration is persistent. Ephemeral config was very confus=
ing to Juniper customers, as I was trying to explain them, that if they cha=
nge the ephemeral and device reboots,
 the configuration is gone. For many of them, it was running config, but it=
 is not. Another issue was no rollback. Actually, there is only rollback 0,=
 which is done automatically by the system, if the config commit is not suc=
cessful.</div>
<div><br>
</div>
<div><br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div><br>
</div>
<div>IMO it is quite obvious that ephemeral data is configuration, not stat=
e.</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
I would not say that ephemeral data is config. It is temporary state develo=
pers want to change the device state too.</div>
<div><br>
</div>
<div>Thx</div>
<div><br>
</div>
<div>Dean</div>
<div><br>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>Operational state is always read-only.</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
Thanks,<br>
=C2=A0Phil<br>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>Andy</div>
<div>=C2=A0</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_blank">=
https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>

</blockquote></div><br></div>

--001a11346d9c76f97e0519362b5d--


From nobody Tue Jun 23 14:57:34 2015
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 8461C1A8939 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 14:57:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 hpiQkHdTpudV for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 14:57:30 -0700 (PDT)
Received: from mail-lb0-f173.google.com (mail-lb0-f173.google.com [209.85.217.173]) (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 DC84E1A892B for <netmod@ietf.org>; Tue, 23 Jun 2015 14:57:29 -0700 (PDT)
Received: by lbbwc1 with SMTP id wc1so15223966lbb.2 for <netmod@ietf.org>; Tue, 23 Jun 2015 14:57:28 -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=ZnGxjvMYZ1ncJVlBSiNx2dY/M3ae1MJ/Qq2XXia9MyQ=; b=NBScy0RH6Z9B8OfcP28YbExFbRDxAnAr+n2+3noKf8TIhhNp6/nssF6Hm/3G2G5qYv aMnnSO9BHRRHUORKV/EYgZK+yZP1QE2Nf2XiDeC+bw7HR57HIrqcwyLyZiMzVT/CimMN L7HAxc9wii4qGHC5Huxqp+UdA5J+cN//X4d7ucn7WtrIwhxBtJWxO8OwzlVgkKU9wxG0 GGc3bATHp5NqCFISK26dNLJAucG6C6FV+rI4BqOlhPUeQMwtDihKNfp/cOJCLRBbFgfJ y3g6axZ3Pr0GHCTW5yGwU8L52jPwpIwfDSQoSrA16mKJ5aACxd1Bv/goAkcD5LK6j00V hKMw==
X-Gm-Message-State: ALoCoQn4DurKodZdzjmhPg9fJiZta4GBS3RUBP3kE8095jguoSRvmG/v9NUQy34KJuSL4rq78Lee
MIME-Version: 1.0
X-Received: by 10.152.204.7 with SMTP id ku7mr37096645lac.38.1435096648404; Tue, 23 Jun 2015 14:57:28 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 23 Jun 2015 14:57:28 -0700 (PDT)
In-Reply-To: <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net>
References: <20150623110606.GB34924@elstar.local> <201506231337.t5NDbQD5017860@idle.juniper.net> <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com> <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net>
Date: Tue, 23 Jun 2015 14:57:28 -0700
Message-ID: <CABCOCHSwkmM0=6ZUUtswpZFbk67GbLxDVNrsKjRc50N8bZEqeA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Dean Bogdanovic <deanb@juniper.net>
Content-Type: multipart/alternative; boundary=001a11343092f26b670519367941
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/8J1dFOYVkZhbAdlsl2T9akmAadc>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 21:57:32 -0000

--001a11343092f26b670519367941
Content-Type: text/plain; charset=UTF-8

On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic <deanb@juniper.net> wrote:

>
>  On Jun 23, 2015, at 1:50 PM, Andy Bierman <andy@yumaworks.com> wrote:
>
>
>
>
>>
>> Yup, and reality can change when you swap FRUs.
>>
>> >>   actual state + counters => operational state
>> >This should be:
>> >  actual state + statistics => operational state
>> >Statistics is largely dominated by counters but not only counters.
>>
>> Sound good.
>>
>> Precise language is so important, so I think well-defined terms
>> matter.  Then again, one can be completely precise while being
>> completely useless, like my current favorite word, sphygmomanometer.
>>
>>
>  IMO getting the concepts right needs to be done first.
> Picking the right terms helps if the concepts are right in the first place.
>
>  The thermometer example I have given many times needs to be understood.
>
>  Let's say the same leaf "temperature" is used in all datastores.
> The "running" temperature is the configured desired value.
> The "operational" temperature is the current value read from a sensor.
>
>  So where does "ephemeral" temperature fit in?  Does this setting override
> the desired temperature and have no affect on the operational sensor value?
> Or does it over-write the sensor value to the device is now lying
> when it reports the operational temperature?
>
>
>  Andy,
>
>  ephemeral "temperature" would overwrite which ever data store was read
> to set "running" temperature. If the "temperature" was read from "startup"
> config, then ephemeral would mask the "temperature" leaf in the startup and
> running would read from ephemeral data store.
> One of the issues I personally ran into while at Juniper was people
> perception that configuration is persistent. Ephemeral config was very
> confusing to Juniper customers, as I was trying to explain them, that if
> they change the ephemeral and device reboots, the configuration is gone.
> For many of them, it was running config, but it is not. Another issue was
> no rollback. Actually, there is only rollback 0, which is done
> automatically by the system, if the config commit is not successful.
>
>
>
>  IMO it is quite obvious that ephemeral data is configuration, not state.
>
>
>  I would not say that ephemeral data is config. It is temporary state
> developers want to change the device state too.
>
>

Here is a simple example.
I hope it is not too abstract.

   leaf admin-temp {
      type uint32;
       units "degrees Celsius";
      description "The configured temperature.";
  }

   leaf oper-temp {
       type uint32;
       units "degrees Celsius";
       config false;
       description "The measured temperature.";
  }


Would your I2RS solution be able to over-ride the admin-temp
with a temporary ephemeral value?  Describe the solution
in detail.  Provide all YANG and all protocol operations that
would be used




>  Thx
>
>  Dean
>
>
Andy



>   Operational state is always read-only.
>
>
>
>  Thanks,
>>  Phil
>>
>
>
>  Andy
>
>
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>>
>
>  _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>
>
>

--001a11343092f26b670519367941
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic <span dir=3D"ltr">&lt;=
<a href=3D"mailto:deanb@juniper.net" target=3D"_blank">deanb@juniper.net</a=
>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);bo=
rder-left-style:solid;padding-left:1ex">



<div style=3D"word-wrap:break-word">
<br>
<div>
<div>On Jun 23, 2015, at 1:50 PM, Andy Bierman &lt;<a href=3D"mailto:andy@y=
umaworks.com" target=3D"_blank">andy@yumaworks.com</a>&gt; wrote:</div>
<br>
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<br>
<br>
Yup, and reality can change when you swap FRUs.<br>
<br>
&gt;&gt;=C2=A0 =C2=A0actual state + counters =3D&gt; operational state<br>
&gt;This should be:<br>
&gt;=C2=A0 actual state + statistics =3D&gt; operational state<br>
&gt;Statistics is largely dominated by counters but not only counters.<br>
<br>
Sound good.<br>
<br>
Precise language is so important, so I think well-defined terms<br>
matter.=C2=A0 Then again, one can be completely precise while being<br>
completely useless, like my current favorite word, sphygmomanometer.<br>
<br>
</blockquote>
<div><br>
</div>
<div>IMO getting the concepts right needs to be done first.</div>
<div>Picking the right terms helps if the concepts are right in the first p=
lace.</div>
<div><br>
</div>
<div>The thermometer example I have given many times needs to be understood=
.</div>
<div><br>
</div>
<div>Let&#39;s say the same leaf &quot;temperature&quot; is used in all dat=
astores.</div>
<div>The &quot;running&quot; temperature is the configured desired value.</=
div>
<div>The &quot;operational&quot; temperature is the current value read from=
 a sensor.</div>
<div><br>
</div>
<div>So where does &quot;ephemeral&quot; temperature fit in?=C2=A0 Does thi=
s setting override</div>
<div>the desired temperature and have no affect on the operational sensor v=
alue?</div>
<div>Or does it over-write the sensor value to the device is now lying</div=
>
<div>when it reports the operational temperature?</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Andy,</div>
<div><br>
</div>
<div>ephemeral &quot;temperature&quot; would overwrite which ever data stor=
e was read to set &quot;running&quot; temperature. If the &quot;temperature=
&quot; was read from &quot;startup&quot; config, then ephemeral would mask =
the &quot;temperature&quot; leaf in the startup and running would read from=
 ephemeral
 data store.</div>
<div>One of the issues I personally ran into while at Juniper was people pe=
rception that configuration is persistent. Ephemeral config was very confus=
ing to Juniper customers, as I was trying to explain them, that if they cha=
nge the ephemeral and device reboots,
 the configuration is gone. For many of them, it was running config, but it=
 is not. Another issue was no rollback. Actually, there is only rollback 0,=
 which is done automatically by the system, if the config commit is not suc=
cessful.</div>
<div><br>
</div>
<div><br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div><br>
</div>
<div>IMO it is quite obvious that ephemeral data is configuration, not stat=
e.</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
I would not say that ephemeral data is config. It is temporary state develo=
pers want to change the device state too.</div>
<div><br></div></div></blockquote><div><br></div><div><br></div><div>Here i=
s a simple example.</div><div>I hope it is not too abstract.</div><div><br>=
</div><div>=C2=A0 =C2=A0leaf admin-temp {</div><div>=C2=A0 =C2=A0 =C2=A0 ty=
pe uint32;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0units &quot;degrees Celsius=
&quot;;</div><div>=C2=A0 =C2=A0 =C2=A0 description &quot;The configured tem=
perature.&quot;;</div><div>=C2=A0 }</div><div><br></div><div><div>=C2=A0 =
=C2=A0leaf oper-temp {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0type uint32;</d=
iv><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0units &quot;degrees Celsius&quot;;</div>=
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0config false;</div><div>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0description &quot;The measured temperature.&quot;;</div><div>=C2=
=A0 }</div></div><div><br></div><div><br></div><div>Would your I2RS solutio=
n be able to over-ride the admin-temp</div><div>with a temporary ephemeral =
value?=C2=A0 Describe the solution</div><div>in detail.=C2=A0 Provide all Y=
ANG and all protocol operations that</div><div>would be used=C2=A0</div><di=
v><br></div><div><br></div><div>=C2=A0 =C2=A0 =C2=A0<br></div><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1p=
x;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1=
ex"><div style=3D"word-wrap:break-word"><div>
</div>
<div>Thx</div>
<div><br>
</div>
<div>Dean</div>
<div><br></div></div></blockquote><div><br></div><div>Andy</div><div><br></=
div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);bord=
er-left-style:solid;padding-left:1ex"><div style=3D"word-wrap:break-word"><=
div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>Operational state is always read-only.</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
Thanks,<br>
=C2=A0Phil<br>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>Andy</div>
<div>=C2=A0</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_blank">=
https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>

</blockquote></div><br></div></div>

--001a11343092f26b670519367941--


From nobody Tue Jun 23 15:04:45 2015
Return-Path: <tnadeau@lucidvision.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 DC6111A899D for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 15:04:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.011
X-Spam-Level: 
X-Spam-Status: No, score=-2.011 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, SPF_HELO_PASS=-0.001, 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 uflV-ntV-4HO for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 15:04:41 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 94D0E1A89A9 for <netmod@ietf.org>; Tue, 23 Jun 2015 15:04:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1435097063; bh=s6qqxPCrwezYaneq5bZxPSS2UB5zLlTOjNlGBYkuJJM=; h=Subject:From:In-Reply-To:Date:Cc:References:To; b=H17p8Tn7Db+vMQ2oKABJBWqA1x2I03p13/dHcmWkzzvb3E0qaAzhlzezWlcuGFkfz GkTIaCEnmQ8x0C9D5OTFBC6oGW2LdiBQkX11otFrfD4u7LapbNaVckj6V8jOO248pY Kh1K+rvmLOx0VeBOZF5j3cArgAj54HNI+gpN1wb0=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=69.116.30.83; 
Content-Type: multipart/alternative; boundary="Apple-Mail=_99ACB766-FA6A-42B9-8943-762703DD2DDC"
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Nadeau Thomas <tnadeau@lucidvision.com>
In-Reply-To: <CABCOCHSwkmM0=6ZUUtswpZFbk67GbLxDVNrsKjRc50N8bZEqeA@mail.gmail.com>
Date: Tue, 23 Jun 2015 18:05:08 -0400
Message-Id: <19AFA040-0DC9-4AD0-84A2-5C4FEF87279A@lucidvision.com>
References: <20150623110606.GB34924@elstar.local> <201506231337.t5NDbQD5017860@idle.juniper.net> <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com> <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net> <CABCOCHSwkmM0=6ZUUtswpZFbk67GbLxDVNrsKjRc50N8bZEqeA@mail.gmail.com>
To: Andy Bierman <andy@yumaworks.com>
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-MyRbl: Color=Yellow Age=0 Spam=0 Notspam=6 Stars=0 Good=0 Friend=0 Surbl=0 Catch=0 r=0 ip=69.116.30.83
X-IP-stats: Notspam Incoming Last 0, First 1, in=8, out=0, spam=0 Known=true ip=69.116.30.83
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/tCgZZBA72r-l0YHKasdeLQRSvqE>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 22:04:44 -0000

--Apple-Mail=_99ACB766-FA6A-42B9-8943-762703DD2DDC
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8


> On Jun 23, 2015:5:57 PM, at 5:57 PM, Andy Bierman <andy@yumaworks.com> =
wrote:
>=20
>=20
>=20
> On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic <deanb@juniper.net =
<mailto:deanb@juniper.net>> wrote:
>=20
> On Jun 23, 2015, at 1:50 PM, Andy Bierman <andy@yumaworks.com =
<mailto:andy@yumaworks.com>> wrote:
>=20
>>=20
>>=20
>>=20
>>=20
>> Yup, and reality can change when you swap FRUs.
>>=20
>> >>   actual state + counters =3D> operational state
>> >This should be:
>> >  actual state + statistics =3D> operational state
>> >Statistics is largely dominated by counters but not only counters.
>>=20
>> Sound good.
>>=20
>> Precise language is so important, so I think well-defined terms
>> matter.  Then again, one can be completely precise while being
>> completely useless, like my current favorite word, sphygmomanometer.
>>=20
>>=20
>> IMO getting the concepts right needs to be done first.
>> Picking the right terms helps if the concepts are right in the first =
place.
>>=20
>> The thermometer example I have given many times needs to be =
understood.
>>=20
>> Let's say the same leaf "temperature" is used in all datastores.
>> The "running" temperature is the configured desired value.
>> The "operational" temperature is the current value read from a =
sensor.
>>=20
>> So where does "ephemeral" temperature fit in?  Does this setting =
override
>> the desired temperature and have no affect on the operational sensor =
value?
>> Or does it over-write the sensor value to the device is now lying
>> when it reports the operational temperature?
>=20
> Andy,
>=20
> ephemeral "temperature" would overwrite which ever data store was read =
to set "running" temperature. If the "temperature" was read from =
"startup" config, then ephemeral would mask the "temperature" leaf in =
the startup and running would read from ephemeral data store.
> One of the issues I personally ran into while at Juniper was people =
perception that configuration is persistent. Ephemeral config was very =
confusing to Juniper customers, as I was trying to explain them, that if =
they change the ephemeral and device reboots, the configuration is gone. =
For many of them, it was running config, but it is not. Another issue =
was no rollback. Actually, there is only rollback 0, which is done =
automatically by the system, if the config commit is not successful.
>=20
>=20
>>=20
>> IMO it is quite obvious that ephemeral data is configuration, not =
state.
>=20
> I would not say that ephemeral data is config. It is temporary state =
developers want to change the device state too.

	Keep in mind that that temporary state could easily be flipped =
to persistent simply by synching that temporal store =E2=80=9Clater".  =
This was one of the original concepts of i2rs.

	=E2=80=94Tom



>=20
>=20
>=20
> Here is a simple example.
> I hope it is not too abstract.
>=20
>    leaf admin-temp {
>       type uint32;
>        units "degrees Celsius";
>       description "The configured temperature.";
>   }
>=20
>    leaf oper-temp {
>        type uint32;
>        units "degrees Celsius";
>        config false;
>        description "The measured temperature.";
>   }
>=20
>=20
> Would your I2RS solution be able to over-ride the admin-temp
> with a temporary ephemeral value?  Describe the solution
> in detail.  Provide all YANG and all protocol operations that
> would be used=20
>=20
>=20
>     =20
> Thx
>=20
> Dean
>=20
>=20
> Andy
>=20
> =20
>> Operational state is always read-only.
>>=20
>>=20
>>=20
>> Thanks,
>>  Phil
>>=20
>>=20
>> Andy
>> =20
>>=20
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org <mailto:netmod@ietf.org>
>> https://www.ietf.org/mailman/listinfo/netmod =
<https://www.ietf.org/mailman/listinfo/netmod>
>>=20
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org <mailto:netmod@ietf.org>
>> https://www.ietf.org/mailman/listinfo/netmod =
<https://www.ietf.org/mailman/listinfo/netmod>
>=20
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


--Apple-Mail=_99ACB766-FA6A-42B9-8943-762703DD2DDC
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D""><br class=3D""><div><blockquote type=3D"cite" class=3D""><div =
class=3D"">On Jun 23, 2015:5:57 PM, at 5:57 PM, Andy Bierman &lt;<a =
href=3D"mailto:andy@yumaworks.com" class=3D"">andy@yumaworks.com</a>&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><div =
dir=3D"ltr" class=3D""><br class=3D""><div class=3D"gmail_extra"><br =
class=3D""><div class=3D"gmail_quote">On Tue, Jun 23, 2015 at 2:15 PM, =
Dean Bogdanovic <span dir=3D"ltr" class=3D"">&lt;<a =
href=3D"mailto:deanb@juniper.net" target=3D"_blank" =
class=3D"">deanb@juniper.net</a>&gt;</span> wrote:<br =
class=3D""><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left=
-style:solid;padding-left:1ex">



<div style=3D"word-wrap:break-word" class=3D"">
<br class=3D"">
<div class=3D"">
<div class=3D"">On Jun 23, 2015, at 1:50 PM, Andy Bierman &lt;<a =
href=3D"mailto:andy@yumaworks.com" target=3D"_blank" =
class=3D"">andy@yumaworks.com</a>&gt; wrote:</div>
<br class=3D"">
<blockquote type=3D"cite" class=3D"">
<div dir=3D"ltr" class=3D""><br class=3D"">
<div class=3D"gmail_extra"><br class=3D"">
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left=
-style:solid;padding-left:1ex">
<br class=3D"">
<br class=3D"">
Yup, and reality can change when you swap FRUs.<br class=3D"">
<br class=3D"">
&gt;&gt;&nbsp; &nbsp;actual state + counters =3D&gt; operational =
state<br class=3D"">
&gt;This should be:<br class=3D"">
&gt;&nbsp; actual state + statistics =3D&gt; operational state<br =
class=3D"">
&gt;Statistics is largely dominated by counters but not only =
counters.<br class=3D"">
<br class=3D"">
Sound good.<br class=3D"">
<br class=3D"">
Precise language is so important, so I think well-defined terms<br =
class=3D"">
matter.&nbsp; Then again, one can be completely precise while being<br =
class=3D"">
completely useless, like my current favorite word, sphygmomanometer.<br =
class=3D"">
<br class=3D"">
</blockquote>
<div class=3D""><br class=3D"">
</div>
<div class=3D"">IMO getting the concepts right needs to be done =
first.</div>
<div class=3D"">Picking the right terms helps if the concepts are right =
in the first place.</div>
<div class=3D""><br class=3D"">
</div>
<div class=3D"">The thermometer example I have given many times needs to =
be understood.</div>
<div class=3D""><br class=3D"">
</div>
<div class=3D"">Let's say the same leaf "temperature" is used in all =
datastores.</div>
<div class=3D"">The "running" temperature is the configured desired =
value.</div>
<div class=3D"">The "operational" temperature is the current value read =
from a sensor.</div>
<div class=3D""><br class=3D"">
</div>
<div class=3D"">So where does "ephemeral" temperature fit in?&nbsp; Does =
this setting override</div>
<div class=3D"">the desired temperature and have no affect on the =
operational sensor value?</div>
<div class=3D"">Or does it over-write the sensor value to the device is =
now lying</div>
<div class=3D"">when it reports the operational temperature?</div>
</div>
</div>
</div>
</blockquote>
<div class=3D""><br class=3D"">
</div>
<div class=3D"">Andy,</div>
<div class=3D""><br class=3D"">
</div>
<div class=3D"">ephemeral "temperature" would overwrite which ever data =
store was read to set "running" temperature. If the "temperature" was =
read from "startup" config, then ephemeral would mask the "temperature" =
leaf in the startup and running would read from ephemeral
 data store.</div>
<div class=3D"">One of the issues I personally ran into while at Juniper =
was people perception that configuration is persistent. Ephemeral config =
was very confusing to Juniper customers, as I was trying to explain =
them, that if they change the ephemeral and device reboots,
 the configuration is gone. For many of them, it was running config, but =
it is not. Another issue was no rollback. Actually, there is only =
rollback 0, which is done automatically by the system, if the config =
commit is not successful.</div>
<div class=3D""><br class=3D"">
</div>
<div class=3D""><br class=3D"">
</div>
<blockquote type=3D"cite" class=3D"">
<div dir=3D"ltr" class=3D"">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div class=3D""><br class=3D"">
</div>
<div class=3D"">IMO it is quite obvious that ephemeral data is =
configuration, not state.</div>
</div>
</div>
</div>
</blockquote>
<div class=3D""><br class=3D"">
</div>
I would not say that ephemeral data is config. It is temporary state =
developers want to change the device state =
too.</div></div></blockquote></div></div></div></div></blockquote><div><br=
 class=3D""></div><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>Keep in mind that that temporary =
state could easily be flipped to persistent simply by synching that =
temporal store =E2=80=9Clater". &nbsp;This was one of the original =
concepts of i2rs.</div><div><br class=3D""></div><div><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>=E2=80=94Tom</div><div><br class=3D""></div><div><br =
class=3D""></div><div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div dir=3D"ltr" class=3D""><div =
class=3D"gmail_extra"><div class=3D"gmail_quote"><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left=
-style:solid;padding-left:1ex"><div style=3D"word-wrap:break-word" =
class=3D"">
<div class=3D""><br class=3D""></div></div></blockquote><div =
class=3D""><br class=3D""></div><div class=3D""><br class=3D""></div><div =
class=3D"">Here is a simple example.</div><div class=3D"">I hope it is =
not too abstract.</div><div class=3D""><br class=3D""></div><div =
class=3D"">&nbsp; &nbsp;leaf admin-temp {</div><div class=3D"">&nbsp; =
&nbsp; &nbsp; type uint32;</div><div class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp;units "degrees Celsius";</div><div class=3D"">&nbsp; &nbsp; &nbsp; =
description "The configured temperature.";</div><div class=3D"">&nbsp; =
}</div><div class=3D""><br class=3D""></div><div class=3D""><div =
class=3D"">&nbsp; &nbsp;leaf oper-temp {</div><div class=3D"">&nbsp; =
&nbsp; &nbsp; &nbsp;type uint32;</div><div class=3D"">&nbsp; &nbsp; =
&nbsp; &nbsp;units "degrees Celsius";</div><div class=3D"">&nbsp; &nbsp; =
&nbsp; &nbsp;config false;</div><div class=3D"">&nbsp; &nbsp; &nbsp; =
&nbsp;description "The measured temperature.";</div><div class=3D"">&nbsp;=
 }</div></div><div class=3D""><br class=3D""></div><div class=3D""><br =
class=3D""></div><div class=3D"">Would your I2RS solution be able to =
over-ride the admin-temp</div><div class=3D"">with a temporary ephemeral =
value?&nbsp; Describe the solution</div><div class=3D"">in detail.&nbsp; =
Provide all YANG and all protocol operations that</div><div =
class=3D"">would be used&nbsp;</div><div class=3D""><br =
class=3D""></div><div class=3D""><br class=3D""></div><div =
class=3D"">&nbsp; &nbsp; &nbsp;<br class=3D""></div><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left=
-style:solid;padding-left:1ex"><div style=3D"word-wrap:break-word" =
class=3D""><div class=3D"">
</div>
<div class=3D"">Thx</div>
<div class=3D""><br class=3D"">
</div>
<div class=3D"">Dean</div>
<div class=3D""><br class=3D""></div></div></blockquote><div =
class=3D""><br class=3D""></div><div class=3D"">Andy</div><div =
class=3D""><br class=3D""></div><div class=3D"">&nbsp;</div><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left=
-style:solid;padding-left:1ex"><div style=3D"word-wrap:break-word" =
class=3D""><div class=3D"">
<blockquote type=3D"cite" class=3D"">
<div dir=3D"ltr" class=3D"">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div class=3D"">Operational state is always read-only.</div>
<div class=3D""><br class=3D"">
</div>
<div class=3D""><br class=3D"">
</div>
<div class=3D""><br class=3D"">
</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left=
-style:solid;padding-left:1ex">
Thanks,<br class=3D"">
&nbsp;Phil<br class=3D"">
</blockquote>
<div class=3D""><br class=3D"">
</div>
<div class=3D""><br class=3D"">
</div>
<div class=3D"">Andy</div>
<div class=3D"">&nbsp;</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left=
-style:solid;padding-left:1ex">
<br class=3D"">
_______________________________________________<br class=3D"">
netmod mailing list<br class=3D"">
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank" =
class=3D"">netmod@ietf.org</a><br class=3D"">
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" =
rel=3D"noreferrer" target=3D"_blank" =
class=3D"">https://www.ietf.org/mailman/listinfo/netmod</a><br class=3D"">=

</blockquote>
</div>
<br class=3D"">
</div>
</div>
_______________________________________________<br class=3D"">
netmod mailing list<br class=3D"">
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank" =
class=3D"">netmod@ietf.org</a><br class=3D"">
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_blank"=
 class=3D"">https://www.ietf.org/mailman/listinfo/netmod</a><br =
class=3D"">
</blockquote>
</div>
<br class=3D"">
</div>

</blockquote></div><br class=3D""></div></div>
_______________________________________________<br class=3D"">netmod =
mailing list<br class=3D""><a href=3D"mailto:netmod@ietf.org" =
class=3D"">netmod@ietf.org</a><br =
class=3D"">https://www.ietf.org/mailman/listinfo/netmod<br =
class=3D""></div></blockquote></div><br class=3D""></body></html>=

--Apple-Mail=_99ACB766-FA6A-42B9-8943-762703DD2DDC--


From nobody Tue Jun 23 15:17:30 2015
Return-Path: <deanb@juniper.net>
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 5752B1AC435 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 15:17:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 Duv-ZOpsjFOu for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 15:17:26 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0142.outbound.protection.outlook.com [207.46.100.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A07F51AC42D for <netmod@ietf.org>; Tue, 23 Jun 2015 15:17:26 -0700 (PDT)
Received: from BN1PR05MB359.namprd05.prod.outlook.com (10.141.61.150) by BN1PR05MB156.namprd05.prod.outlook.com (10.255.205.20) with Microsoft SMTP Server (TLS) id 15.1.195.15; Tue, 23 Jun 2015 22:17:26 +0000
Received: from BN1PR05MB424.namprd05.prod.outlook.com (10.141.58.148) by BN1PR05MB359.namprd05.prod.outlook.com (10.141.61.150) with Microsoft SMTP Server (TLS) id 15.1.195.15; Tue, 23 Jun 2015 22:17:24 +0000
Received: from BN1PR05MB424.namprd05.prod.outlook.com ([169.254.8.123]) by BN1PR05MB424.namprd05.prod.outlook.com ([169.254.8.123]) with mapi id 15.01.0195.005; Tue, 23 Jun 2015 22:17:24 +0000
From: Dean Bogdanovic <deanb@juniper.net>
To: Andy Bierman <andy@yumaworks.com>
Thread-Topic: [netmod] follow-up from virtual interim and i2rs discussions
Thread-Index: AQHQrUn1tc8m8WdLR0WVXSPXt52vpp25jG8AgABiMACAACpIAIAARtiAgAA5RICAAAuaAIAABY8A
Date: Tue, 23 Jun 2015 22:17:24 +0000
Message-ID: <E6EF2D0B-FB02-4775-A3D0-BB979D7AE130@juniper.net>
References: <20150623110606.GB34924@elstar.local> <201506231337.t5NDbQD5017860@idle.juniper.net> <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com> <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net> <CABCOCHSwkmM0=6ZUUtswpZFbk67GbLxDVNrsKjRc50N8bZEqeA@mail.gmail.com>
In-Reply-To: <CABCOCHSwkmM0=6ZUUtswpZFbk67GbLxDVNrsKjRc50N8bZEqeA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-mailer: Apple Mail (2.1510)
authentication-results: yumaworks.com; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.241.10]
x-microsoft-exchange-diagnostics: 1; BN1PR05MB359; 5:n3Pdyw4ST+JuejBbDGfbuZ8PuYDjfLHO0JeKKyobf6Mwbe2BpdPKYyjMKbxCBWoaB/1Kcw7H2x/fGxteSKE4csLnZaHpgz4ZLxXEqA8a4PhrEBVC4HP7hHYZ138PG6DcF/Uvt1zeWp64wcTdFA1Jqg==; 24:jotTpX7JIOLxaLCgjJTKMX9PDj8JjJ4tnMaBF9bMF26Ge29OAh14+F7LfcrMbJoYLsgGr7FAFnSutWlMLST7one4IcnUeSkkFFZ91MH3EN8=; 20:q/dXkgSc+ud1ZRFTxjkC1FPzJEdlRCqzUfTRpIaVq4CMAbPrqFD9TOVHD5EMbC9qEPcI6iIdp8sRWerxwSD4qA==
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB359; UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB156; 
x-microsoft-antispam-prvs: <BN1PR05MB359FC63AAD69AF31973CCCBB8A00@BN1PR05MB359.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BN1PR05MB359; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB359; 
x-forefront-prvs: 06167FAD59
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(24454002)(164054003)(377454003)(46102003)(5002640100001)(36756003)(77156002)(62966003)(83716003)(99286002)(110136002)(2950100001)(5001960100002)(92566002)(2900100001)(189998001)(93886004)(40100003)(50226001)(50986999)(15975445007)(102836002)(76176999)(19617315012)(33656002)(16236675004)(66066001)(122556002)(19580395003)(19580405001)(82746002)(106116001)(2656002)(57306001)(87936001)(86362001)(104396002); DIR:OUT; SFP:1102; SCL:1; SRVR:BN1PR05MB359; H:BN1PR05MB424.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_E6EF2D0BFB024775A3D0BB979D7AE130junipernet_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jun 2015 22:17:24.3710 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR05MB359
X-Microsoft-Exchange-Diagnostics: 1; BN1PR05MB156; 2:YXZpXmrHEPw2/MwlDTbcwCI/+hAx2kriXs1kMvoiwfWKE+CK/H09RrcSi/h9LIn7; 3:VDR5+aFMnMX6/5Bu6Y9W9+/wJie4OpOAaDU+N6coReJ3OsRAU22p52tAaI89eRwZh61ffdQOMtXn9ktVWP7kBoZMr1sooFpPDQ+N7M/74FotyUlKduBN+znKnOssRgo7a00uOwT4LgJ+Gh6SGke15A==; 23:E3VHpnd1lzkwPrC5rT1cTCk0AWZ4bAEK5EAcQJOA1PeQhPB5sUP6xa72Bx9+UM43HxwICmEaLWjB3SiPDKPLYNor+hoH/N3Mlo3YYCvkSirc5U/2gqbSTazBJT70xaZUxWjVzh1Al8ECX7NQU09NbkT4YevFEA77J9oIn+EpY7bASdAnU7ojkp0p6EaI5NIJ7dWMjV9my/X0TC8BFd1aRJnH8AtB2X6JNXG3lkWtuKkDhDt10ac5RoigV9ozJMDO
X-OriginatorOrg: juniper.net
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/nZu6p7i-wSpPnKb-iEJc-Q0irlA>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 22:17:29 -0000

--_000_E6EF2D0BFB024775A3D0BB979D7AE130junipernet_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


On Jun 23, 2015, at 5:57 PM, Andy Bierman <andy@yumaworks.com<mailto:andy@y=
umaworks.com>> wrote:



On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic <deanb@juniper.net<mailto:=
deanb@juniper.net>> wrote:

On Jun 23, 2015, at 1:50 PM, Andy Bierman <andy@yumaworks.com<mailto:andy@y=
umaworks.com>> wrote:





Yup, and reality can change when you swap FRUs.

>>   actual state + counters =3D> operational state
>This should be:
>  actual state + statistics =3D> operational state
>Statistics is largely dominated by counters but not only counters.

Sound good.

Precise language is so important, so I think well-defined terms
matter.  Then again, one can be completely precise while being
completely useless, like my current favorite word, sphygmomanometer.


IMO getting the concepts right needs to be done first.
Picking the right terms helps if the concepts are right in the first place.

The thermometer example I have given many times needs to be understood.

Let's say the same leaf "temperature" is used in all datastores.
The "running" temperature is the configured desired value.
The "operational" temperature is the current value read from a sensor.

So where does "ephemeral" temperature fit in?  Does this setting override
the desired temperature and have no affect on the operational sensor value?
Or does it over-write the sensor value to the device is now lying
when it reports the operational temperature?

Andy,

ephemeral "temperature" would overwrite which ever data store was read to s=
et "running" temperature. If the "temperature" was read from "startup" conf=
ig, then ephemeral would mask the "temperature" leaf in the startup and run=
ning would read from ephemeral data store.
One of the issues I personally ran into while at Juniper was people percept=
ion that configuration is persistent. Ephemeral config was very confusing t=
o Juniper customers, as I was trying to explain them, that if they change t=
he ephemeral and device reboots, the configuration is gone. For many of the=
m, it was running config, but it is not. Another issue was no rollback. Act=
ually, there is only rollback 0, which is done automatically by the system,=
 if the config commit is not successful.



IMO it is quite obvious that ephemeral data is configuration, not state.

I would not say that ephemeral data is config. It is temporary state develo=
pers want to change the device state too.



Here is a simple example.
I hope it is not too abstract.

No, it is not

   leaf admin-temp {
      type uint32;
       units "degrees Celsius";
      description "The configured temperature.";
  }

>From YANG perspective, it would be exactly the same, in persistent config a=
nd ephemeral data store

the only difference is in NETCONF RPC

for persistent config
<edit-configuration>

and for ephemeral
<edit-ephemeral-instance>

As there can be multiple ephemeral instances.

   leaf oper-temp {
       type uint32;
       units "degrees Celsius";
       config false;
       description "The measured temperature.";
  }


Would your I2RS solution be able to over-ride the admin-temp
with a temporary ephemeral value?

 When commit is executed in ephemeral instance, merge between persistent an=
d ephemeral is being executed, with priority for values coming from ephemer=
al data store.

Makes sense?

Describe the solution
in detail.  Provide all YANG and all protocol operations that would be used



Thx

Dean


Andy


Operational state is always read-only.



Thanks,
 Phil


Andy


_______________________________________________
netmod mailing list
netmod@ietf.org<mailto:netmod@ietf.org>
https://www.ietf.org/mailman/listinfo/netmod

_______________________________________________
netmod mailing list
netmod@ietf.org<mailto:netmod@ietf.org>
https://www.ietf.org/mailman/listinfo/netmod




--_000_E6EF2D0BFB024775A3D0BB979D7AE130junipernet_
Content-Type: text/html; charset="us-ascii"
Content-ID: <9D9D69C6D110844C875541DAE7B81B31@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space; ">
<br>
<div>
<div>On Jun 23, 2015, at 5:57 PM, Andy Bierman &lt;<a href=3D"mailto:andy@y=
umaworks.com">andy@yumaworks.com</a>&gt; wrote:</div>
<br class=3D"Apple-interchange-newline">
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic=
 <span dir=3D"ltr">
&lt;<a href=3D"mailto:deanb@juniper.net" target=3D"_blank">deanb@juniper.ne=
t</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<div style=3D"word-wrap:break-word"><br>
<div>
<div>On Jun 23, 2015, at 1:50 PM, Andy Bierman &lt;<a href=3D"mailto:andy@y=
umaworks.com" target=3D"_blank">andy@yumaworks.com</a>&gt; wrote:</div>
<br>
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<br>
<br>
Yup, and reality can change when you swap FRUs.<br>
<br>
&gt;&gt;&nbsp; &nbsp;actual state &#43; counters =3D&gt; operational state<=
br>
&gt;This should be:<br>
&gt;&nbsp; actual state &#43; statistics =3D&gt; operational state<br>
&gt;Statistics is largely dominated by counters but not only counters.<br>
<br>
Sound good.<br>
<br>
Precise language is so important, so I think well-defined terms<br>
matter.&nbsp; Then again, one can be completely precise while being<br>
completely useless, like my current favorite word, sphygmomanometer.<br>
<br>
</blockquote>
<div><br>
</div>
<div>IMO getting the concepts right needs to be done first.</div>
<div>Picking the right terms helps if the concepts are right in the first p=
lace.</div>
<div><br>
</div>
<div>The thermometer example I have given many times needs to be understood=
.</div>
<div><br>
</div>
<div>Let's say the same leaf &quot;temperature&quot; is used in all datasto=
res.</div>
<div>The &quot;running&quot; temperature is the configured desired value.</=
div>
<div>The &quot;operational&quot; temperature is the current value read from=
 a sensor.</div>
<div><br>
</div>
<div>So where does &quot;ephemeral&quot; temperature fit in?&nbsp; Does thi=
s setting override</div>
<div>the desired temperature and have no affect on the operational sensor v=
alue?</div>
<div>Or does it over-write the sensor value to the device is now lying</div=
>
<div>when it reports the operational temperature?</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Andy,</div>
<div><br>
</div>
<div>ephemeral &quot;temperature&quot; would overwrite which ever data stor=
e was read to set &quot;running&quot; temperature. If the &quot;temperature=
&quot; was read from &quot;startup&quot; config, then ephemeral would mask =
the &quot;temperature&quot; leaf in the startup and running would read from=
 ephemeral
 data store.</div>
<div>One of the issues I personally ran into while at Juniper was people pe=
rception that configuration is persistent. Ephemeral config was very confus=
ing to Juniper customers, as I was trying to explain them, that if they cha=
nge the ephemeral and device reboots,
 the configuration is gone. For many of them, it was running config, but it=
 is not. Another issue was no rollback. Actually, there is only rollback 0,=
 which is done automatically by the system, if the config commit is not suc=
cessful.</div>
<div><br>
</div>
<div><br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div><br>
</div>
<div>IMO it is quite obvious that ephemeral data is configuration, not stat=
e.</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
I would not say that ephemeral data is config. It is temporary state develo=
pers want to change the device state too.</div>
<div><br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>Here is a simple example.</div>
<div>I hope it is not too abstract.</div>
<div><br>
</div>
</div>
</div>
</div>
</blockquote>
No, it is not</div>
<div><br>
</div>
<div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>&nbsp; &nbsp;leaf admin-temp {</div>
<div>&nbsp; &nbsp; &nbsp; type uint32;</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;units &quot;degrees Celsius&quot;;</div>
<div>&nbsp; &nbsp; &nbsp; description &quot;The configured temperature.&quo=
t;;</div>
<div>&nbsp; }</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>From YANG perspective, it would be exactly the same, in persistent con=
fig and ephemeral data store</div>
<div><br>
</div>
<div>the only difference is in NETCONF RPC</div>
<div><br>
</div>
<div>for persistent config</div>
<div>&lt;edit-configuration&gt;</div>
<div><br>
</div>
<div>and for ephemeral</div>
<div>&lt;edit-ephemeral-instance&gt;</div>
<div><br>
</div>
<div>As there can be multiple ephemeral instances.</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div><br>
</div>
<div>
<div>&nbsp; &nbsp;leaf oper-temp {</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;type uint32;</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;units &quot;degrees Celsius&quot;;</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;config false;</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;description &quot;The measured temperature.=
&quot;;</div>
<div>&nbsp; }</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div>Would your I2RS solution be able to over-ride the admin-temp</div>
<div>with a temporary ephemeral value?&nbsp;</div>
</div>
</div>
</div>
</blockquote>
<br>
<div>
<div>&nbsp;When commit is executed in ephemeral instance, merge between per=
sistent and ephemeral is being executed, with priority for values coming fr=
om ephemeral data store.</div>
<div><br>
</div>
<div>Makes sense?</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote"></div>
</div>
</div>
</blockquote>
</div>
<br>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>Describe the solution</div>
<div>in detail.&nbsp; Provide all YANG and all protocol operations that&nbs=
p;would be used&nbsp;</div>
<div><br>
</div>
<div><br>
</div>
<div>&nbsp; &nbsp; &nbsp;<br>
</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<div style=3D"word-wrap:break-word">
<div></div>
<div>Thx</div>
<div><br>
</div>
<div>Dean</div>
<div><br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Andy</div>
<div><br>
</div>
<div>&nbsp;</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<div style=3D"word-wrap:break-word">
<div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>Operational state is always read-only.</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
Thanks,<br>
&nbsp;Phil<br>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>Andy</div>
<div>&nbsp;</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_blank">=
https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</body>
</html>

--_000_E6EF2D0BFB024775A3D0BB979D7AE130junipernet_--


From nobody Tue Jun 23 15:24:03 2015
Return-Path: <jmh@joelhalpern.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 DCCF81A1A1C for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 15:24:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 cWmilnorMu70 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 15:24:00 -0700 (PDT)
Received: from maila2.tigertech.net (maila2.tigertech.net [208.80.4.152]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4A6BB1A06E9 for <netmod@ietf.org>; Tue, 23 Jun 2015 15:24:00 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by maila2.tigertech.net (Postfix) with ESMTP id 38D322409BC; Tue, 23 Jun 2015 15:24:00 -0700 (PDT)
X-Virus-Scanned: Debian amavisd-new at maila2.tigertech.net
Received: from Joels-MacBook-Pro.local (unknown [209.5.235.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by maila2.tigertech.net (Postfix) with ESMTPSA id A863D24094E; Tue, 23 Jun 2015 15:23:59 -0700 (PDT)
To: Dean Bogdanovic <deanb@juniper.net>, Andy Bierman <andy@yumaworks.com>
References: <20150623110606.GB34924@elstar.local> <201506231337.t5NDbQD5017860@idle.juniper.net> <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com> <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net> <CABCOCHSwkmM0=6ZUUtswpZFbk67GbLxDVNrsKjRc50N8bZEqeA@mail.gmail.com> <E6EF2D0B-FB02-4775-A3D0-BB979D7AE130@juniper.net>
From: "Joel M. Halpern" <jmh@joelhalpern.com>
Message-ID: <5589DC78.6010704@joelhalpern.com>
Date: Tue, 23 Jun 2015 18:23:52 -0400
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:38.0) Gecko/20100101 Thunderbird/38.0.1
MIME-Version: 1.0
In-Reply-To: <E6EF2D0B-FB02-4775-A3D0-BB979D7AE130@juniper.net>
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/l9L84CNnb9YuXECfcSgFsGEybVI>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 22:24:02 -0000

Actually, the I2RS agreement was that "commit" can never be run on the 
I2RS data.  It is not to be persisted.

The reason this is important is that client 1 and client 2 may have made 
ephemeral changes to the device.  if client 1 did "commit", it would 
cause client 2's data to become permanent, when that was not his itnent.

Instead, if client 1 wants his changes to be persistend, he can make the 
directly to running, using NetConf (or, I suppose, RestConf) and then 
commit that.

Yours,
Joel

On 6/23/15 6:17 PM, Dean Bogdanovic wrote:
>
> On Jun 23, 2015, at 5:57 PM, Andy Bierman <andy@yumaworks.com
> <mailto:andy@yumaworks.com>> wrote:
>
>>
>>
>> On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic <deanb@juniper.net
>> <mailto:deanb@juniper.net>> wrote:
>>
>>
>>     On Jun 23, 2015, at 1:50 PM, Andy Bierman <andy@yumaworks.com
>>     <mailto:andy@yumaworks.com>> wrote:
>>
>>>
>>>
>>>
>>>
>>>         Yup, and reality can change when you swap FRUs.
>>>
>>>         >>   actual state + counters => operational state
>>>         >This should be:
>>>         >  actual state + statistics => operational state
>>>         >Statistics is largely dominated by counters but not only
>>>         counters.
>>>
>>>         Sound good.
>>>
>>>         Precise language is so important, so I think well-defined terms
>>>         matter.  Then again, one can be completely precise while being
>>>         completely useless, like my current favorite word,
>>>         sphygmomanometer.
>>>
>>>
>>>     IMO getting the concepts right needs to be done first.
>>>     Picking the right terms helps if the concepts are right in the
>>>     first place.
>>>
>>>     The thermometer example I have given many times needs to be
>>>     understood.
>>>
>>>     Let's say the same leaf "temperature" is used in all datastores.
>>>     The "running" temperature is the configured desired value.
>>>     The "operational" temperature is the current value read from a
>>>     sensor.
>>>
>>>     So where does "ephemeral" temperature fit in?  Does this setting
>>>     override
>>>     the desired temperature and have no affect on the operational
>>>     sensor value?
>>>     Or does it over-write the sensor value to the device is now lying
>>>     when it reports the operational temperature?
>>
>>     Andy,
>>
>>     ephemeral "temperature" would overwrite which ever data store was
>>     read to set "running" temperature. If the "temperature" was read
>>     from "startup" config, then ephemeral would mask the "temperature"
>>     leaf in the startup and running would read from ephemeral data store.
>>     One of the issues I personally ran into while at Juniper was
>>     people perception that configuration is persistent. Ephemeral
>>     config was very confusing to Juniper customers, as I was trying to
>>     explain them, that if they change the ephemeral and device
>>     reboots, the configuration is gone. For many of them, it was
>>     running config, but it is not. Another issue was no rollback.
>>     Actually, there is only rollback 0, which is done automatically by
>>     the system, if the config commit is not successful.
>>
>>
>>>
>>>     IMO it is quite obvious that ephemeral data is configuration, not
>>>     state.
>>
>>     I would not say that ephemeral data is config. It is temporary
>>     state developers want to change the device state too.
>>
>>
>>
>> Here is a simple example.
>> I hope it is not too abstract.
>>
> No, it is not
>
>>    leaf admin-temp {
>>       type uint32;
>>        units "degrees Celsius";
>>       description "The configured temperature.";
>>   }
>
>  From YANG perspective, it would be exactly the same, in persistent
> config and ephemeral data store
>
> the only difference is in NETCONF RPC
>
> for persistent config
> <edit-configuration>
>
> and for ephemeral
> <edit-ephemeral-instance>
>
> As there can be multiple ephemeral instances.
>>
>>    leaf oper-temp {
>>        type uint32;
>>        units "degrees Celsius";
>>        config false;
>>        description "The measured temperature.";
>>   }
>>
>>
>> Would your I2RS solution be able to over-ride the admin-temp
>> with a temporary ephemeral value?
>
>   When commit is executed in ephemeral instance, merge between
> persistent and ephemeral is being executed, with priority for values
> coming from ephemeral data store.
>
> Makes sense?
>
>> Describe the solution
>> in detail.  Provide all YANG and all protocol operations that would be
>> used
>>
>>
>>
>>     Thx
>>
>>     Dean
>>
>>
>> Andy
>>
>>>     Operational state is always read-only.
>>>
>>>
>>>
>>>         Thanks,
>>>          Phil
>>>
>>>
>>>
>>>     Andy
>>>
>>>
>>>         _______________________________________________
>>>         netmod mailing list
>>>         netmod@ietf.org <mailto:netmod@ietf.org>
>>>         https://www.ietf.org/mailman/listinfo/netmod
>>>
>>>
>>>     _______________________________________________
>>>     netmod mailing list
>>>     netmod@ietf.org <mailto:netmod@ietf.org>
>>>     https://www.ietf.org/mailman/listinfo/netmod
>>
>>
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>


From nobody Tue Jun 23 16:11:43 2015
Return-Path: <kwatsen@juniper.net>
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 33A431ACF0A for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 16:11:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 DZSCzE4U8mzo for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 16:11:39 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0138.outbound.protection.outlook.com [65.55.169.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 240D01ACF1B for <netmod@ietf.org>; Tue, 23 Jun 2015 16:11:38 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB426.namprd05.prod.outlook.com (10.141.74.24) with Microsoft SMTP Server (TLS) id 15.1.195.15; Tue, 23 Jun 2015 23:11:37 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Tue, 23 Jun 2015 23:11:37 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Andy Bierman <andy@yumaworks.com>, Dean Bogdanovic <deanb@juniper.net>
Thread-Topic: [netmod] follow-up from virtual interim and i2rs discussions
Thread-Index: AQHQrUn1tc8m8WdLR0WVXSPXt52vpp25jG8AgABiMACAACpIAIAARtiAgAA5RICAAAV4gP//18oA
Date: Tue, 23 Jun 2015 23:11:36 +0000
Message-ID: <D1AF5744.B3655%kwatsen@juniper.net>
References: <20150623110606.GB34924@elstar.local> <201506231337.t5NDbQD5017860@idle.juniper.net> <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com> <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net> <CABCOCHR+O1016_YQyY5f7VYxdMaa1cOaDwWcS4ir8rR39M36kg@mail.gmail.com>
In-Reply-To: <CABCOCHR+O1016_YQyY5f7VYxdMaa1cOaDwWcS4ir8rR39M36kg@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: yumaworks.com; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB426; 5:ZbDGqguEa69dD0P96q5yRpKfgLQYOvNyF2opYj65jQiO7ds0DdravXwsSlu3Pp+CYIpTiR+pGQE9Eq9dhjjxvFL6m/Zw9GivriUe/vWX/xFZogs5jIijVkGxpcheBSrJmhqzTfIvNZ7E8YvkBZbYmg==; 24:2rGrUbxcqA+AEb1CDU0rHLt/+SpWPoe8r2RQBR3wtFkYXlwVq1MPxk8DJ7NLx0LZa1iH47YK/IdJhn5omBGB47azjlngVFRF3jVUA3snXTQ=; 20:g7jX3eWUKraqlx5Kj7866PIq75+cRnXB6wYCMa7csB8l9jRPgnka3stqxA9QysLXkV2trCDuxvoR3N02c3h90Q==
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB426;
x-microsoft-antispam-prvs: <CO1PR05MB4260C90AAF86FA9696F68C8A5A00@CO1PR05MB426.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB426; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB426; 
x-forefront-prvs: 06167FAD59
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(24454002)(164054003)(377454003)(2656002)(102836002)(15975445007)(16236675004)(2900100001)(87936001)(83506001)(40100003)(122556002)(77156002)(62966003)(86362001)(66066001)(92566002)(2950100001)(1941001)(46102003)(106116001)(19580405001)(19580395003)(5001770100001)(4001350100001)(50986999)(76176999)(54356999)(189998001)(5001960100002)(36756003)(5002640100001)(19617315012)(99286002)(93886004)(4001450100001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB426; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_D1AF5744B3655kwatsenjunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jun 2015 23:11:36.9667 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB426
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Qr4NIjV6I0eB2AsJosOn5GPS6zc>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 23:11:42 -0000

--_000_D1AF5744B3655kwatsenjunipernet_
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable


[As an individual contributor]

I think terminology is mostly converging, with the primary hangup being if =
ephemeral/intended are "configuration" or "state".    I'm personally in fav=
or of calling both "configuration", as they would still contain values like=
 "auto", that require actualization to obtain an operational state value...=
so I think, if it's not state, it must be config, right?  Adding to this, w=
e have a general understanding that anything that can be configured persist=
ently can also (in theory) be configured ephemerally =96 so it behaves like=
 config in this way too...

More importantly though, I believe that we're converging on a conceptual mo=
del and have  general agreement that "running + ephemeral =3D intended" and=
 "intended + <actualization> =3D operational state".  This seems obvious in=
 hindsight, but it wasn't until the OpenConfig folks brought the "intended"=
 term that we wrote it down.

I hope we can converge on the terminology and conceptual model in the near =
term, and then use this new foundation for articulating I2RS and OpenConfig=
 solutions.

Kent


From: Andy Bierman <andy@yumaworks.com<mailto:andy@yumaworks.com>>
Date: Tuesday, June 23, 2015 at 5:35 PM
To: Dean Bogdanovic <deanb@juniper.net<mailto:deanb@juniper.net>>
Cc: "netmod@ietf.org<mailto:netmod@ietf.org>" <netmod@ietf.org<mailto:netmo=
d@ietf.org>>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions

Hi,

I don't think the terminology is converging.

There is really only "intended state" and "operational state".
There is ephemeral intended state and persistent intended state.

The fact that a configured intended value came from the startup
or from I2RS or from CLI does not really matter.  The fact that
an I2RS value does not come back after a reboot does not
really matter.

Intended state means the server is asked to change the behavior
of the device, which needs to understand and activate the intentions of
the client.

Operational state means the actual state of the device.
It is the result of the device processing intended state and
participating in protocols that affect device behavior.


Andy


On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic <deanb@juniper.net<mailto:=
deanb@juniper.net>> wrote:

On Jun 23, 2015, at 1:50 PM, Andy Bierman <andy@yumaworks.com<mailto:andy@y=
umaworks.com>> wrote:





Yup, and reality can change when you swap FRUs.

>>   actual state + counters =3D> operational state
>This should be:
>  actual state + statistics =3D> operational state
>Statistics is largely dominated by counters but not only counters.

Sound good.

Precise language is so important, so I think well-defined terms
matter.  Then again, one can be completely precise while being
completely useless, like my current favorite word, sphygmomanometer.


IMO getting the concepts right needs to be done first.
Picking the right terms helps if the concepts are right in the first place.

The thermometer example I have given many times needs to be understood.

Let's say the same leaf "temperature" is used in all datastores.
The "running" temperature is the configured desired value.
The "operational" temperature is the current value read from a sensor.

So where does "ephemeral" temperature fit in?  Does this setting override
the desired temperature and have no affect on the operational sensor value?
Or does it over-write the sensor value to the device is now lying
when it reports the operational temperature?

Andy,

ephemeral "temperature" would overwrite which ever data store was read to s=
et "running" temperature. If the "temperature" was read from "startup" conf=
ig, then ephemeral would mask the "temperature" leaf in the startup and run=
ning would read from ephemeral data store.
One of the issues I personally ran into while at Juniper was people percept=
ion that configuration is persistent. Ephemeral config was very confusing t=
o Juniper customers, as I was trying to explain them, that if they change t=
he ephemeral and device reboots, the configuration is gone. For many of the=
m, it was running config, but it is not. Another issue was no rollback. Act=
ually, there is only rollback 0, which is done automatically by the system,=
 if the config commit is not successful.



IMO it is quite obvious that ephemeral data is configuration, not state.

I would not say that ephemeral data is config. It is temporary state develo=
pers want to change the device state too.

Thx

Dean

Operational state is always read-only.



Thanks,
 Phil


Andy


_______________________________________________
netmod mailing list
netmod@ietf.org<mailto:netmod@ietf.org>
https://www.ietf.org/mailman/listinfo/netmod

_______________________________________________
netmod mailing list
netmod@ietf.org<mailto:netmod@ietf.org>
https://www.ietf.org/mailman/listinfo/netmod



--_000_D1AF5744B3655kwatsenjunipernet_
Content-Type: text/html; charset="Windows-1252"
Content-ID: <92E91932F864A348A540D057B4155C26@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DWindows-1=
252">
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space;">
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
[As an individual contributor]</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
I think terminology is mostly converging, with the primary hangup being if =
ephemeral/intended are &quot;configuration&quot; or &quot;state&quot;. &nbs=
p; &nbsp;I'm&nbsp;personally in favor of calling both &quot;configuration&q=
uot;,&nbsp;as they would still contain values like &quot;auto&quot;, that r=
equire actualization
 to obtain an operational state value...so I think, if it's not state, it m=
ust be config, right? &nbsp;Adding to this, we have a general understanding=
 that anything that can be configured persistently can also (in theory) be =
configured ephemerally =96 so it behaves
 like config in this way too...</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div><font face=3D"Calibri,sans-serif">More importantly though,&nbsp;</font=
><span style=3D"font-family: Calibri, sans-serif; font-size: 14px;">I belie=
ve that we're converging on a conceptual model and have &nbsp;general agree=
ment that &quot;running &#43; ephemeral =3D intended&quot; and
 &quot;intended &#43; &lt;actualization&gt; =3D operational state&quot;. &n=
bsp;This seems obvious in hindsight, but it wasn't until the OpenConfig fol=
ks brought the &quot;intended&quot; term that we wrote it down.&nbsp;</span=
></div>
<div><br>
</div>
<div>I hope we can converge on the terminology and conceptual model in the =
near term, and then use this new foundation for articulating I2RS and OpenC=
onfig solutions.</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
Kent</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<span id=3D"OLK_SRC_BODY_SECTION" style=3D"color: rgb(0, 0, 0); font-family=
: Calibri, sans-serif; font-size: 14px;">
<div style=3D"font-family:Calibri; font-size:11pt; text-align:left; color:b=
lack; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM:=
 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid;=
 BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style=3D"font-weight:bold">From: </span>Andy Bierman &lt;<a href=3D"m=
ailto:andy@yumaworks.com">andy@yumaworks.com</a>&gt;<br>
<span style=3D"font-weight:bold">Date: </span>Tuesday, June 23, 2015 at 5:3=
5 PM<br>
<span style=3D"font-weight:bold">To: </span>Dean Bogdanovic &lt;<a href=3D"=
mailto:deanb@juniper.net">deanb@juniper.net</a>&gt;<br>
<span style=3D"font-weight:bold">Cc: </span>&quot;<a href=3D"mailto:netmod@=
ietf.org">netmod@ietf.org</a>&quot; &lt;<a href=3D"mailto:netmod@ietf.org">=
netmod@ietf.org</a>&gt;<br>
<span style=3D"font-weight:bold">Subject: </span>Re: [netmod] follow-up fro=
m virtual interim and i2rs discussions<br>
</div>
<div><br>
</div>
<div>
<div>
<div dir=3D"ltr">Hi,
<div><br>
</div>
<div>I don't think the terminology is converging.</div>
<div><br>
</div>
<div>There is really only &quot;intended state&quot; and &quot;operational =
state&quot;.</div>
<div>There is ephemeral intended state and persistent intended state.</div>
<div><br>
</div>
<div>The fact that a configured intended value came from the startup</div>
<div>or from I2RS or from CLI does not really matter.&nbsp; The fact that</=
div>
<div>an I2RS value does not come back after a reboot does not</div>
<div>really matter.</div>
<div><br>
</div>
<div>Intended state means the server is asked to change the behavior</div>
<div>of the device, which needs to understand and activate the intentions o=
f</div>
<div>the client.</div>
<div><br>
</div>
<div>Operational state means the actual state of the device.</div>
<div>It is the result of the device processing intended state and</div>
<div>participating in protocols that affect device behavior.</div>
<div><br>
</div>
<div><br>
</div>
<div>Andy</div>
<div><br>
</div>
</div>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic=
 <span dir=3D"ltr">
&lt;<a href=3D"mailto:deanb@juniper.net" target=3D"_blank">deanb@juniper.ne=
t</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
<div style=3D"word-wrap:break-word"><br>
<div>
<div>On Jun 23, 2015, at 1:50 PM, Andy Bierman &lt;<a href=3D"mailto:andy@y=
umaworks.com" target=3D"_blank">andy@yumaworks.com</a>&gt; wrote:</div>
<br>
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<br>
<br>
Yup, and reality can change when you swap FRUs.<br>
<br>
&gt;&gt;&nbsp; &nbsp;actual state &#43; counters =3D&gt; operational state<=
br>
&gt;This should be:<br>
&gt;&nbsp; actual state &#43; statistics =3D&gt; operational state<br>
&gt;Statistics is largely dominated by counters but not only counters.<br>
<br>
Sound good.<br>
<br>
Precise language is so important, so I think well-defined terms<br>
matter.&nbsp; Then again, one can be completely precise while being<br>
completely useless, like my current favorite word, sphygmomanometer.<br>
<br>
</blockquote>
<div><br>
</div>
<div>IMO getting the concepts right needs to be done first.</div>
<div>Picking the right terms helps if the concepts are right in the first p=
lace.</div>
<div><br>
</div>
<div>The thermometer example I have given many times needs to be understood=
.</div>
<div><br>
</div>
<div>Let's say the same leaf &quot;temperature&quot; is used in all datasto=
res.</div>
<div>The &quot;running&quot; temperature is the configured desired value.</=
div>
<div>The &quot;operational&quot; temperature is the current value read from=
 a sensor.</div>
<div><br>
</div>
<div>So where does &quot;ephemeral&quot; temperature fit in?&nbsp; Does thi=
s setting override</div>
<div>the desired temperature and have no affect on the operational sensor v=
alue?</div>
<div>Or does it over-write the sensor value to the device is now lying</div=
>
<div>when it reports the operational temperature?</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Andy,</div>
<div><br>
</div>
<div>ephemeral &quot;temperature&quot; would overwrite which ever data stor=
e was read to set &quot;running&quot; temperature. If the &quot;temperature=
&quot; was read from &quot;startup&quot; config, then ephemeral would mask =
the &quot;temperature&quot; leaf in the startup and running would read from=
 ephemeral
 data store.</div>
<div>One of the issues I personally ran into while at Juniper was people pe=
rception that configuration is persistent. Ephemeral config was very confus=
ing to Juniper customers, as I was trying to explain them, that if they cha=
nge the ephemeral and device reboots,
 the configuration is gone. For many of them, it was running config, but it=
 is not. Another issue was no rollback. Actually, there is only rollback 0,=
 which is done automatically by the system, if the config commit is not suc=
cessful.</div>
<div><br>
</div>
<div><br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div><br>
</div>
<div>IMO it is quite obvious that ephemeral data is configuration, not stat=
e.</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
I would not say that ephemeral data is config. It is temporary state develo=
pers want to change the device state too.</div>
<div><br>
</div>
<div>Thx</div>
<div><br>
</div>
<div>Dean</div>
<div><br>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>Operational state is always read-only.</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
Thanks,<br>
&nbsp;Phil<br>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>Andy</div>
<div>&nbsp;</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_blank">=
https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</span>
</body>
</html>

--_000_D1AF5744B3655kwatsenjunipernet_--


From nobody Tue Jun 23 16:17:24 2015
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 D4BCE1AD09A for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 16:17:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.378
X-Spam-Level: 
X-Spam-Status: No, score=-1.378 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, RCVD_IN_DNSWL_LOW=-0.7, 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 mlaCoJUF4Qma for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 16:17:20 -0700 (PDT)
Received: from mail-la0-f44.google.com (mail-la0-f44.google.com [209.85.215.44]) (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 0977B1AD08F for <netmod@ietf.org>; Tue, 23 Jun 2015 16:17:20 -0700 (PDT)
Received: by lagx9 with SMTP id x9so15881245lag.1 for <netmod@ietf.org>; Tue, 23 Jun 2015 16:17:18 -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=GuewExlzjNJdaBSiY4/8dni+LF2h6ltorfGfaf3pElA=; b=N1BX54OaD/FbV8/vw42nLMm5B6enippKVtSMePkd99bJm+O3t4fAMCWzBQpssDPSLx 1Av8U5G4P13bdgeauQ3DRplQAeQ2vjGYA4Wzmx1TZbPJDvHeQGqO7jMQ4Xazwt6usIUp O5zjP0xuk0DZZsP2FNBuVM3N9HJfTlZtNm7jmMowXanNPddaTeOLvV4BRGagMevIFasZ mfy9CWXav556ssk/DtOj2pV2VRc1cMfXEtEyw5+QL3i2DflMoH49V/c6M0Ab33JvYDzV Z7ONAe1mcxKw7wymjsXN5KZ0MA5u8OHgKQ1tGKsgn0u6lXCLfGGa2KYMDi/zMv1T9FFh UqHg==
X-Gm-Message-State: ALoCoQlOgpVl+7xNwvr5bhnZ7VvZul3RsxiYp+juSguxCHxn6S0ZddqHGATnD0oV87HXFm70QOeD
MIME-Version: 1.0
X-Received: by 10.112.124.71 with SMTP id mg7mr37331253lbb.38.1435101438528; Tue, 23 Jun 2015 16:17:18 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 23 Jun 2015 16:17:18 -0700 (PDT)
In-Reply-To: <E6EF2D0B-FB02-4775-A3D0-BB979D7AE130@juniper.net>
References: <20150623110606.GB34924@elstar.local> <201506231337.t5NDbQD5017860@idle.juniper.net> <CABCOCHR31yXPqn_OhiZy1DKPjMFJeDDPh-sm9WtPvCM750Z8LA@mail.gmail.com> <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net> <CABCOCHSwkmM0=6ZUUtswpZFbk67GbLxDVNrsKjRc50N8bZEqeA@mail.gmail.com> <E6EF2D0B-FB02-4775-A3D0-BB979D7AE130@juniper.net>
Date: Tue, 23 Jun 2015 16:17:18 -0700
Message-ID: <CABCOCHTbK2ygJyPjPpFo1uBhJo5ZTQc2cnmtk2VsZQe6oLEqOg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Dean Bogdanovic <deanb@juniper.net>
Content-Type: multipart/alternative; boundary=047d7bfd0d8675e5a705193797f0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/WOpdwinluyL_jLoSPO0G3NKTDEY>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 23 Jun 2015 23:17:23 -0000

--047d7bfd0d8675e5a705193797f0
Content-Type: text/plain; charset=UTF-8

Hi,

You are not describing the procedure very precisely, even for Junos,
let alone a standard.  You are vaguely describing different
datastores, except the I2RS datastore does not support multiple
layers.  If client A data gets deleted because of higher priority
client B, then that client A data does not come back automatically
if client B data is deleted. (So there cannot be multiple ephemeral
instances in the I2RS standard).

If the 1 'admin-temp' config=true leaf is
used for both configuration and ephemeral,
and the only difference is what operation is used to edit the data,
then the server has to keep track of each.  The retrieval operations
have to keep each type of data separate.  Whether that
is a tag or a datastore, the implementation is basically the same.

The difference is that YANG has specific validation rules about
what is in the running datastore.  This cannot change in NETCONF.
Unless YANG validation is ignored by I2RS, new text will be needed
to say how this is handled.  Is there any concept of datastore validation
in I2RS?
Any YANG validation procedures specified at all?

Unless I2RS can explain why the NETCONF architecture and its
use of datastores is inappropriate, I see no reason to change it.


Andy


On Tue, Jun 23, 2015 at 3:17 PM, Dean Bogdanovic <deanb@juniper.net> wrote:

>
>  On Jun 23, 2015, at 5:57 PM, Andy Bierman <andy@yumaworks.com> wrote:
>
>
>
> On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic <deanb@juniper.net>
> wrote:
>
>>
>>  On Jun 23, 2015, at 1:50 PM, Andy Bierman <andy@yumaworks.com> wrote:
>>
>>
>>
>>
>>>
>>> Yup, and reality can change when you swap FRUs.
>>>
>>> >>   actual state + counters => operational state
>>> >This should be:
>>> >  actual state + statistics => operational state
>>> >Statistics is largely dominated by counters but not only counters.
>>>
>>> Sound good.
>>>
>>> Precise language is so important, so I think well-defined terms
>>> matter.  Then again, one can be completely precise while being
>>> completely useless, like my current favorite word, sphygmomanometer.
>>>
>>>
>>  IMO getting the concepts right needs to be done first.
>> Picking the right terms helps if the concepts are right in the first
>> place.
>>
>>  The thermometer example I have given many times needs to be understood.
>>
>>  Let's say the same leaf "temperature" is used in all datastores.
>> The "running" temperature is the configured desired value.
>> The "operational" temperature is the current value read from a sensor.
>>
>>  So where does "ephemeral" temperature fit in?  Does this setting
>> override
>> the desired temperature and have no affect on the operational sensor
>> value?
>> Or does it over-write the sensor value to the device is now lying
>> when it reports the operational temperature?
>>
>>
>>  Andy,
>>
>>  ephemeral "temperature" would overwrite which ever data store was read
>> to set "running" temperature. If the "temperature" was read from "startup"
>> config, then ephemeral would mask the "temperature" leaf in the startup and
>> running would read from ephemeral data store.
>> One of the issues I personally ran into while at Juniper was people
>> perception that configuration is persistent. Ephemeral config was very
>> confusing to Juniper customers, as I was trying to explain them, that if
>> they change the ephemeral and device reboots, the configuration is gone.
>> For many of them, it was running config, but it is not. Another issue was
>> no rollback. Actually, there is only rollback 0, which is done
>> automatically by the system, if the config commit is not successful.
>>
>>
>>
>>  IMO it is quite obvious that ephemeral data is configuration, not state.
>>
>>
>>  I would not say that ephemeral data is config. It is temporary state
>> developers want to change the device state too.
>>
>>
>
>  Here is a simple example.
> I hope it is not too abstract.
>
>    No, it is not
>
>       leaf admin-temp {
>       type uint32;
>        units "degrees Celsius";
>       description "The configured temperature.";
>   }
>
>
>  From YANG perspective, it would be exactly the same, in persistent
> config and ephemeral data store
>
>  the only difference is in NETCONF RPC
>
>  for persistent config
> <edit-configuration>
>
>  and for ephemeral
> <edit-ephemeral-instance>
>
>  As there can be multiple ephemeral instances.
>
>
>     leaf oper-temp {
>        type uint32;
>        units "degrees Celsius";
>        config false;
>        description "The measured temperature.";
>   }
>
>
>  Would your I2RS solution be able to over-ride the admin-temp
> with a temporary ephemeral value?
>
>
>   When commit is executed in ephemeral instance, merge between persistent
> and ephemeral is being executed, with priority for values coming from
> ephemeral data store.
>
>  Makes sense?
>
>
>   Describe the solution
> in detail.  Provide all YANG and all protocol operations that would be
> used
>
>
>
>
>>  Thx
>>
>>  Dean
>>
>>
>  Andy
>
>
>
>>    Operational state is always read-only.
>>
>>
>>
>>  Thanks,
>>>  Phil
>>>
>>
>>
>>  Andy
>>
>>
>>>
>>> _______________________________________________
>>> netmod mailing list
>>> netmod@ietf.org
>>> https://www.ietf.org/mailman/listinfo/netmod
>>>
>>
>>  _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>>
>>
>>
>
>

--047d7bfd0d8675e5a705193797f0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<div><br></div><div>You are not describing the procedur=
e very precisely, even for Junos,</div><div>let alone a standard.=C2=A0 You=
 are vaguely describing different</div><div>datastores, except the I2RS dat=
astore does not support multiple</div><div>layers.=C2=A0 If client A data g=
ets deleted because of higher priority</div><div>client B, then that client=
 A data does not come back automatically</div><div>if client B data is dele=
ted. (So there cannot be multiple ephemeral</div><div>instances in the I2RS=
 standard).</div><div><br></div><div>If the 1 &#39;admin-temp&#39; config=
=3Dtrue leaf is</div><div>used for both configuration and ephemeral,</div><=
div>and the only difference is what operation is used to edit the data,</di=
v><div>then the server has to keep track of each.=C2=A0 The retrieval opera=
tions</div><div>have to keep each type of data separate.=C2=A0 Whether that=
</div><div>is a tag or a datastore, the implementation is basically the sam=
e.</div><div><br></div><div>The difference is that YANG has specific valida=
tion rules about</div><div>what is in the running datastore.=C2=A0 This can=
not change in NETCONF.</div><div>Unless YANG validation is ignored by I2RS,=
 new text will be needed</div><div>to say how this is handled.=C2=A0 Is the=
re any concept of datastore validation in I2RS?</div><div>Any YANG validati=
on procedures specified at all?</div><div><br></div><div>Unless I2RS can ex=
plain why the NETCONF architecture and its</div><div>use of datastores is i=
nappropriate, I see no reason to change it.</div><div><br></div><div class=
=3D"gmail_extra"><br></div><div class=3D"gmail_extra">Andy</div><div class=
=3D"gmail_extra"><br></div><div class=3D"gmail_extra"><br><div class=3D"gma=
il_quote">On Tue, Jun 23, 2015 at 3:17 PM, Dean Bogdanovic <span dir=3D"ltr=
">&lt;<a href=3D"mailto:deanb@juniper.net" target=3D"_blank">deanb@juniper.=
net</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style=3D"word-wrap:break-word">
<br>
<div>
<div>On Jun 23, 2015, at 5:57 PM, Andy Bierman &lt;<a href=3D"mailto:andy@y=
umaworks.com" target=3D"_blank">andy@yumaworks.com</a>&gt; wrote:</div>
<br>
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">On Tue, Jun 23, 2015 at 2:15 PM, Dean Bogdanovic=
 <span dir=3D"ltr">
&lt;<a href=3D"mailto:deanb@juniper.net" target=3D"_blank">deanb@juniper.ne=
t</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<div style=3D"word-wrap:break-word"><br>
<div>
<div>On Jun 23, 2015, at 1:50 PM, Andy Bierman &lt;<a href=3D"mailto:andy@y=
umaworks.com" target=3D"_blank">andy@yumaworks.com</a>&gt; wrote:</div>
<br>
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<br>
<br>
Yup, and reality can change when you swap FRUs.<br>
<br>
&gt;&gt;=C2=A0 =C2=A0actual state + counters =3D&gt; operational state<br>
&gt;This should be:<br>
&gt;=C2=A0 actual state + statistics =3D&gt; operational state<br>
&gt;Statistics is largely dominated by counters but not only counters.<br>
<br>
Sound good.<br>
<br>
Precise language is so important, so I think well-defined terms<br>
matter.=C2=A0 Then again, one can be completely precise while being<br>
completely useless, like my current favorite word, sphygmomanometer.<br>
<br>
</blockquote>
<div><br>
</div>
<div>IMO getting the concepts right needs to be done first.</div>
<div>Picking the right terms helps if the concepts are right in the first p=
lace.</div>
<div><br>
</div>
<div>The thermometer example I have given many times needs to be understood=
.</div>
<div><br>
</div>
<div>Let&#39;s say the same leaf &quot;temperature&quot; is used in all dat=
astores.</div>
<div>The &quot;running&quot; temperature is the configured desired value.</=
div>
<div>The &quot;operational&quot; temperature is the current value read from=
 a sensor.</div>
<div><br>
</div>
<div>So where does &quot;ephemeral&quot; temperature fit in?=C2=A0 Does thi=
s setting override</div>
<div>the desired temperature and have no affect on the operational sensor v=
alue?</div>
<div>Or does it over-write the sensor value to the device is now lying</div=
>
<div>when it reports the operational temperature?</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Andy,</div>
<div><br>
</div>
<div>ephemeral &quot;temperature&quot; would overwrite which ever data stor=
e was read to set &quot;running&quot; temperature. If the &quot;temperature=
&quot; was read from &quot;startup&quot; config, then ephemeral would mask =
the &quot;temperature&quot; leaf in the startup and running would read from=
 ephemeral
 data store.</div>
<div>One of the issues I personally ran into while at Juniper was people pe=
rception that configuration is persistent. Ephemeral config was very confus=
ing to Juniper customers, as I was trying to explain them, that if they cha=
nge the ephemeral and device reboots,
 the configuration is gone. For many of them, it was running config, but it=
 is not. Another issue was no rollback. Actually, there is only rollback 0,=
 which is done automatically by the system, if the config commit is not suc=
cessful.</div>
<div><br>
</div>
<div><br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div><br>
</div>
<div>IMO it is quite obvious that ephemeral data is configuration, not stat=
e.</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
I would not say that ephemeral data is config. It is temporary state develo=
pers want to change the device state too.</div>
<div><br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>Here is a simple example.</div>
<div>I hope it is not too abstract.</div>
<div><br>
</div>
</div>
</div>
</div>
</blockquote>
No, it is not</div>
<div><br>
</div>
<div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>=C2=A0 =C2=A0leaf admin-temp {</div>
<div>=C2=A0 =C2=A0 =C2=A0 type uint32;</div>
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0units &quot;degrees Celsius&quot;;</div>
<div>=C2=A0 =C2=A0 =C2=A0 description &quot;The configured temperature.&quo=
t;;</div>
<div>=C2=A0 }</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>From YANG perspective, it would be exactly the same, in persistent con=
fig and ephemeral data store</div>
<div><br>
</div>
<div>the only difference is in NETCONF RPC</div>
<div><br>
</div>
<div>for persistent config</div>
<div>&lt;edit-configuration&gt;</div>
<div><br>
</div>
<div>and for ephemeral</div>
<div>&lt;edit-ephemeral-instance&gt;</div>
<div><br>
</div>
<div>As there can be multiple ephemeral instances.</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div><br>
</div>
<div>
<div>=C2=A0 =C2=A0leaf oper-temp {</div>
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0type uint32;</div>
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0units &quot;degrees Celsius&quot;;</div>
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0config false;</div>
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0description &quot;The measured temperature.=
&quot;;</div>
<div>=C2=A0 }</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div>Would your I2RS solution be able to over-ride the admin-temp</div>
<div>with a temporary ephemeral value?=C2=A0</div>
</div>
</div>
</div>
</blockquote>
<br>
<div>
<div>=C2=A0When commit is executed in ephemeral instance, merge between per=
sistent and ephemeral is being executed, with priority for values coming fr=
om ephemeral data store.</div>
<div><br>
</div>
<div>Makes sense?</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote"></div>
</div>
</div>
</blockquote>
</div>
<br>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>Describe the solution</div>
<div>in detail.=C2=A0 Provide all YANG and all protocol operations that=C2=
=A0would be used=C2=A0</div>
<div><br>
</div>
<div><br>
</div>
<div>=C2=A0 =C2=A0 =C2=A0<br>
</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<div style=3D"word-wrap:break-word">
<div></div>
<div>Thx</div>
<div><br>
</div>
<div>Dean</div>
<div><br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Andy</div>
<div><br>
</div>
<div>=C2=A0</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<div style=3D"word-wrap:break-word">
<div>
<blockquote type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>Operational state is always read-only.</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
Thanks,<br>
=C2=A0Phil<br>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>Andy</div>
<div>=C2=A0</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_blank">=
https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote>
</div>
<br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>

</blockquote></div><br></div></div>

--047d7bfd0d8675e5a705193797f0--


From nobody Tue Jun 23 17:50:19 2015
Return-Path: <kwatsen@juniper.net>
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 8D7D21B2FBB for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 17:50:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 xny3PX98arSK for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 17:50:15 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0135.outbound.protection.outlook.com [207.46.100.135]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A02881B2B72 for <netmod@ietf.org>; Tue, 23 Jun 2015 17:50:15 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) with Microsoft SMTP Server (TLS) id 15.1.195.15; Wed, 24 Jun 2015 00:50:14 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Wed, 24 Jun 2015 00:50:14 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
Thread-Topic: [netmod] follow-up from virtual interim and i2rs discussions
Thread-Index: AQHQrUn1tc8m8WdLR0WVXSPXt52vpp257EyAgACliAA=
Date: Wed, 24 Jun 2015 00:50:14 +0000
Message-ID: <D1AF710A.B3734%kwatsen@juniper.net>
References: <D1AE1DC8.B3290%kwatsen@juniper.net> <20150623105747.GA34924@elstar.local>
In-Reply-To: <20150623105747.GA34924@elstar.local>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: jacobs-university.de; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB458; 5:5v8GQvjDN3Ww6bJmu3/NbdZYs11P/wwzDjE+OXyq/TKXXLBSsUpqc3XLexwVuqq03xIqYATa3wbtfo6FhoBq9bGhvZ842YgNrCkFMtmXgjX7LonEDIw3xBfMEl+3N2ljTW5msLFIzNVfRNBxqEHyTA==; 24:+Uzoijn1ncbvZGlod7IRaQzV3Kco6uCen2Ja24qmFl3ljcrP+mGZ6F+/wicOkc2bDe5QLWszyKvEBH+81k6QiCNUzKis2EAAWXswiKo/Ru0=; 20:ZWob/PUD0a+qG82u/Zb0z0GgfT8aKPGnvPWHpvop903/iuOLCqo3uILwsgdPpI5fsml69Z60ZMeLOYtkimVgYQ==
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB458;
x-microsoft-antispam-prvs: <CO1PR05MB458EDA8D709D640DC90BFA6A5AF0@CO1PR05MB458.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB458; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB458; 
x-forefront-prvs: 061725F016
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(479174004)(377454003)(24454002)(46102003)(50986999)(76176999)(54356999)(4001350100001)(66066001)(36756003)(5002640100001)(86362001)(40100003)(106116001)(122556002)(2656002)(87936001)(19580405001)(19580395003)(189998001)(92566002)(5001960100002)(110136002)(99286002)(2950100001)(2900100001)(102836002)(83506001)(62966003)(15975445007)(77156002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB458; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="us-ascii"
Content-ID: <B7E5834E781DE5449CFDC33D904D0B87@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2015 00:50:14.2628 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB458
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/volz41U2OYZ6-okLnieAsr_FJE4>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 00:50:17 -0000

On 6/23/15, 6:57 AM, "Juergen Schoenwaelder"
<j.schoenwaelder@jacobs-university.de> wrote:
>Why is it hard to provide generic access to counters? Processing the
>data model easily gives you the query to retrieve all counters (but I
>am not sure this is operationally a good thing to do anyway; is
>blindly polling counters really how networks are managed?).

Processing the data model syntactically is easy.  Processing it
semantically is when it becomes hard.  For instance, how does a client
know what "in-unicast-pkts" is suppose to mean?



> Can someone explain using
>concrete examples what the RFC 7223 model is not supporting well or
>are we searching for terms to describe what the RFC 7223 model all got
>right?

Based on what the openconfig folks called out:

1. Operational state is not a complete superset of the configured state.
Though I'm sympathetic to the idea that some config values would never be
represented in operational:
https://tools.ietf.org/html/draft-bjorklund-netmod-operational-00#section-4
.1.

2. Operational state is split out at the top-level, not sprinkled within
each interface. =20

3. Data-model duplication.  The opstate nodes that are same as config
nodes are defined separately.

4. No protocol to just retrieve opstate without retrieving config.  OK,
this isn't true since subtree-filter could easily select the
"interfaces-state" subtree...



Kent




From nobody Tue Jun 23 18:11:11 2015
Return-Path: <phil@juniper.net>
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 BFC6F1B331F for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 18:11:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.003
X-Spam-Level: 
X-Spam-Status: No, score=-0.003 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 F5cqTA8KKO0a for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 18:11:08 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0110.outbound.protection.outlook.com [207.46.100.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 40AFB1B331D for <netmod@ietf.org>; Tue, 23 Jun 2015 18:11:08 -0700 (PDT)
Received: from CO2PR05CA041.namprd05.prod.outlook.com (10.141.241.169) by CO2PR05MB713.namprd05.prod.outlook.com (10.141.228.147) with Microsoft SMTP Server (TLS) id 15.1.195.15; Wed, 24 Jun 2015 01:11:06 +0000
Received: from BY2FFO11OLC003.protection.gbl (2a01:111:f400:7c0c::124) by CO2PR05CA041.outlook.office365.com (2a01:111:e400:1429::41) with Microsoft SMTP Server (TLS) id 15.1.195.15 via Frontend Transport; Wed, 24 Jun 2015 01:11:06 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.17) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.17 as permitted sender)
Received: from P-EMF03-SAC.jnpr.net (66.129.239.17) by BY2FFO11OLC003.mail.protection.outlook.com (10.1.15.183) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Wed, 24 Jun 2015 01:11:05 +0000
Received: from magenta.juniper.net (172.17.27.123) by P-EMF03-SAC.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.146.0; Tue, 23 Jun 2015 18:10:58 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5O1AvD45967;	Tue, 23 Jun 2015 18:10:57 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5O19GP1022330; Tue, 23 Jun 2015 21:09:16 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506240109.t5O19GP1022330@idle.juniper.net>
To: Andy Bierman <andy@yumaworks.com>
In-Reply-To: <CABCOCHR+O1016_YQyY5f7VYxdMaa1cOaDwWcS4ir8rR39M36kg@mail.gmail.com>
Date: Tue, 23 Jun 2015 21:09:16 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC003; 1:9jrQhY3xWjlWQljUJfyJBEcdJ3QUidYl/PzAxEdxqYdDnxL63wEGNnuTwO2hs4jNkob3S7SzYpMm1evLwIafuxzxpa38UAjpfe5yTWBRIP9VWf/2HpHatzp/oNjcXbTDsGM5CYtv4HVq2ugbmuuVwGPwT6CcrBVQIHUoZUnPrXw1fWAT7vsCL9tq4O+a91s9kcS3KT0aYhdK4FFxKUMzhW89+WuDSkb5x5MUkyqNssZCFq1zcJ2Umq7mnZGQNb/Hz//i0jOqofIUBx+we44S9uiEHHJpw9ot0VQAJ1+DiqnNLerNcob+7d2bbsnOi8YB
X-Forefront-Antispam-Report: CIP:66.129.239.17; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(189002)(199003)(164054003)(105596002)(5003600100002)(48376002)(86362001)(77156002)(106466001)(189998001)(62966003)(87936001)(50466002)(2950100001)(53416004)(47776003)(50986999)(5001960100002)(6806004)(77096005)(54356999)(110136002)(92566002)(46102003); DIR:OUT; SFP:1102; SCL:1; SRVR:CO2PR05MB713; H:P-EMF03-SAC.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; CO2PR05MB713; 2:vjQyNr5tmnfZmMCf+Ede/EMxPf11SdwhqUh/EhndeN1gLW/axe/3GB68ACF+UKfH; 3:b0UKzKmk5dXUHu0yo6uhT0ds9KM2IFMyYdPSRuUxYDwLqZIFEpyyXeyDD5v+gaqxeYhlhvq7EfVy/3OkPAFXq17F/HpsNbB7dXAJ86f8wuS2wdaHrlwGMt76o4Ao6ew9UbuxvdSsRLjUdEPWz+qh1w0J1S/MWSXxBM4fqcHpobgUrKUXnXxFSZBwzM6CXX1UL0Z8AfPGWxLP25Yh5FPvJJd/bOeWmkO5sbVAEbccOV8=; 20:ZPeQcsq02gKNTI/Bd3E4rbG1FjcGb1LqFNUG89VTjvyJ9ybpZUJB3DnvdpaUtHghSIJDajevcH+ZAE14v0fkMdkJXKwoH3t0NJdavaW9TyzJ2pUTSVjyxQ2ZOiKraxTQX+mTlacx+3EDALQp3uSxiyg27tBpvGbavFMjNFdeR8lsojkc2V2HnN9J7onKa8Rbd/3Q9fG8tM6ivE5cztOttkwbIVLJRqABev8ftj74BQxBAUpevdhrgEl9pB0m8CnYRe3b/K7caLP0nn9ArLdMpPXcjg5enO2OBeWel7mFNEUO2pHb6vrWZBci9qohFIxUz4QmTVvTFNN/N1/E/xvbNwkp5M/1wGKXs9723bwRKhHi/lGUefFKwKtG1NoUfe/jiBK/H3src3sF9xsaX+Gwo1IwWjUL9HVnV/W5DXtxysjZi/UFTV7tzaEeOlbzxodd7ro1ZMJpwsPYG6LwGBsbaZDiFeC/XqOMfgsFd8/yKw5v8NZVSyUFAJ7Pp6ECaijA
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO2PR05MB713;
X-Microsoft-Antispam-PRVS: <CO2PR05MB7139D4870F903D3CC59C06BC9AF0@CO2PR05MB713.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO2PR05MB713; BCL:0; PCL:0; RULEID:; SRVR:CO2PR05MB713; 
X-Microsoft-Exchange-Diagnostics: 1; CO2PR05MB713; 4:bsn2aQi6QXViiz40nlAZz+XbsM+nuKTqopo2XXJ9B+Vz99MC81aVGNkxL46xT7+rMRIa+igUqp8VpRXj9b7vYxkUxSj1JQdXksYAw5Ai/a9jl+O7ouJjn8Iv+wRkamu61kl7oBueyHgasNEbZjwyIxhH6IGloLD0ScFW5ZFxpdArOV8/rBB0wUHite2ScwmYxPb/Im9KBM/RevMZ+wnyyE9nFYi1u4at0q9jmOyBBJu3wnOngru+n1TRaEv8u6gi7oGWVBHTp4YZ2w4RT84pWiSdOw06jPD115Dv4gcehvQ=
X-Forefront-PRVS: 061725F016
X-Microsoft-Exchange-Diagnostics: 1; CO2PR05MB713; 23:F4og2Rsbq5uESWiYfsNziXhufDu7mpugz7kz/6rX3E+3YSolMglISXjnQey7WXw5vbtD2PohTifgqh4VmJsa9XsRplSTMgDG7sWsrE4jcQcjZUYU/zkEDPN6v/ERWA6/MVb1bqCQnftOH66B3rWXHrfpvARhNybWDoaa3MkWOFqJijhpIG7D0mJsVZHwgjBE4tw8FgzWRPvVnUgSggZZ2Yq/s162hYQSsNq+2/lB+YW67buE6QbpUPBiGM4I7ent8Yg5zL/sr+XLWv+qontowhMrC6SxsWjIwpceBIBrdhDzHWIGtyJHc6AE3BaaB040Vkrm2KR2MYQ5Tt1MhadnhRA9s1v/1FEeRHBVMjQ8yjixhQXIXBNuYOXhX45Fmr4C3FmGT2uQ+NRYiojzSSSWnEzM0A0RkNkyWWmO7wkAzDfGbvg2CDZyCmquwwu6ohpGEQINMqcqXxSz53pzzKFow/92D6WeV52n5NC2Voy7bjRMB6v4NwcTcq4gUOpRRdBIZsQ5jPMPmonfxX4skdc7wt1K2/6HTHkMlJFL9Kv+pvxOJqARzRbYea2YRBEytSgNSjHQ/FYmZguUqQiMiDIQjrd2xJscG5QdM0oeMeR6PDNuBTDTDJFd3dRPVcucP6s6VReee3iUaiywkxpkLM5X6JwKoD4xrUywkWlpYkFktK233XwLxec8PMGR+eaFrwbCZmKMRWaxXtflSFr5OXjWZwwDwdcqrT6NzGcED+6dDOI=; 5:+W/c/1XUm9hyy4SOzVonuLztm7RtNyzxT/K8ia4xJhLLnOgnfRdb/96Ulh029t8mDiy0cJT9Mtfv+JYfMUxW7HwEabDK6j/DpeGMhVpD6O68EKSnaoKaNemFsQPoIT9FM+VFk5DBuC4lCnbdVP567w==
X-Microsoft-Exchange-Diagnostics: 1; CO2PR05MB713; 24:Lv98NfiA8C8ynSR0MQ6CrIvic/8fcp1Rk0u0D7eODQtxMNaJYX4qY0rXUWjDZvCMjVZQHHMI8AOpXg63lW7OhZ7sB6OpNXtzl/5ciYqjYE4=; 20:K8viDKEqisQDp7Zr4/b5KZXiwxqFweh5XP464CsPTI5cowCLdUu4OXpjoogUfha0ZxtZgSFFAl4aSQrTic1e+A==
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2015 01:11:05.9705 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.17];  Helo=[P-EMF03-SAC.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR05MB713
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/zo4FeFZy6yXDiRDrfFXJKCWMKtA>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 01:11:09 -0000

Andy Bierman writes:
>The fact that a configured intended value came from the startup
>or from I2RS or from CLI does not really matter.  The fact that
>an I2RS value does not come back after a reboot does not
>really matter.

No, I think the nature of the data is more important than the source,
but if I have RIP handing me a default route every 30 seconds that
I will discard on reboot, and a custom app handing me a default
route every 30 seconds that I will discard on reboot, what makes
one "config" and the other not?  What makes "config" "config"?

Normally I'd say "persistence", but distinct-startup makes that,
well, odd.

Thanks,
 Phil


From nobody Tue Jun 23 18:50:45 2015
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 4DF621B3141 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 18:50:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 vX9Ef6XBdw8G for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 18:50:41 -0700 (PDT)
Received: from mail-la0-f47.google.com (mail-la0-f47.google.com [209.85.215.47]) (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 7CA331B3133 for <netmod@ietf.org>; Tue, 23 Jun 2015 18:50:41 -0700 (PDT)
Received: by lacny3 with SMTP id ny3so17202618lac.3 for <netmod@ietf.org>; Tue, 23 Jun 2015 18:50:40 -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=FTKOPJYfItLeCsr/RP3lFuSAAqTodY58lHASe3IwhYk=; b=E//eHxiiFId8OuSXUPSNodB2sHxgMfU/8ozMTCRA7u4ajNFIDl/Y33DW3zCyD4xn8G Lt7kTP8K5OZSHM/TaRC///Rg1ASAtSCYvkOLuZk419gTsSStO1bhKI7PhabnvDY4DoFw uJ51Q9VE1lKrSey2N6zUBkZoZEWGmb9ER05O9dlTzAxULuma09CYetf64Lh4l9Ve1rIN aS2GNLog3I0yJBNfyv2TB65W42qjEW7NmqKkcWpE+L9a6rzIk8RbRCelq9gM13dmtD3V OV5xzTVGHSozZyofZClOtmtLDlOl4ggn7Uvb0/xRaMRT8axz0UVPlCsHkxMYQ6aYhnhf Qbgg==
X-Gm-Message-State: ALoCoQkXnyfDHliT2WtntkuXtIpl7t70LGdRdt/Q7mbTYrF4mA2W3tAz+EkEyLPPAfoAi/M+bCZn
MIME-Version: 1.0
X-Received: by 10.112.124.71 with SMTP id mg7mr37688926lbb.38.1435110639944; Tue, 23 Jun 2015 18:50:39 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 23 Jun 2015 18:50:39 -0700 (PDT)
In-Reply-To: <201506240109.t5O19GP1022330@idle.juniper.net>
References: <CABCOCHR+O1016_YQyY5f7VYxdMaa1cOaDwWcS4ir8rR39M36kg@mail.gmail.com> <201506240109.t5O19GP1022330@idle.juniper.net>
Date: Tue, 23 Jun 2015 18:50:39 -0700
Message-ID: <CABCOCHQCzuPgLc3bs9PdQatLZXSjrj248iYLj9r5KGYiVSKkFA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Phil Shafer <phil@juniper.net>
Content-Type: multipart/alternative; boundary=047d7bfd0d86e85e1d051939bb2c
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/b57ycYP5lUmD5MKUMOZL-9B8oWQ>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 01:50:43 -0000

--047d7bfd0d86e85e1d051939bb2c
Content-Type: text/plain; charset=UTF-8

On Tue, Jun 23, 2015 at 6:09 PM, Phil Shafer <phil@juniper.net> wrote:

> Andy Bierman writes:
> >The fact that a configured intended value came from the startup
> >or from I2RS or from CLI does not really matter.  The fact that
> >an I2RS value does not come back after a reboot does not
> >really matter.
>
> No, I think the nature of the data is more important than the source,
> but if I have RIP handing me a default route every 30 seconds that
> I will discard on reboot, and a custom app handing me a default
> route every 30 seconds that I will discard on reboot, what makes
> one "config" and the other not?  What makes "config" "config"?
>
> Normally I'd say "persistence", but distinct-startup makes that,
> well, odd.
>
>

Persistence is an operator choice, according to the outcome
of the NETMOD interim meeting in NYC.

IMO config is the set of instructions from the administrator to
the device, describing the intended device behavior.
The administrator decision to enable RIP is config.

Ephemeral config could be no different than protocol-learned
values.  One could consider I2RS an unspecified, open-ended
routing protocol. Debugging broken I2RS deployments should
be great fun.










> Thanks,
>  Phil
>


Andy

--047d7bfd0d86e85e1d051939bb2c
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Tue, Jun 23, 2015 at 6:09 PM, Phil Shafer <span dir=3D"ltr">&lt;<a h=
ref=3D"mailto:phil@juniper.net" target=3D"_blank">phil@juniper.net</a>&gt;<=
/span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-l=
eft-style:solid;padding-left:1ex">Andy Bierman writes:<br>
&gt;The fact that a configured intended value came from the startup<br>
&gt;or from I2RS or from CLI does not really matter.=C2=A0 The fact that<br=
>
&gt;an I2RS value does not come back after a reboot does not<br>
&gt;really matter.<br>
<br>
No, I think the nature of the data is more important than the source,<br>
but if I have RIP handing me a default route every 30 seconds that<br>
I will discard on reboot, and a custom app handing me a default<br>
route every 30 seconds that I will discard on reboot, what makes<br>
one &quot;config&quot; and the other not?=C2=A0 What makes &quot;config&quo=
t; &quot;config&quot;?<br>
<br>
Normally I&#39;d say &quot;persistence&quot;, but distinct-startup makes th=
at,<br>
well, odd.<br>
<br></blockquote><div><br></div><div><br></div><div>Persistence is an opera=
tor choice, according to the outcome</div><div>of the NETMOD interim meetin=
g in NYC.</div><div><br></div><div>IMO config is the set of instructions fr=
om the administrator to</div><div>the device, describing the intended devic=
e behavior.</div><div>The administrator decision to enable RIP is config.</=
div><div><br></div><div>Ephemeral config could be no different than protoco=
l-learned</div><div>values.=C2=A0 One could consider I2RS an unspecified, o=
pen-ended</div><div>routing protocol. Debugging broken I2RS deployments sho=
uld</div><div>be great fun.</div><div><br></div><div><br></div><div><br></d=
iv><div><br></div><div><br></div><div><br></div><div><br></div><div><br></d=
iv><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0=
px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);borde=
r-left-style:solid;padding-left:1ex">
Thanks,<br>
=C2=A0Phil<br>
</blockquote></div><br></div><div class=3D"gmail_extra"><br></div><div clas=
s=3D"gmail_extra">Andy</div><div class=3D"gmail_extra"><br></div></div>

--047d7bfd0d86e85e1d051939bb2c--


From nobody Tue Jun 23 19:12:45 2015
Return-Path: <phil@juniper.net>
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 800201B33A0 for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 19:12:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.502
X-Spam-Level: 
X-Spam-Status: No, score=-0.502 tagged_above=-999 required=5 tests=[BAYES_05=-0.5, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 wUGvKFHG6XGN for <netmod@ietfa.amsl.com>; Tue, 23 Jun 2015 19:12:43 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0714.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::714]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E23BF1B339B for <netmod@ietf.org>; Tue, 23 Jun 2015 19:12:42 -0700 (PDT)
Received: from BY1PR0501CA0030.namprd05.prod.outlook.com (10.162.139.40) by BLUPR05MB769.namprd05.prod.outlook.com (10.141.209.19) with Microsoft SMTP Server (TLS) id 15.1.195.15; Wed, 24 Jun 2015 02:12:24 +0000
Received: from BL2FFO11FD055.protection.gbl (2a01:111:f400:7c09::148) by BY1PR0501CA0030.outlook.office365.com (2a01:111:e400:4821::40) with Microsoft SMTP Server (TLS) id 15.1.195.15 via Frontend Transport; Wed, 24 Jun 2015 02:12:24 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.17) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.17 as permitted sender)
Received: from P-EMF03-SAC.jnpr.net (66.129.239.17) by BL2FFO11FD055.mail.protection.outlook.com (10.173.161.183) with Microsoft SMTP Server (TLS) id 15.1.190.9 via Frontend Transport; Wed, 24 Jun 2015 02:12:23 +0000
Received: from magenta.juniper.net (172.17.27.123) by P-EMF03-SAC.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.146.0; Tue, 23 Jun 2015 19:12:22 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5O2CKD74463;	Tue, 23 Jun 2015 19:12:20 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5O2AdBE022649; Tue, 23 Jun 2015 22:10:40 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506240210.t5O2AdBE022649@idle.juniper.net>
To: Andy Bierman <andy@yumaworks.com>
In-Reply-To: <CABCOCHQCzuPgLc3bs9PdQatLZXSjrj248iYLj9r5KGYiVSKkFA@mail.gmail.com>
Date: Tue, 23 Jun 2015 22:10:39 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD055; 1:LzfgjqbOH23zHJvgqDJbnfw7wkeuSM7dyA3JN9u8IomQtvlqz5LKWkknreHWqDiLhlPSxBggj7Rg5IJvvBYBBGnDi4899NxiNzkU05VZEJeMnRSD2BUuGHgu5xTNLKS/LDBh14b5Zr+ytSJM4o86/dERiTS1BYAj8e7U5PWP5jKKkgAyBwJhneVJdUKc+pYPBZjcJtiD1/MzIVpEY+W+Xe0FRYzB0Gi+zmdlB7H5k9ec4I5IZyF7uhhLyD9yAwP3g1hi9p/oNaDk2QqtfBkNGxo8Sel+pka8+9XWjLQeuos8CPpBbluRf37vljmLMu96
X-Forefront-Antispam-Report: CIP:66.129.239.17; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(199003)(189002)(164054003)(54356999)(189998001)(48376002)(77096005)(47776003)(2950100001)(50466002)(62966003)(106466001)(77156002)(50986999)(6806004)(46102003)(87936001)(86362001)(53416004)(105596002)(5003600100002)(92566002)(110136002)(5001960100002); DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR05MB769; H:P-EMF03-SAC.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB769; 2:2hyXfxF7jm3Wl4h1YaZkqU30VUDVBS3BAVVZe/QeE9kZxVnSno0QOsT3bTJYYsPd; 3:Xg2R9mUETOzMZBQDbjE5dY7KLgkVqyZPGHiO9nrRISKmcAdvonlRl4/Ud294Lr9v3aJRLyQ6DM33Geu6tgjVxg/3xYimUQ3kcIMFVNozYh5w/mEbhrHRPSRk1cMXXDZ6i5NFTZauusZZVe2QsiFHQEBpleXf2dy5fbA9dA8x3RdfB+etTT9HHO7XvMiLBtdU4TyqwGbmiUmTUo8szKrIdIsgD41bDGacW16hRZ28hUU=; 20:MctAkPRyDHgZMXgv5zVXHYiiAw+oITlfot8hMchJvHG0t0Pu1PgS1OazHhxbTlcbtWngXC9t9sL896P/B0LuTp0UDp6aN3utWMIb1YGU6p33tKYg2HpnfommjUu+j2M9jv55DrP2KSL5u6TI3SPq1fRgFxViSBD/3m4hmV4uXiatF4288ToiGdLXfIXFuXol8HNElauCLS/s8R/XHEt/L5sLlNTnFxsqRqYey9eFYzuE9VMWmuNXfeP6dNM2TpSjGnlZPQlrNCbg4rkEQ/kgCX5qAHUaQmqUzNkD7nxX2EfL6WMJFSdrZMOkiHgyOLfJObIIIEGtDp7XE5BlCO1zpBW6DeiABTCnT25zB3V/wjwdRg6U3I7aeWuy6yUtBIrZ25PlPT0YhEtBYD9oJykf73r/WUu1RxQctm5IxiZ1yOFXnsVZW+AQlEoYDoedWJjbLOP9CGwlinvzd+j2EoAZaxuV+S+p2Nf9kS17WtSS4vEuORqVvVuNenZCF4LUxJLg
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR05MB769;
X-Microsoft-Antispam-PRVS: <BLUPR05MB7696A22F25B8DFC83843E54C9AF0@BLUPR05MB769.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BLUPR05MB769; BCL:0; PCL:0; RULEID:; SRVR:BLUPR05MB769; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB769; 4:4oua/NoFnrP8e2NJMr0maJL3AVjrK8Pl0wUm5KU88T7+UkBRp8GYtrGLccsMCQaVrTMNU+UJeoQ32qp9uHzNW2M9N7t6BELpSXqzKR6zh17AUMK0fspxGU4s7PT1S5A3+DYy1ZPjsFYHKNPAsOowgqLB2TOAyhEKDMXUIPPvsafm//KOmhO07wilHeIsbmr2WqNnJSKEj9p5rf7bT5bH3JE12W/5M4ZOMO29XgTwNed09QUiigoXuMrAPSL0M6UWGR4iNj7YoQ8a8/TFfGXyaDGxTFr/G/fJBuYSmBLmjgQ=
X-Forefront-PRVS: 061725F016
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB769; 23:ejM8t/8KTynTQptN/eZG6ezuWBP18zBXFIAIx10YgXh3XnhDUEHmNU/gTI0cwudTxDv9rmAwkFH/8j8w/lLpcnHzYJaVRe6pL/YCZlIPHQNSgwpGZzUOIED56qi1h1QV9XEEkVa6MaVnUQYAJHUGOAZq1KwFpSDXfa66PdVek8h3fwFESs6vZjBFFRV/Oc9u+DtrYjDex1L+2sHwvH5zUSi0DPW/Yb27b3NwsVbkuc1LgbKH/I+oRro6lKmlAEptX3sE3m45bLahqb7kB3nN+9OrFoAaB3r7QA6VNtq1uXhjG60gnaSuon2XppBZf2DtFMP/O5X4zkfkvU/nPUmhJffNlIsy5LCW8OzdWOC3a6Njcm+lYL4+r3uOV0fZub27XDwYEskqxoevEepWEvROW9aFB/ODICeISF5zy3pcoq/2Edwyi3L22bmdc4vXEzLvMQzC7tYoPbWstvw+uQgfKylBA7w8sp0cPZ1Q/JWO/L0rg7+5CkL5qEna10PzXlu5PcAB3GmWSVfhblty0avkphXvb8I85rAo+VIh7RORyDhwLPWJ5crgVWLxqSevhCgVZfLTYPw4j5W4iuE8JOQU9qP5AXQSLKsoxyOPlM8pgRCLT0RUroBTuVFUUpAThlqOt143If/eqpcMvdQVXCMqpdWS8tCpmNk3dlHitewBLvfJqjUfM4qVAoO1gB8cN6XjQOAouBD/Lag0YoSxxKt6W4+C24CnM9lHKvrObENZbhU=; 5:CqIG9uwk+yzSlCJ6W11jDsxBvFLft5f8rTCyq3QzDPN0ZbEcapCpLC3CrgUFwCgbSDy/OYmSkRXtrpx3e5Wp0vjl08OKMlRnI2bDc1YgtnpMqZo6Xf1Qr83vXyjD4UpJ+JUKS09ZeKQG82WbvKq44g==
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB769; 24:/6alWiwDZGBeFg1O6QFyeMS2e9D/A8UNN5SxA5W9SSpc4rTjxCOS524f09HkvZ9Ru/kjvh7pa4WEMnhmRWRjQJRX7qGjNUOz9/OCsW3wLKM=; 20:7lM1uiiJxwHWCtveFwzRxLBpLtavlHrEuFa3DaEvhNw5nmqrpPb7CjCvHo6IhYUgWn/WMcCB96q9PMQCiI9jkA==
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2015 02:12:23.5785 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.17];  Helo=[P-EMF03-SAC.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR05MB769
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/elLuHM1hVF7e2bUsVyJBWU6-59k>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 02:12:44 -0000

Andy Bierman writes:
>Persistence is an operator choice, according to the outcome
>of the NETMOD interim meeting in NYC.
>IMO config is the set of instructions from the administrator to
>the device, describing the intended device behavior.

That's a reasonable definition.  "config" involves an administrator,
whether automated or carbon-based.

>The administrator decision to enable RIP is config.

Ditto for i2rs.

>Ephemeral config could be no different than protocol-learned
>values.  One could consider I2RS an unspecified, open-ended
>routing protocol.

Yup, exactly.  I2RS is just a way to learn data.

>Debugging broken I2RS deployments should
>be great fun.

Yup, and having sufficient logging will be critical to survival for
developers.

Thanks,
 Phil


From nobody Wed Jun 24 02:39:51 2015
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 9C8591B32D0 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 02:39:50 -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 JBH_IrCcO0Hu for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 02:39:49 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 6E2CC1B325E for <netmod@ietf.org>; Wed, 24 Jun 2015 02:39:49 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 50BDD1AE0483; Wed, 24 Jun 2015 11:39:48 +0200 (CEST)
Date: Wed, 24 Jun 2015 11:39:47 +0200 (CEST)
Message-Id: <20150624.113947.1467672797415636365.mbj@tail-f.com>
To: kwatsen@juniper.net
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <D1AF5744.B3655%kwatsen@juniper.net>
References: <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net> <CABCOCHR+O1016_YQyY5f7VYxdMaa1cOaDwWcS4ir8rR39M36kg@mail.gmail.com> <D1AF5744.B3655%kwatsen@juniper.net>
X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=utf-8
Content-Transfer-Encoding: base64
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/fjaBpCMl3baXQaKS4B9AJOYjeDg>
Cc: netmod@ietf.org
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 09:39:50 -0000

S2VudCBXYXRzZW4gPGt3YXRzZW5AanVuaXBlci5uZXQ+IHdyb3RlOg0KPiANCj4gW0FzIGFuIGlu
ZGl2aWR1YWwgY29udHJpYnV0b3JdDQo+IA0KPiBJIHRoaW5rIHRlcm1pbm9sb2d5IGlzIG1vc3Rs
eSBjb252ZXJnaW5nLCB3aXRoIHRoZSBwcmltYXJ5IGhhbmd1cA0KPiBiZWluZyBpZiBlcGhlbWVy
YWwvaW50ZW5kZWQgYXJlICJjb25maWd1cmF0aW9uIiBvciAic3RhdGUiLiAgSSdtDQo+IHBlcnNv
bmFsbHkgaW4gZmF2b3Igb2YgY2FsbGluZyBib3RoICJjb25maWd1cmF0aW9uIiwgYXMgdGhleSB3
b3VsZA0KPiBzdGlsbCBjb250YWluIHZhbHVlcyBsaWtlICJhdXRvIiwgdGhhdCByZXF1aXJlIGFj
dHVhbGl6YXRpb24gdG8gb2J0YWluDQo+IGFuIG9wZXJhdGlvbmFsIHN0YXRlIHZhbHVlLi4uc28g
SSB0aGluaywgaWYgaXQncyBub3Qgc3RhdGUsIGl0IG11c3QgYmUNCj4gY29uZmlnLCByaWdodD8g
IEFkZGluZyB0byB0aGlzLCB3ZSBoYXZlIGEgZ2VuZXJhbCB1bmRlcnN0YW5kaW5nIHRoYXQNCj4g
YW55dGhpbmcgdGhhdCBjYW4gYmUgY29uZmlndXJlZCBwZXJzaXN0ZW50bHkgY2FuIGFsc28gKGlu
IHRoZW9yeSkgYmUNCj4gY29uZmlndXJlZCBlcGhlbWVyYWxseSDigJMgc28gaXQgYmVoYXZlcyBs
aWtlIGNvbmZpZyBpbiB0aGlzIHdheSB0b28uLi4NCj4gDQo+IE1vcmUgaW1wb3J0YW50bHkgdGhv
dWdoLCBJIGJlbGlldmUgdGhhdCB3ZSdyZSBjb252ZXJnaW5nIG9uIGENCj4gY29uY2VwdHVhbCBt
b2RlbCBhbmQgaGF2ZSBnZW5lcmFsIGFncmVlbWVudCB0aGF0ICJydW5uaW5nICsgZXBoZW1lcmFs
DQo+ID0gaW50ZW5kZWQiIGFuZCAiaW50ZW5kZWQgKyA8YWN0dWFsaXphdGlvbj4gPSBvcGVyYXRp
b25hbCBzdGF0ZSIuDQo+IFRoaXMgc2VlbXMgb2J2aW91cyBpbiBoaW5kc2lnaHQsIGJ1dCBpdCB3
YXNuJ3QgdW50aWwgdGhlIE9wZW5Db25maWcNCj4gZm9sa3MgYnJvdWdodCB0aGUgImludGVuZGVk
IiB0ZXJtIHRoYXQgd2Ugd3JvdGUgaXQgZG93bi4NCg0KSSBkb24ndCB0aGluayB0aGlzIGNvdmVy
cyB3aGF0IHRoZSBvcGVuIGNvbmZpZyBwZW9wbGUgY2FsbCAiYWN0dWFsDQpjb25maWciLiAgIFN1
cHBvc2Ugd2UgaGF2ZSAoaWdub3JpbmcgZXBoZW1lcmFsIGZvciBzaW1wbGljaXRseSk6DQoNCiAg
ICAgICBydW5uaW5nICAgICAgICBvcGVyYXRpb25hbCBzdGF0ZQ0KICAgICAgIC0tLS0tLS0gICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tDQogIHQwICAgIGhhbGYgICAgICAgICAgICAgIGhhbGYNCiAg
dDEgICAgYXV0byAgICAgICAgICAgICAgaGFsZg0KICB0NCAgICBhdXRvICAgICAgICAgICAgICBm
dWxsDQoNCkkuZS4sIGF0IHRpbWUgdDEsIHdlIHNldCBkdXBsZXggdG8gYXV0by4gIEFmdGVyIHNv
bWUgdGltZSAodDQpIHRoaXMgaXMNCnJlZmxlY3RlZCBpbiB0aGUgb3BlcmF0aW9uYWwgc3RhdGUu
DQoNCg0KSW4gdGhlIG9wZW4gY29uZmlnIG1vZGVsIHdlJ2QgaGF2ZToNCg0KICAgICAgIHJ1bm5p
bmcgICAgICBhY3R1YWwgY29uZmlnICAgIG9wZXJhdGlvbmFsIHN0YXRlDQogICAgICAgLS0tLS0t
LSAgICAgIC0tLS0tLS0tLS0tLS0gICAgLS0tLS0tLS0tLS0tLS0tLS0NCiAgdDAgICAgaGFsZiAg
ICAgICAgICAgIGhhbGYgICAgICAgICAgICAgaGFsZg0KICB0MSAgICBhdXRvICAgICAgICAgICAg
aGFsZiAgICAgICAgICAgICBoYWxmDQogIHQyICAgIGF1dG8gICAgICAgICAgICBoYWxmICgqKSAg
ICAgICAgIGhhbGYNCiAgdDMgICAgYXV0byAgICAgICAgICAgIGF1dG8gICAgICAgICAgICAgaGFs
Zg0KICB0NCAgICBhdXRvICAgICAgICAgICAgYXV0byAgICAgICAgICAgICBhdXRvDQoNClRoaXMg
aWxsdXN0cmF0ZXMgdGhhdCBhdCB0aW1lIHQyLCB0aGUgYWN0dWFsIGNvbmZpZyBpcyBzdGlsbCBo
YWxmICgqKQ0KaW4gYW4gYXN5bmNocm91bm91cyBpbXBsZW1lbnRhdGlvbi4gIEF0IHRpbWUgdDMs
IHRoZSBhY3R1YWwgY29uZmlnIGlzDQppbiBzeW5jIHdpdGggdGhlIGludGVuZGVkIGNvbmZpZywg
YW5kIGF0IHRpbWUgdDQgdGhlIG9wZXJhdGlvbmFsIHN0YXRlDQpoYXMgYmVlbiBhZmZlY3RlZC4N
Cg0KDQo+IEkgaG9wZSB3ZSBjYW4gY29udmVyZ2Ugb24gdGhlIHRlcm1pbm9sb2d5IGFuZCBjb25j
ZXB0dWFsIG1vZGVsIGluIHRoZQ0KPiBuZWFyIHRlcm0sIGFuZCB0aGVuIHVzZSB0aGlzIG5ldyBm
b3VuZGF0aW9uIGZvciBhcnRpY3VsYXRpbmcgSTJSUyBhbmQNCj4gT3BlbkNvbmZpZyBzb2x1dGlv
bnMuDQoNCisxICBUaGlzIHNob3VsZCBiZSBvdXIgZm9jdXMuDQoNCg0KL21hcnRpbg0K


From nobody Wed Jun 24 03:17:02 2015
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 E72551A0108 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 03:16:59 -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 B19qInZjTW-J for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 03:16:59 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 9F97B1A010C for <netmod@ietf.org>; Wed, 24 Jun 2015 03:16:56 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 887C51AE0483 for <netmod@ietf.org>; Wed, 24 Jun 2015 12:16:55 +0200 (CEST)
Date: Wed, 24 Jun 2015 12:16:55 +0200 (CEST)
Message-Id: <20150624.121655.768495259505238309.mbj@tail-f.com>
To: netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/Yals7ItwE1h0oyp_AGBsTEA8nSk>
Subject: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 10:17:00 -0000

Hi,

Currently we have an inconsistency in
draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty in
unions.  But section 7.8.2 says:

   A leaf that is part of the key can be of any built-in or derived
   type, except it MUST NOT be the built-in type "empty".

This means that this is legal:

  typedef my-empty {
    type union {
      type empty;
    }
  }

  list foo {
    key id;
    leaf id {
      type my-empty;
    }
    ...
  }


I suggest we allow type empty also in keys:

NEW:

   A leaf that is part of the key can be of any built-in or derived
   type.


/martin


From nobody Wed Jun 24 06:24:31 2015
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 5DE461A9080 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 06:24:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 qs_r9T-tuxgi for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 06:24:28 -0700 (PDT)
Received: from mail-la0-f44.google.com (mail-la0-f44.google.com [209.85.215.44]) (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 824C01A907D for <netmod@ietf.org>; Wed, 24 Jun 2015 06:24:27 -0700 (PDT)
Received: by lagx9 with SMTP id x9so25971874lag.1 for <netmod@ietf.org>; Wed, 24 Jun 2015 06:24:26 -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:date:message-id:subject:from:to :content-type; bh=te/FZr1CbwgQFvW6Q6bD1OVj0diKMH9RugGcReOVQnU=; b=lAUQPlTSOWo+vQPtIScph1LRx87CFWfqXatmydGS5lK9VyU4HtF17H9jzVPwzn1yIE 2mC1YK6ZZTw/riCxrTxjAAZ25sc291qwAC44QMX96TiyEDlHRx78uKuazwHqkIDpSxJ+ I/X2BUQWYXe1a2e0BGSk1/MtILvBmafeq6R14P1g+RD8plDSiZxcvUcn6+bADrUdXAEq JhjIROcliMkVbGSmyNzBYlj/FHx6/cfBxgASSgo8L1a+0+KlzU3J+qGABkMsajTgx8Qi LXOYTGBcNMOEOdEj7WclCkDvyYoZ0QKCbwEcWte5EMngvOv2lm4n60i82iUhat8bPuL8 RrBw==
X-Gm-Message-State: ALoCoQn6PY+EDwMUGJDR3NSW0zAKVLJqz43nU1zl8On9IRKm9f7zPRyN9c/NOglnf0DvAz1bi5R3
MIME-Version: 1.0
X-Received: by 10.152.7.65 with SMTP id h1mr6656233laa.33.1435152265962; Wed, 24 Jun 2015 06:24:25 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 24 Jun 2015 06:24:25 -0700 (PDT)
Date: Wed, 24 Jun 2015 06:24:25 -0700
Message-ID: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: "netmod@ietf.org" <netmod@ietf.org>, "i2rs@ietf.org" <i2rs@ietf.org>
Content-Type: multipart/mixed; boundary=001a11c27cf0031b750519436d7a
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/wlBHET85T74JHLkent8ZRtJ5mC4>
Subject: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 13:24:30 -0000

--001a11c27cf0031b750519436d7a
Content-Type: multipart/alternative; boundary=001a11c27cf0031b6f0519436d78

--001a11c27cf0031b6f0519436d78
Content-Type: text/plain; charset=UTF-8

Hi,

I prepared 1 slide (based on Kent's slide).
I am trying to understand the types of data
and how they are identified in YANG and conceptually
separated for protocol access.



Andy

--001a11c27cf0031b6f0519436d78
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<div><br></div><div>I prepared 1 slide (based on Kent&#=
39;s slide).</div><div>I am trying to understand the types of data</div><di=
v>and how they are identified in YANG and conceptually</div><div>separated =
for protocol access.</div><div><br></div><div><br></div><div><br></div><div=
>Andy</div><div><br></div></div>

--001a11c27cf0031b6f0519436d78--
--001a11c27cf0031b750519436d7a
Content-Type: application/pdf; name="extended_datastores.pdf"
Content-Disposition: attachment; filename="extended_datastores.pdf"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ibasjxlw0

JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURl
Y29kZT4+CnN0cmVhbQp4nL1YSW9cNwy+v1+hcwA/i6JWwBjAyyRAbq4H6CHoyW0SBDMt6h7y98tF
741m3uKlRmHYQ46oTyRFUqRtD+Zn97ex5sL2zqSCfTShBKKf/uh+/WD+7MDwz9O3zvKCOXQslITe
G6Vl734AYUJXv3dfPwg4/xDCza7DQvLe0rG7383lR4L2Zvf1ysJm96Pb7rr7iXzow2s2QAHSIdjY
o+5wxvOOL7zlAq6ss7i5cFfW27AhNhIRbbLZlrpQ+OtrkUV7Y29J4Hrz2+6znmZ775MNxvbRYXD0
mQFS5NMxht6TrrREbgrBj9zeeFLLGwyJ/u4NWtdyzb59973T1QGn5diliqt7DydcdTjdgcXCmmEh
y1hTj4Dml0/iqp/0+5lu9Me76ftQL6FBXrVgKr9u08NL3I4ej1uJHkxwpfR5NGHkxj18QDVPEI70
0dm663DCvc3Z/0XLJTfP6b3k4iVLHqaJlzxlEDqgS6t5BFnzyG/ilb2zWyU+Un7cUtLEK7A2HRPl
DC7nvhhMSNl8BncLwDiB8pEwnA2AzKcX5ZwHR+nucpDIqVzIEjneYss5LgzOF+WoEI1rnUfbSion
mMQ1J7CrKupwYsPJquLKKYcT7rUB8/9bNg2adVtn5Fetfy6PAxj6jqPTW6FIxZQMJC0ELueRHmQZ
lr/XfQMlmUsYKn1o6Fdn7Rt1mrpmXsuZPF3UeyZHM1A6OSqs6TypbjRHh9Tkpy1Qcm0CLUmi2bKW
rj4gZb+LYZKu4CFYBAexAdZKkPQMhU/8hA4rtxBFlcTPLWd5JIBA5FK1iEgPvov+5PArSEDPNJSl
XiFxCYTcPP26jzRrdzSXQhHoaRe/Uo5Kp9IO6bWKiV0rFKM+Ki3lcK80RJZw1J2AlHCIlXrsmm9Z
UpoRpThTFQuj1RBiOgSWIA0waL66Sj3OhRKfNGg90gthNyIdGnop9FKTvYEkc+Xqc+E5HAaaPfE4
cKC2VM5GkaPdljULkWWVfuya70UaSuZ2stKezhxQIaLYVblQRI61AvJXNqqv0nN+OrOn4RbsFz0V
73DCzadfkNfM2UQv21mSXFO4S3pEuNFcDGAp+eB2KeQVDHKi485yOXJrSr/Xx3yjtnQjydW8kUgR
J6UMQsz0CbZkBg+FL8fTE8BBkJyt9N7EFOk079Ql6qCRa3Zxk1dXK0rLsXME1amjj/Rrq+37aLoU
CEu6T+WXrZkGARnEAwrmSdG5lku7pWIJ9m4sQLqXTA8BqMZ5wJptHEVcUzjaHrrxCH4DvE21a0MZ
hjgR2AsySwGfz9wgV71OQSAuc2p0kDnK0R1IRhX65PdfgBrJuplHPk40UsBlJgbneWicTTWsvQiH
iTJm5Jp9fC11teK0nPRNilud3nKvDaL30nemlq5aMNMNrdo0DSVXJAYmoUT1JFAkBa0n8oZrSWjT
fwgrlDjwPXcaiLHXRwlPgwqpkkeDRWOPhgYZyiOdTj7CwFpYfoGJayTrTSCCOFEDC5EFvc262VuJ
SQ2sVrJuJjOLBLGrAz2OZQ7YMLe54CIn0/mFGJrkmywtC+VUkAG+2j2iWTstm0kbEv4EBauF+I6a
Dx4xYCvfIk8gR1++vDesE5c+F66wzcq5jDyJcQsjlNUGgmnIkqFKR5ZI3GmhlAEnD57S1ES0KyLP
vhXK5ornqNnxFY9+eV304GAuwzQp9GwjoecNFjTc2rypeIcTbj6gC0cUujC8j8e75n+r3MnFbnWG
lA9u7ixNg2Oryhdell5MRbdh5eYpb7TbhbsRFBC29RU9ufdZeB52JvPv8/Cex2O2yPN4LB2w7NAp
+fTE2REhZekYqbug2swdqZN2XGiqINx5Vc5KOFVausjAqagdFnc7buy8TlZkB5TC31Q6aW+qXAra
6VbOsZxoBUlnyFyp2cDSc9WWkV4ejBTp0NBLjy2rAaE/Lx6A7OEhnLL2XjqAaMHgtep9vimgMUVl
nokvKJMB6HjpXEfaYJIbX4dLfhKuU0AKH4baNuHDmbGOTE3y+RQ4QdY4Hf5Zc72srDga0A/j39HR
XlwmnpOiCqFxNURGDuuKAnfzb1f03qxW6Mvtp4dgvv1jLndP3tz9Ze67fwG9sasrCmVuZHN0cmVh
bQplbmRvYmoKCjMgMCBvYmoKMTU3MwplbmRvYmoKCjQgMCBvYmoKPDwvVHlwZS9YT2JqZWN0Ci9T
dWJ0eXBlL0Zvcm0KL0JCb3hbIDM5NyA4IDM5NyA1ODcuMSBdCi9Hcm91cDw8L1MvVHJhbnNwYXJl
bmN5L0NTL0RldmljZVJHQi9LIHRydWU+PgovTGVuZ3RoIDgKL0ZpbHRlci9GbGF0ZURlY29kZQo+
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
Wei9tO/S6UtiwyVivUQsMG+bD85H5zPzP5g3rbZeJGvgQ1Lx17kmx/uNs6H3Gt8NwSxpDs5OzWqz
4vTCjHdo1lIWmCVi6F2x0mGboTMNM5mZqZm3ZuZmLs9Ypl498arw6/Meh/W847zgONt79shZMfoS
sb7keEkIvhB9QThxilhPOU55Tonff97teL5jo+PZk3c55k5ePimw8PecXFsR2Pc9cuTpp54WMo9P
PX7icXHqsROPCacnL0wKuWCtI51yOVIdX3Xc0VgVMjeKIZO44GCevuHqmkB0n9exD432DDU4hjpq
Hbc1rgsZsVgDGlpFh9gi9opp8Snxgmi29Ac3OvrwMxe8HBSsvY5eTy+OcM4rdzsx0K7MrqldYleg
1tHZ0eSwdjg6PB1vdrzfcanDtK+DvIj/gdOBCwHRG6j1BLyBjc7Ahk57qLLx9pCt0RoSCIRII4Q8
1gWrYLXusx6xilZoAWGqkhjJNDlRGBxwubqnzQv4pm8J7tHIUa16gN29fUOa6agGoaE94QIh3448
dvw4tN3ZrW0dCGvROyPdWhyBl4EpBLY7C5XQFsnlVBe7iMuFcALv4JpAam+uSIKrpAZXjuRykMsR
F9NxiAzkXIxmDPMh6Lk3B+zGtC5uxVAuV7X338ZwJH8KZW5kc3RyZWFtCmVuZG9iagoKOCAwIG9i
agozMDgzCmVuZG9iagoKOSAwIG9iago8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0JB
QUFBQStMaWJlcmF0aW9uU2VyaWYKL0ZsYWdzIDQKL0ZvbnRCQm94Wy0xNzYgLTMwMyAxMDA1IDk4
MV0vSXRhbGljQW5nbGUgMAovQXNjZW50IDg5MQovRGVzY2VudCAtMjE2Ci9DYXBIZWlnaHQgOTgx
Ci9TdGVtViA4MAovRm9udEZpbGUyIDcgMCBSCj4+CmVuZG9iagoKMTAgMCBvYmoKPDwvTGVuZ3Ro
IDIyMS9GaWx0ZXIvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeJxdkEFPxCAQhe/8ijnuHjbQnpsmZs0m
Pegaqz+AwrSS2IFM6aH/3ilWTTxA8njvgzfoa/fYUcj6haPrMcMYyDMucWWHMOAUSFU1+ODyocru
ZpuUFrbfloxzR2NsGqVfxVsyb3B68HHAs9J39siBJji9X3vR/ZrSJ85IGYxqW/A4yj1PNj3bGXWh
Lp0XO+TtIshf4G1LCHXR1XcVFz0uyTpkSxOqxpgWmtutVUj+n3cQw+g+LEuykqQxtSnZ43Sn9rF+
2oBbmaVJmb1U2B8PhL/fk2LaqbK+AH1ZbXUKZW5kc3RyZWFtCmVuZG9iagoKMTEgMCBvYmoKPDwv
VHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUvQmFzZUZvbnQvQkFBQUFBK0xpYmVyYXRpb25TZXJp
ZgovRmlyc3RDaGFyIDAKL0xhc3RDaGFyIDEKL1dpZHRoc1szNjUgMjUwIF0KL0ZvbnREZXNjcmlw
dG9yIDkgMCBSCi9Ub1VuaWNvZGUgMTAgMCBSCj4+CmVuZG9iagoKMTIgMCBvYmoKPDwvTGVuZ3Ro
IDEzIDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoMSAxNTEyMD4+CnN0cmVhbQp4nN16C1RU
V7Lorn3O6e5D0/TpBpqfTZ+m+UkjjbQov4ajQNMEP42CAgYBoUH8AAIa0SRiYoyiCSTjNXFMRnMn
k4n52RoTzc1kwp2Xm0xmkokvk5l38zIzcu9ksl4mcfTmZvJuxgCv9ukGP/m8td59a721XkOfU7t2
7aratWvvqtow2L8tQCLJMOGI0r6lre/g1o3DhJC3CAFz+/ZB+XLV91MQniCEWjr7urZkuj/4CyHc
fxCiFbo2D3UeezZtNyF6HOI4sSHQ1hGVP+EmJOcEIhZuQETP1F1abP8ztlM3bBnccTSqZjO2v8L2
7Zt729s6739iiBDXDmwrW9p29BVq5nHYPo9tuadtSyD/M/ohtnG8TunrHRg8QrKmCSmIZ/19/YG+
het+XortAtTvN4gD/GGfSAQ1rE05XtBodWKEPtIQZZRM5uiYWEtcfEJi0hxrMvn//yO8JbxF7hD2
kFgypD5v+PBFJIbcRsj0p6x17Tm15v+uFrrQ6yx5hZwiJ27o2k/uxOczN+BeJf+FPK1Cx8h938H2
JfJUGDpMjpJ7v5VuI7kb+TyO8q99WhE7RB5GyefJj9FRUsCNUjeFez8gb34zK/gXeJM8SJ5EygfJ
OXweQ8/bRT8jD9KVpIf+N24PuYscwDkeh24yivSt5HFYS9YhNvRZRwKk9yamI2SM/IjsxF04+xH2
TP87MXz1Y9T8API5QrrJ1utGPAlfshdnQ92fIy+ouD0znVoft5G+SOnk97DxAOnCbxu8j3rexy0m
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
LWRJ4+DA4DYn+0AIIINO58AAg4C1nKE+FQLnAHYj2cDgADYGt5EB58AgDAzgRh5E/ACsQ3hggKEH
AEfgd8AZYo8ckPE6ZICPwRDrgQGkH8DxA/Hr0K//Fw69QUUKZW5kc3RyZWFtCmVuZG9iagoKMTMg
MCBvYmoKOTc4OQplbmRvYmoKCjE0IDAgb2JqCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5h
bWUvQ0FBQUFBK0xpYmVyYXRpb25TYW5zCi9GbGFncyA0Ci9Gb250QkJveFstMjAzIC0zMDMgMTA0
OSA5MTBdL0l0YWxpY0FuZ2xlIDAKL0FzY2VudCA5MDUKL0Rlc2NlbnQgLTIxMQovQ2FwSGVpZ2h0
IDkxMAovU3RlbVYgODAKL0ZvbnRGaWxlMiAxMiAwIFIKPj4KZW5kb2JqCgoxNSAwIG9iago8PC9M
ZW5ndGggMzU1L0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nF2Sy26DMBBF93yFl+kiwuaZ
SAgphSBl0YdK+wHEDClSMciQBX9fzwxtpS5Ax/ad4YixX1zKi+kX/9WOuoZFdL1pLczj3WoQV7j1
xlOBaHu9bCt666GZPN/V1uu8wHAx3Zhlnv/mzubFrmJ3ascrPHj+i23B9uYmdh9F7db1fZq+YACz
COnluWihc32emum5GcCnqv2ldcf9su5dyV/gfZ1ABLRWrKLHFuap0WAbcwMvkzIXWVXlHpj231ko
ueTa6c/GuqhyUSmjOHccEKcH5JA5Qo6IE8rEzGfkhJkyKXEgkQ/ck/aPnFHIJ+4ZIj/yfoVc8H6A
XDJTnzNnyKdiLh0ryVwgs3+Kbor9kyMy+ycpMvtH6KA2f3RQ7J8myOwfo7Ni/wC/q9g/oJ7sH6On
Yv+AfDZ/yrB/Qj3ZPyxpENsfx5HgnfkZtdB3a92Y6WLRfHGyvYHfuzeNE1bR8w0elrFzCmVuZHN0
cmVhbQplbmRvYmoKCjE2IDAgb2JqCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL0Jhc2VG
b250L0NBQUFBQStMaWJlcmF0aW9uU2FucwovRmlyc3RDaGFyIDAKL0xhc3RDaGFyIDMwCi9XaWR0
aHNbMzY1IDY2NiA1MDAgMjc3IDU1NiA1NTYgNTU2IDI3NyA3MjIgNTU2IDUwMCA1NTYgMzMzIDU1
NiA1NTYgODMzCjIyMiA1NTYgMjIyIDU1NiA2NjYgNTAwIDUwMCA2MTAgMzMzIDMzMyA3MjIgMzMz
IDUwMCAyNzcgNTgzIF0KL0ZvbnREZXNjcmlwdG9yIDE0IDAgUgovVG9Vbmljb2RlIDE1IDAgUgo+
PgplbmRvYmoKCjE3IDAgb2JqCjw8L0xlbmd0aCAxOCAwIFIvRmlsdGVyL0ZsYXRlRGVjb2RlL0xl
bmd0aDEgMTA4MjA+PgpzdHJlYW0KeJzleWtYW9eV6N7n6EhIPCQB4iXgHHEQIAQIJPMGc3jogA22
eDoCPyQZZMAPJJD8jBOTxBnb1NTOo45n0tjuTPpKk1g4doyb3Nid+dreO40du0mnnUlre1q3k96G
2ne+pOltYnHXPhIYu0nnfnfu990fV+Kcvfbaa6+99trrtVFwYrsXxaFJRCNhcJvH31df1YYQehsh
nDi4I8gd2HCjCuCbCFErN/mHtxXY3v89QrIihBTM8Nbdm3719fOHEYpdhpD2+IjXM8RUrLMhlAnz
UcUIILzhxxUIZcmgnzuyLbirPO6ZXugXQH9gq2/Qc932rBn6+6Ffus2zy5+hwECbdRb63Jhnm/fQ
lkeuQf89hGKG/L5A8KeocB6hvCoy7p/w+s9oPpmDvhMh+reAw/AlnzgA5aRP0TJGrohRqmLj4hPU
Gm1iUrIuBf3/82HeZt5GjzCPIR3aLb3v+8hqUDLaidD8h6R37x1+6P+uFDHSG6djI/oY/W7JwPfQ
u+i7KITeWUqN87GJnB5ORLfQR+gHX8QV+LG4QwJvoGvo++jcF9BR6Nv4LvoZTgc7Pw8QwTWg9/F6
kOclwG1H0/gzvBsb0CmskUbLgHcCscQ/41WP59FNkO5ZdBM9i1vQTSZAp8PAz6jvo6/Sj1GX0Y9A
5tXUNODm0U/R27gU21EAnUXfkBgEYL3ppRxphP4WHUdP3MMyr4bfZB6jXkfa+T+g19Gbkgb2oSnk
Xpx0B/8eHwWfTMcxeOFM31oYVLTRm6nXKeruM9B5Cg3D48H/DNTTdOMD23kp7AuPYAY9AxL8Eneh
I8Dl1fCF8ItoAzpN/QT1oX8HuVsYLf42QoK939nX29Pd1elYvaqjfeWKtlbR3tLc1Cg0LK+vq62p
rqqsKC8rtZQUFxXk5xlz+RwDm5as1agT4mNVyhiFnJHRFEZFdl50c6E8d0iWx7e1FZM+7wGEZwnC
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
dGlvblNhbnMtQm9sZAovRmxhZ3MgNAovRm9udEJCb3hbLTE4NCAtMzAzIDEwNjEgMTAzM10vSXRh
bGljQW5nbGUgMAovQXNjZW50IDkwNQovRGVzY2VudCAtMjExCi9DYXBIZWlnaHQgMTAzMwovU3Rl
bVYgODAKL0ZvbnRGaWxlMiAxNyAwIFIKPj4KZW5kb2JqCgoyMCAwIG9iago8PC9MZW5ndGggMzIz
L0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nF2STW6DMBCF95zCy3QRYTskJBJCSkmQWPRH
pT0AsYcUqRjLOAtuX48nbaUuQN/Y75nnGdKqOTVm8Omrm1QLnvWD0Q7m6eYUsAtcB5MIyfSg/L2K
bzV2NkmDt11mD2Nj+qkokvQt7M3eLWx11NMFHpL0xWlwg7my1UfVhrq9WfsFIxjPeFKWTEMfznnq
7HM3Qhpd60aH7cEv62D5E7wvFpiMtaAoatIw206B68wVkoLzkhV1XSZg9L89Kcly6dVn54JUBCnn
2aYMLCPvauQN8Rk5I94hb4kPyDviHDmPnG+R98QS+UAagXyk9Qz5kb4b9RWtc+QT6ffIZ+KoqYlP
gQUnrpApv0SvoPwZni8of4Z3EZR/i3cUlD+PfM+/iY26dwRbhjP9GQVTN+fCGOLgY/+x84OB33/D
ThZd8fkGhBeeoQplbmRzdHJlYW0KZW5kb2JqCgoyMSAwIG9iago8PC9UeXBlL0ZvbnQvU3VidHlw
ZS9UcnVlVHlwZS9CYXNlRm9udC9EQUFBQUErTGliZXJhdGlvblNhbnMtQm9sZAovRmlyc3RDaGFy
IDAKL0xhc3RDaGFyIDIyCi9XaWR0aHNbMzY1IDcyMiA2MTAgNjEwIDMzMyAyNzcgNjEwIDYxMCAz
ODkgNTU2IDMzMyA2NjYgNjEwIDYxMCA1NTYgODg5CjI3NyAyNzcgNzIyIDc3NyA2NjYgNTU2IDU1
NiBdCi9Gb250RGVzY3JpcHRvciAxOSAwIFIKL1RvVW5pY29kZSAyMCAwIFIKPj4KZW5kb2JqCgoy
MiAwIG9iago8PC9GMSAxMSAwIFIvRjIgMTYgMCBSL0YzIDIxIDAgUgo+PgplbmRvYmoKCjIzIDAg
b2JqCjw8L0ZvbnQgMjIgMCBSCi9YT2JqZWN0PDwvVHI0IDQgMCBSPj4KL0V4dEdTdGF0ZTw8L0VH
UzUgNSAwIFI+PgovUHJvY1NldFsvUERGL1RleHQvSW1hZ2VDL0ltYWdlSS9JbWFnZUJdCj4+CmVu
ZG9iagoKMSAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50IDYgMCBSL1Jlc291cmNlcyAyMyAwIFIv
TWVkaWFCb3hbMCAwIDc5NCA1OTVdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdC
L0kgdHJ1ZT4+L0NvbnRlbnRzIDIgMCBSPj4KZW5kb2JqCgoyNCAwIG9iago8PC9Db3VudCAxL0Zp
cnN0IDI1IDAgUi9MYXN0IDI1IDAgUgo+PgplbmRvYmoKCjI1IDAgb2JqCjw8L0NvdW50IDAvVGl0
bGU8RkVGRjAwNTMwMDZDMDA2OTAwNjQwMDY1MDAyMDAwMzE+Ci9EZXN0WzEgMCBSL1hZWiAwIDU5
NSAwXS9QYXJlbnQgMjQgMCBSPj4KZW5kb2JqCgo2IDAgb2JqCjw8L1R5cGUvUGFnZXMKL1Jlc291
cmNlcyAyMyAwIFIKL01lZGlhQm94WyAwIDAgNzk0IDU5NSBdCi9LaWRzWyAxIDAgUiBdCi9Db3Vu
dCAxPj4KZW5kb2JqCgoyNiAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgNiAwIFIKL09wZW5B
Y3Rpb25bMSAwIFIgL1hZWiBudWxsIG51bGwgMF0KL091dGxpbmVzIDI0IDAgUgo+PgplbmRvYmoK
CjI3IDAgb2JqCjw8L0NyZWF0b3I8RkVGRjAwNDkwMDZEMDA3MDAwNzIwMDY1MDA3MzAwNzM+Ci9Q
cm9kdWNlcjxGRUZGMDA0QzAwNjkwMDYyMDA3MjAwNjUwMDRGMDA2NjAwNjYwMDY5MDA2MzAwNjUw
MDIwMDAzNDAwMkUwMDMyPgovQ3JlYXRpb25EYXRlKEQ6MjAxNTA2MjQwNjE5MzItMDcnMDAnKT4+
CmVuZG9iagoKeHJlZgowIDI4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAyNDY4NyAwMDAwMCBu
IAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDE2NjMgMDAwMDAgbiAKMDAwMDAwMTY4NCAwMDAw
MCBuIAowMDAwMDAxODYwIDAwMDAwIG4gCjAwMDAwMjQ5OTUgMDAwMDAgbiAKMDAwMDAwMTkwMCAw
MDAwMCBuIAowMDAwMDA1MDY3IDAwMDAwIG4gCjAwMDAwMDUwODggMDAwMDAgbiAKMDAwMDAwNTI4
MyAwMDAwMCBuIAowMDAwMDA1NTc0IDAwMDAwIG4gCjAwMDAwMDU3MzkgMDAwMDAgbiAKMDAwMDAx
NTYxNSAwMDAwMCBuIAowMDAwMDE1NjM3IDAwMDAwIG4gCjAwMDAwMTU4MzMgMDAwMDAgbiAKMDAw
MDAxNjI1OCAwMDAwMCBuIAowMDAwMDE2NTQwIDAwMDAwIG4gCjAwMDAwMjM2MzYgMDAwMDAgbiAK
MDAwMDAyMzY1OCAwMDAwMCBuIAowMDAwMDIzODYxIDAwMDAwIG4gCjAwMDAwMjQyNTQgMDAwMDAg
biAKMDAwMDAyNDUwOSAwMDAwMCBuIAowMDAwMDI0NTYyIDAwMDAwIG4gCjAwMDAwMjQ4MzAgMDAw
MDAgbiAKMDAwMDAyNDg4NiAwMDAwMCBuIAowMDAwMDI1MDk0IDAwMDAwIG4gCjAwMDAwMjUxOTUg
MDAwMDAgbiAKdHJhaWxlcgo8PC9TaXplIDI4L1Jvb3QgMjYgMCBSCi9JbmZvIDI3IDAgUgovSUQg
WyA8MDM2MEJCMDA2NzI3MEZFQzI0M0FERTI0NzY0MDc3NzI+CjwwMzYwQkIwMDY3MjcwRkVDMjQz
QURFMjQ3NjQwNzc3Mj4gXQovRG9jQ2hlY2tzdW0gL0Q4REM4NTI5MDFDNjMxM0ExOEI2RjhGREUw
NUYxNTY1Cj4+CnN0YXJ0eHJlZgoyNTM3NAolJUVPRgo=
--001a11c27cf0031b750519436d7a--


From nobody Wed Jun 24 06:29:04 2015
Return-Path: <jmh@joelhalpern.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 2CE2D1A9087; Wed, 24 Jun 2015 06:29:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 wVKi6kAcDzdf; Wed, 24 Jun 2015 06:29:01 -0700 (PDT)
Received: from maila2.tigertech.net (maila2.tigertech.net [208.80.4.152]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 11C7C1A9085; Wed, 24 Jun 2015 06:29:01 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by maila2.tigertech.net (Postfix) with ESMTP id EA31D25132C; Wed, 24 Jun 2015 06:29:00 -0700 (PDT)
X-Virus-Scanned: Debian amavisd-new at maila2.tigertech.net
Received: from Joels-MacBook-Pro.local (unknown [209.5.235.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by maila2.tigertech.net (Postfix) with ESMTPSA id 806302510D3; Wed, 24 Jun 2015 06:29:00 -0700 (PDT)
To: Andy Bierman <andy@yumaworks.com>, "netmod@ietf.org" <netmod@ietf.org>, "i2rs@ietf.org" <i2rs@ietf.org>
References: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com>
From: "Joel M. Halpern" <jmh@joelhalpern.com>
Message-ID: <558AB091.6020000@joelhalpern.com>
Date: Wed, 24 Jun 2015 09:28:49 -0400
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:38.0) Gecko/20100101 Thunderbird/38.0.1
MIME-Version: 1.0
In-Reply-To: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com>
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/QyPirFk8bdrZzCOWcr-0SzpNK20>
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 13:29:02 -0000

The separations and effects shown there match my understanding.
Thank you,
Joel

On 6/24/15 9:24 AM, Andy Bierman wrote:
> Hi,
>
> I prepared 1 slide (based on Kent's slide).
> I am trying to understand the types of data
> and how they are identified in YANG and conceptually
> separated for protocol access.
>
>
>
> Andy
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>


From nobody Wed Jun 24 06:35:51 2015
Return-Path: <shares@ndzh.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 CBA221A90A6; Wed, 24 Jun 2015 06:35:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -99.054
X-Spam-Level: 
X-Spam-Status: No, score=-99.054 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DOS_OUTLOOK_TO_MX=2.845, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100] 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 wkaICTLuekHT; Wed, 24 Jun 2015 06:35:47 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6D72A1A01E7; Wed, 24 Jun 2015 06:35:47 -0700 (PDT)
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=174.124.187.115; 
From: "Susan Hares" <shares@ndzh.com>
To: "'Andy Bierman'" <andy@yumaworks.com>, <netmod@ietf.org>, <i2rs@ietf.org>
References: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com>
In-Reply-To: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com>
Date: Wed, 24 Jun 2015 09:35:45 -0400
Message-ID: <009201d0ae82$ad0a2890$071e79b0$@ndzh.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0093_01D0AE61.25FB95D0"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQI38j8X2xhzt+7kOgR7BWPTAddxT5ztILbw
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com 
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/cS6rOu6ahKhlMxquAM646zaobkY>
Subject: Re: [netmod] [i2rs] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 13:35:49 -0000

This is a multipart message in MIME format.

------=_NextPart_000_0093_01D0AE61.25FB95D0
Content-Type: text/plain;
	charset="utf-8"
Content-Transfer-Encoding: 7bit

Andy: 

 

I will post this slide for the i2RS meeting. 

 

Sue 

 

From: i2rs [mailto:i2rs-bounces@ietf.org] On Behalf Of Andy Bierman
Sent: Wednesday, June 24, 2015 9:24 AM
To: netmod@ietf.org; i2rs@ietf.org
Subject: [i2rs] extended datastores slide

 

Hi,

 

I prepared 1 slide (based on Kent's slide).

I am trying to understand the types of data

and how they are identified in YANG and conceptually

separated for protocol access.

 

 

 

Andy

 


------=_NextPart_000_0093_01D0AE61.25FB95D0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; charset=3Dutf-8"><meta =
name=3DGenerator content=3D"Microsoft Word 14 (filtered =
medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Andy: <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>I will post this slide for the i2RS meeting. <o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Sue <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span>=
</b><span style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'> =
i2rs [mailto:i2rs-bounces@ietf.org] <b>On Behalf Of </b>Andy =
Bierman<br><b>Sent:</b> Wednesday, June 24, 2015 9:24 AM<br><b>To:</b> =
netmod@ietf.org; i2rs@ietf.org<br><b>Subject:</b> [i2rs] extended =
datastores slide<o:p></o:p></span></p><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><div><p =
class=3DMsoNormal>Hi,<o:p></o:p></p><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=3DMsoNormal>I =
prepared 1 slide (based on Kent's slide).<o:p></o:p></p></div><div><p =
class=3DMsoNormal>I am trying to understand the types of =
data<o:p></o:p></p></div><div><p class=3DMsoNormal>and how they are =
identified in YANG and conceptually<o:p></o:p></p></div><div><p =
class=3DMsoNormal>separated for protocol =
access.<o:p></o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p =
class=3DMsoNormal>Andy<o:p></o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div></div></div></body></html>
------=_NextPart_000_0093_01D0AE61.25FB95D0--


From nobody Wed Jun 24 06:40:48 2015
Return-Path: <rwilton@cisco.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 0EAC91A9100 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 06:40:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level: 
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 mf6f30xjD5ev for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 06:40:45 -0700 (PDT)
Received: from aer-iport-3.cisco.com (aer-iport-3.cisco.com [173.38.203.53]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 214B21A90FA for <netmod@ietf.org>; Wed, 24 Jun 2015 06:40:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=2871; q=dns/txt; s=iport; t=1435153245; x=1436362845; h=message-id:date:from:mime-version:to:cc:subject: references:in-reply-to:content-transfer-encoding; bh=9LDBylRKKpOgwV8yUrCE2uv3QTCIElrQL3aet8/5jPs=; b=OdLW7sFX0yK7jfGNEVWJKGwvTsGBudm1lwMjyhuw8KzJnS9xDMRWDZ7S HJYxi0nmHq0MR/50aTqBUhzsfeTYYI2VZTf2r6ld1ecUaTOJMvP1J+nEe hR8vWdkqvpN3lLDXxw93ErrgZHb22OfaDgSZYuX51UJpXg7Gd7bfzgSkM k=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0DIBADXsYpV/xbLJq1bg2Vfgx67UAqFLkoCghQBAQEBAQGBC4QjAQEEAQEBIA8BBTYKARALDgoCAgUWCwICCQMCAQIBFTAGDQEFAgEBF4gUDbZolkABAQEBAQEBAQEBAQEBAQEBAQEBAQETBIEhiimFBgeCaIFDAQSHA4xONItRgTqGeyKMBYNcJoN7PTGCSAEBAQ
X-IronPort-AV: E=Sophos;i="5.13,671,1427760000"; d="scan'208";a="535730431"
Received: from aer-iport-nat.cisco.com (HELO aer-core-1.cisco.com) ([173.38.203.22]) by aer-iport-3.cisco.com with ESMTP; 24 Jun 2015 13:40:43 +0000
Received: from [10.63.23.119] (dhcp-ensft1-uk-vla370-10-63-23-119.cisco.com [10.63.23.119]) by aer-core-1.cisco.com (8.14.5/8.14.5) with ESMTP id t5ODegGX010204; Wed, 24 Jun 2015 13:40:43 GMT
Message-ID: <558AB359.5040609@cisco.com>
Date: Wed, 24 Jun 2015 14:40:41 +0100
From: Robert Wilton <rwilton@cisco.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: Martin Bjorklund <mbj@tail-f.com>
References: <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net> <CABCOCHR+O1016_YQyY5f7VYxdMaa1cOaDwWcS4ir8rR39M36kg@mail.gmail.com> <D1AF5744.B3655%kwatsen@juniper.net> <20150624.113947.1467672797415636365.mbj@tail-f.com>
In-Reply-To: <20150624.113947.1467672797415636365.mbj@tail-f.com>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/CVwZ3MB9sZfOJpFunzgU5lqaeis>
Cc: netmod@ietf.org
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 13:40:47 -0000

Hi Martin,

One quick clarification:

In your open config model example, should the operational state of the 
last line read 'full'?
I.e

        running      actual config    operational state
        -------      -------------    -----------------
   t4    auto            auto            *full*


Thanks,
Rob


On 24/06/2015 10:39, Martin Bjorklund wrote:
> Kent Watsen <kwatsen@juniper.net> wrote:
>> [As an individual contributor]
>>
>> I think terminology is mostly converging, with the primary hangup
>> being if ephemeral/intended are "configuration" or "state".  I'm
>> personally in favor of calling both "configuration", as they would
>> still contain values like "auto", that require actualization to obtain
>> an operational state value...so I think, if it's not state, it must be
>> config, right?  Adding to this, we have a general understanding that
>> anything that can be configured persistently can also (in theory) be
>> configured ephemerally â€“ so it behaves like config in this way too...
>>
>> More importantly though, I believe that we're converging on a
>> conceptual model and have general agreement that "running + ephemeral
>> = intended" and "intended + <actualization> = operational state".
>> This seems obvious in hindsight, but it wasn't until the OpenConfig
>> folks brought the "intended" term that we wrote it down.
> I don't think this covers what the open config people call "actual
> config".   Suppose we have (ignoring ephemeral for simplicitly):
>
>         running        operational state
>         -------        -----------------
>    t0    half              half
>    t1    auto              half
>    t4    auto              full
>
> I.e., at time t1, we set duplex to auto.  After some time (t4) this is
> reflected in the operational state.
>
>
> In the open config model we'd have:
>
>         running      actual config    operational state
>         -------      -------------    -----------------
>    t0    half            half             half
>    t1    auto            half             half
>    t2    auto            half (*)         half
>    t3    auto            auto             half
>    t4    auto            auto             auto
>
> This illustrates that at time t2, the actual config is still half (*)
> in an asynchrounous implementation.  At time t3, the actual config is
> in sync with the intended config, and at time t4 the operational state
> has been affected.
>
>
>> I hope we can converge on the terminology and conceptual model in the
>> near term, and then use this new foundation for articulating I2RS and
>> OpenConfig solutions.
> +1  This should be our focus.
>
>
> /martin
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


From nobody Wed Jun 24 06:52:46 2015
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 7EE5A1A9168 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 06:52:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.778
X-Spam-Level: 
X-Spam-Status: No, score=-0.778 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, RCVD_IN_DNSWL_LOW=-0.7, 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 pWK4zQDdAXtY for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 06:52:43 -0700 (PDT)
Received: from mail-la0-f43.google.com (mail-la0-f43.google.com [209.85.215.43]) (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 4492F1A9165 for <netmod@ietf.org>; Wed, 24 Jun 2015 06:52:40 -0700 (PDT)
Received: by lagi2 with SMTP id i2so26523254lag.2 for <netmod@ietf.org>; Wed, 24 Jun 2015 06:52:38 -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=CnJo6AhIOH3qXN+qMjW5p9aKPRLIOEzdJqDotUCjVqs=; b=jXmNnvI54XwwdyBV1k2SyZugw/8vFUGVToTynh1eGwvQTmfR5cDsYT5qPSJ3ph18ng XWK22c32j/7CHBi01Droo5+K+//23nyTpdSUnzgWUsupGwhkNWqbUVsuAYR3R6bVUp8V CqsIph2GiZ3V8H6zLnpuubCPlgylThJl4EX6mdVOJMD/5EM5J8MShq0KrZ7VqyG/u0Y3 aIjn6wns1m/EYhELAagJRwsaWcCuv2tGJWQcghcSP4dzvRr+iCWGcr5yBqzKvcGyjXXH X2Gt6judCSznVQQL82iyYs96v/hh7VvKcGOuGZLBxUB7bdpqwvgKzvh3AHkLiXOKXqt6 XBIA==
X-Gm-Message-State: ALoCoQlx/0TuPXTva03aq5zmFwJ96sjTMOe3PSzJQNE1PSvyWl+ES+OgOdmWE4DBiGAoFRMSGjOM
MIME-Version: 1.0
X-Received: by 10.112.147.233 with SMTP id tn9mr15439036lbb.119.1435153958723;  Wed, 24 Jun 2015 06:52:38 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 24 Jun 2015 06:52:38 -0700 (PDT)
In-Reply-To: <558AB091.6020000@joelhalpern.com>
References: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com> <558AB091.6020000@joelhalpern.com>
Date: Wed, 24 Jun 2015 06:52:38 -0700
Message-ID: <CABCOCHS4D9gKt7CiOBtj95n+V=BGefT6ZFVJ9vR=_AFL7TnbVw@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: "Joel M. Halpern" <jmh@joelhalpern.com>
Content-Type: multipart/alternative; boundary=047d7b3a8978e87b93051943d151
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/9EsUybeOpE7Nc3o6pHsBX8BwYjo>
Cc: "i2rs@ietf.org" <i2rs@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 13:52:44 -0000

--047d7b3a8978e87b93051943d151
Content-Type: text/plain; charset=UTF-8

Hi,

thanks.
A few details of the solution I am working on...

1) defaults are not used in the ephemeral datastore

The default-stmt is altered for the ephemeral datastore.
Default leafs are ignored (except for XPath evaluation).
Otherwise the schema default would always override the configuration.

2) XPath hierarchy is based on config-stmt.

  config=true context node -> can reference config=true
  config=ephemeral context node -> can reference true + ephemeral
  config=false context node -> can reference true, ephemeral, false

3) must/when evaluation applies only to the datastore indicated by
config-stmt
     config=true -> running
     config=ephemeral -> ephemeral
     config=false -> operational

4) panes of glass applied to data instances
    all running datastore instances are visible in the ephemeral datastore
    all ephemeral datastore instances are visible in the operational
datastore

5) admin-foo and oper-foo can go away

  The instance of 'admin-temp' in the operational datastore would return
  the value in effect, not the desired value, so 'oper-temp' is not needed
  and the correlation between config, ephemeral, and operational is
maintained
  in the common instance-identifier in all 3 datastores



Andy




On Wed, Jun 24, 2015 at 6:28 AM, Joel M. Halpern <jmh@joelhalpern.com>
wrote:

> The separations and effects shown there match my understanding.
> Thank you,
> Joel
>
> On 6/24/15 9:24 AM, Andy Bierman wrote:
>
>> Hi,
>>
>> I prepared 1 slide (based on Kent's slide).
>> I am trying to understand the types of data
>> and how they are identified in YANG and conceptually
>> separated for protocol access.
>>
>>
>>
>> Andy
>>
>>
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>>
>>

--047d7b3a8978e87b93051943d151
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<div><br></div><div>thanks.</div><div>A few details of =
the solution I am working on...</div><div><br></div><div>1) defaults are no=
t used in the ephemeral datastore</div><div><br></div><div>The default-stmt=
 is altered for the ephemeral datastore.</div><div>Default leafs are ignore=
d (except for XPath evaluation).</div><div>Otherwise the schema default wou=
ld always override the configuration.</div><div><br></div><div>2) XPath hie=
rarchy is based on config-stmt.</div><div><br></div><div>=C2=A0 config=3Dtr=
ue context node -&gt; can reference config=3Dtrue</div><div>=C2=A0 config=
=3Dephemeral context node -&gt; can reference true + ephemeral</div><div>=
=C2=A0 config=3Dfalse context node -&gt; can reference true, ephemeral, fal=
se</div><div><br></div><div>3) must/when evaluation applies only to the dat=
astore indicated by config-stmt</div><div>=C2=A0 =C2=A0 =C2=A0config=3Dtrue=
 -&gt; running</div><div>=C2=A0 =C2=A0 =C2=A0config=3Dephemeral -&gt; ephem=
eral</div><div>=C2=A0 =C2=A0 =C2=A0config=3Dfalse -&gt; operational</div><d=
iv><br></div><div>4) panes of glass applied to data instances</div><div>=C2=
=A0 =C2=A0 all running datastore instances are visible in the ephemeral dat=
astore</div><div>=C2=A0 =C2=A0 all ephemeral datastore instances are visibl=
e in the operational datastore</div><div><br></div><div>5) admin-foo and op=
er-foo can go away</div><div><br></div><div>=C2=A0 The instance of &#39;adm=
in-temp&#39; in the operational datastore would return</div><div>=C2=A0 the=
 value in effect, not the desired value, so &#39;oper-temp&#39; is not need=
ed</div><div>=C2=A0 and the correlation between config, ephemeral, and oper=
ational is maintained</div><div>=C2=A0 in the common instance-identifier in=
 all 3 datastores</div><div><br></div><div><br></div><div><br></div><div>An=
dy</div><div><br></div><div>=C2=A0 =C2=A0</div><div><br></div></div><div cl=
ass=3D"gmail_extra"><br><div class=3D"gmail_quote">On Wed, Jun 24, 2015 at =
6:28 AM, Joel M. Halpern <span dir=3D"ltr">&lt;<a href=3D"mailto:jmh@joelha=
lpern.com" target=3D"_blank">jmh@joelhalpern.com</a>&gt;</span> wrote:<br><=
blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px=
 #ccc solid;padding-left:1ex">The separations and effects shown there match=
 my understanding.<br>
Thank you,<br>
Joel<br>
<br>
On 6/24/15 9:24 AM, Andy Bierman wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I prepared 1 slide (based on Kent&#39;s slide).<br>
I am trying to understand the types of data<br>
and how they are identified in YANG and conceptually<br>
separated for protocol access.<br>
<br>
<br>
<br>
Andy<br>
<br>
<br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
<br>
</blockquote>
</blockquote></div><br></div>

--047d7b3a8978e87b93051943d151--


From nobody Wed Jun 24 07:10:46 2015
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 80D511A90B3 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 07:10:45 -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 B5crHfU7kKnY for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 07:10:43 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 8B12B1A8BC4 for <netmod@ietf.org>; Wed, 24 Jun 2015 07:10:43 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id DA46D1AE097B; Wed, 24 Jun 2015 16:10:41 +0200 (CEST)
Date: Wed, 24 Jun 2015 16:10:41 +0200 (CEST)
Message-Id: <20150624.161041.1187353431349075601.mbj@tail-f.com>
To: rwilton@cisco.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <558AB359.5040609@cisco.com>
References: <D1AF5744.B3655%kwatsen@juniper.net> <20150624.113947.1467672797415636365.mbj@tail-f.com> <558AB359.5040609@cisco.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=utf-8
Content-Transfer-Encoding: base64
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/j1EOSpTw5VgQL2KkgsuAr7or5JI>
Cc: netmod@ietf.org
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 14:10:45 -0000

Um9iZXJ0IFdpbHRvbiA8cndpbHRvbkBjaXNjby5jb20+IHdyb3RlOg0KPiBIaSBNYXJ0aW4sDQo+
IA0KPiBPbmUgcXVpY2sgY2xhcmlmaWNhdGlvbjoNCj4gDQo+IEluIHlvdXIgb3BlbiBjb25maWcg
bW9kZWwgZXhhbXBsZSwgc2hvdWxkIHRoZSBvcGVyYXRpb25hbCBzdGF0ZSBvZiB0aGUNCj4gbGFz
dCBsaW5lIHJlYWQgJ2Z1bGwnPw0KDQp5ZXMhDQoNCg0KPiBJLmUNCj4gDQo+ICAgICAgICBydW5u
aW5nICAgICAgYWN0dWFsIGNvbmZpZyAgICBvcGVyYXRpb25hbCBzdGF0ZQ0KPiAgICAgICAgLS0t
LS0tLSAgICAgIC0tLS0tLS0tLS0tLS0gICAgLS0tLS0tLS0tLS0tLS0tLS0NCj4gICB0NCAgICBh
dXRvICAgICAgICAgICAgYXV0byAgICAgICAgICAgICpmdWxsKg0KDQoNCkhlcmUncyB0aGUgdXBk
YXRlZCB0YWJsZToNCg0KICAgICAgIHJ1bm5pbmcgICAgICBhY3R1YWwgY29uZmlnICAgIG9wZXJh
dGlvbmFsIHN0YXRlDQogICAgICAgLS0tLS0tLSAgICAgIC0tLS0tLS0tLS0tLS0gICAgLS0tLS0t
LS0tLS0tLS0tLS0NCiAgdDAgICAgaGFsZiAgICAgICAgICAgIGhhbGYgICAgICAgICAgICAgaGFs
Zg0KICB0MSAgICBhdXRvICAgICAgICAgICAgaGFsZiAgICAgICAgICAgICBoYWxmDQogIHQyICAg
IGF1dG8gICAgICAgICAgICBoYWxmICgqKSAgICAgICAgIGhhbGYNCiAgdDMgICAgYXV0byAgICAg
ICAgICAgIGF1dG8gICAgICAgICAgICAgaGFsZg0KICB0NCAgICBhdXRvICAgICAgICAgICAgYXV0
byAgICAgICAgICAgICBmdWxsDQoNCg0KDQovbWFydGluDQoNCg0KPiANCj4gDQo+IFRoYW5rcywN
Cj4gUm9iDQo+IA0KPiANCj4gT24gMjQvMDYvMjAxNSAxMDozOSwgTWFydGluIEJqb3JrbHVuZCB3
cm90ZToNCj4gPiBLZW50IFdhdHNlbiA8a3dhdHNlbkBqdW5pcGVyLm5ldD4gd3JvdGU6DQo+ID4+
IFtBcyBhbiBpbmRpdmlkdWFsIGNvbnRyaWJ1dG9yXQ0KPiA+Pg0KPiA+PiBJIHRoaW5rIHRlcm1p
bm9sb2d5IGlzIG1vc3RseSBjb252ZXJnaW5nLCB3aXRoIHRoZSBwcmltYXJ5IGhhbmd1cA0KPiA+
PiBiZWluZyBpZiBlcGhlbWVyYWwvaW50ZW5kZWQgYXJlICJjb25maWd1cmF0aW9uIiBvciAic3Rh
dGUiLiAgSSdtDQo+ID4+IHBlcnNvbmFsbHkgaW4gZmF2b3Igb2YgY2FsbGluZyBib3RoICJjb25m
aWd1cmF0aW9uIiwgYXMgdGhleSB3b3VsZA0KPiA+PiBzdGlsbCBjb250YWluIHZhbHVlcyBsaWtl
ICJhdXRvIiwgdGhhdCByZXF1aXJlIGFjdHVhbGl6YXRpb24gdG8gb2J0YWluDQo+ID4+IGFuIG9w
ZXJhdGlvbmFsIHN0YXRlIHZhbHVlLi4uc28gSSB0aGluaywgaWYgaXQncyBub3Qgc3RhdGUsIGl0
IG11c3QgYmUNCj4gPj4gY29uZmlnLCByaWdodD8gIEFkZGluZyB0byB0aGlzLCB3ZSBoYXZlIGEg
Z2VuZXJhbCB1bmRlcnN0YW5kaW5nIHRoYXQNCj4gPj4gYW55dGhpbmcgdGhhdCBjYW4gYmUgY29u
ZmlndXJlZCBwZXJzaXN0ZW50bHkgY2FuIGFsc28gKGluIHRoZW9yeSkgYmUNCj4gPj4gY29uZmln
dXJlZCBlcGhlbWVyYWxseSDigJMgc28gaXQgYmVoYXZlcyBsaWtlIGNvbmZpZyBpbiB0aGlzIHdh
eSB0b28uLi4NCj4gPj4NCj4gPj4gTW9yZSBpbXBvcnRhbnRseSB0aG91Z2gsIEkgYmVsaWV2ZSB0
aGF0IHdlJ3JlIGNvbnZlcmdpbmcgb24gYQ0KPiA+PiBjb25jZXB0dWFsIG1vZGVsIGFuZCBoYXZl
IGdlbmVyYWwgYWdyZWVtZW50IHRoYXQgInJ1bm5pbmcgKyBlcGhlbWVyYWwNCj4gPj4gPSBpbnRl
bmRlZCIgYW5kICJpbnRlbmRlZCArIDxhY3R1YWxpemF0aW9uPiA9IG9wZXJhdGlvbmFsIHN0YXRl
Ii4NCj4gPj4gVGhpcyBzZWVtcyBvYnZpb3VzIGluIGhpbmRzaWdodCwgYnV0IGl0IHdhc24ndCB1
bnRpbCB0aGUgT3BlbkNvbmZpZw0KPiA+PiBmb2xrcyBicm91Z2h0IHRoZSAiaW50ZW5kZWQiIHRl
cm0gdGhhdCB3ZSB3cm90ZSBpdCBkb3duLg0KPiA+IEkgZG9uJ3QgdGhpbmsgdGhpcyBjb3ZlcnMg
d2hhdCB0aGUgb3BlbiBjb25maWcgcGVvcGxlIGNhbGwgImFjdHVhbA0KPiA+IGNvbmZpZyIuICAg
U3VwcG9zZSB3ZSBoYXZlIChpZ25vcmluZyBlcGhlbWVyYWwgZm9yIHNpbXBsaWNpdGx5KToNCj4g
Pg0KPiA+ICAgICAgICAgcnVubmluZyAgICAgICAgb3BlcmF0aW9uYWwgc3RhdGUNCj4gPiAgICAg
ICAgIC0tLS0tLS0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gICAgdDAgICAgaGFsZiAg
ICAgICAgICAgICAgaGFsZg0KPiA+ICAgIHQxICAgIGF1dG8gICAgICAgICAgICAgIGhhbGYNCj4g
PiAgICB0NCAgICBhdXRvICAgICAgICAgICAgICBmdWxsDQo+ID4NCj4gPiBJLmUuLCBhdCB0aW1l
IHQxLCB3ZSBzZXQgZHVwbGV4IHRvIGF1dG8uICBBZnRlciBzb21lIHRpbWUgKHQ0KSB0aGlzIGlz
DQo+ID4gcmVmbGVjdGVkIGluIHRoZSBvcGVyYXRpb25hbCBzdGF0ZS4NCj4gPg0KPiA+DQo+ID4g
SW4gdGhlIG9wZW4gY29uZmlnIG1vZGVsIHdlJ2QgaGF2ZToNCj4gPg0KPiA+ICAgICAgICAgcnVu
bmluZyAgICAgIGFjdHVhbCBjb25maWcgICAgb3BlcmF0aW9uYWwgc3RhdGUNCj4gPiAgICAgICAg
IC0tLS0tLS0gICAgICAtLS0tLS0tLS0tLS0tICAgIC0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gICAg
dDAgICAgaGFsZiAgICAgICAgICAgIGhhbGYgICAgICAgICAgICAgaGFsZg0KPiA+ICAgIHQxICAg
IGF1dG8gICAgICAgICAgICBoYWxmICAgICAgICAgICAgIGhhbGYNCj4gPiAgICB0MiAgICBhdXRv
ICAgICAgICAgICAgaGFsZiAoKikgICAgICAgICBoYWxmDQo+ID4gICAgdDMgICAgYXV0byAgICAg
ICAgICAgIGF1dG8gICAgICAgICAgICAgaGFsZg0KPiA+ICAgIHQ0ICAgIGF1dG8gICAgICAgICAg
ICBhdXRvICAgICAgICAgICAgIGF1dG8NCj4gPg0KPiA+IFRoaXMgaWxsdXN0cmF0ZXMgdGhhdCBh
dCB0aW1lIHQyLCB0aGUgYWN0dWFsIGNvbmZpZyBpcyBzdGlsbCBoYWxmICgqKQ0KPiA+IGluIGFu
IGFzeW5jaHJvdW5vdXMgaW1wbGVtZW50YXRpb24uICBBdCB0aW1lIHQzLCB0aGUgYWN0dWFsIGNv
bmZpZyBpcw0KPiA+IGluIHN5bmMgd2l0aCB0aGUgaW50ZW5kZWQgY29uZmlnLCBhbmQgYXQgdGlt
ZSB0NCB0aGUgb3BlcmF0aW9uYWwgc3RhdGUNCj4gPiBoYXMgYmVlbiBhZmZlY3RlZC4NCj4gPg0K
PiA+DQo+ID4+IEkgaG9wZSB3ZSBjYW4gY29udmVyZ2Ugb24gdGhlIHRlcm1pbm9sb2d5IGFuZCBj
b25jZXB0dWFsIG1vZGVsIGluIHRoZQ0KPiA+PiBuZWFyIHRlcm0sIGFuZCB0aGVuIHVzZSB0aGlz
IG5ldyBmb3VuZGF0aW9uIGZvciBhcnRpY3VsYXRpbmcgSTJSUyBhbmQNCj4gPj4gT3BlbkNvbmZp
ZyBzb2x1dGlvbnMuDQo+ID4gKzEgIFRoaXMgc2hvdWxkIGJlIG91ciBmb2N1cy4NCj4gPg0KPiA+
DQo+ID4gL21hcnRpbg0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fDQo+ID4gbmV0bW9kIG1haWxpbmcgbGlzdA0KPiA+IG5ldG1vZEBpZXRmLm9yZw0K
PiA+IGh0dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlzdGluZm8vbmV0bW9kDQo+IA0K


From nobody Wed Jun 24 07:24:01 2015
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 9BD9A1AC408; Wed, 24 Jun 2015 07:23:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.711
X-Spam-Level: 
X-Spam-Status: No, score=-0.711 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 iRnINnj213gm; Wed, 24 Jun 2015 07:23:57 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id AB6F91AC402; Wed, 24 Jun 2015 07:23:57 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 55AA91AE0483; Wed, 24 Jun 2015 16:23:56 +0200 (CEST)
Date: Wed, 24 Jun 2015 16:23:56 +0200 (CEST)
Message-Id: <20150624.162356.916556588650610315.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHS4D9gKt7CiOBtj95n+V=BGefT6ZFVJ9vR=_AFL7TnbVw@mail.gmail.com>
References: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com> <558AB091.6020000@joelhalpern.com> <CABCOCHS4D9gKt7CiOBtj95n+V=BGefT6ZFVJ9vR=_AFL7TnbVw@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/9uBrpH1tOdJZ1aT4Po8-ffPFOYY>
Cc: i2rs@ietf.org, netmod@ietf.org
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 14:23:58 -0000

Hi,

Andy Bierman <andy@yumaworks.com> wrote:
> Hi,
> 
> thanks.
> A few details of the solution I am working on...

I would (still!) use a new statement "i2rs:ephemeral true;" to mark
ephemeral nodes on config false nodes.  This can be done w/o changing
YANG.

> 1) defaults are not used in the ephemeral datastore
> 
> The default-stmt is altered for the ephemeral datastore.
> Default leafs are ignored (except for XPath evaluation).
> Otherwise the schema default would always override the configuration.

I see your point, but if I create a list instance entirely in the
ephemeral data store, I would assume defaults in that list instance to
be used.

I think the logic should be that if no value is set in the config or
ephemeral, then the default value is used.  The ephemeral value
overrides the configured value.

> 2) XPath hierarchy is based on config-stmt.
> 
>   config=true context node -> can reference config=true
>   config=ephemeral context node -> can reference true + ephemeral
>   config=false context node -> can reference true, ephemeral, false
> 
> 3) must/when evaluation applies only to the datastore indicated by
> config-stmt
>      config=true -> running
>      config=ephemeral -> ephemeral
>      config=false -> operational
> 
> 4) panes of glass applied to data instances
>     all running datastore instances are visible in the ephemeral datastore
>     all ephemeral datastore instances are visible in the operational
> datastore
> 
> 5) admin-foo and oper-foo can go away

Yes, but I assume that they don't *have* to go away.  For example, the
duplex example would still have two nodes, since the syntax is
different.

>   The instance of 'admin-temp' in the operational datastore would return
>   the value in effect, not the desired value, so 'oper-temp' is not needed
>   and the correlation between config, ephemeral, and operational is
> maintained
>   in the common instance-identifier in all 3 datastores


/martin


From nobody Wed Jun 24 07:33:25 2015
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 2EFDD1ACC85 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 07:33:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.778
X-Spam-Level: 
X-Spam-Status: No, score=-0.778 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, RCVD_IN_DNSWL_LOW=-0.7, 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 mrX5QfLymIjK for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 07:33:15 -0700 (PDT)
Received: from mail-la0-f47.google.com (mail-la0-f47.google.com [209.85.215.47]) (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 7AA611AC529 for <netmod@ietf.org>; Wed, 24 Jun 2015 07:33:15 -0700 (PDT)
Received: by lagx9 with SMTP id x9so27272340lag.1 for <netmod@ietf.org>; Wed, 24 Jun 2015 07:33:14 -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=/+60xlXRR/WU4ec0rBrB7oXhb2a85KDIH8JRmqbYhfg=; b=XWBeii7yXYbDVP3bC8Azy4Wj4xMkZowU14HGaW0V5BsOigdMu/z66NCnrWNUAJ1is2 noBsBiCi7UV4SGH+5CeWQlWSi7dwMlx2YwAvhvL9lrXWElKwmduyjuu9zCIdNivY8yRi RoP2wTQA9lM/G3/GY8nw4pO4onz4W7M8MWTwcVjWBk+QmniI+UrtLXgWYDdaxBuU6KI3 KshS8jIA8ansGpzoYWQm27E1NUn5WC8UP50JarG95HNASEeknA0n0NzQJU/5iVeZ42y8 O8JgcWlqF8L+XAPSPT3uSdmX/ETaCe0v+qEqrCnYP5dAfg7fDAP6m/o7ejMXzu4rch+g 4qig==
X-Gm-Message-State: ALoCoQmU926V/tLQggq1W4uVCB8xQrretn5Dj3ANZQGmu/st5XHsEBENkgZzjLfWzd5b/leP2cmw
MIME-Version: 1.0
X-Received: by 10.152.116.49 with SMTP id jt17mr40188138lab.82.1435156394008;  Wed, 24 Jun 2015 07:33:14 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 24 Jun 2015 07:33:13 -0700 (PDT)
In-Reply-To: <20150624.162356.916556588650610315.mbj@tail-f.com>
References: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com> <558AB091.6020000@joelhalpern.com> <CABCOCHS4D9gKt7CiOBtj95n+V=BGefT6ZFVJ9vR=_AFL7TnbVw@mail.gmail.com> <20150624.162356.916556588650610315.mbj@tail-f.com>
Date: Wed, 24 Jun 2015 07:33:13 -0700
Message-ID: <CABCOCHQAjj8D2gGagD7CBvQfb8MiTrY8mBdVnHwX4qPcTjEc1A@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a11c3677e0ff924051944636c
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/lwPEC7Jk66vvDFNH_5Oh2dClE8E>
Cc: "i2rs@ietf.org" <i2rs@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 14:33:22 -0000

--001a11c3677e0ff924051944636c
Content-Type: text/plain; charset=UTF-8

On Wed, Jun 24, 2015 at 7:23 AM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Hi,
>
> Andy Bierman <andy@yumaworks.com> wrote:
> > Hi,
> >
> > thanks.
> > A few details of the solution I am working on...
>
> I would (still!) use a new statement "i2rs:ephemeral true;" to mark
> ephemeral nodes on config false nodes.  This can be done w/o changing
> YANG.
>
> > 1) defaults are not used in the ephemeral datastore
> >
> > The default-stmt is altered for the ephemeral datastore.
> > Default leafs are ignored (except for XPath evaluation).
> > Otherwise the schema default would always override the configuration.
>
> I see your point, but if I create a list instance entirely in the
> ephemeral data store, I would assume defaults in that list instance to
> be used.
>
> I think the logic should be that if no value is set in the config or
> ephemeral, then the default value is used.  The ephemeral value
> overrides the configured value.
>
>
OK



> > 2) XPath hierarchy is based on config-stmt.
> >
> >   config=true context node -> can reference config=true
> >   config=ephemeral context node -> can reference true + ephemeral
> >   config=false context node -> can reference true, ephemeral, false
> >
> > 3) must/when evaluation applies only to the datastore indicated by
> > config-stmt
> >      config=true -> running
> >      config=ephemeral -> ephemeral
> >      config=false -> operational
> >
> > 4) panes of glass applied to data instances
> >     all running datastore instances are visible in the ephemeral
> datastore
> >     all ephemeral datastore instances are visible in the operational
> > datastore
> >
> > 5) admin-foo and oper-foo can go away
>
> Yes, but I assume that they don't *have* to go away.  For example, the
> duplex example would still have two nodes, since the syntax is
> different.
>


I didn't say "have" -- I said "can"
I think the OC folks are right that the same syntax could be used but
the operational value would never be 'auto'.  A separate object
is better though (in this case).



>
> >   The instance of 'admin-temp' in the operational datastore would return
> >   the value in effect, not the desired value, so 'oper-temp' is not
> needed
> >   and the correlation between config, ephemeral, and operational is
> > maintained
> >   in the common instance-identifier in all 3 datastores
>
>
> /martin
>


Andy

--001a11c3677e0ff924051944636c
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Jun 24, 2015 at 7:23 AM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Andy Bierman &lt;<a href=3D"mailto:andy@yumaworks.com">andy@yumaworks.com</=
a>&gt; wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; thanks.<br>
&gt; A few details of the solution I am working on...<br>
<br>
I would (still!) use a new statement &quot;i2rs:ephemeral true;&quot; to ma=
rk<br>
ephemeral nodes on config false nodes.=C2=A0 This can be done w/o changing<=
br>
YANG.<br>
<br>
&gt; 1) defaults are not used in the ephemeral datastore<br>
&gt;<br>
&gt; The default-stmt is altered for the ephemeral datastore.<br>
&gt; Default leafs are ignored (except for XPath evaluation).<br>
&gt; Otherwise the schema default would always override the configuration.<=
br>
<br>
I see your point, but if I create a list instance entirely in the<br>
ephemeral data store, I would assume defaults in that list instance to<br>
be used.<br>
<br>
I think the logic should be that if no value is set in the config or<br>
ephemeral, then the default value is used.=C2=A0 The ephemeral value<br>
overrides the configured value.<br>
<br></blockquote><div><br></div><div>OK</div><div><br></div><div>=C2=A0</di=
v><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:=
1px #ccc solid;padding-left:1ex">
&gt; 2) XPath hierarchy is based on config-stmt.<br>
&gt;<br>
&gt;=C2=A0 =C2=A0config=3Dtrue context node -&gt; can reference config=3Dtr=
ue<br>
&gt;=C2=A0 =C2=A0config=3Dephemeral context node -&gt; can reference true +=
 ephemeral<br>
&gt;=C2=A0 =C2=A0config=3Dfalse context node -&gt; can reference true, ephe=
meral, false<br>
&gt;<br>
&gt; 3) must/when evaluation applies only to the datastore indicated by<br>
&gt; config-stmt<br>
&gt;=C2=A0 =C2=A0 =C2=A0 config=3Dtrue -&gt; running<br>
&gt;=C2=A0 =C2=A0 =C2=A0 config=3Dephemeral -&gt; ephemeral<br>
&gt;=C2=A0 =C2=A0 =C2=A0 config=3Dfalse -&gt; operational<br>
&gt;<br>
&gt; 4) panes of glass applied to data instances<br>
&gt;=C2=A0 =C2=A0 =C2=A0all running datastore instances are visible in the =
ephemeral datastore<br>
&gt;=C2=A0 =C2=A0 =C2=A0all ephemeral datastore instances are visible in th=
e operational<br>
&gt; datastore<br>
&gt;<br>
&gt; 5) admin-foo and oper-foo can go away<br>
<br>
Yes, but I assume that they don&#39;t *have* to go away.=C2=A0 For example,=
 the<br>
duplex example would still have two nodes, since the syntax is<br>
different.<br></blockquote><div>=C2=A0</div><div><br></div><div>I didn&#39;=
t say &quot;have&quot; -- I said &quot;can&quot;</div><div>I think the OC f=
olks are right that the same syntax could be used but</div><div>the operati=
onal value would never be &#39;auto&#39;.=C2=A0 A separate object</div><div=
>is better though (in this case).</div><div><br></div><div>=C2=A0</div><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #c=
cc solid;padding-left:1ex">
<br>
&gt;=C2=A0 =C2=A0The instance of &#39;admin-temp&#39; in the operational da=
tastore would return<br>
&gt;=C2=A0 =C2=A0the value in effect, not the desired value, so &#39;oper-t=
emp&#39; is not needed<br>
&gt;=C2=A0 =C2=A0and the correlation between config, ephemeral, and operati=
onal is<br>
&gt; maintained<br>
&gt;=C2=A0 =C2=A0in the common instance-identifier in all 3 datastores<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
<br>
/martin<br>
</font></span></blockquote></div><br></div><div class=3D"gmail_extra"><br><=
/div><div class=3D"gmail_extra">Andy</div><div class=3D"gmail_extra"><br></=
div></div>

--001a11c3677e0ff924051944636c--


From nobody Wed Jun 24 07:36:03 2015
Return-Path: <phil@juniper.net>
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 34C371ACCF0; Wed, 24 Jun 2015 07:36:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.702
X-Spam-Level: 
X-Spam-Status: No, score=-0.702 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, 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 fHGBoabSM1MI; Wed, 24 Jun 2015 07:36:00 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0143.outbound.protection.outlook.com [207.46.100.143]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 229981ACC91; Wed, 24 Jun 2015 07:35:59 -0700 (PDT)
Received: from BLUPR05CA0050.namprd05.prod.outlook.com (10.141.20.20) by DM2PR05MB784.namprd05.prod.outlook.com (10.141.179.155) with Microsoft SMTP Server (TLS) id 15.1.190.14; Wed, 24 Jun 2015 14:35:59 +0000
Received: from BL2FFO11FD038.protection.gbl (2a01:111:f400:7c09::146) by BLUPR05CA0050.outlook.office365.com (2a01:111:e400:855::20) with Microsoft SMTP Server (TLS) id 15.1.201.16 via Frontend Transport; Wed, 24 Jun 2015 14:35:59 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.18) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.18 as permitted sender)
Received: from p-emfe01b-sac.jnpr.net (66.129.239.18) by BL2FFO11FD038.mail.protection.outlook.com (10.173.161.134) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Wed, 24 Jun 2015 14:35:58 +0000
Received: from magenta.juniper.net (172.17.27.123) by p-emfe01b-sac.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.123.3; Wed, 24 Jun 2015 07:35:57 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5OEZuD34077;	Wed, 24 Jun 2015 07:35:56 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5OEYFF6035611; Wed, 24 Jun 2015 10:34:16 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506241434.t5OEYFF6035611@idle.juniper.net>
To: Andy Bierman <andy@yumaworks.com>
In-Reply-To: <CABCOCHS4D9gKt7CiOBtj95n+V=BGefT6ZFVJ9vR=_AFL7TnbVw@mail.gmail.com>
Date: Wed, 24 Jun 2015 10:34:15 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD038; 1:rpKHY1Bv7/nbDAom8GCBGZC/v0RAo3gTPMExFly1GAhCuWB66gKgUqWKO7EWTFgqs/85NL/gyJUTAZmUR9r0N7CtVV53DGu9w/GP1gNSx4NS10H2ubyziRr46R0Uia4tm8j0epULiiEp7ZWn+uVZpP7qDvPQPNrF4AO7yj5/SCCP7mmPXJe038ThpYKn0ttGGQDGoH788v+anYlfgWbePVfhJZGd2JXwquyU6y5O8Tqqt3O8Y8Q8Voh6AkEHPYjrQgjtWhWPGsG+lYxsezqe3ij0Mt1zoEm+dCZbqJVfkNKf2yHzTM7nrqz6YrHRKktyFYJSD4HfmGMQ2Bfpq4AIkw==
X-Forefront-Antispam-Report: CIP:66.129.239.18; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(164054003)(51704005)(199003)(189002)(110136002)(86362001)(77156002)(47776003)(50466002)(5001960100002)(5003600100002)(87936001)(62966003)(189998001)(106466001)(54356999)(77096005)(2950100001)(105596002)(53416004)(50986999)(46102003)(6806004)(48376002)(92566002)(76506005); DIR:OUT; SFP:1102; SCL:1; SRVR:DM2PR05MB784; H:p-emfe01b-sac.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB784; 2:7aWfOnq++csZjuTEzpw1lbCcKZm1vkf1gwAQYuycf2Xy8QVU1UAdZd97jlI7rXWu; 2:pPmHM9C6DxdZ1FWJYD3BvKdlV4lrfU7lhpNmdyvglL3ti3cVmCp47Wln0pEBdagVwEELpYZAKcIqOSScpgH+TrF2IYpg0jIEnIJwMfO3QEpkHFEAINMZpphakMze2SC7XYIuZMqs/rq7aySUeSs6o+TASJV/P6Q07LF6nIIrFL9Qd85XB0HEToY+Yb0e8HWgoAlujgl1CZ3p1YNwRj2tXY3+wRi02VMeq7dQOauoIDs=; 6:3M/0iV9e+RefiCpGlTyMDrwJfaSHXgMSPlcBFEQiw8ZHJp65z+5E6FnOsikTZIT6c3tQpjkNEXU6WCUm+w2tRERKmQGdnei/AMBYhIV8xI+OPeK3rf+6UvQ/ZJyqBYy+crOCfzVohe5VwSo9wxwmEvUBUs2sWTD7s8TRb79/+KEPiUVkVPHGSi9fBsgYt4AwkxioW9fkw0k8i9eH+JXisL6lkbW7walOLsFV2EbywjuRvrNN3SyB/D4vRyjplwMd7bKuTaJPytWXGt4RGAUhDaEZopD3+CrRKkSHEcPRHs4WRlH4CfyANlJLypq++FwLNQfRYWNDzaSiXYYcl6688oYq0c1Ys4h+FoviHpIGnXoVdHgGFlsCzekojnh4jaTJyBNMyrIcapPcpLQHvm9lL0YWkgr6JfCkn3iGHbH/gdjnwWpy0vmi6ykcNt0NoYliW4jPTFnc9VyJhu1mkKnol4GkCHezKpH6RJ/SSG1a36EXVpgNJUm7JbH9OrX3YZlz
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR05MB784;
X-Microsoft-Antispam-PRVS: <DM2PR05MB784D1BAC5D8554147308F0FC9AF0@DM2PR05MB784.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:DM2PR05MB784; BCL:0; PCL:0; RULEID:; SRVR:DM2PR05MB784; 
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB784; 3:RRyNjKWHCnQnfCo3kwL92fhuhe3toFatdDpgs06EnjC3DaBs8JCcJ77n4u5W7NhP6LEqIPz1owT27C3wK6gkzdyT71uRpDWH9nB0gxZ46PJjUCt7NopRzyG9YwjkG7cDNStJDxQv4rB+uM3ZDWG5ibDvMJJ+aRrOnPXOn5dzr6XkoIbp8DJ6tR/s7bio+frW+LxrvTior1frIKa/Dmlzf4IU1A5iWW5Nk0QKgtOnS4CzxyTsJGLSq2V8xezsiZsKdJGakRV5A7yzvO3mgJv4pyUMqto47OG/EK0+r1zWXAI=
X-Forefront-PRVS: 061725F016
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB784; 9:s6yyKQ7NqGvYIzffftmLLUwr4JBXNMT9S0qajrs9dnmwZZTcDD6svlfXE/+cJMW5mHnKcmitDOWe1Fyeq6hbKsoD9Zg19AA7LWeIQlKgR3f6nxad2Cj8lA5JcjHaSQEgjeTjywjTINgkF7s9Ya/zLiNu3qTs8HTfpN7t5EZHolC3cRaATnlQFph5HFC3u4kRKxCBVSd+Hp2aDnRVzIV7mYilznoB0WNtjuE0zUIuvHknIZmlHThG3ejjjsdTnDYK1QrE0innPIYTEccGYYbfMWQhc58Y2Vrp9jzKabtnOHDAxC9fBFTumTvNK6dAWpNJFMgfbWVygN4KY6tCVU9jZO1VVVBIQ9aSBdmeR8+CzNZwUsIqE2cjCVy3mCxbL2DNCX/i27YnXyHn5fDnHeWOyiBjJtk1ZoygwgJZ6pvyRxMZ0eXyGF8JQGyLF8VRb/ohic/N3/cVLCgEdu5BooOJfCy/Bdru0c7zJdH4EBp//7eB0aUB0e4wT6c+Tcv0TIbZrgN5bRyWIGB7fxXiPqdmm8lU5Ljxmcf29VBmzZ36Q6e+Os3FBQEfclu5DZP8/N4e3MVLGujSt0me5KuSR/SI6sg4eVz7lvl8FfYLKwV97Ah9KZR/tjJadrU8fhqCSV0V2dWy34JTPHyRqnG+kVPNdKPiIZr+hJ7XJmktxC5POqvzpOxS/FmbqJ0eUt2Dyf1c6nRVeqhaVkxM5c/RjfA1Ye4/mLAFo03PZP2y+cK4LLFAwPotkiOOl2kgUWWq05FR4GlVK9b7pq80jNJx6gflOw==; 3:u63Mpfi6Sg2YfXHkQBfCmXZqoJPhKo1MMDMOzTALxb1ad5Gu8TDozbVdbu9sd0cKjvVPwADKwx0q7muyUXhsVLHBelOGostQAoXU9mDYvaqQDOsdA+gJkwAHXN29e3umTwUaphKLna6LIvDzifycAg==
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB784; 10:zQtB4wwOd3q3WN808STyAyDb1XlB3q4CtF/HcwZ3woodktGH7/UynCxhOBDldZFVqxIIYIU2vbgaXcUFaO7rLY4gESCVK375mVViydgYsBM=; 6:Nt04jNGQySC0Ij2IoZDWSN6lyez3XCHP1a9xSwneRTm6WRKQ4v4vstwJggP3W189
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2015 14:35:58.4989 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.18];  Helo=[p-emfe01b-sac.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR05MB784
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/VZRUdsntUUUFDs4uxKI9GIRa-zM>
Cc: "i2rs@ietf.org" <i2rs@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 14:36:01 -0000

Andy Bierman writes:
>1) defaults are not used in the ephemeral datastore
>
>The default-stmt is altered for the ephemeral datastore.
>Default leafs are ignored (except for XPath evaluation).
>Otherwise the schema default would always override the configuration.

List instances in the ephemeral datastore with no matching
instance in the committed datastore would need to have
default values from the schema.

Think of defaults as the pane of glass that sits behind
all other planes.

>2) XPath hierarchy is based on config-stmt.
>
>  config=true context node -> can reference config=true
>  config=ephemeral context node -> can reference true + ephemeral
>  config=false context node -> can reference true, ephemeral, false

Are you talking about must/when statements in config false nodes?

I think the key point is that the committed config must be valid
without references anything else.  The ephemeral config must be
valid without referencing config false nodes.

>3) must/when evaluation applies only to the datastore indicated by
>config-stmt
>     config=true -> running
>     config=ephemeral -> ephemeral
>     config=false -> operational

ephemeral nodes should be able to reference config=true nodes.
An ephemeral interfaces should be able to reference a pre-configured
filter/policer.  But the reverse would not be true.

>4) panes of glass applied to data instances
>    all running datastore instances are visible in the ephemeral datastore
>    all ephemeral datastore instances are visible in the operational
>datastore

What is "all running datastore instances"?

>5) admin-foo and oper-foo can go away
>
>  The instance of 'admin-temp' in the operational datastore would return
>  the value in effect, not the desired value, so 'oper-temp' is not needed
>  and the correlation between config, ephemeral, and operational is
>maintained
>  in the common instance-identifier in all 3 datastores

The issues remain: what happens when the set of possible values
varies between the operational world and the configuration world?
How is that expressed in the data model?  "auto" would not be an
operational value for "duplex".  "none" would not be a valid
configuration value, but would be the operational value for an
empty port.

Thanks,
 Phil


From nobody Wed Jun 24 07:38:10 2015
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 5F7611ACCFC; Wed, 24 Jun 2015 07:38:08 -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 zAUzuXZ3QG2o; Wed, 24 Jun 2015 07:38:07 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 163A11ACD0F; Wed, 24 Jun 2015 07:38:01 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 37F9A1AE0483; Wed, 24 Jun 2015 16:38:00 +0200 (CEST)
Date: Wed, 24 Jun 2015 16:37:59 +0200 (CEST)
Message-Id: <20150624.163759.1557296922779722474.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHQAjj8D2gGagD7CBvQfb8MiTrY8mBdVnHwX4qPcTjEc1A@mail.gmail.com>
References: <CABCOCHS4D9gKt7CiOBtj95n+V=BGefT6ZFVJ9vR=_AFL7TnbVw@mail.gmail.com> <20150624.162356.916556588650610315.mbj@tail-f.com> <CABCOCHQAjj8D2gGagD7CBvQfb8MiTrY8mBdVnHwX4qPcTjEc1A@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/PTrsQ2mRlONOmnew-29DgO5ScT0>
Cc: i2rs@ietf.org, netmod@ietf.org
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 14:38:08 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Wed, Jun 24, 2015 at 7:23 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Hi,
> >
> > Andy Bierman <andy@yumaworks.com> wrote:
> > > 5) admin-foo and oper-foo can go away
> >
> > Yes, but I assume that they don't *have* to go away.  For example, the
> > duplex example would still have two nodes, since the syntax is
> > different.
> >
> 
> 
> I didn't say "have" -- I said "can"
> I think the OC folks are right that the same syntax could be used but
> the operational value would never be 'auto'.  A separate object
> is better though (in this case).

Yes, agreed; I just wanted to be sure.  I think this is worth pointing
out explicitly.  In many cases the oper- node is not needed, but it
might be.


/martin


From nobody Wed Jun 24 07:48:18 2015
Return-Path: <phil@juniper.net>
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 5D86A1A00C8; Wed, 24 Jun 2015 07:48:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.798
X-Spam-Level: 
X-Spam-Status: No, score=0.798 tagged_above=-999 required=5 tests=[BAYES_50=0.8, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 0o6mnTJcL8pw; Wed, 24 Jun 2015 07:48:14 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0141.outbound.protection.outlook.com [207.46.100.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 74BE91A008A; Wed, 24 Jun 2015 07:48:14 -0700 (PDT)
Received: from BY2PR05CA042.namprd05.prod.outlook.com (10.141.250.32) by DM2PR05MB781.namprd05.prod.outlook.com (10.141.179.139) with Microsoft SMTP Server (TLS) id 15.1.190.14; Wed, 24 Jun 2015 14:48:13 +0000
Received: from BN1AFFO11FD011.protection.gbl (2a01:111:f400:7c10::138) by BY2PR05CA042.outlook.office365.com (2a01:111:e400:2c5f::32) with Microsoft SMTP Server (TLS) id 15.1.201.16 via Frontend Transport; Wed, 24 Jun 2015 14:48:13 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.18) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.18 as permitted sender)
Received: from p-emfe01b-sac.jnpr.net (66.129.239.18) by BN1AFFO11FD011.mail.protection.outlook.com (10.58.52.71) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Wed, 24 Jun 2015 14:48:12 +0000
Received: from magenta.juniper.net (172.17.27.123) by p-emfe01b-sac.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.123.3; Wed, 24 Jun 2015 07:48:09 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5OEm8D41609;	Wed, 24 Jun 2015 07:48:08 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5OEkRQN035789; Wed, 24 Jun 2015 10:46:28 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506241446.t5OEkRQN035789@idle.juniper.net>
To: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <20150624.163759.1557296922779722474.mbj@tail-f.com>
Date: Wed, 24 Jun 2015 10:46:27 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD011; 1:sEshYaY/uE2fwSgVxC4ldhDTbyZA/e3snCTQ+Wg4vKXgWSSW6qSz44TeDzJ7268cTkV0s++GTFpB2wIjEb/xi1RPlbW9OftklAehp2EwxcTM5p395A5mzYOwIzuPSRXTRHl08QHVMJDqlS3BnTKaGBMcNGFnLZEyCqs7VqYaq2Kh5zrB8bXOoikVa92DEVHI169I7LulJO1i2axbq/W91j4gklszimftqerT7xgsCE4pgFDLUJ5MmNuBHwv53tOW1CMgJjwSMGLMzQXQUL4TSspBvd/0yZvB6aO8FUS7XZwYw/X/vBWXlsEay873iO7h7g0GOmZFcS7F7Ny2FHTSgw==
X-Forefront-Antispam-Report: CIP:66.129.239.18; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(164054003)(189002)(199003)(51694002)(6806004)(86362001)(50986999)(54356999)(62966003)(87936001)(47776003)(77156002)(2950100001)(92566002)(110136002)(5003600100002)(48376002)(53416004)(106466001)(5001960100002)(50466002)(46102003)(189998001)(105596002)(77096005)(76506005); DIR:OUT; SFP:1102; SCL:1; SRVR:DM2PR05MB781; H:p-emfe01b-sac.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB781; 2:6wSj7Iz/3bOOVil+CO2DB90D3G9mnT31xl4sg9tOVX6kFqsgr0C5wz2zrQgLwdFP; 2:lC5uXGOFiAxjnEE3zWXwFqP0Kd4q9xHmUNKATRBgQNrSCMQRwewGs1+PNW47BQGdcsHgRDbnz/bgwl0kcQtjVf+fpz2IrcMjj2KIiRzzkijwsJbKNSNV/mQx1Wi4SvKNXHVeamo8TLxvVWm2dhW5NwX0iNiOYyhxWyT7KPN5WZbiEyP4QItCYjzR3KMrNimD/2EW3qLzZFYYOJK4x2m1GASNxdy1QY0uDv+RL9tEEBA=; 6:uLRX2AVO6SqXnloaI84I97rSw3vaiFYzd47rOk4oGpGWla5n6K10ZCdFkfYNCzpDaSUh6bACMMx0soUGGOTjX0Y1X65BthSsvNM3/z6XXzUyHM2e+cbnrY8QOv8dscPHFjliBWVmcsc/woLI45505cNsqTaWBF3z2/5g8IqC+BReGFXbB9PBE4aHSb6g6s3mLmouELQ99JJfw6Dmo+fzs9jRhGDwYemJEVPSczkcDbGlj5nFaaV7ftX3U+VE49oWT6FVAxx5ZXJqByU51B2hHbl2iH4ZMFWJtsKz4iY73i4AR0pMUe3xAWpsp3P/PGeJKSXGLZFucSwSFAjIi7eWEg8YwF2X7aFcZmMT55ZU3hgxF16NZf0R/jz1F7av0PwmJjmcAyLtys3nm4fmBGdM1CwSzV29SsGH1ugtx2GtOd+K9p+4jPPwW7pC9wUEkCGtYBzCJtyifCa//MLyNPZrxO/McaEeyNuR6AH9DmMcZZvg7hZqP06CYTTvWwYYLsQI
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR05MB781;
X-Microsoft-Antispam-PRVS: <DM2PR05MB781A3AD601360D6F0831D0DC9AF0@DM2PR05MB781.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:DM2PR05MB781; BCL:0; PCL:0; RULEID:; SRVR:DM2PR05MB781; 
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB781; 3:zloAfsKhNqk3CSKg+Y3XJS2wyhZlcj4LkHiHFdDQfRkf5u11udtIuAXkViGv1H9xagTuGxsF2TW8+4Izl3YMmQ2vVpI7d2QSSqs6bB7dtEpCki9eOdGUa259N5Jm5cb9oVtTD+dxLK71RarTymFU07fqFPT0R6OK8/eH3Rc1yMCp8wGuoRjAAs07Iznsy29dDAd2GtfTHs3Qx/pWELr3tZ9Nr+gmcqb0nW2IuERekPDRow3TVOPwTe8QYYzxzXAA1uUPREeeE5DF2kGZkT3kGQaUu6o953TWW18AN3rRQoU=
X-Forefront-PRVS: 061725F016
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB781; 9:6oQRABzzq+WCfY31NaRafK7u8SxydQxUQP3O5YuSstEYUFlziJy/C8YtrPWnP2nnrWz8aKaTIq1+bcXF5F4Q+vd3cSKzu7PHYg6Oh2ZnwH8CR/0N5rquq7hwmCLXhO1VtmpzGZOXGLSWMsyEVmTgsGesbdcuRp+IY2xecrM2dHg68sFv1qVtMR7LHqXgKzOESvkaVBM+t6y7ARMjdAKWiYtedytdE46L66CvfdWq1kd6Q/pQWtJKUDvI4Ph8yeLPn2/OH9x7IA3NuRHSN9DsUUZaWwnK5DeuEx+X5lzIgMEbqNTKBOUrkOSrkqA8I61i+2ghxx34MVMK6rGyK+Od+JaUgoAGcik1/FGKA5j2E+hsIdpLxPL1bR2la5hlHj7qcT2QuMMPuCdYVQfpUstm0qj0BGPRkK6HeMlR3/UOm4fEcy6RHF4red/gHq3irsoq+Z7CxAku+y3aPq4uAZtBJ0BRvYnDVrGBUky45Bmshf5U7a4MzuSKkEmfXYEx7NDIHds0GtboyPzJYatdWG09l+w6LYUxaQCNwGQYZfRPHo/DDk5628zb1cytfbV8DSImlHaXaCCoNXucVIdStYm+jLyzwiBz/P8YIp9JQpuEtr7TsTrY+E8XYShogpH59c3F7hTj/PeA+M0iSMJx39oZdkQcVT3zAF9SenXeH94xnqE9nfr4CO/WJymAm+bVaIOWJ6DaFhmOd5DnlIayhMC8dKrkup+2spl6UeD5S0poruRQlShN0lx2MxgbRmk0NybvUXLbMJ/QUVytrhWmpzx/Vg==; 3:3OGR2xedJbXYkTtyyHdwW/O0+JQRyKkzX2lvpd1gYvywyyb7dfAjLimU3nADPk+dSn/LdsRT4559LzrXtI8HaNnnP9823sTWL1ksUZ/pu3hUkAarhkvJJXWAr+nHl63p42gXkPTUrFVeDdskvp/kQg==
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB781; 10:n7DMnO6VdHWcBeixMYDne4J6kQgPVDAA+GuIRx1wTIprZ+40HCbBa7zEdhm6N5Qo2Vr98XihVpVrmPrCwBj4PBYxf6410R3cz6pU8smKcGQ=; 6:qGxM4xCO1VTBpvdFAJPpJxzsYyFYkxFzhgjqChUPV6WjmB6MvBNSxWV6iEh29fFn
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2015 14:48:12.0666 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.18];  Helo=[p-emfe01b-sac.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR05MB781
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/tDxkNWVkt9uAAT2M8pEjtFqcl_M>
Cc: i2rs@ietf.org, netmod@ietf.org
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 14:48:16 -0000

Martin Bjorklund writes:
>Yes, agreed; I just wanted to be sure.  I think this is worth pointing
>out explicitly.  In many cases the oper- node is not needed, but it
>might be.

Would we be better of having YANG statements that detail the
way the model changes between config and operational modes?
Otherwise the tie-in between the oper-leaf and config-leaf
needs to be modeled.

Thanks,
 Phil


From nobody Wed Jun 24 07:53:37 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 DC9ED1A1A04 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 07:53:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 4AOpRSRIoLxC for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 07:53:34 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 70AE91A0373 for <netmod@ietf.org>; Wed, 24 Jun 2015 07:53:30 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 9B1F1879; Wed, 24 Jun 2015 16:53:26 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id ZbmoA_kLWOwa; Wed, 24 Jun 2015 16:53:27 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Wed, 24 Jun 2015 16:53:25 +0200 (CEST)
Received: from localhost (demetrius3.jacobs-university.de [212.201.44.48]) by hermes.jacobs-university.de (Postfix) with ESMTP id 9A1212002B; Wed, 24 Jun 2015 16:53:27 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius3.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id 9wEaMGdHfqPr; Wed, 24 Jun 2015 16:53:19 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id B028320013; Wed, 24 Jun 2015 16:53:25 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 615D23479D62; Wed, 24 Jun 2015 16:53:25 +0200 (CEST)
Date: Wed, 24 Jun 2015 16:53:25 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Kent Watsen <kwatsen@juniper.net>
Message-ID: <20150624145325.GB38016@elstar.local>
Mail-Followup-To: Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D1A4CEB7.B22F7%kwatsen@juniper.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <D1A4CEB7.B22F7%kwatsen@juniper.net>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/nfZ0kwsJyQlJNKtX8J6EY4_u_Ng>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 14:53:36 -0000

On Mon, Jun 15, 2015 at 10:49:28PM +0000, Kent Watsen wrote:
> 
> This is a notice to start a NETMOD WG last call for the document "JSON Encoding of Data Modeled with YANG":
> 
> https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04
> 
> Please indicate your support by Monday June 29, 2015 at 9PM EST.

Hi,

I have reviewed draft-ietf-netmod-yang-json-04.

- I am not sure I agree with the wording in section 3. Why is section
  8.3.3 only applicable to XML encoded data? Validation applies to
  datastores. While constraints are defined using XML-based notations
  such as XPATH, how the validation is carried out is not defined in
  the YANG specifications. I guess I actually disagree with the
  wording in section 3 of the JSON encoding I-D.

- It is unclear whether the 'if and only if' on page 4 means that an
  implementation that generates namespace prefixes that are not
  strictly needed is violating this I-D. I see the need for a MUST to
  include the module name if the parent node belongs to a different
  module. I am not sure why it is necessary to mandate minimal
  encodings (if that is the idea here). Whatever the answer is, it
  would be good to use RFC 2119 language.

- The reason for the requirement that list keys are encoded first in
  RFC 6020 is to make it easier to process data in a stream-oriented
  fashion. If keys can appear anywhere, they might appear at the very
  end and thus buffering is required in order to process data
  properly. Is this concern not relevant for the JSON encoding?
  Perhaps this is not relevant, but then we might also state this
  explicitly:

      As a consequence, implementations must be cable to buffer JSON
      encoded instances in order to locate keys that may appear at the
      end of a JSON encoded instance.

- I think that section 5.5 should say:

      If the data model for the data in an anydata instance is known,
      then the data must be encoded following the rules defined in
      this I-D.

  In other words, it is not arbitrary JSON with a few constraints but
  something that matches the JSON encoding rules once the data model
  is known.

- Section 6, I suggest s/mapped/encoded/.

- I do not understand 'An "enumeration" value is mapped in the same
  way as a string except that permitted values are defined by enum
  statements in YANG.' Perhaps this is simpler:

     An "enumeration" value is encoded as a JSON string. The allowed
     string values are the enumeration names assigned by the enum
     statement in YANG.

     The representation is identifical to the XML encoding, see
     sec. 9.6 in [RFC6020bis].

  I specifically tried to avoid 'value' in order to avoid confusion with
  the value YANG statement.

- Perhaps remove the reference to XML in section 6.5 from the
  definition of the encoding rules so that the JSON encoding rules are
  not tied into the XML encoding rules. It is OK to mention that it is
  the same.

     A "bits" value is encoded as a JSON string. Multiple bit names
     assigned by the bit statement in YANG are encoded as a
     space-separated string of bit names representing the individual
     bits that are set.

     The representation is identifical to the XML encoding, see
     sec. 9.7 in [RFC6020bis].

- Same as before for section 6.6:

     A "binary" value is encoded by first encoding the binary value in
     base64 and encoding the resulting base64-encoded value as a JSON
     string.

     The representation is identifical to the XML encoding, see
     sec. 9.8 in [RFC6020bis].

- I am not sure I understand the argument why [null] is better than
  null for the empty type. Perhaps it is but the text does not really
  tell me.

- I suggest to remove the reference to 9.13.3 in the definition. In
  fact, the representation is pretty different since XML uses
  namespace prefixes while JSON uses module names. (I must admit that
  I find the JSON representation more readable since it does not
  require XML namespace context.)

- Section 7: So what happens in the rare case of a binary value
  appearing in a RESTCONF URI? Is the resulting BASE64 value than
  simply subject to URI escaping rules?

  I assume this 'rare event' would happen if a list is indexed by a
  leaf of type binary, no? Are there any other cases?

/js

PS: Should RFC 6020bis change the section titles "XML Mapping Rules" to
    "XML Encoding Rules"? I think we really talk about 'encoding', not
    about 'mapping' and if we agree on this, we should try to be
    consistent with the terms we use.

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Wed Jun 24 08:11:31 2015
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 6D4CE1A88DC for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 08:11:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.778
X-Spam-Level: 
X-Spam-Status: No, score=-0.778 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, RCVD_IN_DNSWL_LOW=-0.7, 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 l7lSc-VIXAcj for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 08:11:29 -0700 (PDT)
Received: from mail-la0-f42.google.com (mail-la0-f42.google.com [209.85.215.42]) (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 47F021A88FC for <netmod@ietf.org>; Wed, 24 Jun 2015 08:11:22 -0700 (PDT)
Received: by lagx9 with SMTP id x9so28006112lag.1 for <netmod@ietf.org>; Wed, 24 Jun 2015 08:11:20 -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=nC7W7neJ012pz/Qc4g3gUsKKQrfLkBbIL2vz+7c9M/I=; b=bd5Eo5w8eeT9suxsIfB0N4BnF5nnfD2fUAz7KptXTpzs3YxI8/CtjVG9i8q3CRLgeL r3uvWyP+En2AYsi6LMsc503/ctlyk1r0ZiwF0kUhp4rSzWKDNye3Q+h7QaY4+cOz6FZA jd8g51DSiYrBPDEgvmuWiM0VU5SVQPn5KJ5b/JZrp5rzkeNiOgRqROr8ahZh74e408sU Ia1qTHc1KOetHuXhyUhHHRzMPKkM7WBQGsjzJfqSg+FNT4w9DTihkHyqsOPaTHZD9Mzq JfAVTLymIkaabdBCk+dtg8pGjDANig83xAft+adM/hRgHEWBMdHYZJOYJ6p54bn3Alvs cjEg==
X-Gm-Message-State: ALoCoQkujoArDFjP4I9fc3wFcbREytPIAU8sa443Wzd0E/jSSGpPD1x1jku5GUTF1pMu8/ogk3vc
MIME-Version: 1.0
X-Received: by 10.112.41.171 with SMTP id g11mr9804429lbl.123.1435158680558; Wed, 24 Jun 2015 08:11:20 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 24 Jun 2015 08:11:20 -0700 (PDT)
In-Reply-To: <201506241434.t5OEYFF6035611@idle.juniper.net>
References: <CABCOCHS4D9gKt7CiOBtj95n+V=BGefT6ZFVJ9vR=_AFL7TnbVw@mail.gmail.com> <201506241434.t5OEYFF6035611@idle.juniper.net>
Date: Wed, 24 Jun 2015 08:11:20 -0700
Message-ID: <CABCOCHSs91GLt3yPpuhgfiMN0JgTeTE91oV+6__VPVRPUN8U-w@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Phil Shafer <phil@juniper.net>
Content-Type: multipart/alternative; boundary=001a11346d9c59f3cc051944ebdf
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/LzeZJoJQ4dyuZjoJzxsAu3qpg70>
Cc: "i2rs@ietf.org" <i2rs@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 15:11:30 -0000

--001a11346d9c59f3cc051944ebdf
Content-Type: text/plain; charset=UTF-8

On Wed, Jun 24, 2015 at 7:34 AM, Phil Shafer <phil@juniper.net> wrote:

> Andy Bierman writes:
> >1) defaults are not used in the ephemeral datastore
> >
> >The default-stmt is altered for the ephemeral datastore.
> >Default leafs are ignored (except for XPath evaluation).
> >Otherwise the schema default would always override the configuration.
>
> List instances in the ephemeral datastore with no matching
> instance in the committed datastore would need to have
> default values from the schema.
>
> Think of defaults as the pane of glass that sits behind
> all other planes.
>
>
good point



> >2) XPath hierarchy is based on config-stmt.
> >
> >  config=true context node -> can reference config=true
> >  config=ephemeral context node -> can reference true + ephemeral
> >  config=false context node -> can reference true, ephemeral, false
>
> Are you talking about must/when statements in config false nodes?
>

yes -- all values of config-stmt


>
> I think the key point is that the committed config must be valid
> without references anything else.  The ephemeral config must be
> valid without referencing config false nodes.
>


exactly -- that is what I was trying to say above



>
> >3) must/when evaluation applies only to the datastore indicated by
> >config-stmt
> >     config=true -> running
> >     config=ephemeral -> ephemeral
> >     config=false -> operational
>
> ephemeral nodes should be able to reference config=true nodes.
> An ephemeral interfaces should be able to reference a pre-configured
> filter/policer.  But the reverse would not be true.
>
>

The issue is where to enforce the YANG datastore validation for must/when.
The "portability" of must/when is a general problem, but more datastores
makes
it more complicated



> >4) panes of glass applied to data instances
> >    all running datastore instances are visible in the ephemeral datastore
> >    all ephemeral datastore instances are visible in the operational
> >datastore
>
> What is "all running datastore instances"?
>


All the data instances (like interfaces) are visible in the ephemeral
for the purpose of XPath and path-stmt (leafref) evaluation



>
> >5) admin-foo and oper-foo can go away
> >
> >  The instance of 'admin-temp' in the operational datastore would return
> >  the value in effect, not the desired value, so 'oper-temp' is not needed
> >  and the correlation between config, ephemeral, and operational is
> >maintained
> >  in the common instance-identifier in all 3 datastores
>
> The issues remain: what happens when the set of possible values
> varies between the operational world and the configuration world?
>


New notifications can be defined to let a client know when a data resource
converges or diverges from the configured value.



> How is that expressed in the data model?  "auto" would not be an
> operational value for "duplex".  "none" would not be a valid
> configuration value, but would be the operational value for an
> empty port.
>


good point -- the operational instance would not exist is the status is
'none'



>
> Thanks,
>  Phil
>


Andy

--001a11346d9c59f3cc051944ebdf
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Jun 24, 2015 at 7:34 AM, Phil Shafer <span dir=3D"ltr">&lt;<a h=
ref=3D"mailto:phil@juniper.net" target=3D"_blank">phil@juniper.net</a>&gt;<=
/span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">Andy Bierman writes:<br>
&gt;1) defaults are not used in the ephemeral datastore<br>
&gt;<br>
&gt;The default-stmt is altered for the ephemeral datastore.<br>
&gt;Default leafs are ignored (except for XPath evaluation).<br>
&gt;Otherwise the schema default would always override the configuration.<b=
r>
<br>
List instances in the ephemeral datastore with no matching<br>
instance in the committed datastore would need to have<br>
default values from the schema.<br>
<br>
Think of defaults as the pane of glass that sits behind<br>
all other planes.<br>
<br></blockquote><div><br></div><div>good point</div><div><br></div><div>=
=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bo=
rder-left:1px #ccc solid;padding-left:1ex">
&gt;2) XPath hierarchy is based on config-stmt.<br>
&gt;<br>
&gt;=C2=A0 config=3Dtrue context node -&gt; can reference config=3Dtrue<br>
&gt;=C2=A0 config=3Dephemeral context node -&gt; can reference true + ephem=
eral<br>
&gt;=C2=A0 config=3Dfalse context node -&gt; can reference true, ephemeral,=
 false<br>
<br>
Are you talking about must/when statements in config false nodes?<br></bloc=
kquote><div><br></div><div>yes -- all values of config-stmt</div><div>=C2=
=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;borde=
r-left:1px #ccc solid;padding-left:1ex">
<br>
I think the key point is that the committed config must be valid<br>
without references anything else.=C2=A0 The ephemeral config must be<br>
valid without referencing config false nodes.<br></blockquote><div><br></di=
v><div><br></div><div>exactly -- that is what I was trying to say above</di=
v><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
&gt;3) must/when evaluation applies only to the datastore indicated by<br>
&gt;config-stmt<br>
&gt;=C2=A0 =C2=A0 =C2=A0config=3Dtrue -&gt; running<br>
&gt;=C2=A0 =C2=A0 =C2=A0config=3Dephemeral -&gt; ephemeral<br>
&gt;=C2=A0 =C2=A0 =C2=A0config=3Dfalse -&gt; operational<br>
<br>
ephemeral nodes should be able to reference config=3Dtrue nodes.<br>
An ephemeral interfaces should be able to reference a pre-configured<br>
filter/policer.=C2=A0 But the reverse would not be true.<br>
<br></blockquote><div><br></div><div><br></div><div>The issue is where to e=
nforce the YANG datastore validation for must/when.</div><div>The &quot;por=
tability&quot; of must/when is a general problem, but more datastores makes=
</div><div>it more complicated</div><div><br></div><div>=C2=A0</div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc =
solid;padding-left:1ex">
&gt;4) panes of glass applied to data instances<br>
&gt;=C2=A0 =C2=A0 all running datastore instances are visible in the epheme=
ral datastore<br>
&gt;=C2=A0 =C2=A0 all ephemeral datastore instances are visible in the oper=
ational<br>
&gt;datastore<br>
<br>
What is &quot;all running datastore instances&quot;?<br></blockquote><div>=
=C2=A0</div><div><br></div><div>All the data instances (like interfaces) ar=
e visible in the ephemeral</div><div>for the purpose of XPath and path-stmt=
 (leafref) evaluation</div><div><br></div><div>=C2=A0</div><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pad=
ding-left:1ex">
<br>
&gt;5) admin-foo and oper-foo can go away<br>
&gt;<br>
&gt;=C2=A0 The instance of &#39;admin-temp&#39; in the operational datastor=
e would return<br>
&gt;=C2=A0 the value in effect, not the desired value, so &#39;oper-temp&#3=
9; is not needed<br>
&gt;=C2=A0 and the correlation between config, ephemeral, and operational i=
s<br>
&gt;maintained<br>
&gt;=C2=A0 in the common instance-identifier in all 3 datastores<br>
<br>
The issues remain: what happens when the set of possible values<br>
varies between the operational world and the configuration world?<br></bloc=
kquote><div><br></div><div><br></div><div>New notifications can be defined =
to let a client know when a data resource</div><div>converges or diverges f=
rom the configured value.</div><div><br></div><div>=C2=A0</div><blockquote =
class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid=
;padding-left:1ex">
How is that expressed in the data model?=C2=A0 &quot;auto&quot; would not b=
e an<br>
operational value for &quot;duplex&quot;.=C2=A0 &quot;none&quot; would not =
be a valid<br>
configuration value, but would be the operational value for an<br>
empty port.<br></blockquote><div><br></div><div><br></div><div>good point -=
- the operational instance would not exist is the status is &#39;none&#39;<=
/div><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
=C2=A0Phil<br></blockquote><div><br></div><div><br></div><div>Andy</div><di=
v>=C2=A0</div></div><br></div></div>

--001a11346d9c59f3cc051944ebdf--


From nobody Wed Jun 24 10:16:38 2015
Return-Path: <phil@juniper.net>
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 DCE491ACEC6; Wed, 24 Jun 2015 10:16:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 Kx0HRCGrD6JT; Wed, 24 Jun 2015 10:16:35 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0101.outbound.protection.outlook.com [207.46.100.101]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 23F2E1A8BC0; Wed, 24 Jun 2015 10:16:35 -0700 (PDT)
Received: from BLUPR05CA0041.namprd05.prod.outlook.com (10.141.20.11) by BLUPR05MB706.namprd05.prod.outlook.com (10.141.207.13) with Microsoft SMTP Server (TLS) id 15.1.195.15; Wed, 24 Jun 2015 17:16:34 +0000
Received: from BN1BFFO11FD035.protection.gbl (2a01:111:f400:7c10::1:170) by BLUPR05CA0041.outlook.office365.com (2a01:111:e400:855::11) with Microsoft SMTP Server (TLS) id 15.1.201.16 via Frontend Transport; Wed, 24 Jun 2015 17:16:34 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.18) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.18 as permitted sender)
Received: from p-emfe01b-sac.jnpr.net (66.129.239.18) by BN1BFFO11FD035.mail.protection.outlook.com (10.58.144.98) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Wed, 24 Jun 2015 17:16:33 +0000
Received: from magenta.juniper.net (172.17.27.123) by p-emfe01b-sac.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.123.3; Wed, 24 Jun 2015 10:16:32 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5OHGUD22003;	Wed, 24 Jun 2015 10:16:31 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5OHEndU036985; Wed, 24 Jun 2015 13:14:50 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506241714.t5OHEndU036985@idle.juniper.net>
To: Andy Bierman <andy@yumaworks.com>
In-Reply-To: <CABCOCHSs91GLt3yPpuhgfiMN0JgTeTE91oV+6__VPVRPUN8U-w@mail.gmail.com>
Date: Wed, 24 Jun 2015 13:14:49 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD035; 1:FJBdVZzBD1xhK7jqyxgi9IngzKDR7npkq6OA5h4T+pb0XKg5MNXwHPaQ3u2Gzgw5/FNp19aNcMDZ+Wm/HcveyXevcQJFtu43isvcxxfxq1dLzLWeX/5y6qm5Wf0EJ+fqcoh2tfEiPDBvRFTGJkAFZnBC/UKKxwzXR2UE930vjpPk387RUbg1nMIZzbaH/94rJKHkMaRlSJj9/daABgM8W/lNFCfXhaY2JEWAX2Y/a1aXq01zS3g9TUuOsxzlf2xqDVa+mdE+4Y/4wwD5PAj9oIdALvp0J6p65rMoYlub9q+DT/cJryNzyjM8+BDtKD0yxv1BOF3JUVUu/GPolcT3Eg==
X-Forefront-Antispam-Report: CIP:66.129.239.18; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(164054003)(51704005)(189002)(199003)(87936001)(46102003)(76506005)(106466001)(47776003)(86362001)(6806004)(77156002)(62966003)(54356999)(50986999)(92566002)(53416004)(50466002)(48376002)(5003600100002)(5001920100001)(77096005)(189998001)(105596002)(5001960100002)(2950100001)(110136002); DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR05MB706; H:p-emfe01b-sac.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB706; 2:jHatMoXNqFMrUB80gTfl6bGHn9cea1prstsTBGYmRVxoR4YeFGwNiyKy5IdlWpQn; 3:8v7QAvNNKwsEBbdguq4fsEnC3AbnJWVbRab/xppKYWsrMCbtZROoSsAGmdmktltlHZIqK28rBfLk2GB7FU2P6wYK6+HXyQQ70fleXD54unK+JV4QsSjgxi/yrOqFBe2UEs6SJTfoor4zO9NcQCSpqOquXZQpNexufe6eREPSXyTL9PH2QzYy5O3QNVrSqaYdd/Wx4BDtKDMykPoC/uYRyiXj2y6AJtV5xkgPbE1Qvkc=; 20:PzTam0txxA+lkEPXi4nSWXzmwQtxJp8S1kexG0wI/ymEehxHqDYFlTWWMmZB3dbac2ocCoXvyHL/B8mzKHFG4Iq4vZI0r3mLaUydKvtxwxUC6ACM4BvY9PXOxQw/UgKM5g8HpZ8xy9FFVeBMvXW6+xygGB8ErzneWPjc9Y26L4c23uOXHYw/39WHU2Tu4V3iR6x9/iMglPIIN4WI6NZgsYcs5BVHI7OvXnK6BQY6CHFPefTBtEWNpo85Z4Avx5TQPWoPba3Q84D1zGNjK2ZQvc0W4Nxgp9spvPSqFPXkLt3lOH6yIIuhoqKx/QdFf7MDklDWorzleCEeOShoEZTQU2XEEhdWj7uM8JMnlLG8RRoiJfHv3kydh3ivbb1itgZqYC4SHGlMMvx1oNmdeQe4BuMQFkhO9wtFATeZt2uKDIcLaQYnIr+mcX5jDrEd2pd0auBhTE40WR0JF1kZQcAw7ZlE/b0T7jC/4RVKZsvOo4MxHZLQ1TFR9/njdfMfY1Pk
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR05MB706;
X-Microsoft-Antispam-PRVS: <BLUPR05MB70661A04E71B3C1BF62B835C9AF0@BLUPR05MB706.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BLUPR05MB706; BCL:0; PCL:0; RULEID:; SRVR:BLUPR05MB706; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB706; 4:AETYKrrVXDU8P3QbLbDXFlgk9EWqtE8nr8rpd5Ohv1OAzHg/2uj9qZ2sqwPV0ZOQEDtR/JeP/pieHNJzRoRYm1sbh42ZIuMDUsyU8E7PWI+t5A+DO5n8uH6SapSdGfD59yiP0p9wSHZM3p9K0311k4Iu/xo9Qpxj6KJ3xhGbtGnGnmUqNa1+7ITcBv/ZmXRnT29E/W4QtdYgH0RI9rtZUti8oqeEIuH3sT+nf3AMEQWRLDCO1qbY52CgidNPij7f+lMuEtumM68otRFpnZ27aLouqx+iw5TIdKP5LukGoCs=
X-Forefront-PRVS: 061725F016
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB706; 23:Opp7Zrwu8PEj1IIznP3kQuO4PgQLoC0c47CLItayIRE+PISZBj0eSl4vVojHecT8R78FbdMtnKMmW7FA/6/PYn1Dx3I7sTcMf2mV9RXBdyfDVt9gCxFevxiBIy4LEDxNxZJxanjPX+fMXdlpLkPr1IZYqCSaM+fmDmfnNpuaAD8r2CmYOc8HBMYXD12NnqWUH0FlPu/294v+M6qe9AuD0DpbqmeLgO8JvmQdJzukRpSpzU8n0VKoW+6kCo9pxgU2Q2zrMew8Cjb8cWT/WOEbbJ+2C+jRNEtXmslt5B3ELimyDY2kUgaKVEhQ7t1gYhXmz2btuccRknwi6wvGbYp6zO8yDpcgw+EodjJiQBlWwuTlAPI8k6+/BxPNI9LmBayNZoXq73LeKqBpiaK+k/nZJD4nSqJ0Ki7HREVSRikBlbGVWjfS5FuvMXAv+j7J2+5gJyP6lA5Y0iESoRV2schVqMW3LSI+W+GvxV/S5N6KPGB/otKt9K5CO55HeK8l/mZwDug8wQLOmb8kymv073+O2Yp2s2mZ+7IQCOqH1+MjB5ndRLWMBuh7guVQwO2r0OrjtlISKqCsuq0jQG9+V8wfbyrobTirRw9SkhbsYOjIkHTKxxBILkoE7Ph27d01RmaXo7TViFH3JwEwzcwywRKxDr2m2tLAaLV1SrCkQpnG2x24RHUq0BKK14vJ//jqdeT5k7qdgUgG+1PlrKhx1JnZ7ZRbRjagDdTXNNf0vCz35oNfIftehoyEb7fUG3HrPbEu5uz3ZBNwDAqzqZwReVO4dmAQKNWfgkHs6TkZDnAUjco=; 5:vorA4gSIgo7ggMsP7HfHzortc1WCUT+Hebl8+CRjbiUBJG8fJsnk8Q/cmjkIH9xaVs6/ECmZAHg7KEAFsusfhp2Flg91+ERfmy24pfHV8kVQ3p0UG4xREyEJekHACX1iwNb2he6N06TLi0un5JJ+4w==
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB706; 24:SRIZAL3DioxD5Qf6qj72GgNcJtZOX6GiLai8McZDN8oR88B5JYdwAhrM+ar8dBf3sTBXeMPpots2soZkIyTCzZdzP/2PewG0SMtMROqw/00=; 20:aDoSQZjWUTNjAjI9EPiCbd7njLMHad1cg4GJdi2sEoLYEzdbpLRf4Q9KB+A5yUOVTzMTddV20M3nWaWBlwN4oA==
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2015 17:16:33.5108 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.18];  Helo=[p-emfe01b-sac.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR05MB706
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/QWBp50RWjit9iEBcEMLrt1JDxJQ>
Cc: "i2rs@ietf.org" <i2rs@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 17:16:37 -0000

Andy Bierman writes:
>> How is that expressed in the data model?  "auto" would not be an
>> operational value for "duplex".  "none" would not be a valid
>> configuration value, but would be the operational value for an
>> empty port.
>
>good point -- the operational instance would not exist is the status is
>'none'

Why not?  The interface might exist but not have an ethernet
cable plugged in.  "show interfaces" would show the physical
instance, but duplex could be "none".

Thanks,
 Phil


From nobody Wed Jun 24 10:31:12 2015
Return-Path: <rjs@rob.sh>
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 979A71A1B00 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 10:31:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level: 
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=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 axfBQQgIffpM for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 10:31:07 -0700 (PDT)
Received: from cappuccino.rob.sh (cappuccino.rob.sh [IPv6:2a03:9800:10:4c::cafe:b00c]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AEAF61A1AD9 for <netmod@ietf.org>; Wed, 24 Jun 2015 10:31:05 -0700 (PDT)
Received: from [86.176.100.75] (helo=piccolo.local) by cappuccino.rob.sh with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from <rjs@rob.sh>) id 1Z7oVj-0006ul-NN; Wed, 24 Jun 2015 18:30:55 +0100
Date: Wed, 24 Jun 2015 18:30:58 +0100
From: Rob Shakir <rjs@rob.sh>
To: Martin Bjorklund <mbj@tail-f.com>, kwatsen@juniper.net
Message-ID: <etPan.558ae952.5d0ba759.123@piccolo.local>
In-Reply-To: <20150624.113947.1467672797415636365.mbj@tail-f.com>
References: <5D8650DF-B6F3-478A-BA7B-302668293BB3@juniper.net> <CABCOCHR+O1016_YQyY5f7VYxdMaa1cOaDwWcS4ir8rR39M36kg@mail.gmail.com> <D1AF5744.B3655%kwatsen@juniper.net> <20150624.113947.1467672797415636365.mbj@tail-f.com>
X-Mailer: Airmail Beta (308)
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="558ae952_72b9ff68_123"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/S_1500rUOjgDSRbvqljKRd9VC0U>
Cc: netmod@ietf.org
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 17:31:10 -0000

--558ae952_72b9ff68_123
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi Martin,

The table you have is consistent with the proposal that we laid out in th=
e last interim. Now that we understand the problem, it=E2=80=99d be great=
 to move on to solutions :)

Cheers,
r.




On 24 June 2015 at 10:39:53, Martin Bjorklund (mbj=40tail-f.com) wrote:

Kent Watsen <kwatsen=40juniper.net> wrote: =20
> =20
> =5BAs an individual contributor=5D =20
> =20
> I think terminology is mostly converging, with the primary hangup =20
> being if ephemeral/intended are =22configuration=22 or =22state=22. I'm=
 =20
> personally in favor of calling both =22configuration=22, as they would =
=20
> still contain values like =22auto=22, that require actualization to obt=
ain =20
> an operational state value...so I think, if it's not state, it must be =
=20
> config, right=3F Adding to this, we have a general understanding that =20
> anything that can be configured persistently can also (in theory) be =20
> configured ephemerally =E2=80=93 so it behaves like config in this way =
too... =20
> =20
> More importantly though, I believe that we're converging on a =20
> conceptual model and have general agreement that =22running + ephemeral=
 =20
> =3D intended=22 and =22intended + <actualization> =3D operational state=
=22. =20
> This seems obvious in hindsight, but it wasn't until the OpenConfig =20
> folks brought the =22intended=22 term that we wrote it down. =20

I don't think this covers what the open config people call =22actual =20
config=22. Suppose we have (ignoring ephemeral for simplicitly): =20

running operational state =20
------- ----------------- =20
t0 half half =20
t1 auto half =20
t4 auto full =20

I.e., at time t1, we set duplex to auto. After some time (t4) this is =20
reflected in the operational state. =20


In the open config model we'd have: =20

running actual config operational state =20
------- ------------- ----------------- =20
t0 half half half =20
t1 auto half half =20
t2 auto half (*) half =20
t3 auto auto half =20
t4 auto auto auto =20

This illustrates that at time t2, the actual config is still half (*) =20
in an asynchrounous implementation. At time t3, the actual config is =20
in sync with the intended config, and at time t4 the operational state =20
has been affected. =20


> I hope we can converge on the terminology and conceptual model in the =20
> near term, and then use this new foundation for articulating I2RS and =20
> OpenConfig solutions. =20

+1 This should be our focus. =20


/martin =20
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F
netmod mailing list
netmod=40ietf.org
https://www.ietf.org/mailman/listinfo/netmod

--558ae952_72b9ff68_123
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<html><head><style>
body =7B
	font-family: =22Helvetica Neue=22, Helvetica, Arial, sans-serif;
	padding:1em;
	margin:auto;
	background:=23fefefe;
=7D

h1, h2, h3, h4, h5, h6 =7B
	font-weight: bold;
=7D

h1 =7B
	color: =23000000;
	font-size: 28pt;
=7D

h2 =7B
	border-bottom: 1px solid =23CCCCCC;
	color: =23000000;
	font-size: 24px;
=7D

h3 =7B
	font-size: 18px;
=7D

h4 =7B
	font-size: 16px;
=7D

h5 =7B
	font-size: 14px;
=7D

h6 =7B
	color: =23777777;
	background-color: inherit;
	font-size: 14px;
=7D

hr =7B
	height: 0.2em;
	border: 0;
	color: =23CCCCCC;
	background-color: =23CCCCCC;
    display: inherit;
=7D

p, blockquote, ul, ol, dl, li, table, pre =7B
	margin: 15px 0;
=7D

a, a:visited =7B
	color: =234183C4;
	background-color: inherit;
	text-decoration: none;
=7D

=23message =7B
	border-radius: 6px;
	border: 1px solid =23ccc;
	display:block;
	width:100%;
	height:60px;
	margin:6px 0px;
=7D

button, =23ws =7B
	font-size: 12 pt;
	padding: 4px 6px;
	border-radius: 5px;
	border: 1px solid =23bbb;
	background-color: =23eee;
=7D

code, pre, =23ws, =23message =7B
	font-family: Monaco;
	font-size: 10pt;
	border-radius: 3px;
	background-color: =23=468=468=468;
	color: inherit;
=7D

code =7B
	border: 1px solid =23EAEAEA;
	margin: 0 2px;
	padding: 0 5px;
=7D

pre =7B
	border: 1px solid =23CCCCCC;
	overflow: auto;
	padding: 4px 8px;
=7D

pre > code =7B
	border: 0;
	margin: 0;
	padding: 0;
=7D

=23ws =7B background-color: =23f8f8f8; =7D


.bloop=5Fmarkdown table =7B
border-collapse: collapse; =20
font-family: Helvetica, arial, freesans, clean, sans-serif; =20
color: rgb(51, 51, 51); =20
font-size: 15px; line-height: 25px;
padding: 0; =7D

.bloop=5Fmarkdown table tr =7B
border-top: 1px solid =23cccccc;
background-color: white;
margin: 0;
padding: 0; =7D
    =20
.bloop=5Fmarkdown table tr:nth-child(2n) =7B
background-color: =23f8f8f8; =7D

.bloop=5Fmarkdown table tr th =7B
font-weight: bold;
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr td =7B
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr th :first-child, table tr td :first-child =7B
margin-top: 0; =7D

.bloop=5Fmarkdown table tr th :last-child, table tr td :last-child =7B
margin-bottom: 0; =7D

.bloop=5Fmarkdown blockquote=7B
  border-left: 4px solid =23dddddd;
  padding: 0 15px;
  color: =23777777; =7D
  blockquote > :first-child =7B
    margin-top: 0; =7D
  blockquote > :last-child =7B
    margin-bottom: 0; =7D

code, pre, =23ws, =23message =7B
    word-break: normal;
    word-wrap: normal;
=7D

hr =7B
    display: inherit;
=7D

.bloop=5Fmarkdown :first-child =7B
    -webkit-margin-before: 0;
=7D

code, pre, =23ws, =23message =7B
    font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
=7D


.send =7B color:=2377bb77; =7D
.server =7B color:=237799bb; =7D
.error =7B color:=23AA0000; =7D</style></head><body style=3D=22word-wrap:=
 break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-sp=
ace;=22><div class=3D=22bloop=5Fmarkdown=22><p>Hi Martin,</p>

<p>The table you have is consistent with the proposal that we laid out in=
 the last interim. Now that we understand the problem, it=E2=80=99d be gr=
eat to move on to solutions :)</p>

<p>Cheers,<br>
r.</p>

<p></p></div><div class=3D=22bloop=5Foriginal=5Fhtml=22><style>body=7Bfon=
t-family:Consolas,Arial;font-size:13px=7D</style><div id=3D=22bloop=5Fcus=
tomfont=22 style=3D=22font-family:Consolas,Arial;font-size:13px; color: r=
gba(0,0,0,1.0); margin: 0px; line-height: auto;=22><br></div> <br> <div i=
d=3D=22bloop=5Fsign=5F1435166931473454080=22 class=3D=22bloop=5Fsign=22><=
/div> <br><p class=3D=22airmail=5Fon=22 style=3D=22color:=23000;=22>On 24=
 June 2015 at 10:39:53, Martin Bjorklund (<a href=3D=22mailto:mbj=40tail-=
f.com=22>mbj=40tail-f.com</a>) wrote:</p> <blockquote type=3D=22cite=22 c=
lass=3D=22clean=5Fbq=22><span><div><div></div><div>Kent Watsen &lt;kwatse=
n=40juniper.net&gt; wrote:
<br>&gt; =20
<br>&gt; =5BAs an individual contributor=5D
<br>&gt; =20
<br>&gt; I think terminology is mostly converging, with the primary hangu=
p
<br>&gt; being if ephemeral/intended are =22configuration=22 or =22state=22=
.  I'm
<br>&gt; personally in favor of calling both =22configuration=22, as they=
 would
<br>&gt; still contain values like =22auto=22, that require actualization=
 to obtain
<br>&gt; an operational state value...so I think, if it's not state, it m=
ust be
<br>&gt; config, right=3F  Adding to this, we have a general understandin=
g that
<br>&gt; anything that can be configured persistently can also (in theory=
) be
<br>&gt; configured ephemerally =E2=80=93 so it behaves like config in th=
is way too...
<br>&gt; =20
<br>&gt; More importantly though, I believe that we're converging on a
<br>&gt; conceptual model and have general agreement that =22running + ep=
hemeral
<br>&gt; =3D intended=22 and =22intended + &lt;actualization&gt; =3D oper=
ational state=22.
<br>&gt; This seems obvious in hindsight, but it wasn't until the OpenCon=
fig
<br>&gt; folks brought the =22intended=22 term that we wrote it down.
<br>
<br>I don't think this covers what the open config people call =22actual
<br>config=22.   Suppose we have (ignoring ephemeral for simplicitly):
<br>
<br>       running        operational state
<br>       -------        -----------------
<br>  t0    half              half
<br>  t1    auto              half
<br>  t4    auto              full
<br>
<br>I.e., at time t1, we set duplex to auto.  After some time (t4) this i=
s
<br>reflected in the operational state.
<br>
<br>
<br>In the open config model we'd have:
<br>
<br>       running      actual config    operational state
<br>       -------      -------------    -----------------
<br>  t0    half            half             half
<br>  t1    auto            half             half
<br>  t2    auto            half (*)         half
<br>  t3    auto            auto             half
<br>  t4    auto            auto             auto
<br>
<br>This illustrates that at time t2, the actual config is still half (*)=

<br>in an asynchrounous implementation.  At time t3, the actual config is=

<br>in sync with the intended config, and at time t4 the operational stat=
e
<br>has been affected.
<br>
<br>
<br>&gt; I hope we can converge on the terminology and conceptual model i=
n the
<br>&gt; near term, and then use this new foundation for articulating I2R=
S and
<br>&gt; OpenConfig solutions.
<br>
<br>+1  This should be our focus.
<br>
<br>
<br>/martin
<br>=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F<=
br>netmod mailing list<br>netmod=40ietf.org<br>https://www.ietf.org/mailm=
an/listinfo/netmod<br></div></div></span></blockquote></div><div class=3D=
=22bloop=5Fmarkdown=22><p></p></div></body></html>
--558ae952_72b9ff68_123--


From nobody Wed Jun 24 10:40:06 2015
Return-Path: <rjs@rob.sh>
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 7326F1A89AC for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 10:40:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level: 
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=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 2KbjAieq4sIX for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 10:40:01 -0700 (PDT)
Received: from cappuccino.rob.sh (cappuccino.rob.sh [IPv6:2a03:9800:10:4c::cafe:b00c]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 92DC81A8974 for <netmod@ietf.org>; Wed, 24 Jun 2015 10:40:00 -0700 (PDT)
Received: from [86.176.100.75] (helo=piccolo.local) by cappuccino.rob.sh with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from <rjs@rob.sh>) id 1Z7oeN-0006vw-PX; Wed, 24 Jun 2015 18:39:51 +0100
Date: Wed, 24 Jun 2015 18:39:44 +0100
From: Rob Shakir <rjs@rob.sh>
To: NETMOD Working Group <netmod@ietf.org>, Benoit Claise <bclaise@cisco.com>
Message-ID: <etPan.558aeb61.2c1c2992.123@piccolo.local>
In-Reply-To: <55897ED5.2080809@cisco.com>
References: <55897ED5.2080809@cisco.com>
X-Mailer: Airmail Beta (308)
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="558aeb61_440663e5_123"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/0myls9UszURrzYAdQ6JP-2qai3g>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 17:40:05 -0000

--558aeb61_440663e5_123
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi netmod,

Thanks very much to everyone that has considered the problem that we laid=
 out on the last interim call. I think we=E2=80=99re starting to reach a =
common understanding.

If I can make some slight tweaks to the diagrams that have been distribut=
ed: =20


And some further clarifying points/explanations:

We have not been considering ephemeral and startup as separate items. As =
far as we see these, the startup is simply a subset of the intended state=
 that happens to persist after a system reboot, or seed the initial set o=
f intended states when the system restarts. Ephemeral state is simply int=
ended state that is not persistent.
Intended and applied/actualised state are views of the running configurat=
ion.
All intention is written to the intended configuration (whether it be by =
CLI, a human, an NMS via NETCON=46, a system agent, etc.) =E2=80=93 which=
 then transitions to becoming the applied/actualised configuration. This =
is based on either an explicit request to do so (=E2=80=98commit=E2=80=99=
) or may be implicit. The success of the intended configuration becoming =
the applied configuration may be due to time deltas or condition, as Kent=
 drew.
In what we referred to as a =E2=80=98synchronous=E2=80=99 system =E2=80=93=
 we expect the attempt to make the intended state transition to the actua=
l state to be completed when the operation returns (e.g., after a <commit=
 />) then the <ok /> should return only when this intention has been appl=
ied.
We require the ability for an NMS to be able to see both the intended and=
 the actual configuration =E2=80=93 such that it can check whether its in=
tention is currently the applied configuration, or has not yet been appli=
ed due to some external dependency (e.g., line card not plugged in).
A portion of the operational state date (marked operational: true) is the=
 set of variables that are not related to state that an external system c=
an assert the value of =E2=80=94 for example, a counter, or a negotiated =
protocol timer.
We believe that there is an important advantage in being able to syntacti=
cally / structurally retrieve the set of state that is associated with so=
me set of intended state. This is not =E2=80=98easy=E2=80=99 today, as th=
ere is no common way to link the two =E2=80=93 especially as models are c=
omposed. This does not imply that we understand the semantics of that set=
 of state =E2=80=93 but simply that we can retrieve all state data that r=
elates to a particular entity that we expressed some intention about (e.g=
., all state data that corresponds to a particular interface or BGP peer)=
. This division is very important, since there is separation between elem=
ents of the NMS that interact with the network, and those that do need to=
 understand the semantics/contents of the data leaves. =C2=A0=46or some O=
penConfig operators, this separation of concerns is part of their current=
 NMS software architecture.
In terms of accessing subsets of leaves, we need to be able to:
Retrieve the intended state =E2=80=93 this is done with a method that doe=
s similar to get-config in NETCON=46.
Retrieve the actual + operational state of the device =E2=80=93 done with=
 a method similar to get.
Retrieve only the operational state =E2=80=93 done with a method such as =
get-operational.
This means that we need to be able to distinguish intended/actual/operati=
onal variables leaves through the data model.
We did not define a requirement for a get-actual type call in openconfig-=
opstate, but there may be solutions that do want something like this (as =
per Benoit=E2=80=99s mail to the netmod list yesterday, where it is refer=
enced as get-config-false).
We do not require that the two trees for intended and actual have identic=
al paths in the data model. They are the same set of leaves =E2=80=93 but=
 it MUST be possible to check both. In openconfig-opstate then we consist=
ently achieve this by having the same set of leaves (typically grouping =46=
OO-config) that is included under both container config (where they are i=
ntended) and container state (where they are applied)). Since there is a =
common way to be able to relate these through the structure, then this is=
 OK for us.
Thanks again.

Kind regards,
Anees, Marcus & Rob.

On 23 June 2015 at 16:44:36, Benoit Claise (bclaise=40cisco.com) wrote:

Dear all,

In order to clarify the situation, I compiled some points from my notes a=
nd created a couple of diagrams. This was initially created for my person=
al use, but if it helps with the discussion, please use it.

The first open issue is terminology IMO.
=C2=A0=C2=A0=C2=A0 - intended, applied
=C2=A0=C2=A0=C2=A0 - synchronous/asynchronous
There are two synchronous levels: the protocol (NETCON=46) and network el=
ement implementation. As Kent mentioned: =22Kent NETCON=46 is a synchrono=
us protocol but state may change asynchronously.=22
It would beneficial for the authors to explain what happens in the follow=
ing NETCON=46 server two cases:
=C2=A0=C2=A0=C2=A0 - an example of (non-NETCON=46) asynchronous: RPC and =
leaf update (first intended, then applied)
=C2=A0=C2=A0=C2=A0 - example of full NETCON=46 synchronous: RPC and leaf =
update. In this case, duplicate leaf.

The second open issue is that it's not clear which exact features are req=
uested: a breakdown per R=46C6087bis, per YANG language, and per NETCON=46=
 would help. This is what I've been trying to do with the couple of attac=
hed pictures. I would like to get confirmation from the openconfig that t=
he understanding is right.

=5B=E2=80=A6snip images=E2=80=A6=5D
Some additional questions:
- Don't we need an extra /startup for startup parameters=3F Or startup pa=
rameters will always be the intended configuration=3F
- =22The way we represent op-state must be consistent across all models=22=

What if one of the models is not consistent=3F In that case, only the des=
cription will make the link between the config-false and config-true leaf=
, right=3F So don't we need that link anyway=3F
That makes the link to =22Ability to relate configuration to operational =
state must be consistent=22.
=C2=A0=C2=A0=C2=A0

=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F =20
netmod mailing list =20
netmod=40ietf.org =20
https://www.ietf.org/mailman/listinfo/netmod =20

--558aeb61_440663e5_123
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<html><head><style>
body =7B
	font-family: =22Helvetica Neue=22, Helvetica, Arial, sans-serif;
	padding:1em;
	margin:auto;
	background:=23fefefe;
=7D

h1, h2, h3, h4, h5, h6 =7B
	font-weight: bold;
=7D

h1 =7B
	color: =23000000;
	font-size: 28pt;
=7D

h2 =7B
	border-bottom: 1px solid =23CCCCCC;
	color: =23000000;
	font-size: 24px;
=7D

h3 =7B
	font-size: 18px;
=7D

h4 =7B
	font-size: 16px;
=7D

h5 =7B
	font-size: 14px;
=7D

h6 =7B
	color: =23777777;
	background-color: inherit;
	font-size: 14px;
=7D

hr =7B
	height: 0.2em;
	border: 0;
	color: =23CCCCCC;
	background-color: =23CCCCCC;
    display: inherit;
=7D

p, blockquote, ul, ol, dl, li, table, pre =7B
	margin: 15px 0;
=7D

a, a:visited =7B
	color: =234183C4;
	background-color: inherit;
	text-decoration: none;
=7D

=23message =7B
	border-radius: 6px;
	border: 1px solid =23ccc;
	display:block;
	width:100%;
	height:60px;
	margin:6px 0px;
=7D

button, =23ws =7B
	font-size: 12 pt;
	padding: 4px 6px;
	border-radius: 5px;
	border: 1px solid =23bbb;
	background-color: =23eee;
=7D

code, pre, =23ws, =23message =7B
	font-family: Monaco;
	font-size: 10pt;
	border-radius: 3px;
	background-color: =23=468=468=468;
	color: inherit;
=7D

code =7B
	border: 1px solid =23EAEAEA;
	margin: 0 2px;
	padding: 0 5px;
=7D

pre =7B
	border: 1px solid =23CCCCCC;
	overflow: auto;
	padding: 4px 8px;
=7D

pre > code =7B
	border: 0;
	margin: 0;
	padding: 0;
=7D

=23ws =7B background-color: =23f8f8f8; =7D


.bloop=5Fmarkdown table =7B
border-collapse: collapse; =20
font-family: Helvetica, arial, freesans, clean, sans-serif; =20
color: rgb(51, 51, 51); =20
font-size: 15px; line-height: 25px;
padding: 0; =7D

.bloop=5Fmarkdown table tr =7B
border-top: 1px solid =23cccccc;
background-color: white;
margin: 0;
padding: 0; =7D
    =20
.bloop=5Fmarkdown table tr:nth-child(2n) =7B
background-color: =23f8f8f8; =7D

.bloop=5Fmarkdown table tr th =7B
font-weight: bold;
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr td =7B
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr th :first-child, table tr td :first-child =7B
margin-top: 0; =7D

.bloop=5Fmarkdown table tr th :last-child, table tr td :last-child =7B
margin-bottom: 0; =7D

.bloop=5Fmarkdown blockquote=7B
  border-left: 4px solid =23dddddd;
  padding: 0 15px;
  color: =23777777; =7D
  blockquote > :first-child =7B
    margin-top: 0; =7D
  blockquote > :last-child =7B
    margin-bottom: 0; =7D

code, pre, =23ws, =23message =7B
    word-break: normal;
    word-wrap: normal;
=7D

hr =7B
    display: inherit;
=7D

.bloop=5Fmarkdown :first-child =7B
    -webkit-margin-before: 0;
=7D

code, pre, =23ws, =23message =7B
    font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
=7D


.send =7B color:=2377bb77; =7D
.server =7B color:=237799bb; =7D
.error =7B color:=23AA0000; =7D</style></head><body style=3D=22word-wrap:=
 break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-sp=
ace;=22><div class=3D=22bloop=5Fmarkdown=22><p></p></div><div class=3D=22=
bloop=5Foriginal=5Fhtml=22><style>body=7Bfont-family:Consolas,Arial;font-=
size:13px=7D</style><div id=3D=22bloop=5Fcustomfont=22 style=3D=22color: =
rgb(0, 0, 0); margin: 0px;=22><span id=3D=22docs-internal-guid-f6cbd15e-2=
6a3-3e23-69a7-1156acd768ff=22><font face=3D=22Consolas=22><p dir=3D=22ltr=
=22 style=3D=22line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;=22=
><span style=3D=22background-color: rgb(255, 255, 255); vertical-align: b=
aseline; white-space: pre-wrap;=22>Hi netmod,</span></p><p dir=3D=22ltr=22=
 style=3D=22line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;=22><s=
pan style=3D=22background-color: rgb(255, 255, 255); vertical-align: base=
line; white-space: pre-wrap;=22><br></span></p><p dir=3D=22ltr=22 style=3D=
=22line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;=22><span style=
=3D=22background-color: rgb(255, 255, 255); vertical-align: baseline; whi=
te-space: pre-wrap;=22>Thanks very much to everyone that has considered t=
he problem that we laid out on the last interim call. I think we=E2=80=99=
re starting to reach a common understanding.</span></p><p dir=3D=22ltr=22=
 style=3D=22line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;=22><s=
pan style=3D=22background-color: rgb(255, 255, 255); vertical-align: base=
line; white-space: pre-wrap;=22><br></span></p><p dir=3D=22ltr=22 style=3D=
=22line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;=22><span style=
=3D=22background-color: rgb(255, 255, 255); vertical-align: baseline; whi=
te-space: pre-wrap;=22>If I can make some slight tweaks to the diagrams t=
hat have been distributed: </span></p><p dir=3D=22ltr=22 style=3D=22line-=
height: 1.38; margin-top: 0pt; margin-bottom: 0pt;=22><span style=3D=22ba=
ckground-color: rgb(255, 255, 255); vertical-align: baseline; white-space=
: pre-wrap;=22><img src=3D=22https://lh3.googleusercontent.com/0JcY=5Flr2=
uWmoIf27v83uUSqJQJZNJjq2Yl=46bPKO2X40927ht5ZUs8Dd8YMdjp=46zozJqpgTkaQyi-1=
HU3ug0ybOSKqxWrRNKr9Se=5FOKfuP36orRMZdD3-snb4hR=5FZEgxSdzz-eMo=22 width=3D=
=22624px;=22 height=3D=22544px;=22 style=3D=22border: none; transform: ro=
tate(0.00rad); -webkit-transform: rotate(0.00rad);=22 alt=3D=22img.png=22=
></span></p><br><p dir=3D=22ltr=22 style=3D=22line-height: 1.38; margin-t=
op: 0pt; margin-bottom: 0pt;=22><span style=3D=22background-color: rgb(25=
5, 255, 255); vertical-align: baseline; white-space: pre-wrap;=22>And som=
e further clarifying points/explanations:</span></p><br><ul style=3D=22ma=
rgin-top: 0pt; margin-bottom: 0pt;=22><li dir=3D=22ltr=22 style=3D=22list=
-style-type: disc; background-color: rgb(255, 255, 255); vertical-align: =
baseline; margin-left: 15px;=22><p dir=3D=22ltr=22 style=3D=22line-height=
:1.38;margin-top:0pt;margin-bottom:0pt;=22><span style=3D=22vertical-alig=
n: baseline; white-space: pre-wrap;=22>We have not been considering ephem=
eral and startup as separate items. As far as we see these, the startup i=
s simply a subset of the intended state that happens to persist after a s=
ystem reboot, or seed the initial set of intended states when the system =
restarts. Ephemeral state is simply intended state that is not persistent=
.</span></p></li><li dir=3D=22ltr=22 style=3D=22list-style-type: disc; ba=
ckground-color: rgb(255, 255, 255); vertical-align: baseline; margin-left=
: 15px;=22><p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;=
margin-bottom:0pt;=22><span style=3D=22vertical-align: baseline; white-sp=
ace: pre-wrap;=22>Intended and applied/actualised state are views of the =
running configuration.</span></p></li><li dir=3D=22ltr=22 style=3D=22list=
-style-type: disc; background-color: rgb(255, 255, 255); vertical-align: =
baseline; margin-left: 15px;=22><p dir=3D=22ltr=22 style=3D=22line-height=
:1.38;margin-top:0pt;margin-bottom:0pt;=22><span style=3D=22vertical-alig=
n: baseline; white-space: pre-wrap;=22>All intention is written to the in=
tended configuration (whether it be by CLI, a human, an NMS via NETCON=46=
, a system agent, etc.) =E2=80=93 which then transitions to becoming the =
applied/actualised configuration. This is based on either an explicit req=
uest to do so (=E2=80=98commit=E2=80=99) or may be implicit. The success =
of the intended configuration becoming the applied configuration may be d=
ue to time deltas or condition, as Kent drew.</span></p></li><li dir=3D=22=
ltr=22 style=3D=22list-style-type: disc; background-color: rgb(255, 255, =
255); vertical-align: baseline; margin-left: 15px;=22><p dir=3D=22ltr=22 =
style=3D=22line-height:1.38;margin-top:0pt;margin-bottom:0pt;=22><span st=
yle=3D=22vertical-align: baseline; white-space: pre-wrap;=22>In what we r=
eferred to as a =E2=80=98synchronous=E2=80=99 system =E2=80=93 we expect =
the attempt to make the intended state transition to the actual state to =
be completed when the operation returns (e.g., after a &lt;commit /&gt;) =
then the &lt;ok /&gt; should return only when this intention has been app=
lied.</span></p></li><li dir=3D=22ltr=22 style=3D=22list-style-type: disc=
; background-color: rgb(255, 255, 255); vertical-align: baseline; margin-=
left: 15px;=22><p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:=
0pt;margin-bottom:0pt;=22><span style=3D=22vertical-align: baseline; whit=
e-space: pre-wrap;=22>We require the ability for an NMS to be able to see=
 both the intended and the actual configuration =E2=80=93 such that it ca=
n check whether its intention is currently the applied configuration, or =
has not yet been applied due to some external dependency (e.g., line card=
 not plugged in).</span></p></li><li dir=3D=22ltr=22 style=3D=22list-styl=
e-type: disc; background-color: rgb(255, 255, 255); vertical-align: basel=
ine; margin-left: 15px;=22><p dir=3D=22ltr=22 style=3D=22line-height:1.38=
;margin-top:0pt;margin-bottom:0pt;=22><span style=3D=22vertical-align: ba=
seline; white-space: pre-wrap;=22>A portion of the operational state date=
 (marked operational: true) is the set of variables that are not related =
to state that an external system can assert the value of =E2=80=94 for ex=
ample, a counter, or a negotiated protocol timer.</span></p></li><li dir=3D=
=22ltr=22 style=3D=22list-style-type: disc; background-color: rgb(255, 25=
5, 255); vertical-align: baseline; margin-left: 15px;=22><p dir=3D=22ltr=22=
 style=3D=22line-height:1.38;margin-top:0pt;margin-bottom:0pt;=22><span s=
tyle=3D=22vertical-align: baseline; white-space: pre-wrap;=22>We believe =
that there is an important advantage in being able to syntactically / str=
ucturally retrieve the set of state that is associated with some set of i=
ntended state. This is not =E2=80=98easy=E2=80=99 today, as there is no c=
ommon way to link the two =E2=80=93 especially as models are composed. Th=
is does not imply that we understand the semantics of that set of state =E2=
=80=93 but simply that we can retrieve all state data that relates to a p=
articular entity that we expressed some intention about (e.g., all state =
data that corresponds to a particular interface or BGP peer). This divisi=
on is very important, since there is separation between elements of the N=
MS that interact with the network, and those that do need to understand t=
he semantics/contents of the data leaves. &nbsp;=46or some OpenConfig ope=
rators, this separation of concerns is part of their current NMS software=
 architecture.</span></p></li><li dir=3D=22ltr=22 style=3D=22list-style-t=
ype: disc; background-color: rgb(255, 255, 255); vertical-align: baseline=
; margin-left: 15px;=22><p dir=3D=22ltr=22 style=3D=22line-height:1.38;ma=
rgin-top:0pt;margin-bottom:0pt;=22><span style=3D=22vertical-align: basel=
ine; white-space: pre-wrap;=22>In terms of accessing subsets of leaves, w=
e need to be able to:</span></p></li><ul style=3D=22margin-top:0pt;margin=
-bottom:0pt;=22><li dir=3D=22ltr=22 style=3D=22list-style-type: circle; b=
ackground-color: rgb(255, 255, 255); vertical-align: baseline; margin-lef=
t: 15px;=22><p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt=
;margin-bottom:0pt;=22><span style=3D=22vertical-align: baseline; white-s=
pace: pre-wrap;=22>Retrieve the intended state =E2=80=93 this is done wit=
h a method that does similar to get-config in NETCON=46.</span></p></li><=
li dir=3D=22ltr=22 style=3D=22list-style-type: circle; background-color: =
rgb(255, 255, 255); vertical-align: baseline; margin-left: 15px;=22><p di=
r=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bottom:0p=
t;=22><span style=3D=22vertical-align: baseline; white-space: pre-wrap;=22=
>Retrieve the actual + operational state of the device =E2=80=93 done wit=
h a method similar to get.</span></p></li><li dir=3D=22ltr=22 style=3D=22=
list-style-type: circle; background-color: rgb(255, 255, 255); vertical-a=
lign: baseline; margin-left: 15px;=22><p dir=3D=22ltr=22 style=3D=22line-=
height:1.38;margin-top:0pt;margin-bottom:0pt;=22><span style=3D=22vertica=
l-align: baseline; white-space: pre-wrap;=22>Retrieve only the operationa=
l state =E2=80=93 done with a method such as get-operational.</span></p><=
/li><li dir=3D=22ltr=22 style=3D=22list-style-type: circle; background-co=
lor: rgb(255, 255, 255); vertical-align: baseline; margin-left: 15px;=22>=
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt;=22><span style=3D=22vertical-align: baseline; white-space: pre-wr=
ap;=22>This means that we need to be able to distinguish intended/actual/=
operational variables leaves through the data model.</span></p></li><li d=
ir=3D=22ltr=22 style=3D=22list-style-type: circle; background-color: rgb(=
255, 255, 255); vertical-align: baseline; margin-left: 15px;=22><p dir=3D=
=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bottom:0pt;=22=
><span style=3D=22vertical-align: baseline; white-space: pre-wrap;=22>We =
did not define a requirement for a get-actual type call in openconfig-ops=
tate, but there may be solutions that do want something like this (as per=
 Benoit=E2=80=99s mail to the netmod list yesterday, where it is referenc=
ed as get-config-false).</span></p></li></ul><li dir=3D=22ltr=22 style=3D=
=22list-style-type: disc; background-color: rgb(255, 255, 255); vertical-=
align: baseline; margin-left: 15px;=22><p dir=3D=22ltr=22 style=3D=22line=
-height:1.38;margin-top:0pt;margin-bottom:0pt;=22><span style=3D=22vertic=
al-align: baseline; white-space: pre-wrap;=22>We do not require that the =
two trees for intended and actual have identical paths in the data model.=
 They are the same set of leaves =E2=80=93 but it MUST be possible to che=
ck both. In openconfig-opstate then we consistently achieve this by havin=
g the same set of leaves (typically grouping =46OO-config) that is includ=
ed under both container config (where they are intended) and container st=
ate (where they are applied)). Since there is a common way to be able to =
relate these through the structure, then this is OK for us.</span></p></l=
i></ul></font></span></div><font face=3D=22Consolas=22>Thanks again.</fon=
t></div><div class=3D=22bloop=5Foriginal=5Fhtml=22><font face=3D=22Consol=
as=22><br></font></div><div class=3D=22bloop=5Foriginal=5Fhtml=22><font f=
ace=3D=22Consolas=22>Kind regards,</font></div><div class=3D=22bloop=5For=
iginal=5Fhtml=22><font face=3D=22Consolas=22>Anees, Marcus &amp; Rob.</fo=
nt></div><div class=3D=22bloop=5Foriginal=5Fhtml=22> <div id=3D=22bloop=5F=
sign=5F1435167285448070144=22 class=3D=22bloop=5Fsign=22></div> <br><p cl=
ass=3D=22airmail=5Fon=22 style=3D=22color:=23000;=22>On 23 June 2015 at 1=
6:44:36, Benoit Claise (<a href=3D=22mailto:bclaise=40cisco.com=22>bclais=
e=40cisco.com</a>) wrote:</p> <blockquote type=3D=22cite=22 class=3D=22cl=
ean=5Fbq=22><span><div bgcolor=3D=22=23=46=46=46=46=46=46=22 text=3D=22=23=
000000=22><div></div><div>




<title></title>


Dear all,<br>
<br>
In order to clarify the situation, I compiled some points from my
notes and created a couple of diagrams. This was initially created
for my personal use, but if it helps with the discussion, please
use it.<br>
<br>
The first open issue is terminology IMO.<br>
&nbsp;&nbsp;&nbsp; - intended, applied<br>
&nbsp;&nbsp;&nbsp; - synchronous/asynchronous<br>
There are two synchronous levels: the protocol (NETCON=46) and
network element implementation. As Kent mentioned: =22Kent NETCON=46 is
a synchronous protocol but state may change asynchronously.=22<br>
<div class=3D=22ace-line=22 id=3D=22magicdomid1295=22><span class=3D=22au=
thor-a-bb1xinz83zz90zz90zjz74zz76zuugn=22>It would beneficial for
the authors to explain what happens in the following NETCON=46 server
two cases:<br></span> <span class=3D=22author-a-bb1xinz83zz90zz90zjz74zz7=
6zuugn=22>&nbsp;&nbsp;&nbsp; - an
example of (non-NETCON=46) asynchronous: RPC and leaf update (first
intended, then applied)<br>
&nbsp;&nbsp;&nbsp; - example of full NETCON=46 synchronous: RPC and
leaf update. In this case, duplicate leaf.<br></span></div>
<br>
The second open issue is that it's not clear which exact features
are requested: a breakdown per R=46C6087bis, per YANG language, and
per NETCON=46 would help. This is what I've been trying to do with
the couple of attached pictures. I would like to get confirmation
from the openconfig that the understanding is right.<br><br></div></div><=
/span></blockquote><div class=3D=22bloop=5Foriginal=5Fhtml=22>=5B=E2=80=A6=
snip images=E2=80=A6=5D</div><blockquote type=3D=22cite=22 class=3D=22cle=
an=5Fbq=22><span><div bgcolor=3D=22=23=46=46=46=46=46=46=22 text=3D=22=23=
000000=22><div>
Some additional questions:<br>
- Don't we need an extra /startup for startup parameters=3F Or
startup parameters will always be the intended configuration=3F<br>
- =22The way we represent op-state must be consistent across all
models=22<br>
What if one of the models is not consistent=3F In that case, only the
description will make the link between the config-false and
config-true leaf, right=3F So don't we need that link anyway=3F<br>
That makes the link to =22Ability to relate configuration to
operational state must be consistent=22.<br>
&nbsp;&nbsp;&nbsp;<br>
<br>


=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F
<br>netmod mailing list
<br>netmod=40ietf.org
<br>https://www.ietf.org/mailman/listinfo/netmod
<br></div></div></span></blockquote></div><div class=3D=22bloop=5Fmarkdow=
n=22><p></p></div></body></html>
--558aeb61_440663e5_123--


From nobody Wed Jun 24 10:52:07 2015
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 E89F71A9236 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 10:52:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=unavailable
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 ABFiP1qzvXK0 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 10:52:04 -0700 (PDT)
Received: from mail-la0-f43.google.com (mail-la0-f43.google.com [209.85.215.43]) (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 684DE1A913B for <netmod@ietf.org>; Wed, 24 Jun 2015 10:52:04 -0700 (PDT)
Received: by lagi2 with SMTP id i2so30742206lag.2 for <netmod@ietf.org>; Wed, 24 Jun 2015 10:52: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=d1ZEurmk1Km24UUKNj0EXm8F6A8YO/MNFKVxBkj9/9U=; b=GNkUY8dOnUEpE6f9669UDKkVLfzxWyAsLAZMOMZpZ+xMOX8rZXFehY7OJqdR2EcLlT bKNQxZOzBdmHHil5uu4vZkJk2I50mz9CMq/H0N+1aHTHwVPzUfkdMU2ZycdwML7CXQyR mWo2YANpCkrLCnopPy6vr07/12rERzbdy58lM9c6O2N5sHL6Zpd0KQmTzdi1DnjEbLL/ CP6mHMoRX9c1m8aP9D2Vgftb1NWmr2cHm6ikazvUW4GgfZuv7AP3/wKg45yNcQ4WH0Ur WZ/tgUDyZ+SVEGTQMaLbdq7XlojHfim+ykFp2s7oBMICxksfr/tOj+GqiScf6pgDtPLn tIFQ==
X-Gm-Message-State: ALoCoQnTMcOHhCDVWH2WoATi256M6LpPKEj2bXga3SDDiuHGHP01L5ju26igtT0biSKs/APco0o4
MIME-Version: 1.0
X-Received: by 10.112.186.35 with SMTP id fh3mr40959235lbc.82.1435168322812; Wed, 24 Jun 2015 10:52:02 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 24 Jun 2015 10:52:02 -0700 (PDT)
In-Reply-To: <201506241714.t5OHEndU036985@idle.juniper.net>
References: <CABCOCHSs91GLt3yPpuhgfiMN0JgTeTE91oV+6__VPVRPUN8U-w@mail.gmail.com> <201506241714.t5OHEndU036985@idle.juniper.net>
Date: Wed, 24 Jun 2015 10:52:02 -0700
Message-ID: <CABCOCHTWmiqJoXUSAzuy3VZUohScnnGgykWLUb9pG2+Ef=UXzA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Phil Shafer <phil@juniper.net>
Content-Type: multipart/alternative; boundary=001a1134dcc81315580519472afa
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/0nKjTHrGBQwTYBLBq-KjqVJ7QiE>
Cc: "i2rs@ietf.org" <i2rs@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 17:52:06 -0000

--001a1134dcc81315580519472afa
Content-Type: text/plain; charset=UTF-8

On Wed, Jun 24, 2015 at 10:14 AM, Phil Shafer <phil@juniper.net> wrote:

> Andy Bierman writes:
> >> How is that expressed in the data model?  "auto" would not be an
> >> operational value for "duplex".  "none" would not be a valid
> >> configuration value, but would be the operational value for an
> >> empty port.
> >
> >good point -- the operational instance would not exist is the status is
> >'none'
>
> Why not?  The interface might exist but not have an ethernet
> cable plugged in.  "show interfaces" would show the physical
> instance, but duplex could be "none".
>
>

OK -- good point

In NETCONF terms, a new <get> parameter or
a new <get-operational> operation could be used
to read the operational datastore.


> Thanks,
>  Phil
>


Andy

--001a1134dcc81315580519472afa
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Jun 24, 2015 at 10:14 AM, Phil Shafer <span dir=3D"ltr">&lt;<a =
href=3D"mailto:phil@juniper.net" target=3D"_blank">phil@juniper.net</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">Andy Bierman writes:<br>
&gt;&gt; How is that expressed in the data model?=C2=A0 &quot;auto&quot; wo=
uld not be an<br>
&gt;&gt; operational value for &quot;duplex&quot;.=C2=A0 &quot;none&quot; w=
ould not be a valid<br>
&gt;&gt; configuration value, but would be the operational value for an<br>
&gt;&gt; empty port.<br>
&gt;<br>
&gt;good point -- the operational instance would not exist is the status is=
<br>
&gt;&#39;none&#39;<br>
<br>
Why not?=C2=A0 The interface might exist but not have an ethernet<br>
cable plugged in.=C2=A0 &quot;show interfaces&quot; would show the physical=
<br>
instance, but duplex could be &quot;none&quot;.<br>
<br></blockquote><div><br></div><div><br></div><div>OK -- good point</div><=
div><br></div><div>In NETCONF terms, a new &lt;get&gt; parameter or</div><d=
iv>a new &lt;get-operational&gt; operation could be used</div><div>to read =
the operational datastore.</div><div>=C2=A0</div><blockquote class=3D"gmail=
_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:=
1ex">
Thanks,<br>
=C2=A0Phil<br>
</blockquote></div><br></div><div class=3D"gmail_extra"><br></div><div clas=
s=3D"gmail_extra">Andy</div><div class=3D"gmail_extra"><br></div></div>

--001a1134dcc81315580519472afa--


From nobody Wed Jun 24 10:55:52 2015
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 23D8E1AC423 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 10:55:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 WXbkEgxbACI9 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 10:55:48 -0700 (PDT)
Received: from mail-lb0-f174.google.com (mail-lb0-f174.google.com [209.85.217.174]) (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 2417D1A90F7 for <netmod@ietf.org>; Wed, 24 Jun 2015 10:55:46 -0700 (PDT)
Received: by lbbpo10 with SMTP id po10so31076647lbb.3 for <netmod@ietf.org>; Wed, 24 Jun 2015 10:55:44 -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=Dd2h5/jBi+7xzbFd9/NHT/L3shB7DKC8d97TACd98NA=; b=ghzBVx3mbDJoem38hzO+7SX8eSqfs0CwEJeZG/U939S+kHwNcmtPnGB+8//dQIPFhm Y9VdvUCsD8PhZdWui5Y3s/K4OULe/gXOEEtiEJHcAL2p8kXcS6bUZGc5w69YpaaSNAja xwGh9piDkaoa7ny3MbkOcty81WiH1+p0bmyJqwsgdfOKGnSLKYCASOZ4IAdsjCniYYhx BRaXE6OjDKhyOH2ctLSY2R4PaXWj+qW4bjOKORl6Zxg+f/lwyysWHZ5krl7o/IJmRYY0 TRz5ehnGXEzNKtUGBHEr+6I4Vzule4k3cg9BhwakZs+oLh2k7cDSztr8Bg3wSpcE3H3y X1rg==
X-Gm-Message-State: ALoCoQkFI+OH4EttrDTQ0ANpUzkRYFYBM1oG9+auoqJnkmJ1g/JTsGa/hgbcLVOl/OawMyWt6YBQ
MIME-Version: 1.0
X-Received: by 10.152.204.7 with SMTP id ku7mr41112750lac.38.1435168544651; Wed, 24 Jun 2015 10:55:44 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 24 Jun 2015 10:55:44 -0700 (PDT)
In-Reply-To: <etPan.558aeb61.2c1c2992.123@piccolo.local>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local>
Date: Wed, 24 Jun 2015 10:55:44 -0700
Message-ID: <CABCOCHSw3_ZPkeoXqk2owd+W__zOnFY0HhwUNwcerH=bwWJOoA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Rob Shakir <rjs@rob.sh>
Content-Type: multipart/alternative; boundary=001a113430924c12d6051947378c
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/9aSMF5DVz2V3Rq5-I96pGW9WIew>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 17:55:52 -0000

--001a113430924c12d6051947378c
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi,

Not sure you are aware which parts of your diagram are already
standardized in NETCONF.  The startup and candidate capabilities
as defined in RFC 6241 are not related to operational state.


Andy


On Wed, Jun 24, 2015 at 10:39 AM, Rob Shakir <rjs@rob.sh> wrote:

> Hi netmod,
>
>
> Thanks very much to everyone that has considered the problem that we laid
> out on the last interim call. I think we=E2=80=99re starting to reach a c=
ommon
> understanding.
>
>
> If I can make some slight tweaks to the diagrams that have been
> distributed:
>
> [image: img.png]
>
> And some further clarifying points/explanations:
>
>
>    -
>
>    We have not been considering ephemeral and startup as separate items.
>    As far as we see these, the startup is simply a subset of the intended
>    state that happens to persist after a system reboot, or seed the initi=
al
>    set of intended states when the system restarts. Ephemeral state is si=
mply
>    intended state that is not persistent.
>    -
>
>    Intended and applied/actualised state are views of the running
>    configuration.
>    -
>
>    All intention is written to the intended configuration (whether it be
>    by CLI, a human, an NMS via NETCONF, a system agent, etc.) =E2=80=93 w=
hich then
>    transitions to becoming the applied/actualised configuration. This is =
based
>    on either an explicit request to do so (=E2=80=98commit=E2=80=99) or m=
ay be implicit. The
>    success of the intended configuration becoming the applied configurati=
on
>    may be due to time deltas or condition, as Kent drew.
>    -
>
>    In what we referred to as a =E2=80=98synchronous=E2=80=99 system =E2=
=80=93 we expect the
>    attempt to make the intended state transition to the actual state to b=
e
>    completed when the operation returns (e.g., after a <commit />) then t=
he
>    <ok /> should return only when this intention has been applied.
>    -
>
>    We require the ability for an NMS to be able to see both the intended
>    and the actual configuration =E2=80=93 such that it can check whether =
its intention
>    is currently the applied configuration, or has not yet been applied du=
e to
>    some external dependency (e.g., line card not plugged in).
>    -
>
>    A portion of the operational state date (marked operational: true) is
>    the set of variables that are not related to state that an external sy=
stem
>    can assert the value of =E2=80=94 for example, a counter, or a negotia=
ted protocol
>    timer.
>    -
>
>    We believe that there is an important advantage in being able to
>    syntactically / structurally retrieve the set of state that is associa=
ted
>    with some set of intended state. This is not =E2=80=98easy=E2=80=99 to=
day, as there is no
>    common way to link the two =E2=80=93 especially as models are composed=
. This does
>    not imply that we understand the semantics of that set of state =E2=80=
=93 but
>    simply that we can retrieve all state data that relates to a particula=
r
>    entity that we expressed some intention about (e.g., all state data th=
at
>    corresponds to a particular interface or BGP peer). This division is v=
ery
>    important, since there is separation between elements of the NMS that
>    interact with the network, and those that do need to understand the
>    semantics/contents of the data leaves.  For some OpenConfig operators,=
 this
>    separation of concerns is part of their current NMS software architect=
ure.
>    -
>
>    In terms of accessing subsets of leaves, we need to be able to:
>    -
>
>       Retrieve the intended state =E2=80=93 this is done with a method th=
at does
>       similar to get-config in NETCONF.
>       -
>
>       Retrieve the actual + operational state of the device =E2=80=93 don=
e with a
>       method similar to get.
>       -
>
>       Retrieve only the operational state =E2=80=93 done with a method su=
ch as
>       get-operational.
>       -
>
>       This means that we need to be able to distinguish
>       intended/actual/operational variables leaves through the data model=
.
>       -
>
>       We did not define a requirement for a get-actual type call in
>       openconfig-opstate, but there may be solutions that do want somethi=
ng like
>       this (as per Benoit=E2=80=99s mail to the netmod list yesterday, wh=
ere it is
>       referenced as get-config-false).
>       -
>
>    We do not require that the two trees for intended and actual have
>    identical paths in the data model. They are the same set of leaves =E2=
=80=93 but it
>    MUST be possible to check both. In openconfig-opstate then we consiste=
ntly
>    achieve this by having the same set of leaves (typically grouping
>    FOO-config) that is included under both container config (where they a=
re
>    intended) and container state (where they are applied)). Since there i=
s a
>    common way to be able to relate these through the structure, then this=
 is
>    OK for us.
>
> Thanks again.
>
> Kind regards,
> Anees, Marcus & Rob.
>
> On 23 June 2015 at 16:44:36, Benoit Claise (bclaise@cisco.com) wrote:
>
> Dear all,
>
> In order to clarify the situation, I compiled some points from my notes
> and created a couple of diagrams. This was initially created for my
> personal use, but if it helps with the discussion, please use it.
>
> The first open issue is terminology IMO.
>     - intended, applied
>     - synchronous/asynchronous
> There are two synchronous levels: the protocol (NETCONF) and network
> element implementation. As Kent mentioned: "Kent NETCONF is a synchronous
> protocol but state may change asynchronously."
> It would beneficial for the authors to explain what happens in the
> following NETCONF server two cases:
>     - an example of (non-NETCONF) asynchronous: RPC and leaf update (firs=
t
> intended, then applied)
>     - example of full NETCONF synchronous: RPC and leaf update. In this
> case, duplicate leaf.
>
> The second open issue is that it's not clear which exact features are
> requested: a breakdown per RFC6087bis, per YANG language, and per NETCONF
> would help. This is what I've been trying to do with the couple of attach=
ed
> pictures. I would like to get confirmation from the openconfig that the
> understanding is right.
>
> [=E2=80=A6snip images=E2=80=A6]
>
> Some additional questions:
> - Don't we need an extra /startup for startup parameters? Or startup
> parameters will always be the intended configuration?
> - "The way we represent op-state must be consistent across all models"
> What if one of the models is not consistent? In that case, only the
> description will make the link between the config-false and config-true
> leaf, right? So don't we need that link anyway?
> That makes the link to "Ability to relate configuration to operational
> state must be consistent".
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>
>

--001a113430924c12d6051947378c
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<div><br></div><div>Not sure you are aware which parts =
of your diagram are already</div><div>standardized in NETCONF.=C2=A0 The st=
artup and candidate capabilities</div><div>as defined in RFC 6241 are not r=
elated to operational state.</div><div><br></div><div><br></div><div>Andy</=
div><div><br></div></div><div class=3D"gmail_extra"><br><div class=3D"gmail=
_quote">On Wed, Jun 24, 2015 at 10:39 AM, Rob Shakir <span dir=3D"ltr">&lt;=
<a href=3D"mailto:rjs@rob.sh" target=3D"_blank">rjs@rob.sh</a>&gt;</span> w=
rote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;borde=
r-left:1px #ccc solid;padding-left:1ex"><div style=3D"word-wrap:break-word"=
><div><p></p></div><div><div style=3D"color:rgb(0,0,0);margin:0px"><span><f=
ont face=3D"Consolas"><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0=
pt;margin-bottom:0pt"><span style=3D"background-color:rgb(255,255,255);vert=
ical-align:baseline;white-space:pre-wrap">Hi netmod,</span></p><p dir=3D"lt=
r" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style=
=3D"background-color:rgb(255,255,255);vertical-align:baseline;white-space:p=
re-wrap"><br></span></p><p dir=3D"ltr" style=3D"line-height:1.38;margin-top=
:0pt;margin-bottom:0pt"><span style=3D"background-color:rgb(255,255,255);ve=
rtical-align:baseline;white-space:pre-wrap">Thanks very much to everyone th=
at has considered the problem that we laid out on the last interim call. I =
think we=E2=80=99re starting to reach a common understanding.</span></p><p =
dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><sp=
an style=3D"background-color:rgb(255,255,255);vertical-align:baseline;white=
-space:pre-wrap"><br></span></p><p dir=3D"ltr" style=3D"line-height:1.38;ma=
rgin-top:0pt;margin-bottom:0pt"><span style=3D"background-color:rgb(255,255=
,255);vertical-align:baseline;white-space:pre-wrap">If I can make some slig=
ht tweaks to the diagrams that have been distributed: </span></p><p dir=3D"=
ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span styl=
e=3D"background-color:rgb(255,255,255);vertical-align:baseline;white-space:=
pre-wrap"><img src=3D"https://lh3.googleusercontent.com/0JcY_lr2uWmoIf27v83=
uUSqJQJZNJjq2YlFbPKO2X40927ht5ZUs8Dd8YMdjpFzozJqpgTkaQyi-1HU3ug0ybOSKqxWrRN=
Kr9Se_OKfuP36orRMZdD3-snb4hR_ZEgxSdzz-eMo" width=3D"624px;" height=3D"544px=
;" style=3D"border:none" alt=3D"img.png"></span></p><br><p dir=3D"ltr" styl=
e=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style=3D"back=
ground-color:rgb(255,255,255);vertical-align:baseline;white-space:pre-wrap"=
>And some further clarifying points/explanations:</span></p><br><ul style=
=3D"margin-top:0pt;margin-bottom:0pt"><li dir=3D"ltr" style=3D"list-style-t=
ype:disc;background-color:rgb(255,255,255);vertical-align:baseline;margin-l=
eft:15px"><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-bo=
ttom:0pt"><span style=3D"vertical-align:baseline;white-space:pre-wrap">We h=
ave not been considering ephemeral and startup as separate items. As far as=
 we see these, the startup is simply a subset of the intended state that ha=
ppens to persist after a system reboot, or seed the initial set of intended=
 states when the system restarts. Ephemeral state is simply intended state =
that is not persistent.</span></p></li><li dir=3D"ltr" style=3D"list-style-=
type:disc;background-color:rgb(255,255,255);vertical-align:baseline;margin-=
left:15px"><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-b=
ottom:0pt"><span style=3D"vertical-align:baseline;white-space:pre-wrap">Int=
ended and applied/actualised state are views of the running configuration.<=
/span></p></li><li dir=3D"ltr" style=3D"list-style-type:disc;background-col=
or:rgb(255,255,255);vertical-align:baseline;margin-left:15px"><p dir=3D"ltr=
" style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style=
=3D"vertical-align:baseline;white-space:pre-wrap">All intention is written =
to the intended configuration (whether it be by CLI, a human, an NMS via NE=
TCONF, a system agent, etc.) =E2=80=93 which then transitions to becoming t=
he applied/actualised configuration. This is based on either an explicit re=
quest to do so (=E2=80=98commit=E2=80=99) or may be implicit. The success o=
f the intended configuration becoming the applied configuration may be due =
to time deltas or condition, as Kent drew.</span></p></li><li dir=3D"ltr" s=
tyle=3D"list-style-type:disc;background-color:rgb(255,255,255);vertical-ali=
gn:baseline;margin-left:15px"><p dir=3D"ltr" style=3D"line-height:1.38;marg=
in-top:0pt;margin-bottom:0pt"><span style=3D"vertical-align:baseline;white-=
space:pre-wrap">In what we referred to as a =E2=80=98synchronous=E2=80=99 s=
ystem =E2=80=93 we expect the attempt to make the intended state transition=
 to the actual state to be completed when the operation returns (e.g., afte=
r a &lt;commit /&gt;) then the &lt;ok /&gt; should return only when this in=
tention has been applied.</span></p></li><li dir=3D"ltr" style=3D"list-styl=
e-type:disc;background-color:rgb(255,255,255);vertical-align:baseline;margi=
n-left:15px"><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin=
-bottom:0pt"><span style=3D"vertical-align:baseline;white-space:pre-wrap">W=
e require the ability for an NMS to be able to see both the intended and th=
e actual configuration =E2=80=93 such that it can check whether its intenti=
on is currently the applied configuration, or has not yet been applied due =
to some external dependency (e.g., line card not plugged in).</span></p></l=
i><li dir=3D"ltr" style=3D"list-style-type:disc;background-color:rgb(255,25=
5,255);vertical-align:baseline;margin-left:15px"><p dir=3D"ltr" style=3D"li=
ne-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style=3D"vertical-al=
ign:baseline;white-space:pre-wrap">A portion of the operational state date =
(marked operational: true) is the set of variables that are not related to =
state that an external system can assert the value of =E2=80=94 for example=
, a counter, or a negotiated protocol timer.</span></p></li><li dir=3D"ltr"=
 style=3D"list-style-type:disc;background-color:rgb(255,255,255);vertical-a=
lign:baseline;margin-left:15px"><p dir=3D"ltr" style=3D"line-height:1.38;ma=
rgin-top:0pt;margin-bottom:0pt"><span style=3D"vertical-align:baseline;whit=
e-space:pre-wrap">We believe that there is an important advantage in being =
able to syntactically / structurally retrieve the set of state that is asso=
ciated with some set of intended state. This is not =E2=80=98easy=E2=80=99 =
today, as there is no common way to link the two =E2=80=93 especially as mo=
dels are composed. This does not imply that we understand the semantics of =
that set of state =E2=80=93 but simply that we can retrieve all state data =
that relates to a particular entity that we expressed some intention about =
(e.g., all state data that corresponds to a particular interface or BGP pee=
r). This division is very important, since there is separation between elem=
ents of the NMS that interact with the network, and those that do need to u=
nderstand the semantics/contents of the data leaves.=C2=A0 For some OpenCon=
fig operators, this separation of concerns is part of their current NMS sof=
tware architecture.</span></p></li><li dir=3D"ltr" style=3D"list-style-type=
:disc;background-color:rgb(255,255,255);vertical-align:baseline;margin-left=
:15px"><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;margin-botto=
m:0pt"><span style=3D"vertical-align:baseline;white-space:pre-wrap">In term=
s of accessing subsets of leaves, we need to be able to:</span></p></li><ul=
 style=3D"margin-top:0pt;margin-bottom:0pt"><li dir=3D"ltr" style=3D"list-s=
tyle-type:circle;background-color:rgb(255,255,255);vertical-align:baseline;=
margin-left:15px"><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;m=
argin-bottom:0pt"><span style=3D"vertical-align:baseline;white-space:pre-wr=
ap">Retrieve the intended state =E2=80=93 this is done with a method that d=
oes similar to get-config in NETCONF.</span></p></li><li dir=3D"ltr" style=
=3D"list-style-type:circle;background-color:rgb(255,255,255);vertical-align=
:baseline;margin-left:15px"><p dir=3D"ltr" style=3D"line-height:1.38;margin=
-top:0pt;margin-bottom:0pt"><span style=3D"vertical-align:baseline;white-sp=
ace:pre-wrap">Retrieve the actual + operational state of the device =E2=80=
=93 done with a method similar to get.</span></p></li><li dir=3D"ltr" style=
=3D"list-style-type:circle;background-color:rgb(255,255,255);vertical-align=
:baseline;margin-left:15px"><p dir=3D"ltr" style=3D"line-height:1.38;margin=
-top:0pt;margin-bottom:0pt"><span style=3D"vertical-align:baseline;white-sp=
ace:pre-wrap">Retrieve only the operational state =E2=80=93 done with a met=
hod such as get-operational.</span></p></li><li dir=3D"ltr" style=3D"list-s=
tyle-type:circle;background-color:rgb(255,255,255);vertical-align:baseline;=
margin-left:15px"><p dir=3D"ltr" style=3D"line-height:1.38;margin-top:0pt;m=
argin-bottom:0pt"><span style=3D"vertical-align:baseline;white-space:pre-wr=
ap">This means that we need to be able to distinguish intended/actual/opera=
tional variables leaves through the data model.</span></p></li><li dir=3D"l=
tr" style=3D"list-style-type:circle;background-color:rgb(255,255,255);verti=
cal-align:baseline;margin-left:15px"><p dir=3D"ltr" style=3D"line-height:1.=
38;margin-top:0pt;margin-bottom:0pt"><span style=3D"vertical-align:baseline=
;white-space:pre-wrap">We did not define a requirement for a get-actual typ=
e call in openconfig-opstate, but there may be solutions that do want somet=
hing like this (as per Benoit=E2=80=99s mail to the netmod list yesterday, =
where it is referenced as get-config-false).</span></p></li></ul><li dir=3D=
"ltr" style=3D"list-style-type:disc;background-color:rgb(255,255,255);verti=
cal-align:baseline;margin-left:15px"><p dir=3D"ltr" style=3D"line-height:1.=
38;margin-top:0pt;margin-bottom:0pt"><span style=3D"vertical-align:baseline=
;white-space:pre-wrap">We do not require that the two trees for intended an=
d actual have identical paths in the data model. They are the same set of l=
eaves =E2=80=93 but it MUST be possible to check both. In openconfig-opstat=
e then we consistently achieve this by having the same set of leaves (typic=
ally grouping FOO-config) that is included under both container config (whe=
re they are intended) and container state (where they are applied)). Since =
there is a common way to be able to relate these through the structure, the=
n this is OK for us.</span></p></li></ul></font></span></div><font face=3D"=
Consolas">Thanks again.</font></div><div><font face=3D"Consolas"><br></font=
></div><div><font face=3D"Consolas">Kind regards,</font></div><div><font fa=
ce=3D"Consolas">Anees, Marcus &amp; Rob.</font></div><div> <div></div> <br>=
<p style=3D"color:#000">On 23 June 2015 at 16:44:36, Benoit Claise (<a href=
=3D"mailto:bclaise@cisco.com" target=3D"_blank">bclaise@cisco.com</a>) wrot=
e:</p> <blockquote type=3D"cite"><span><div bgcolor=3D"#FFFFFF" text=3D"#00=
0000"><div></div><div>







Dear all,<br>
<br>
In order to clarify the situation, I compiled some points from my
notes and created a couple of diagrams. This was initially created
for my personal use, but if it helps with the discussion, please
use it.<br>
<br>
The first open issue is terminology IMO.<br>
=C2=A0=C2=A0=C2=A0 - intended, applied<br>
=C2=A0=C2=A0=C2=A0 - synchronous/asynchronous<br>
There are two synchronous levels: the protocol (NETCONF) and
network element implementation. As Kent mentioned: &quot;Kent NETCONF is
a synchronous protocol but state may change asynchronously.&quot;<br>
<div><span>It would beneficial for
the authors to explain what happens in the following NETCONF server
two cases:<br></span> <span>=C2=A0=C2=A0=C2=A0 - an
example of (non-NETCONF) asynchronous: RPC and leaf update (first
intended, then applied)<br>
=C2=A0=C2=A0=C2=A0 - example of full NETCONF synchronous: RPC and
leaf update. In this case, duplicate leaf.<br></span></div>
<br>
The second open issue is that it&#39;s not clear which exact features
are requested: a breakdown per RFC6087bis, per YANG language, and
per NETCONF would help. This is what I&#39;ve been trying to do with
the couple of attached pictures. I would like to get confirmation
from the openconfig that the understanding is right.<br><br></div></div></s=
pan></blockquote><div>[=E2=80=A6snip images=E2=80=A6]</div><blockquote type=
=3D"cite"><span><div bgcolor=3D"#FFFFFF" text=3D"#000000"><div>
Some additional questions:<br>
- Don&#39;t we need an extra /startup for startup parameters? Or
startup parameters will always be the intended configuration?<br>
- &quot;The way we represent op-state must be consistent across all
models&quot;<br>
What if one of the models is not consistent? In that case, only the
description will make the link between the config-false and
config-true leaf, right? So don&#39;t we need that link anyway?<br>
That makes the link to &quot;Ability to relate configuration to
operational state must be consistent&quot;.<br>
=C2=A0=C2=A0=C2=A0<br>
<br>


_______________________________________________
<br>netmod mailing list
<br><a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a=
>
<br><a href=3D"https://www.ietf.org/mailman/listinfo/netmod" target=3D"_bla=
nk">https://www.ietf.org/mailman/listinfo/netmod</a>
<br></div></div></span></blockquote></div><div><p></p></div></div><br>_____=
__________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
<br></blockquote></div><br></div>

--001a113430924c12d6051947378c--


From nobody Wed Jun 24 11:11:14 2015
Return-Path: <rjs@rob.sh>
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 E76C81ACDE9 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 11:11:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level: 
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=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 t7ipDVuQOvre for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 11:11:09 -0700 (PDT)
Received: from cappuccino.rob.sh (cappuccino.rob.sh [IPv6:2a03:9800:10:4c::cafe:b00c]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EF0A41ACDD6 for <netmod@ietf.org>; Wed, 24 Jun 2015 11:11:07 -0700 (PDT)
Received: from [86.176.100.75] (helo=piccolo.local) by cappuccino.rob.sh with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from <rjs@rob.sh>) id 1Z7p8U-00073h-1N; Wed, 24 Jun 2015 19:10:58 +0100
Date: Wed, 24 Jun 2015 19:11:02 +0100
From: Rob Shakir <rjs@rob.sh>
To: Andy Bierman <andy@yumaworks.com>
Message-ID: <etPan.558af2b6.30206bbc.123@piccolo.local>
In-Reply-To: <CABCOCHSw3_ZPkeoXqk2owd+W__zOnFY0HhwUNwcerH=bwWJOoA@mail.gmail.com>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <CABCOCHSw3_ZPkeoXqk2owd+W__zOnFY0HhwUNwcerH=bwWJOoA@mail.gmail.com>
X-Mailer: Airmail Beta (308)
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="558af2b6_1f784233_123"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/xP-VrKpiRNbXG9PZoRf6ebp6MKs>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 18:11:13 -0000

--558af2b6_1f784233_123
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi Andy,

Yes, I=E2=80=99m definitely aware of this. The intention is to present a =
holistic view, from which any deltas to the existing functionality can be=
 identified.

Kind regards,
r.




On 24 June 2015 at 18:56:28, Andy Bierman (andy=40yumaworks.com) wrote:

Hi,

Not sure you are aware which parts of your diagram are already
standardized in NETCON=46.=C2=A0 The startup and candidate capabilities
as defined in R=46C 6241 are not related to operational state.


Andy


On Wed, Jun 24, 2015 at 10:39 AM, Rob Shakir <rjs=40rob.sh> wrote:

Hi netmod,



Thanks very much to everyone that has considered the problem that
we laid out on the last interim call. I think we=E2=80=99re starting to
reach a common understanding.



If I can make some slight tweaks to the diagrams that have been
distributed:




And some further clarifying points/explanations:

We have not been
considering ephemeral and startup as separate items. As far as we
see these, the startup is simply a subset of the intended state
that happens to persist after a system reboot, or seed the initial
set of intended states when the system restarts. Ephemeral state is
simply intended state that is not persistent.
Intended and
applied/actualised state are views of the running
configuration.
All intention is
written to the intended configuration (whether it be by CLI, a
human, an NMS via NETCON=46, a system agent, etc.) =E2=80=93 which then
transitions to becoming the applied/actualised configuration. This
is based on either an explicit request to do so (=E2=80=98commit=E2=80=99=
) or may
be implicit. The success of the intended configuration becoming the
applied configuration may be due to time deltas or condition, as
Kent drew.
In what we referred
to as a =E2=80=98synchronous=E2=80=99 system =E2=80=93 we expect the atte=
mpt to make the
intended state transition to the actual state to be completed when
the operation returns (e.g., after a <commit />) then the
<ok /> should return only when this intention has been
applied.
We require the
ability for an NMS to be able to see both the intended and the
actual configuration =E2=80=93 such that it can check whether its intenti=
on
is currently the applied configuration, or has not yet been applied
due to some external dependency (e.g., line card not plugged
in).
A portion of the
operational state date (marked operational: true) is the set of
variables that are not related to state that an external system can
assert the value of =E2=80=94 for example, a counter, or a negotiated
protocol timer.
We believe that
there is an important advantage in being able to syntactically /
structurally retrieve the set of state that is associated with some
set of intended state. This is not =E2=80=98easy=E2=80=99 today, as there=
 is no
common way to link the two =E2=80=93 especially as models are composed.
This does not imply that we understand the semantics of that set of
state =E2=80=93 but simply that we can retrieve all state data that relat=
es
to a particular entity that we expressed some intention about
(e.g., all state data that corresponds to a particular interface or
BGP peer). This division is very important, since there is
separation between elements of the NMS that interact with the
network, and those that do need to understand the
semantics/contents of the data leaves.=C2=A0 =46or some OpenConfig
operators, this separation of concerns is part of their current NMS
software architecture.
In terms of
accessing subsets of leaves, we need to be able to:
Retrieve the
intended state =E2=80=93 this is done with a method that does similar to
get-config in NETCON=46.
Retrieve the actual
+ operational state of the device =E2=80=93 done with a method similar to=

get.
Retrieve only the
operational state =E2=80=93 done with a method such as
get-operational.
This means that we
need to be able to distinguish intended/actual/operational
variables leaves through the data model.
We did not define a
requirement for a get-actual type call in openconfig-opstate, but
there may be solutions that do want something like this (as per
Benoit=E2=80=99s mail to the netmod list yesterday, where it is reference=
d
as get-config-false).
We do not require
that the two trees for intended and actual have identical paths in
the data model. They are the same set of leaves =E2=80=93 but it MUST be
possible to check both. In openconfig-opstate then we consistently
achieve this by having the same set of leaves (typically grouping
=46OO-config) that is included under both container config (where
they are intended) and container state (where they are applied)).
Since there is a common way to be able to relate these through the
structure, then this is OK for us.
Thanks again.

Kind regards,
Anees, Marcus & Rob.

On 23 June 2015 at 16:44:36, Benoit Claise (bclaise=40cisco.com) wrote:

Dear all,

In order to clarify the situation, I compiled some points from my notes a=
nd created a couple of diagrams. This was initially created for my person=
al use, but if it helps with the discussion, please use it.

The first open issue is terminology IMO.
=C2=A0=C2=A0=C2=A0 - intended, applied
=C2=A0=C2=A0=C2=A0 - synchronous/asynchronous
There are two synchronous levels: the protocol (NETCON=46) and network el=
ement implementation. As Kent mentioned: =22Kent NETCON=46 is a synchrono=
us protocol but state may change asynchronously.=22
It would beneficial for the authors to explain what happens in the follow=
ing NETCON=46 server two cases:
=C2=A0=C2=A0=C2=A0 - an example of (non-NETCON=46) asynchronous: RPC and =
leaf update (first intended, then applied)
=C2=A0=C2=A0=C2=A0 - example of full NETCON=46 synchronous: RPC and leaf =
update. In this case, duplicate leaf.

The second open issue is that it's not clear which exact features are req=
uested: a breakdown per R=46C6087bis, per YANG language, and per NETCON=46=
 would help. This is what I've been trying to do with the couple of attac=
hed pictures. I would like to get confirmation from the openconfig that t=
he understanding is right.

=5B=E2=80=A6snip images=E2=80=A6=5D
Some additional questions:
- Don't we need an extra /startup for startup parameters=3F Or startup pa=
rameters will always be the intended configuration=3F
- =22The way we represent op-state must be consistent across all models=22=

What if one of the models is not consistent=3F In that case, only the des=
cription will make the link between the config-false and config-true leaf=
, right=3F So don't we need that link anyway=3F
That makes the link to =22Ability to relate configuration to operational =
state must be consistent=22.
=C2=A0=C2=A0=C2=A0

=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F
netmod mailing list
netmod=40ietf.org
https://www.ietf.org/mailman/listinfo/netmod

=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F
netmod mailing list
netmod=40ietf.org
https://www.ietf.org/mailman/listinfo/netmod



--558af2b6_1f784233_123
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<html><head><style>
body =7B
	font-family: =22Helvetica Neue=22, Helvetica, Arial, sans-serif;
	padding:1em;
	margin:auto;
	background:=23fefefe;
=7D

h1, h2, h3, h4, h5, h6 =7B
	font-weight: bold;
=7D

h1 =7B
	color: =23000000;
	font-size: 28pt;
=7D

h2 =7B
	border-bottom: 1px solid =23CCCCCC;
	color: =23000000;
	font-size: 24px;
=7D

h3 =7B
	font-size: 18px;
=7D

h4 =7B
	font-size: 16px;
=7D

h5 =7B
	font-size: 14px;
=7D

h6 =7B
	color: =23777777;
	background-color: inherit;
	font-size: 14px;
=7D

hr =7B
	height: 0.2em;
	border: 0;
	color: =23CCCCCC;
	background-color: =23CCCCCC;
    display: inherit;
=7D

p, blockquote, ul, ol, dl, li, table, pre =7B
	margin: 15px 0;
=7D

a, a:visited =7B
	color: =234183C4;
	background-color: inherit;
	text-decoration: none;
=7D

=23message =7B
	border-radius: 6px;
	border: 1px solid =23ccc;
	display:block;
	width:100%;
	height:60px;
	margin:6px 0px;
=7D

button, =23ws =7B
	font-size: 12 pt;
	padding: 4px 6px;
	border-radius: 5px;
	border: 1px solid =23bbb;
	background-color: =23eee;
=7D

code, pre, =23ws, =23message =7B
	font-family: Monaco;
	font-size: 10pt;
	border-radius: 3px;
	background-color: =23=468=468=468;
	color: inherit;
=7D

code =7B
	border: 1px solid =23EAEAEA;
	margin: 0 2px;
	padding: 0 5px;
=7D

pre =7B
	border: 1px solid =23CCCCCC;
	overflow: auto;
	padding: 4px 8px;
=7D

pre > code =7B
	border: 0;
	margin: 0;
	padding: 0;
=7D

=23ws =7B background-color: =23f8f8f8; =7D


.bloop=5Fmarkdown table =7B
border-collapse: collapse; =20
font-family: Helvetica, arial, freesans, clean, sans-serif; =20
color: rgb(51, 51, 51); =20
font-size: 15px; line-height: 25px;
padding: 0; =7D

.bloop=5Fmarkdown table tr =7B
border-top: 1px solid =23cccccc;
background-color: white;
margin: 0;
padding: 0; =7D
    =20
.bloop=5Fmarkdown table tr:nth-child(2n) =7B
background-color: =23f8f8f8; =7D

.bloop=5Fmarkdown table tr th =7B
font-weight: bold;
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr td =7B
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr th :first-child, table tr td :first-child =7B
margin-top: 0; =7D

.bloop=5Fmarkdown table tr th :last-child, table tr td :last-child =7B
margin-bottom: 0; =7D

.bloop=5Fmarkdown blockquote=7B
  border-left: 4px solid =23dddddd;
  padding: 0 15px;
  color: =23777777; =7D
  blockquote > :first-child =7B
    margin-top: 0; =7D
  blockquote > :last-child =7B
    margin-bottom: 0; =7D

code, pre, =23ws, =23message =7B
    word-break: normal;
    word-wrap: normal;
=7D

hr =7B
    display: inherit;
=7D

.bloop=5Fmarkdown :first-child =7B
    -webkit-margin-before: 0;
=7D

code, pre, =23ws, =23message =7B
    font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
=7D


.send =7B color:=2377bb77; =7D
.server =7B color:=237799bb; =7D
.error =7B color:=23AA0000; =7D</style></head><body style=3D=22word-wrap:=
 break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-sp=
ace;=22><div class=3D=22bloop=5Fmarkdown=22><p>Hi Andy,</p>

<p>Yes, I=E2=80=99m definitely aware of this. The intention is to present=
 a holistic view, from which any deltas to the existing functionality can=
 be identified.</p>

<p>Kind regards,<br>
r.</p>

<p></p></div><div class=3D=22bloop=5Foriginal=5Fhtml=22><style>body=7Bfon=
t-family:Consolas,Arial;font-size:13px=7D</style><div id=3D=22bloop=5Fcus=
tomfont=22 style=3D=22font-family:Consolas,Arial;font-size:13px; color: r=
gba(0,0,0,1.0); margin: 0px; line-height: auto;=22><br></div> <br> <div i=
d=3D=22bloop=5Fsign=5F1435169408913342976=22 class=3D=22bloop=5Fsign=22><=
/div> <br><p class=3D=22airmail=5Fon=22 style=3D=22color:=23000;=22>On 24=
 June 2015 at 18:56:28, Andy Bierman (<a href=3D=22mailto:andy=40yumawork=
s.com=22>andy=40yumaworks.com</a>) wrote:</p> <blockquote type=3D=22cite=22=
 class=3D=22clean=5Fbq=22><span><div><div></div><div>


<title></title>


<div dir=3D=22ltr=22>Hi,
<div><br></div>
<div>Not sure you are aware which parts of your diagram are
already</div>
<div>standardized in NETCON=46.&nbsp; The startup and candidate
capabilities</div>
<div>as defined in R=46C 6241 are not related to operational
state.</div>
<div><br></div>
<div><br></div>
<div>Andy</div>
<div><br></div>
</div>
<div class=3D=22gmail=5Fextra=22><br>
<div class=3D=22gmail=5Fquote=22>On Wed, Jun 24, 2015 at 10:39 AM, Rob
Shakir <span dir=3D=22ltr=22>&lt;<a href=3D=22mailto:rjs=40rob.sh=22 targ=
et=3D=22=5Fblank=22>rjs=40rob.sh</a>&gt;</span> wrote:<br>
<blockquote class=3D=22gmail=5Fquote=22 style=3D=22margin:0 0 0 .8ex;bord=
er-left:1px =23ccc solid;padding-left:1ex=22>
<div style=3D=22word-wrap:break-word=22>
<div>
<div style=3D=22color:rgb(0,0,0);margin:0px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22>
<span><font face=3D=22Consolas=22><span style=3D=22background-color:rgb(2=
55,255,255);vertical-align:baseline;white-space:pre-wrap=22>
Hi netmod,</span></font></span></p>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22>
<span><span style=3D=22background-color:rgb(255,255,255);vertical-align:b=
aseline;white-space:pre-wrap=22>
<br></span></span></p>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22background-color:rgb(255,255,255);vertical-ali=
gn:baseline;white-space:pre-wrap=22>
Thanks very much to everyone that has considered the problem that
we laid out on the last interim call. I think we=E2=80=99re starting to
reach a common understanding.</span></p>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22background-color:rgb(255,255,255);vertical-ali=
gn:baseline;white-space:pre-wrap=22>
<br></span></p>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22background-color:rgb(255,255,255);vertical-ali=
gn:baseline;white-space:pre-wrap=22>
If I can make some slight tweaks to the diagrams that have been
distributed:</span></p>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22background-color:rgb(255,255,255);vertical-ali=
gn:baseline;white-space:pre-wrap=22>
<img src=3D=22https://lh3.googleusercontent.com/0JcY=5Flr2uWmoIf27v83uUSq=
JQJZNJjq2Yl=46bPKO2X40927ht5ZUs8Dd8YMdjp=46zozJqpgTkaQyi-1HU3ug0ybOSKqxWr=
RNKr9Se=5FOKfuP36orRMZdD3-snb4hR=5FZEgxSdzz-eMo=22 width=3D=22624px;=22 h=
eight=3D=22544px;=22 style=3D=22border:none=22 alt=3D=22img.png=22></span=
></p>
<br>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22background-color:rgb(255,255,255);vertical-ali=
gn:baseline;white-space:pre-wrap=22>
And some further clarifying points/explanations:</span></p>
<br>
<ul style=3D=22margin-top:0pt;margin-bottom:0pt=22>
<li dir=3D=22ltr=22 style=3D=22list-style-type:disc;background-color:rgb(=
255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>We have not been
considering ephemeral and startup as separate items. As far as we
see these, the startup is simply a subset of the intended state
that happens to persist after a system reboot, or seed the initial
set of intended states when the system restarts. Ephemeral state is
simply intended state that is not persistent.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:disc;background-color:rgb(=
255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>Intended and
applied/actualised state are views of the running
configuration.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:disc;background-color:rgb(=
255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>All intention is
written to the intended configuration (whether it be by CLI, a
human, an NMS via NETCON=46, a system agent, etc.) =E2=80=93 which then
transitions to becoming the applied/actualised configuration. This
is based on either an explicit request to do so (=E2=80=98commit=E2=80=99=
) or may
be implicit. The success of the intended configuration becoming the
applied configuration may be due to time deltas or condition, as
Kent drew.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:disc;background-color:rgb(=
255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>In what we referred
to as a =E2=80=98synchronous=E2=80=99 system =E2=80=93 we expect the atte=
mpt to make the
intended state transition to the actual state to be completed when
the operation returns (e.g., after a &lt;commit /&gt;) then the
&lt;ok /&gt; should return only when this intention has been
applied.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:disc;background-color:rgb(=
255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>We require the
ability for an NMS to be able to see both the intended and the
actual configuration =E2=80=93 such that it can check whether its intenti=
on
is currently the applied configuration, or has not yet been applied
due to some external dependency (e.g., line card not plugged
in).</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:disc;background-color:rgb(=
255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>A portion of the
operational state date (marked operational: true) is the set of
variables that are not related to state that an external system can
assert the value of =E2=80=94 for example, a counter, or a negotiated
protocol timer.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:disc;background-color:rgb(=
255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>We believe that
there is an important advantage in being able to syntactically /
structurally retrieve the set of state that is associated with some
set of intended state. This is not =E2=80=98easy=E2=80=99 today, as there=
 is no
common way to link the two =E2=80=93 especially as models are composed.
This does not imply that we understand the semantics of that set of
state =E2=80=93 but simply that we can retrieve all state data that relat=
es
to a particular entity that we expressed some intention about
(e.g., all state data that corresponds to a particular interface or
BGP peer). This division is very important, since there is
separation between elements of the NMS that interact with the
network, and those that do need to understand the
semantics/contents of the data leaves.&nbsp; =46or some OpenConfig
operators, this separation of concerns is part of their current NMS
software architecture.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:disc;background-color:rgb(=
255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>In terms of
accessing subsets of leaves, we need to be able to:</span></p>
</li>
<li style=3D=22list-style: none=22>
<ul style=3D=22margin-top:0pt;margin-bottom:0pt=22>
<li dir=3D=22ltr=22 style=3D=22list-style-type:circle;background-color:rg=
b(255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>Retrieve the
intended state =E2=80=93 this is done with a method that does similar to
get-config in NETCON=46.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:circle;background-color:rg=
b(255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>Retrieve the actual
+ operational state of the device =E2=80=93 done with a method similar to=

get.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:circle;background-color:rg=
b(255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>Retrieve only the
operational state =E2=80=93 done with a method such as
get-operational.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:circle;background-color:rg=
b(255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>This means that we
need to be able to distinguish intended/actual/operational
variables leaves through the data model.</span></p>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:circle;background-color:rg=
b(255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>We did not define a
requirement for a get-actual type call in openconfig-opstate, but
there may be solutions that do want something like this (as per
Benoit=E2=80=99s mail to the netmod list yesterday, where it is reference=
d
as get-config-false).</span></p>
</li>
</ul>
</li>
<li dir=3D=22ltr=22 style=3D=22list-style-type:disc;background-color:rgb(=
255,255,255);vertical-align:baseline;margin-left:15px=22>
<p dir=3D=22ltr=22 style=3D=22line-height:1.38;margin-top:0pt;margin-bott=
om:0pt=22><span style=3D=22vertical-align:baseline;white-space:pre-wrap=22=
>We do not require
that the two trees for intended and actual have identical paths in
the data model. They are the same set of leaves =E2=80=93 but it MUST be
possible to check both. In openconfig-opstate then we consistently
achieve this by having the same set of leaves (typically grouping
=46OO-config) that is included under both container config (where
they are intended) and container state (where they are applied)).
Since there is a common way to be able to relate these through the
structure, then this is OK for us.</span></p>
</li>
</ul>
</div>
<font face=3D=22Consolas=22>Thanks again.</font></div>
<div><font face=3D=22Consolas=22><br></font></div>
<div><font face=3D=22Consolas=22>Kind regards,</font></div>
<div><font face=3D=22Consolas=22>Anees, Marcus &amp; Rob.</font></div>
<div><br>
<p style=3D=22color:=23000=22>On 23 June 2015 at 16:44:36, Benoit Claise
(<a href=3D=22mailto:bclaise=40cisco.com=22 target=3D=22=5Fblank=22>bclai=
se=40cisco.com</a>) wrote:</p>
<blockquote type=3D=22cite=22>
<div bgcolor=3D=22=23=46=46=46=46=46=46=22 text=3D=22=23000000=22>
<div><span>Dear all,<br>
<br>
In order to clarify the situation, I compiled some points from my
notes and created a couple of diagrams. This was initially created
for my personal use, but if it helps with the discussion, please
use it.<br>
<br>
The first open issue is terminology IMO.<br>
&nbsp;&nbsp;&nbsp; - intended, applied<br>
&nbsp;&nbsp;&nbsp; - synchronous/asynchronous<br>
There are two synchronous levels: the protocol (NETCON=46) and
network element implementation. As Kent mentioned: =22Kent NETCON=46 is
a synchronous protocol but state may change
asynchronously.=22<br></span>
<div><span><span>It would beneficial for the authors to explain
what happens in the following NETCON=46 server two
cases:<br></span> <span>&nbsp;&nbsp;&nbsp; - an example of
(non-NETCON=46) asynchronous: RPC and leaf update (first intended,
then applied)<br>
&nbsp;&nbsp;&nbsp; - example of full NETCON=46 synchronous: RPC and
leaf update. In this case, duplicate
leaf.<br></span></span></div>
<br>
The second open issue is that it's not clear which exact features
are requested: a breakdown per R=46C6087bis, per YANG language, and
per NETCON=46 would help. This is what I've been trying to do with
the couple of attached pictures. I would like to get confirmation
from the openconfig that the understanding is right.<br>
<br></div>
</div>
</blockquote>
<div>=5B=E2=80=A6snip images=E2=80=A6=5D</div>
<blockquote type=3D=22cite=22>
<div bgcolor=3D=22=23=46=46=46=46=46=46=22 text=3D=22=23000000=22>
<div><span>Some additional questions:<br>
- Don't we need an extra /startup for startup parameters=3F Or
startup parameters will always be the intended configuration=3F<br>
- =22The way we represent op-state must be consistent across all
models=22<br>
What if one of the models is not consistent=3F In that case, only the
description will make the link between the config-false and
config-true leaf, right=3F So don't we need that link anyway=3F<br>
That makes the link to =22Ability to relate configuration to
operational state must be consistent=22.<br>
&nbsp;&nbsp;&nbsp;<br>
<br>
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F<br>
netmod mailing list<br>
<a href=3D=22mailto:netmod=40ietf.org=22 target=3D=22=5Fblank=22>netmod=40=
ietf.org</a><br>
<a href=3D=22https://www.ietf.org/mailman/listinfo/netmod=22 target=3D=22=
=5Fblank=22>https://www.ietf.org/mailman/listinfo/netmod</a><br></span></=
div>
</div>
</blockquote>
</div>
</div>
<br>
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F<br>
netmod mailing list<br>
<a href=3D=22mailto:netmod=40ietf.org=22>netmod=40ietf.org</a><br>
<a href=3D=22https://www.ietf.org/mailman/listinfo/netmod=22 rel=3D=22nor=
eferrer=22 target=3D=22=5Fblank=22>https://www.ietf.org/mailman/listinfo/=
netmod</a><br>
<br></blockquote>
</div>
<br></div>


</div></div></span></blockquote></div><div class=3D=22bloop=5Fmarkdown=22=
><p></p></div></body></html>
--558af2b6_1f784233_123--


From nobody Wed Jun 24 12:29:31 2015
Return-Path: <kwatsen@juniper.net>
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 7C2751B2D24 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 12:29:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.702
X-Spam-Level: 
X-Spam-Status: No, score=-0.702 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, 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 dhFv_rzvJbk2 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 12:29:28 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0142.outbound.protection.outlook.com [207.46.100.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D9C221B2D28 for <netmod@ietf.org>; Wed, 24 Jun 2015 12:29:28 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB460.namprd05.prod.outlook.com (10.141.72.152) with Microsoft SMTP Server (TLS) id 15.1.195.15; Wed, 24 Jun 2015 19:29:27 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Wed, 24 Jun 2015 19:29:27 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Rob Shakir <rjs@rob.sh>, NETMOD Working Group <netmod@ietf.org>
Thread-Topic: [netmod] Follow up on the openconfig oper status and the NETMOD interim
Thread-Index: AQHQrqTV5K6j5l4Rs0+/OvyIvmQISp27x9CA
Date: Wed, 24 Jun 2015 19:29:27 +0000
Message-ID: <D1B06CD7.B38CA%kwatsen@juniper.net>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local>
In-Reply-To: <etPan.558aeb61.2c1c2992.123@piccolo.local>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: rob.sh; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB460; 5:TAF8xp+R3QT28GcN5C8+rL6ro4lX/tyC0yquRnVXXpihg8rMcB/R5Zy66VJpXKx2aySbsixifPOCbEt9ZcEUOqtwe2JegX88F2DRumaaKHEzMIiknN7ozleR4Aizxt6bVKlTqkFhjPLjVCcDehlFwQ==; 24:GYdznfz74z2gFS7xv5BtBO53yYNYW0TZXzKaugYg9nlj/Zpk8wScVjKLqyUglwDsc1GDjWxlhny9GAzf1nAcuFNxPXyEReMtYrTpwNS1JjE=; 20:+26Uc6m0r+z38u5Nm+k+n9bmicQIKktz5DrGMniGtBBViNSXYGy5kCTKe9tY+qU8CVSN5V+K4iaxTy0Zt0p1zQ==
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB460;
x-microsoft-antispam-prvs: <CO1PR05MB46087FE5798CBE9532D950AA5AF0@CO1PR05MB460.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB460; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB460; 
x-forefront-prvs: 061725F016
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(52604005)(43784003)(122556002)(5001960100002)(36756003)(5002640100001)(189998001)(40100003)(106116001)(102836002)(92566002)(5001770100001)(2950100001)(50986999)(77156002)(2900100001)(107886002)(15975445007)(76176999)(4001350100001)(54356999)(46102003)(99286002)(87936001)(2656002)(19580395003)(86362001)(83506001)(62966003)(66066001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB460; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="Windows-1252"
Content-ID: <4ED4F1EE2C36774881C21AA5F9444248@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2015 19:29:27.4369 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB460
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/32DC3wjK4T_aVVwGB3vprL88DfE>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 19:29:30 -0000

[As an individual contributor]


Hi Rob and OC team,


> Thanks very much to everyone that has considered the problem
> that we laid out on the last interim call. I think we=B9re
> starting to reach a common understanding.

Indeed!


> If I can make some slight tweaks to the diagrams that have
> been distributed:

This looks like a variant of the picture I posted here:
http://www.ietf.org/mail-archive/web/netmod/current/msg12738.html.   On
one hand I'm happy to see this because no one had acknowledged the pic
previously, but on the other hand, I'm concerned that you felt the need to
draw another picture, implying there still being a gap...

Actually, when looking at your picture, substituting running for intended,
I think your picture is essentially the same as represented here:
http://www.ietf.org/mail-archive/web/netmod/current/msg12729.html.  Of
course, without ephemeral, running=3D=3Dintended, so your picture isn't wro=
ng
either.  I think the only difference is that your picture shows slides 2-4
together, whereas mine had distinct slides.  Is there a more significant
difference in your mind?



> * We have not been considering ephemeral and startup as
> separate items. As far as we see these, the startup is
> simply a subset of the intended state that happens to
> persist after a system reboot, or seed the initial set
> of intended states when the system restarts. Ephemeral
> state is simply intended state that is not persistent.

Yup


> * Intended and applied/actualised state are views of
> the running configuration.

Yes, but more precisely, running=3D=3Dintended when there is no ephemeral
config, right?


> * All intention is written to the intended configuration
> (whether it be by CLI, a human, an NMS via NETCONF, a
> system agent, etc.) =AD which then transitions to becoming
> the applied/actualised configuration. This is based on
> either an explicit request to do so (=8Ccommit=B9) or may be
> implicit. The success of the intended configuration
> becoming the applied configuration may be due to time
> deltas or condition, as Kent drew.

Yes but, again, the clients are interacting with the "running" and/or
"ephemeral" (not directly to "intended").  The important bit is that
"ephemeral" can override "running", so the "intended" is actually the
result of a merge operation of sorts...


> * In what we referred to as a =8Csynchronous=B9 system =AD we
> expect the attempt to make the intended state transition
> to the actual state to be completed when the operation
> returns (e.g., after a <commit />) then the <ok /> should
> return only when this intention has been applied.

I see.  As stated on the call last week, NETCONF/RESTCONF are currently
only "asynchronous" by this definition, as neither has any statement
regarding *when* intended becomes operational wrt <ok/> or 200 OK.
Dipping into design for a sec, it might be interesting to add an optional
commit flag indicating that the server should not respond until
actual=3D=3Dintended...


> * We require the ability for an NMS to be able to see both
> the intended and the actual configuration =AD such that it
> can check whether its intention is currently the applied
> configuration, or has not yet been applied due to some
> external dependency (e.g., line card not plugged in).

Understood, at least for leafs that get a protocol negotiated value, which
may account for just 1% of the configuration.   Dipping again into design,
I was hoping we might use [XML/JSON] attributes, for instance:

     leaf duplex {
       type enumeration {
         enum "half";
         enum "full";
         enum "auto";
       }
       config true;
     }

  get-config from running:
       <duplex>auto</duplex>

  get-operational:
       <duplex intended=3D"auto">full</duplex>


Less understood is how to support the conditional enablement cases
(https://tools.ietf.org/html/draft-kwatsen-conditional-enablement-00) such
as plugging in a line card, or installing a license, or time-of-day.  For
these, it's not clear what <get-operational> would return...



> * A portion of the operational state date (marked
> operational: true) is the set of variables that
> are not related to state that an external system
> can assert the value of =8B for example, a counter,
> or a negotiated protocol timer.

This is what I think config=3Dfalse should be used for going forwards.  Tha=
t
is, as the example above shows, config=3Dtrue simultaneously defines some
nodes returned by <get-operational/>, thus we only need config=3Dfalse to
define the non-config based nodes like counters.


> * We believe that there is an important advantage
> in being able to syntactically / structurally
> retrieve the set of state that is associated with
> some set of intended state. This is not =8Ceasy=B9
> today, as there is no common way to link the two
> =AD especially as models are composed. This does
> not imply that we understand the semantics of that
> set of state =AD but simply that we can retrieve
> all state data that relates to a particular entity
> that we expressed some intention about (e.g., all
> state data that corresponds to a particular
> interface or BGP peer). This division is very
> important, since there is separation between
> elements of the NMS that interact with the network,
> and those that do need to understand the semantics/
> contents of the data leaves.  For some OpenConfig
> operators, this separation of concerns is part of
> their current NMS software architecture.

Thanks for clarifying the motivation.  Looking at
draft-openconfig-netmod-opstate, this requirement appears to be supported
through tree-structure alone.  Is this solution sufficient or is there
also a need to have something more explicit like XPath pointers in the
data-model?


Thanks again,
Kent





From nobody Wed Jun 24 12:38:16 2015
Return-Path: <kwatsen@juniper.net>
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 BE9EA1B2D33 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 12:38:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.302
X-Spam-Level: 
X-Spam-Status: No, score=-1.302 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, SPF_HELO_PASS=-0.001, 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 3svXH-HeN_ra for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 12:38:14 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0714.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::1:714]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 97AE51B2D32 for <netmod@ietf.org>; Wed, 24 Jun 2015 12:38:10 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB459.namprd05.prod.outlook.com (10.141.72.146) with Microsoft SMTP Server (TLS) id 15.1.195.15; Wed, 24 Jun 2015 19:37:54 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Wed, 24 Jun 2015 19:37:54 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Martin Bjorklund <mbj@tail-f.com>
Thread-Topic: [netmod] follow-up from virtual interim and i2rs discussions
Thread-Index: AQHQrUn1tc8m8WdLR0WVXSPXt52vpp25jG8AgABiMACAACpIAIAARtiAgAA5RICAAAV4gP//18oAgADykYCAAENPgIAACGGAgAAYXAA=
Date: Wed, 24 Jun 2015 19:37:53 +0000
Message-ID: <D1B07D94.B397B%kwatsen@juniper.net>
References: <D1AF5744.B3655%kwatsen@juniper.net> <20150624.113947.1467672797415636365.mbj@tail-f.com> <558AB359.5040609@cisco.com> <20150624.161041.1187353431349075601.mbj@tail-f.com>
In-Reply-To: <20150624.161041.1187353431349075601.mbj@tail-f.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: tail-f.com; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB459; 5:nhYuWAbJ5rE/gWKm/KXrPKy7AOTLlqpmxDwkwUAIWKCynTfM9puIa+8qtMIOOQBMBpj9n2icopa1ZV2kkTLiVcNU3ZWTvkXA65tNXFW2cuHEacmWyf/153YMv0S6wGdawJJPqvDvmxi89B9Ilo8NuQ==; 24:3g3dJUMKJQhZTCvOYTJ1wrSJxqGMsrKqo75H1vx5YAWA/xGWdAEz041cFAb/Ik9Vr1o62iPltCCF1hJzDUd+8poswIQXVIPQL4W64V3CCNQ=; 20:sGRhP0ccDh1xyOWum/Er7DH1okA5OIyL0C3yna0HWc5hFdqnL1NgRsw0PLP7URxWQwXz9dK2bv32+inx7rgzZQ==
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB459;
x-microsoft-antispam-prvs: <CO1PR05MB459FB2E95562963F570C6F4A5AF0@CO1PR05MB459.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB459; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB459; 
x-forefront-prvs: 061725F016
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(51704005)(164054003)(189998001)(110136002)(5001960100002)(99286002)(2656002)(40100003)(4001350100001)(62966003)(122556002)(93886004)(106116001)(86362001)(77156002)(87936001)(5002640100001)(92566002)(54356999)(76176999)(50986999)(66066001)(46102003)(36756003)(102836002)(2950100001)(2900100001)(83506001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB459; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="us-ascii"
Content-ID: <A44E1BA514C9B947B7E051A879D98A75@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2015 19:37:53.9811 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB459
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/_KkBa54zjEp9n3OHDgA-Ix9K09Q>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 19:38:15 -0000

Hi Martin,


>Here's the updated table:
>
>       running      actual config    operational state
>       -------      -------------    -----------------
>  t0    half            half             half
>  t1    auto            half             half
>  t2    auto            half (*)         half
>  t3    auto            auto             half
>  t4    auto            auto             full


I don't understand how actual is ever not the same as operational.  At
least in my view, actual is just a subset of operational (the subset
defined by config=3Dtrue nodes).  What am I missing?  Also, what does (*)
represent?


Thanks,
Kent


From nobody Wed Jun 24 13:03:34 2015
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 0DA091B2D31 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:03:33 -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 pciyLKtvDuLn for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:03:29 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 922C11B2D2E for <netmod@ietf.org>; Wed, 24 Jun 2015 13:03:27 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 7E0141AE06C0; Wed, 24 Jun 2015 22:03:25 +0200 (CEST)
Date: Wed, 24 Jun 2015 22:03:25 +0200 (CEST)
Message-Id: <20150624.220325.196257220955611030.mbj@tail-f.com>
To: rjs@rob.sh
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <etPan.558aeb61.2c1c2992.123@piccolo.local>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local>
X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=utf-8
Content-Transfer-Encoding: base64
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Q3qQkTTYb8_fw3-FRI7tHeXxSRM>
Cc: netmod@ietf.org
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 20:03:33 -0000

SGksDQoNClJvYiBTaGFraXIgPHJqc0Byb2Iuc2g+IHdyb3RlOg0KPiBUaGFua3MgdmVyeSBtdWNo
IHRvIGV2ZXJ5b25lIHRoYXQgaGFzIGNvbnNpZGVyZWQgdGhlIHByb2JsZW0gdGhhdCB3ZSBsYWlk
IG91dA0KPiBvbiB0aGUgbGFzdCBpbnRlcmltIGNhbGwuIEkgdGhpbmsgd2XigJlyZSBzdGFydGlu
ZyB0byByZWFjaCBhIGNvbW1vbg0KPiB1bmRlcnN0YW5kaW5nLg0KDQpBcyBBbmR5IHBvaW50ZWQg
b3V0LCB0aGVyZSBpcyBzb21lIG92ZXJsYXAgaW4gd2hhdCB5b3UgZGVzY3JpYmUgYmVsb3cNCndp
dGggaG93IE5FVENPTkYgYWxyZWFkeSB3b3Jrcy4gIFRoaXMgcmFpc2VzIHNvbWUgY29uY2VybnMs
IHNlZSBiZWxvdy4NCg0KPiAgICogSW50ZW5kZWQgYW5kIGFwcGxpZWQvYWN0dWFsaXNlZCBzdGF0
ZSBhcmUgdmlld3Mgb2YgdGhlIHJ1bm5pbmcNCj4gICAgIGNvbmZpZ3VyYXRpb24uDQoNCkluIE5F
VENPTkYgdGVybXMsIEkgdGhpbmsgaW50ZW5kZWQgY29uZmlnIGlzIHRoZSAicnVubmluZyIgZGF0
YQ0Kc3RvcmUuICBEbyB5b3UgYWdyZWU/DQoNCkluIHlvdXIgcGljdHVyZSwgaXQgaXMgY2xlYXIg
dGhhdCB0aGUgc2NoZW1hIGZvciAiaW50ZW5kZWQiIGFuZA0KImFwcGxpZWQvYWN0dWFsIiBpcyB0
aGUgc2FtZS4gIEdvb2QuDQoNCj4gICAqIEFsbCBpbnRlbnRpb24gaXMgd3JpdHRlbiB0byB0aGUg
aW50ZW5kZWQgY29uZmlndXJhdGlvbiAod2hldGhlciBpdCBiZSBieQ0KPiAgICAgQ0xJLCBhIGh1
bWFuLCBhbiBOTVMgdmlhIE5FVENPTkYsIGEgc3lzdGVtIGFnZW50LCBldGMuKSDigJMgd2hpY2gg
dGhlbg0KPiAgICAgdHJhbnNpdGlvbnMgdG8gYmVjb21pbmcgdGhlIGFwcGxpZWQvYWN0dWFsaXNl
ZCBjb25maWd1cmF0aW9uLiBUaGlzIGlzDQo+ICAgICBiYXNlZCBvbiBlaXRoZXIgYW4gZXhwbGlj
aXQgcmVxdWVzdCB0byBkbyBzbyAo4oCYY29tbWl04oCZKSBvciBtYXkgYmUNCj4gICAgIGltcGxp
Y2l0LiBUaGUgc3VjY2VzcyBvZiB0aGUgaW50ZW5kZWQgY29uZmlndXJhdGlvbiBiZWNvbWluZyB0
aGUgYXBwbGllZA0KPiAgICAgY29uZmlndXJhdGlvbiBtYXkgYmUgZHVlIHRvIHRpbWUgZGVsdGFz
IG9yIGNvbmRpdGlvbiwgYXMgS2VudA0KPiAgICAgZHJldy4NCg0KVGhpcyBwYXJ0IGlzIG5vdCBj
bGVhciB0byBtZS4gIEFnYWluIGluIE5FVENPTkYgdGVybXMsICJjb21taXQiIGlzIGFuDQpvcGVy
YXRpb24gdG8gY29weSB0aGUgY29udGVudHMgb2YgdGhlIGNhbmRpZGF0ZSBkYXRhIHN0b3JlIGlu
dG8gdGhlDQpydW5uaW5nIGRhdGEgc3RvcmUuICBCdXQgaWYgd2UgYWdyZWVkIHRoYXQgcnVubmlu
ZyBlcXVhbHMgaW50ZW5kZWQsIEkNCmRvbid0IHNlZSB3aGF0IHRoZSBleHBsaWNpdCByZXF1ZXN0
IHdvdWxkIGJlIHRvIHRyYW5zaXRpb24gaW50ZW5kZWQgLw0KcnVubmluZyBpbnRvIGFwcGxpZWQv
YWN0dWFsPw0KDQpJbiBORVRDT05GLCBhcyBzb29uIGFzIHNvbWV0aGluZyBpcyB3cml0dGVuIGlu
dG8gcnVubmluZyAodmlhIGFuDQpleHBsaWNpdCBlZGl0LWNvbmZpZyB0b3dhcmRzIHJ1bm5pbmcg
b3IgdmlhIGNvbW1pdCksIHRoYXQgZGF0YSBpcw0Kc3RhcnRpbmcgdG8gYmUgdXNlZCBpbnRlcm5h
bGx5IGluIHRoZSBzeXN0ZW0uICBORVRDT05GIGRvZXMgbm90IHN0YXRlDQp0aGF0IHRoZSB3cml0
ZSByZXF1ZXN0IG11c3Qgbm90IHJldHVybiB1bnRpbCB0aGUgZGF0YSBoYXMgYmVlbg0KImFwcGxp
ZWQiLCBzbyBib3RoIGFzeW5jaHJvbm91cyBhbmQgc3luY2hyb25vdXMgaW1wbGVtZW50YXRpb25z
IHNlZW1zDQp0byBiZSBvay4NCg0KSXQgaXMgbm90IHBvc3NpYmxlIHRvIHdyaXRlIHNvbWV0aGlu
ZyBpbnRvIE5FVENPTkYncyBydW5uaW5nIGRhdGENCnN0b3JlIChpbnRlbmRlZCBjb25maWcpIGFu
ZCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgdXNlZCBpbnRlcm5hbGx5Lg0KDQo+ICAgKiBJbiB3aGF0
IHdlIHJlZmVycmVkIHRvIGFzIGEg4oCYc3luY2hyb25vdXPigJkgc3lzdGVtIOKAkyB3ZSBleHBl
Y3QgdGhlIGF0dGVtcHQNCj4gICAgIHRvIG1ha2UgdGhlIGludGVuZGVkIHN0YXRlIHRyYW5zaXRp
b24gdG8gdGhlIGFjdHVhbCBzdGF0ZSB0byBiZSBjb21wbGV0ZWQNCj4gICAgIHdoZW4gdGhlIG9w
ZXJhdGlvbiByZXR1cm5zIChlLmcuLCBhZnRlciBhIDxjb21taXQgLz4pIHRoZW4gdGhlIDxvayAv
Pg0KPiAgICAgc2hvdWxkIHJldHVybiBvbmx5IHdoZW4gdGhpcyBpbnRlbnRpb24gaGFzIGJlZW4g
YXBwbGllZC4NCg0KT2suICBCdXQgc2VlIGJlbG93Lg0KDQo+ICAgKiBXZSByZXF1aXJlIHRoZSBh
YmlsaXR5IGZvciBhbiBOTVMgdG8gYmUgYWJsZSB0byBzZWUgYm90aCB0aGUgaW50ZW5kZWQgYW5k
DQo+ICAgICB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24g4oCTIHN1Y2ggdGhhdCBpdCBjYW4gY2hl
Y2sgd2hldGhlciBpdHMgaW50ZW50aW9uIGlzDQo+ICAgICBjdXJyZW50bHkgdGhlIGFwcGxpZWQg
Y29uZmlndXJhdGlvbiwgb3IgaGFzIG5vdCB5ZXQgYmVlbiBhcHBsaWVkIGR1ZSB0bw0KPiAgICAg
c29tZSBleHRlcm5hbCBkZXBlbmRlbmN5IChlLmcuLCBsaW5lIGNhcmQgbm90IHBsdWdnZWQgaW4p
Lg0KDQpBcmUgeW91IHNheWluZyB0aGF0IGluIGEgc3luY2hyb25vdXMgc3lzdGVtLCBpZiBJIHdy
aXRlIHRoZSBjb25maWcgb2YNCmEgY2FyZCB0aGF0IGlzIG5vdCBwbHVnZ2VkIGluLCBteSA8Y29t
bWl0Lz4gd2lsbCBoYW5nIHVudGlsIHRoZSBjYXJkDQpoYXMgYmVlbiBwbHVnZ2VkIGluPw0KDQo+
ICAgKiBBIHBvcnRpb24gb2YgdGhlIG9wZXJhdGlvbmFsIHN0YXRlIGRhdGUgKG1hcmtlZCBvcGVy
YXRpb25hbDogdHJ1ZSkgaXMgdGhlDQo+ICAgICBzZXQgb2YgdmFyaWFibGVzIHRoYXQgYXJlIG5v
dCByZWxhdGVkIHRvIHN0YXRlIHRoYXQgYW4gZXh0ZXJuYWwgc3lzdGVtIGNhbg0KPiAgICAgYXNz
ZXJ0IHRoZSB2YWx1ZSBvZiDigJQgZm9yIGV4YW1wbGUsIGEgY291bnRlciwgb3IgYSBuZWdvdGlh
dGVkIHByb3RvY29sDQo+ICAgICB0aW1lci4NCg0KT2ssIGJ1dCB0aGVyZSBpcyBhIHNpbXBsZXIg
c29sdXRpb24gdG8gdGhpcyA7LSkNCg0KPiAgICogV2UgYmVsaWV2ZSB0aGF0IHRoZXJlIGlzIGFu
IGltcG9ydGFudCBhZHZhbnRhZ2UgaW4gYmVpbmcgYWJsZSB0bw0KPiAgICAgc3ludGFjdGljYWxs
eSAvIHN0cnVjdHVyYWxseSByZXRyaWV2ZSB0aGUgc2V0IG9mIHN0YXRlIHRoYXQgaXMgYXNzb2Np
YXRlZA0KPiAgICAgd2l0aCBzb21lIHNldCBvZiBpbnRlbmRlZCBzdGF0ZS4gVGhpcyBpcyBub3Qg
4oCYZWFzeeKAmSB0b2RheSwgYXMgdGhlcmUgaXMgbm8NCj4gICAgIGNvbW1vbiB3YXkgdG8gbGlu
ayB0aGUgdHdvIOKAkyBlc3BlY2lhbGx5IGFzIG1vZGVscyBhcmUgY29tcG9zZWQuIFRoaXMgZG9l
cw0KPiAgICAgbm90IGltcGx5IHRoYXQgd2UgdW5kZXJzdGFuZCB0aGUgc2VtYW50aWNzIG9mIHRo
YXQgc2V0IG9mIHN0YXRlIOKAkyBidXQNCj4gICAgIHNpbXBseSB0aGF0IHdlIGNhbiByZXRyaWV2
ZSBhbGwgc3RhdGUgZGF0YSB0aGF0IHJlbGF0ZXMgdG8gYSBwYXJ0aWN1bGFyDQo+ICAgICBlbnRp
dHkgdGhhdCB3ZSBleHByZXNzZWQgc29tZSBpbnRlbnRpb24gYWJvdXQgKGUuZy4sIGFsbCBzdGF0
ZSBkYXRhIHRoYXQNCj4gICAgIGNvcnJlc3BvbmRzIHRvIGEgcGFydGljdWxhciBpbnRlcmZhY2Ug
b3IgQkdQIHBlZXIpLg0KDQpPay4NCg0KPiAgICAgVGhpcyBkaXZpc2lvbiBpcyB2ZXJ5DQo+ICAg
ICBpbXBvcnRhbnQsIHNpbmNlIHRoZXJlIGlzIHNlcGFyYXRpb24gYmV0d2VlbiBlbGVtZW50cyBv
ZiB0aGUgTk1TIHRoYXQNCj4gICAgIGludGVyYWN0IHdpdGggdGhlIG5ldHdvcmssIGFuZCB0aG9z
ZSB0aGF0IGRvIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUNCj4gICAgIHNlbWFudGljcy9jb250ZW50
cyBvZiB0aGUgZGF0YSBsZWF2ZXMuICBGb3Igc29tZSBPcGVuQ29uZmlnIG9wZXJhdG9ycywNCj4g
ICAgIHRoaXMgc2VwYXJhdGlvbiBvZiBjb25jZXJucyBpcyBwYXJ0IG9mIHRoZWlyIGN1cnJlbnQg
Tk1TIHNvZnR3YXJlDQo+ICAgICBhcmNoaXRlY3R1cmUuDQo+IA0KPiAgICogSW4gdGVybXMgb2Yg
YWNjZXNzaW5nIHN1YnNldHMgb2YgbGVhdmVzLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG86DQo+IA0K
PiAgICAgICArIFJldHJpZXZlIHRoZSBpbnRlbmRlZCBzdGF0ZSDigJMgdGhpcyBpcyBkb25lIHdp
dGggYSBtZXRob2QgdGhhdCBkb2VzDQo+ICAgICAgICAgc2ltaWxhciB0byBnZXQtY29uZmlnIGlu
IE5FVENPTkYuDQo+IA0KPiAgICAgICArIFJldHJpZXZlIHRoZSBhY3R1YWwgKyBvcGVyYXRpb25h
bCBzdGF0ZSBvZiB0aGUgZGV2aWNlIOKAkyBkb25lIHdpdGggYQ0KPiAgICAgICAgIG1ldGhvZCBz
aW1pbGFyIHRvIGdldC4NCg0KQWN0dWFsbHksIHRoaXMgaXMgbm90IHdoYXQgTkVUQ09ORidzIDxn
ZXQ+IGdpdmVzIHlvdS4gIEl0IHdpbGwgZ2l2ZQ0KeW91IGludGVuZGVkICsgb3BlcmF0aW9uYWwu
ICBCdXQgd2UgY291bGQgZGVmaW5lIGEgbmV3IHJwYyB0aGF0IGdpdmVzDQp5b3UgdGhpcyBpbiBO
RVRDT05GLg0KDQo+ICAgICAgICsgUmV0cmlldmUgb25seSB0aGUgb3BlcmF0aW9uYWwgc3RhdGUg
4oCTIGRvbmUgd2l0aCBhIG1ldGhvZCBzdWNoIGFzDQo+ICAgICAgICAgZ2V0LW9wZXJhdGlvbmFs
Lg0KPiANCj4gICAgICAgKyBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBiZSBhYmxlIHRvIGRp
c3Rpbmd1aXNoIGludGVuZGVkL2FjdHVhbC8NCj4gICAgICAgICBvcGVyYXRpb25hbCB2YXJpYWJs
ZXMgbGVhdmVzIHRocm91Z2ggdGhlIGRhdGEgbW9kZWwuDQo+IA0KPiAgICAgICArIFdlIGRpZCBu
b3QgZGVmaW5lIGEgcmVxdWlyZW1lbnQgZm9yIGEgZ2V0LWFjdHVhbCB0eXBlIGNhbGwgaW4NCj4g
ICAgICAgICBvcGVuY29uZmlnLW9wc3RhdGUsIGJ1dCB0aGVyZSBtYXkgYmUgc29sdXRpb25zIHRo
YXQgZG8gd2FudCBzb21ldGhpbmcNCj4gICAgICAgICBsaWtlIHRoaXMgKGFzIHBlciBCZW5vaXTi
gJlzIG1haWwgdG8gdGhlIG5ldG1vZCBsaXN0IHllc3RlcmRheSwgd2hlcmUgaXQNCj4gICAgICAg
ICBpcyByZWZlcmVuY2VkIGFzIGdldC1jb25maWctZmFsc2UpLg0KPiANCj4gICAqIFdlIGRvIG5v
dCByZXF1aXJlIHRoYXQgdGhlIHR3byB0cmVlcyBmb3IgaW50ZW5kZWQgYW5kIGFjdHVhbCBoYXZl
DQo+ICAgICBpZGVudGljYWwgcGF0aHMgaW4gdGhlIGRhdGEgbW9kZWwuIFRoZXkgYXJlIHRoZSBz
YW1lIHNldCBvZiBsZWF2ZXMg4oCTIGJ1dA0KPiAgICAgaXQgTVVTVCBiZSBwb3NzaWJsZSB0byBj
aGVjayBib3RoLiBJbiBvcGVuY29uZmlnLW9wc3RhdGUgdGhlbiB3ZQ0KPiAgICAgY29uc2lzdGVu
dGx5IGFjaGlldmUgdGhpcyBieSBoYXZpbmcgdGhlIHNhbWUgc2V0IG9mIGxlYXZlcyAodHlwaWNh
bGx5DQo+ICAgICBncm91cGluZyBGT08tY29uZmlnKSB0aGF0IGlzIGluY2x1ZGVkIHVuZGVyIGJv
dGggY29udGFpbmVyIGNvbmZpZyAod2hlcmUNCj4gICAgIHRoZXkgYXJlIGludGVuZGVkKSBhbmQg
Y29udGFpbmVyIHN0YXRlICh3aGVyZSB0aGV5IGFyZSBhcHBsaWVkKSkuIFNpbmNlDQo+ICAgICB0
aGVyZSBpcyBhIGNvbW1vbiB3YXkgdG8gYmUgYWJsZSB0byByZWxhdGUgdGhlc2UgdGhyb3VnaCB0
aGUgc3RydWN0dXJlLA0KPiAgICAgdGhlbiB0aGlzIGlzIE9LIGZvciB1cy4NCj4gDQo+IFRoYW5r
cyBhZ2Fpbi4NCj4gDQo+IEtpbmQgcmVnYXJkcywNCj4gQW5lZXMsIE1hcmN1cyAmIFJvYi4NCg0K
DQovbWFydGluDQoNCg0KDQo+IA0KPiBPbiAyMyBKdW5lIDIwMTUgYXQgMTY6NDQ6MzYsIEJlbm9p
dCBDbGFpc2UgKGJjbGFpc2VAY2lzY28uY29tKSB3cm90ZToNCj4gDQo+ID4gDQo+IA0KPiA+IA0K
PiANCj4gPiANCj4gDQo+ID4gDQo+IA0KPiA+IERlYXIgYWxsLA0KPiANCj4gPiBJbiBvcmRlciB0
byBjbGFyaWZ5IHRoZSBzaXR1YXRpb24sIEkgY29tcGlsZWQgc29tZSBwb2ludHMgZnJvbSBteQ0K
PiA+IG5vdGVzIGFuZCBjcmVhdGVkIGEgY291cGxlIG9mIGRpYWdyYW1zLiBUaGlzIHdhcyBpbml0
aWFsbHkgY3JlYXRlZA0KPiA+IGZvciBteSBwZXJzb25hbCB1c2UsIGJ1dCBpZiBpdCBoZWxwcyB3
aXRoIHRoZSBkaXNjdXNzaW9uLCBwbGVhc2UNCj4gPiB1c2UgaXQuDQo+IA0KPiA+IFRoZSBmaXJz
dCBvcGVuIGlzc3VlIGlzIHRlcm1pbm9sb2d5IElNTy4NCj4gDQo+ID4gICAgIC0gaW50ZW5kZWQs
IGFwcGxpZWQNCj4gDQo+ID4gICAgIC0gc3luY2hyb25vdXMvYXN5bmNocm9ub3VzDQo+IA0KPiA+
IFRoZXJlIGFyZSB0d28gc3luY2hyb25vdXMgbGV2ZWxzOiB0aGUgcHJvdG9jb2wgKE5FVENPTkYp
IGFuZA0KPiA+IG5ldHdvcmsgZWxlbWVudCBpbXBsZW1lbnRhdGlvbi4gQXMgS2VudCBtZW50aW9u
ZWQ6ICJLZW50IE5FVENPTkYgaXMNCj4gPiBhIHN5bmNocm9ub3VzIHByb3RvY29sIGJ1dCBzdGF0
ZSBtYXkgY2hhbmdlIGFzeW5jaHJvbm91c2x5LiINCj4gDQo+ID4gDQo+IEl0IHdvdWxkIGJlbmVm
aWNpYWwgZm9yDQo+ID4gdGhlIGF1dGhvcnMgdG8gZXhwbGFpbiB3aGF0IGhhcHBlbnMgaW4gdGhl
IGZvbGxvd2luZyBORVRDT05GIHNlcnZlcg0KPiA+IHR3byBjYXNlczoNCj4gPiAgICAgIC0gYW4N
Cj4gPiBleGFtcGxlIG9mIChub24tTkVUQ09ORikgYXN5bmNocm9ub3VzOiBSUEMgYW5kIGxlYWYg
dXBkYXRlIChmaXJzdA0KPiA+IGludGVuZGVkLCB0aGVuIGFwcGxpZWQpDQo+IA0KPiA+ICAgICAt
IGV4YW1wbGUgb2YgZnVsbCBORVRDT05GIHN5bmNocm9ub3VzOiBSUEMgYW5kDQo+ID4gbGVhZiB1
cGRhdGUuIEluIHRoaXMgY2FzZSwgZHVwbGljYXRlIGxlYWYuDQo+ID4gDQo+IA0KPiA+IFRoZSBz
ZWNvbmQgb3BlbiBpc3N1ZSBpcyB0aGF0IGl0J3Mgbm90IGNsZWFyIHdoaWNoIGV4YWN0IGZlYXR1
cmVzDQo+ID4gYXJlIHJlcXVlc3RlZDogYSBicmVha2Rvd24gcGVyIFJGQzYwODdiaXMsIHBlciBZ
QU5HIGxhbmd1YWdlLCBhbmQNCj4gPiBwZXIgTkVUQ09ORiB3b3VsZCBoZWxwLiBUaGlzIGlzIHdo
YXQgSSd2ZSBiZWVuIHRyeWluZyB0byBkbyB3aXRoDQo+ID4gdGhlIGNvdXBsZSBvZiBhdHRhY2hl
ZCBwaWN0dXJlcy4gSSB3b3VsZCBsaWtlIHRvIGdldCBjb25maXJtYXRpb24NCj4gPiBmcm9tIHRo
ZSBvcGVuY29uZmlnIHRoYXQgdGhlIHVuZGVyc3RhbmRpbmcgaXMgcmlnaHQuDQo+IA0KPiA+IA0K
PiANCj4gPiANCj4gDQo+IFvigKZzbmlwIGltYWdlc+KApl0NCj4gDQo+ID4gDQo+IA0KPiA+IA0K
PiANCj4gPiBTb21lIGFkZGl0aW9uYWwgcXVlc3Rpb25zOg0KPiANCj4gPiAtIERvbid0IHdlIG5l
ZWQgYW4gZXh0cmEgL3N0YXJ0dXAgZm9yIHN0YXJ0dXAgcGFyYW1ldGVycz8gT3INCj4gPiBzdGFy
dHVwIHBhcmFtZXRlcnMgd2lsbCBhbHdheXMgYmUgdGhlIGludGVuZGVkIGNvbmZpZ3VyYXRpb24/
DQo+IA0KPiA+IC0gIlRoZSB3YXkgd2UgcmVwcmVzZW50IG9wLXN0YXRlIG11c3QgYmUgY29uc2lz
dGVudCBhY3Jvc3MgYWxsDQo+ID4gbW9kZWxzIg0KPiANCj4gPiBXaGF0IGlmIG9uZSBvZiB0aGUg
bW9kZWxzIGlzIG5vdCBjb25zaXN0ZW50PyBJbiB0aGF0IGNhc2UsIG9ubHkgdGhlDQo+ID4gZGVz
Y3JpcHRpb24gd2lsbCBtYWtlIHRoZSBsaW5rIGJldHdlZW4gdGhlIGNvbmZpZy1mYWxzZSBhbmQN
Cj4gPiBjb25maWctdHJ1ZSBsZWFmLCByaWdodD8gU28gZG9uJ3Qgd2UgbmVlZCB0aGF0IGxpbmsg
YW55d2F5Pw0KPiANCj4gPiBUaGF0IG1ha2VzIHRoZSBsaW5rIHRvICJBYmlsaXR5IHRvIHJlbGF0
ZSBjb25maWd1cmF0aW9uIHRvDQo+ID4gb3BlcmF0aW9uYWwgc3RhdGUgbXVzdCBiZSBjb25zaXN0
ZW50Ii4NCj4gDQo+ID4gICAgDQo+IA0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fDQo+ID4gbmV0bW9kIG1haWxpbmcgbGlzdA0KPiA+IG5ldG1vZEBp
ZXRmLm9yZw0KPiA+IGh0dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlzdGluZm8vbmV0bW9k
DQo+ID4gDQo+IA0KPiA+IA0K


From nobody Wed Jun 24 13:10:34 2015
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 5D1031B2DA3 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:10:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.311
X-Spam-Level: 
X-Spam-Status: No, score=-1.311 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 QSI2Tnv2wOye for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:10:31 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 852801B2D99 for <netmod@ietf.org>; Wed, 24 Jun 2015 13:10:31 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id C85031AE06C0; Wed, 24 Jun 2015 22:10:30 +0200 (CEST)
Date: Wed, 24 Jun 2015 22:10:30 +0200 (CEST)
Message-Id: <20150624.221030.2196523344604052330.mbj@tail-f.com>
To: kwatsen@juniper.net
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <D1B07D94.B397B%kwatsen@juniper.net>
References: <558AB359.5040609@cisco.com> <20150624.161041.1187353431349075601.mbj@tail-f.com> <D1B07D94.B397B%kwatsen@juniper.net>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/Eb1Xgdpf5jtNPyWqJlH-PU0-lyw>
Cc: netmod@ietf.org
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 20:10:33 -0000

Kent Watsen <kwatsen@juniper.net> wrote:
> 
> Hi Martin,
> 
> 
> >Here's the updated table:
> >
> >       running      actual config    operational state
> >       -------      -------------    -----------------
> >  t0    half            half             half
> >  t1    auto            half             half
> >  t2    auto            half (*)         half
> >  t3    auto            auto             half
> >  t4    auto            auto             full
> 
> 
> I don't understand how actual is ever not the same as operational.

If it was always the same it would not be needed.

See Rob's picture.  In that picture, the schema for "actual" is the
same as for "intended".

> At
> least in my view, actual is just a subset of operational (the subset
> defined by config=true nodes).  What am I missing?

Well, I am still trying to understand what (if any) meaning this
"actual config" has.  But Rob was pretty clear in his last email:

  * We require the ability for an NMS to be able to see both the intended and
    the actual configuration

If I understand this correctly, "actual config" is only interesting in
an asynchronous implementation; in a synchronous implementation actual
will always be equal to intended.

> Also, what does (*)
> represent?

The (*) was just to relate the text to the table.


/martin


From nobody Wed Jun 24 13:37:18 2015
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 0196D1B2DC4 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:37:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.378
X-Spam-Level: 
X-Spam-Status: No, score=-1.378 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, RCVD_IN_DNSWL_LOW=-0.7, 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 cwdVgZSHHV9E for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:37:14 -0700 (PDT)
Received: from mail-la0-f44.google.com (mail-la0-f44.google.com [209.85.215.44]) (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 371D01A7017 for <netmod@ietf.org>; Wed, 24 Jun 2015 13:37:09 -0700 (PDT)
Received: by lagx9 with SMTP id x9so33147207lag.1 for <netmod@ietf.org>; Wed, 24 Jun 2015 13:37:07 -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=YgCqz8Doi7RgEw+ISmYn1MVc6YpOxtRhDUl404xLwpM=; b=kWYtKuYz1sWLfBbKZzWD3lpweG5PHM5PxspE2r7BD9OmxZD/PAc8AtMGT3ZFgZ/byO uXCy6FUsltcbjhBqC8W/LJIdtDrQtdVO4PvUpPhGBU5y/F2VL2B7UJZm9FLaTCqToNNu twAEBHU7vxMXHGJZ3UZS8FnbPAF8HJinJtqIW2YpBcJhP/jj6jTxCm85e+LabV22vEdv fApKw2M5Xiyc1nC3lUFomONWG+ivXZQXPe1Ndg3gD4Ok8sgvw5rMKIaSpOKoKrmErrA4 e4jE1ndsIHGU0Nm3Fhu1Xq+QaQ88ZL9rr3HfxQohPYH58L1flfXIcAHoJiTMHbtnj+il U0gA==
X-Gm-Message-State: ALoCoQlPOGGZV1XQJTZzQ1W+Ruag2VuE0T5W3DuqAUB4V7cUwpNbsQ4voLb6GK+Zwy3RQFehAVe8
MIME-Version: 1.0
X-Received: by 10.112.186.35 with SMTP id fh3mr41527869lbc.82.1435178227780; Wed, 24 Jun 2015 13:37:07 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 24 Jun 2015 13:37:07 -0700 (PDT)
In-Reply-To: <20150624.221030.2196523344604052330.mbj@tail-f.com>
References: <558AB359.5040609@cisco.com> <20150624.161041.1187353431349075601.mbj@tail-f.com> <D1B07D94.B397B%kwatsen@juniper.net> <20150624.221030.2196523344604052330.mbj@tail-f.com>
Date: Wed, 24 Jun 2015 13:37:07 -0700
Message-ID: <CABCOCHQUWHL1f9oxQNBqjzKoAxbdpL=rckGKYkzPNDbjXQenLg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a1134dcc874e6620519497810
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/2WL4cBMcp2DQ1d_Rf4hMmRpNwA4>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 20:37:16 -0000

--001a1134dcc874e6620519497810
Content-Type: text/plain; charset=UTF-8

On Wed, Jun 24, 2015 at 1:10 PM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Kent Watsen <kwatsen@juniper.net> wrote:
> >
> > Hi Martin,
> >
> >
> > >Here's the updated table:
> > >
> > >       running      actual config    operational state
> > >       -------      -------------    -----------------
> > >  t0    half            half             half
> > >  t1    auto            half             half
> > >  t2    auto            half (*)         half
> > >  t3    auto            auto             half
> > >  t4    auto            auto             full
> >
> >
> > I don't understand how actual is ever not the same as operational.
>
> If it was always the same it would not be needed.
>
> See Rob's picture.  In that picture, the schema for "actual" is the
> same as for "intended".
>



The concept of datastores fits "operational" well because it represents
the module set and potentially same set of data node instances,
where all data node instances are considered to be in the same
network management state.

It is also extensible because leafs like the <source> and <target>
parameters in NETCONF can identify any datastore (or non-datastore,
like 'url') and new datastores can be easily added in YANG
(conditionally based on YANG features).



> > At
> > least in my view, actual is just a subset of operational (the subset
> > defined by config=true nodes).  What am I missing?
>
> Well, I am still trying to understand what (if any) meaning this
> "actual config" has.  But Rob was pretty clear in his last email:
>
>   * We require the ability for an NMS to be able to see both the intended
> and
>     the actual configuration
>
> If I understand this correctly, "actual config" is only interesting in
> an asynchronous implementation; in a synchronous implementation actual
> will always be equal to intended.
>


Our server supports edit callbacks that are synchronous or asynchronous,
on a per-object registration basis.

It would be better if <get-operational> worked on all objects.
It is trivial to return the intended value if the server is sure it is
also the actual value.




> > Also, what does (*)
> > represent?
>
> The (*) was just to relate the text to the table.
>
>
> /martin
>


Andy


>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a1134dcc874e6620519497810
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Jun 24, 2015 at 1:10 PM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">Kent Watsen &lt;<a href=3D=
"mailto:kwatsen@juniper.net">kwatsen@juniper.net</a>&gt; wrote:<br>
&gt;<br>
&gt; Hi Martin,<br>
&gt;<br>
&gt;<br>
&gt; &gt;Here&#39;s the updated table:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0running=C2=A0 =C2=A0 =C2=A0 actual conf=
ig=C2=A0 =C2=A0 operational state<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0-------=C2=A0 =C2=A0 =C2=A0 -----------=
--=C2=A0 =C2=A0 -----------------<br>
&gt; &gt;=C2=A0 t0=C2=A0 =C2=A0 half=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 half=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0half<br>
&gt; &gt;=C2=A0 t1=C2=A0 =C2=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 half=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0half<br>
&gt; &gt;=C2=A0 t2=C2=A0 =C2=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 half (*)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0half<br>
&gt; &gt;=C2=A0 t3=C2=A0 =C2=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0half<br>
&gt; &gt;=C2=A0 t4=C2=A0 =C2=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0full<br>
&gt;<br>
&gt;<br>
&gt; I don&#39;t understand how actual is ever not the same as operational.=
<br>
<br>
If it was always the same it would not be needed.<br>
<br>
See Rob&#39;s picture.=C2=A0 In that picture, the schema for &quot;actual&q=
uot; is the<br>
same as for &quot;intended&quot;.<br></blockquote><div><br></div><div><br><=
/div><div><br></div><div>The concept of datastores fits &quot;operational&q=
uot; well because it represents</div><div>the module set and potentially sa=
me set of data node instances,</div><div>where all data node instances are =
considered to be in the same</div><div>network management state.</div><div>=
<br></div><div>It is also extensible because leafs like the &lt;source&gt; =
and &lt;target&gt;</div><div>parameters in NETCONF can identify any datasto=
re (or non-datastore,</div><div>like &#39;url&#39;) and new datastores can =
be easily added in YANG</div><div>(conditionally based on YANG features).</=
div><div><br></div><div><br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
&gt; At<br>
&gt; least in my view, actual is just a subset of operational (the subset<b=
r>
&gt; defined by config=3Dtrue nodes).=C2=A0 What am I missing?<br>
<br>
Well, I am still trying to understand what (if any) meaning this<br>
&quot;actual config&quot; has.=C2=A0 But Rob was pretty clear in his last e=
mail:<br>
<br>
=C2=A0 * We require the ability for an NMS to be able to see both the inten=
ded and<br>
=C2=A0 =C2=A0 the actual configuration<br>
<br>
If I understand this correctly, &quot;actual config&quot; is only interesti=
ng in<br>
an asynchronous implementation; in a synchronous implementation actual<br>
will always be equal to intended.<br></blockquote><div><br></div><div><br><=
/div><div>Our server supports edit callbacks that are synchronous or asynch=
ronous,</div><div>on a per-object registration basis.</div><div><br></div><=
div>It would be better if &lt;get-operational&gt; worked on all objects.</d=
iv><div>It is trivial to return the intended value if the server is sure it=
 is</div><div>also the actual value.</div><div><br></div><div><br></div><di=
v><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bo=
rder-left:1px #ccc solid;padding-left:1ex">
<br>
&gt; Also, what does (*)<br>
&gt; represent?<br>
<br>
The (*) was just to relate the text to the table.<br>
<br>
<br>
/martin<br></blockquote><div><br></div><div><br></div><div>Andy</div><div>=
=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bo=
rder-left:1px #ccc solid;padding-left:1ex">
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div></div>

--001a1134dcc874e6620519497810--


From nobody Wed Jun 24 13:43:17 2015
Return-Path: <aashaikh@google.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 D951B1B2DCB for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:43:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.788
X-Spam-Level: 
X-Spam-Status: No, score=-0.788 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 ow9CHn3w83Hg for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:43:14 -0700 (PDT)
Received: from mail-ob0-x233.google.com (mail-ob0-x233.google.com [IPv6:2607:f8b0:4003:c01::233]) (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 486BF1B2DC6 for <netmod@ietf.org>; Wed, 24 Jun 2015 13:43:14 -0700 (PDT)
Received: by obbop1 with SMTP id op1so34466015obb.2 for <netmod@ietf.org>; Wed, 24 Jun 2015 13:43:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=BwONZIk1hCvbDcl6kke7wz3ehmKEUHqv2AWE1i4nfXM=; b=UPeQAZdznbRhjY838V2bD9MJST52DlkaPDi0lr/725v1uBp1bxKythYFihSUW874vB uB35HQWbtZ95AtCe8S4TyqLxNOr9BA/qWQBpQi5WQai6mfGVBu6aalMcRIRj9oluS7nv bcZSeg+TC8jw5eb/sEsmBhDMm9RYg+8ipq+iIK8NBGBWGyXvfGnAsf9auFiPBJZjjabg 3JFK04q2CuYTqQ+nJ9iSI1O2UKYmn+VegkaycW5+g7epzPQOcK+rLIIZGhHKvnm7eQpV UFE0EQoHoBh0gsQCEEAUb0U9IPRw3FSVHyHP0S70b5AnnxJ/EmdznokInvsgdC2+EEl8 0n2w==
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=BwONZIk1hCvbDcl6kke7wz3ehmKEUHqv2AWE1i4nfXM=; b=Zgt19ppgkI2FdSvNgqIBGb6/z5OLHPSweyNKiZF2lCaQ/GwMauN3qTBGOcOVISV4Qx 46z3QApYjDFAzv69lfZDw6zTvfUKsaH6xZD2cp4Rg3fK0V7bMPs5t4EM/0NVisPqoXvL C1DUzYTJe1e9/oxEEwBzZES82IhtrbBqV/BtEXluN07CBKtgcfEeSDDSORbh1pH++vz/ 65Wd9eEftXZEfk8DtpG85ZI3jBHUctr8WqCq2JxZPflrUPalBBybGFT9myX73KEs4t2f IoFXNmcORe87/FJVaEBCeGtHzHaLaTRmCk2RERYSiGKSHeo9L160TfRnxLAZH1Bq4mFK lJkg==
X-Gm-Message-State: ALoCoQkXC/UkcpHnadGj4o0/WtvCtTWGv/sE2bnpHXFafYRioq7L8t/OL5QQKKcZgpsLqcEmJMca
MIME-Version: 1.0
X-Received: by 10.202.97.197 with SMTP id v188mr34448842oib.100.1435178593715;  Wed, 24 Jun 2015 13:43:13 -0700 (PDT)
Received: by 10.182.52.199 with HTTP; Wed, 24 Jun 2015 13:43:13 -0700 (PDT)
In-Reply-To: <20150624.221030.2196523344604052330.mbj@tail-f.com>
References: <558AB359.5040609@cisco.com> <20150624.161041.1187353431349075601.mbj@tail-f.com> <D1B07D94.B397B%kwatsen@juniper.net> <20150624.221030.2196523344604052330.mbj@tail-f.com>
Date: Wed, 24 Jun 2015 13:43:13 -0700
Message-ID: <CAJK7Zq+ZFCKjstTrgO4s3FHE+dhwjHUrArapqk3XOCW5iPkORw@mail.gmail.com>
From: Anees Shaikh <aashaikh@google.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a113d34be44bbb90519498e79
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/4W7XXghdEzOYiadeid6kCclz0EE>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 20:43:16 -0000

--001a113d34be44bbb90519498e79
Content-Type: text/plain; charset=UTF-8

Our understanding of the table is that it assumes you have an additional
state leaf to reflect the negotiated mode (i.e., operational state
negotiated by protocol) that would be reflected as the "operational" value.

Actual config was primarily motivated by asynchronous systems (as we
defined it in the mail Rob sent out) though there are a number of use
cases.  I think the meaning was clear , and Martin's table essentially
captures it.

thanks.
-- Anees

On Wed, Jun 24, 2015 at 1:10 PM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Kent Watsen <kwatsen@juniper.net> wrote:
> >
> > Hi Martin,
> >
> >
> > >Here's the updated table:
> > >
> > >       running      actual config    operational state
> > >       -------      -------------    -----------------
> > >  t0    half            half             half
> > >  t1    auto            half             half
> > >  t2    auto            half (*)         half
> > >  t3    auto            auto             half
> > >  t4    auto            auto             full
> >
> >
> > I don't understand how actual is ever not the same as operational.
>
> If it was always the same it would not be needed.
>
> See Rob's picture.  In that picture, the schema for "actual" is the
> same as for "intended".
>
> > At
> > least in my view, actual is just a subset of operational (the subset
> > defined by config=true nodes).  What am I missing?
>
> Well, I am still trying to understand what (if any) meaning this
> "actual config" has.  But Rob was pretty clear in his last email:
>
>   * We require the ability for an NMS to be able to see both the intended
> and
>     the actual configuration
>
> If I understand this correctly, "actual config" is only interesting in
> an asynchronous implementation; in a synchronous implementation actual
> will always be equal to intended.
>
> > Also, what does (*)
> > represent?
>
> The (*) was just to relate the text to the table.
>
>
> /martin
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a113d34be44bbb90519498e79
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Our understanding of the table is that it assumes you have=
 an additional state leaf to reflect the negotiated mode (i.e., operational=
 state negotiated by protocol) that would be reflected as the &quot;operati=
onal&quot; value.<div><br></div><div>Actual config was primarily motivated =
by asynchronous systems (as we defined it in the mail Rob sent out) though =
there are a number of use cases.=C2=A0 I think the meaning was clear , and =
Martin&#39;s table essentially captures it.</div><div><br></div><div>thanks=
.</div><div>-- Anees</div></div><div class=3D"gmail_extra"><br><div class=
=3D"gmail_quote">On Wed, Jun 24, 2015 at 1:10 PM, Martin Bjorklund <span di=
r=3D"ltr">&lt;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-=
f.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"m=
argin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=
=3D"">Kent Watsen &lt;<a href=3D"mailto:kwatsen@juniper.net">kwatsen@junipe=
r.net</a>&gt; wrote:<br>
&gt;<br>
&gt; Hi Martin,<br>
&gt;<br>
&gt;<br>
&gt; &gt;Here&#39;s the updated table:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0running=C2=A0 =C2=A0 =C2=A0 actual conf=
ig=C2=A0 =C2=A0 operational state<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0-------=C2=A0 =C2=A0 =C2=A0 -----------=
--=C2=A0 =C2=A0 -----------------<br>
&gt; &gt;=C2=A0 t0=C2=A0 =C2=A0 half=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 half=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0half<br>
&gt; &gt;=C2=A0 t1=C2=A0 =C2=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 half=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0half<br>
&gt; &gt;=C2=A0 t2=C2=A0 =C2=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 half (*)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0half<br>
&gt; &gt;=C2=A0 t3=C2=A0 =C2=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0half<br>
&gt; &gt;=C2=A0 t4=C2=A0 =C2=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 auto=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0full<br>
&gt;<br>
&gt;<br>
&gt; I don&#39;t understand how actual is ever not the same as operational.=
<br>
<br>
</span>If it was always the same it would not be needed.<br>
<br>
See Rob&#39;s picture.=C2=A0 In that picture, the schema for &quot;actual&q=
uot; is the<br>
same as for &quot;intended&quot;.<br>
<span class=3D""><br>
&gt; At<br>
&gt; least in my view, actual is just a subset of operational (the subset<b=
r>
&gt; defined by config=3Dtrue nodes).=C2=A0 What am I missing?<br>
<br>
</span>Well, I am still trying to understand what (if any) meaning this<br>
&quot;actual config&quot; has.=C2=A0 But Rob was pretty clear in his last e=
mail:<br>
<br>
=C2=A0 * We require the ability for an NMS to be able to see both the inten=
ded and<br>
=C2=A0 =C2=A0 the actual configuration<br>
<br>
If I understand this correctly, &quot;actual config&quot; is only interesti=
ng in<br>
an asynchronous implementation; in a synchronous implementation actual<br>
will always be equal to intended.<br>
<span class=3D""><br>
&gt; Also, what does (*)<br>
&gt; represent?<br>
<br>
</span>The (*) was just to relate the text to the table.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
<br>
/martin<br>
</font></span><div class=3D"HOEnZb"><div class=3D"h5"><br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</div></div></blockquote></div><br></div>

--001a113d34be44bbb90519498e79--


From nobody Wed Jun 24 13:56:58 2015
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 1767A1B2DE0 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:56:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.311
X-Spam-Level: 
X-Spam-Status: No, score=-1.311 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 UQSEi-4rXT1x for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 13:56:54 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 2E07E1B2E12 for <netmod@ietf.org>; Wed, 24 Jun 2015 13:55:49 -0700 (PDT)
Received: from localhost (unknown [173.38.220.38]) by mail.tail-f.com (Postfix) with ESMTPSA id 11C4E1AE06C0; Wed, 24 Jun 2015 22:55:48 +0200 (CEST)
Date: Wed, 24 Jun 2015 22:55:47 +0200 (CEST)
Message-Id: <20150624.225547.450179435727655986.mbj@tail-f.com>
To: aashaikh@google.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CAJK7Zq+ZFCKjstTrgO4s3FHE+dhwjHUrArapqk3XOCW5iPkORw@mail.gmail.com>
References: <D1B07D94.B397B%kwatsen@juniper.net> <20150624.221030.2196523344604052330.mbj@tail-f.com> <CAJK7Zq+ZFCKjstTrgO4s3FHE+dhwjHUrArapqk3XOCW5iPkORw@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/QBGFUkpY_yqNmjceVfZqZiO21bI>
Cc: netmod@ietf.org
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 20:56:56 -0000

Anees Shaikh <aashaikh@google.com> wrote:
> Our understanding of the table is that it assumes you have an additional
> state leaf to reflect the negotiated mode (i.e., operational state
> negotiated by protocol) that would be reflected as the "operational" value.

Yes, in this example that is correct.  If we agree on the meaning of
these terms, we can discuss solutions.  I think two solutions have
been proposed:

  1. The data modeller defines three leafs, one for the intended config, one
     for the actual config (MUST be the same syntax as the intended), and
     one for the operational state.  

  2. The data modeller defines two leafs, one for the config, and one
     for the operational state.  The config leaf is instantiated in
     two different data stores; "running" and "operational",
     reflecting the intended and actual config, respectively.
     (It might be instantiated in other data stores as well, such as
     candidate and startup, and maybe ephemeral).

> Actual config was primarily motivated by asynchronous systems (as we
> defined it in the mail Rob sent out) though there are a number of use
> cases.  I think the meaning was clear

It's not completely clear; see my reply to Rob's email.


/martin

> and Martin's table essentially
> captures it.
> 
> thanks.
> -- Anees
> 
> On Wed, Jun 24, 2015 at 1:10 PM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Kent Watsen <kwatsen@juniper.net> wrote:
> > >
> > > Hi Martin,
> > >
> > >
> > > >Here's the updated table:
> > > >
> > > >       running      actual config    operational state
> > > >       -------      -------------    -----------------
> > > >  t0    half            half             half
> > > >  t1    auto            half             half
> > > >  t2    auto            half (*)         half
> > > >  t3    auto            auto             half
> > > >  t4    auto            auto             full
> > >
> > >
> > > I don't understand how actual is ever not the same as operational.
> >
> > If it was always the same it would not be needed.
> >
> > See Rob's picture.  In that picture, the schema for "actual" is the
> > same as for "intended".
> >
> > > At
> > > least in my view, actual is just a subset of operational (the subset
> > > defined by config=true nodes).  What am I missing?
> >
> > Well, I am still trying to understand what (if any) meaning this
> > "actual config" has.  But Rob was pretty clear in his last email:
> >
> >   * We require the ability for an NMS to be able to see both the intended
> > and
> >     the actual configuration
> >
> > If I understand this correctly, "actual config" is only interesting in
> > an asynchronous implementation; in a synchronous implementation actual
> > will always be equal to intended.
> >
> > > Also, what does (*)
> > > represent?
> >
> > The (*) was just to relate the text to the table.
> >
> >
> > /martin
> >
> > _______________________________________________
> > netmod mailing list
> > netmod@ietf.org
> > https://www.ietf.org/mailman/listinfo/netmod
> >


From nobody Wed Jun 24 14:14:56 2015
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 4B4E21B2E35; Wed, 24 Jun 2015 14:14:55 -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 lxgUbkt6ap-e; Wed, 24 Jun 2015 14:14:52 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id CA6961B2E3A; Wed, 24 Jun 2015 14:14:51 -0700 (PDT)
Received: from localhost (unknown [173.38.220.38]) by mail.tail-f.com (Postfix) with ESMTPSA id 3B8FB1AE06C0; Wed, 24 Jun 2015 23:14:50 +0200 (CEST)
Date: Wed, 24 Jun 2015 23:14:49 +0200 (CEST)
Message-Id: <20150624.231449.697617442831847315.mbj@tail-f.com>
To: netmod@ietf.org, netconf@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/4x3g40N4T9APE1L9AiItgqL3o_A>
Subject: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 21:14:55 -0000

Hi,

I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
to address Y45-04.  Note that YANG 1.1 uses the module
ietf-yang-library from draft-ietf-netconf-yang-library (hence the
crossposting).

[BTW, shouldn't ietf-yang-library be moved to NETMOD?]

We have a whole bunch of documents that have a normative reference to
draft-ietf-netmod-rfc6020bis, which has a normative reference to
draft-ietf-netconf-yang-library.  This means we need to finish this
document pretty soon.

I ran into some issues with ietf-yang-library:

  1.  The leaf "conformance" is of type "boolean".  It is not obvious
      what "conformance = false" means.  Should we change the name
      and/or type of this leaf?

      I don't have a good proposal, but what we need is a way to
      indicate "I implement the protocol accessible nodes in this
      module" vs. "I just list this module b/c some other module that
      I implement uses typdefs/groupings/... from it".

      This issue is related to the github issue #3.  I think we need
      this information; Y45-04 relies on it.


  2.  The "/modules/module" list is keyed by "name" and "revision".
      Should we really have "revision" as key?  A server can only
      implement one revision of a module, and should only list one
      revision of a module w/ conformance = false.  I suggest we make
      this leaf mandatory, and not part of the key.


/martin


      


From nobody Wed Jun 24 14:31:12 2015
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 800C51B2E47 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 14:31:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 wCfzPOTLJXoH for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 14:31:09 -0700 (PDT)
Received: from mail-la0-f44.google.com (mail-la0-f44.google.com [209.85.215.44]) (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 A1FF01B2E4E for <netmod@ietf.org>; Wed, 24 Jun 2015 14:31:01 -0700 (PDT)
Received: by laka10 with SMTP id a10so33879872lak.0 for <netmod@ietf.org>; Wed, 24 Jun 2015 14:31:00 -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=tBw5uWu9vCiu+nXISYDUDohLwTHc5ocGpLSN7fDifjA=; b=Xv4mgUodynchjFMgkB1bH+sZv73ydSnjt8FpaZqeSAzKfWkl2qR7OqH75QLzqmSg5T ze/lXdU9sQzhm7vEEo+V+WN19g2QiFjnMn5s26DSIo4S0ldRGCTym6Wqm7pcf5WJc0yh RovrNvkQPWhtAI1N2DKrAf7RCEByMscjaKJJbshwkWR05IODfhrfQ9/NBYV0AJjWH86E DZmlaF6keSzCnPrHaiWOcUG1pjbF8qOZn3Lj6r0pEVMWvQISVB0pcWNfPP6vsvYgeyJN lF2f8wC8Q6BlVKGGE4QJoRLJ8H+gq76vieb6DTlkofnY7W0wYQA7/tyu8QlwUtWzQMsk ln3Q==
X-Gm-Message-State: ALoCoQl98ew3+RiTOqjKuLACSAfoPq3CxmVNlalxNjNKB2lKvnXeeGkAEQG64noyC1fR4zqEiQl9
MIME-Version: 1.0
X-Received: by 10.152.43.69 with SMTP id u5mr41253244lal.119.1435181460132; Wed, 24 Jun 2015 14:31:00 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 24 Jun 2015 14:31:00 -0700 (PDT)
In-Reply-To: <20150624.231449.697617442831847315.mbj@tail-f.com>
References: <20150624.231449.697617442831847315.mbj@tail-f.com>
Date: Wed, 24 Jun 2015 14:31:00 -0700
Message-ID: <CABCOCHQW8rWRFyxKQ92u3ThP4Fa976vt1n=ogygsG+3Qx4caPA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a11c366601eac2b05194a3981
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/_acwMjo00CB8qGCjqcmBmAXxsn8>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 21:31:11 -0000

--001a11c366601eac2b05194a3981
Content-Type: text/plain; charset=UTF-8

On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Hi,
>
> I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> to address Y45-04.  Note that YANG 1.1 uses the module
> ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> crossposting).
>
> [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
>
> We have a whole bunch of documents that have a normative reference to
> draft-ietf-netmod-rfc6020bis, which has a normative reference to
> draft-ietf-netconf-yang-library.  This means we need to finish this
> document pretty soon.
>
> I ran into some issues with ietf-yang-library:
>
>   1.  The leaf "conformance" is of type "boolean".  It is not obvious
>       what "conformance = false" means.  Should we change the name
>       and/or type of this leaf?
>
>       I don't have a good proposal, but what we need is a way to
>       indicate "I implement the protocol accessible nodes in this
>       module" vs. "I just list this module b/c some other module that
>       I implement uses typdefs/groupings/... from it".
>
>       This issue is related to the github issue #3.  I think we need
>       this information; Y45-04 relies on it.
>
>

We went through this before and you didn't have a better suggestion last
time either.

conformance=false means the server is not claiming conformance for this
module.  A NETCONF <hello> should not have any modules tagged
as conformance=false.

CoMI relies on this module as well.
It has been ready for WGLC since January.




>
>   2.  The "/modules/module" list is keyed by "name" and "revision".
>       Should we really have "revision" as key?  A server can only
>       implement one revision of a module, and should only list one
>       revision of a module w/ conformance = false.  I suggest we make
>       this leaf mandatory, and not part of the key.
>


I am not in favor of this change.
Two modules "foo" and "bar" released on the same date
could not be represented.

I think the indexing is fine in the current draft.
The <get-schema> operation in NETCONF and RESTCONF need
the module name and the revision-date.

This module should not care how many revisions of each module
are listed.  This is the full YANG library, not a <hello> message.



>


> /martin
>
>
Andy



>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a11c366601eac2b05194a3981
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I am preparing a new version of draft-ietf-netmod-rfc6020bis in order<br>
to address Y45-04.=C2=A0 Note that YANG 1.1 uses the module<br>
ietf-yang-library from draft-ietf-netconf-yang-library (hence the<br>
crossposting).<br>
<br>
[BTW, shouldn&#39;t ietf-yang-library be moved to NETMOD?]<br>
<br>
We have a whole bunch of documents that have a normative reference to<br>
draft-ietf-netmod-rfc6020bis, which has a normative reference to<br>
draft-ietf-netconf-yang-library.=C2=A0 This means we need to finish this<br=
>
document pretty soon.<br>
<br>
I ran into some issues with ietf-yang-library:<br>
<br>
=C2=A0 1.=C2=A0 The leaf &quot;conformance&quot; is of type &quot;boolean&q=
uot;.=C2=A0 It is not obvious<br>
=C2=A0 =C2=A0 =C2=A0 what &quot;conformance =3D false&quot; means.=C2=A0 Sh=
ould we change the name<br>
=C2=A0 =C2=A0 =C2=A0 and/or type of this leaf?<br>
<br>
=C2=A0 =C2=A0 =C2=A0 I don&#39;t have a good proposal, but what we need is =
a way to<br>
=C2=A0 =C2=A0 =C2=A0 indicate &quot;I implement the protocol accessible nod=
es in this<br>
=C2=A0 =C2=A0 =C2=A0 module&quot; vs. &quot;I just list this module b/c som=
e other module that<br>
=C2=A0 =C2=A0 =C2=A0 I implement uses typdefs/groupings/... from it&quot;.<=
br>
<br>
=C2=A0 =C2=A0 =C2=A0 This issue is related to the github issue #3.=C2=A0 I =
think we need<br>
=C2=A0 =C2=A0 =C2=A0 this information; Y45-04 relies on it.<br>
<br></blockquote><div><br></div><div><br></div><div>We went through this be=
fore and you didn&#39;t have a better suggestion last</div><div>time either=
.</div><div><br></div><div>conformance=3Dfalse means the server is not clai=
ming conformance for this</div><div>module.=C2=A0 A NETCONF &lt;hello&gt; s=
hould not have any modules tagged</div><div>as conformance=3Dfalse.</div><d=
iv><br></div><div>CoMI relies on this module as well.=C2=A0</div><div>It ha=
s been ready for WGLC since January.</div><div><br></div><div><br></div><di=
v>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;=
border-left:1px #ccc solid;padding-left:1ex">
<br>
=C2=A0 2.=C2=A0 The &quot;/modules/module&quot; list is keyed by &quot;name=
&quot; and &quot;revision&quot;.<br>
=C2=A0 =C2=A0 =C2=A0 Should we really have &quot;revision&quot; as key?=C2=
=A0 A server can only<br>
=C2=A0 =C2=A0 =C2=A0 implement one revision of a module, and should only li=
st one<br>
=C2=A0 =C2=A0 =C2=A0 revision of a module w/ conformance =3D false.=C2=A0 I=
 suggest we make<br>
=C2=A0 =C2=A0 =C2=A0 this leaf mandatory, and not part of the key.<br></blo=
ckquote><div><br></div><div><br></div><div>I am not in favor of this change=
.</div><div>Two modules &quot;foo&quot; and &quot;bar&quot; released on the=
 same date</div><div>could not be represented.</div><div><br></div><div>I t=
hink the indexing is fine in the current draft.</div><div>The &lt;get-schem=
a&gt; operation in NETCONF and RESTCONF need</div><div>the module name and =
the revision-date.</div><div><br></div><div>This module should not care how=
 many revisions of each module</div><div>are listed.=C2=A0 This is the full=
 YANG library, not a &lt;hello&gt; message.</div><div><br></div><div>=C2=A0=
<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bord=
er-left:1px #ccc solid;padding-left:1ex">=C2=A0</blockquote><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pa=
dding-left:1ex">
<br>
/martin<br>
<br></blockquote><div><br></div><div>Andy</div><div><br></div><div>=C2=A0</=
div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-lef=
t:1px #ccc solid;padding-left:1ex">
<br>
<br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div></div>

--001a11c366601eac2b05194a3981--


From nobody Wed Jun 24 15:14:56 2015
Return-Path: <kwatsen@juniper.net>
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 0A4501B2EF1 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 15:14:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.302
X-Spam-Level: 
X-Spam-Status: No, score=-1.302 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, SPF_HELO_PASS=-0.001, 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 Sny3PraAm5ml for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 15:14:54 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0722.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::722]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3AFF61B2EEF for <netmod@ietf.org>; Wed, 24 Jun 2015 15:14:54 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB460.namprd05.prod.outlook.com (10.141.72.152) with Microsoft SMTP Server (TLS) id 15.1.195.15; Wed, 24 Jun 2015 22:14:49 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Wed, 24 Jun 2015 22:14:49 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Martin Bjorklund <mbj@tail-f.com>
Thread-Topic: [netmod] follow-up from virtual interim and i2rs discussions
Thread-Index: AQHQrUn1tc8m8WdLR0WVXSPXt52vpp25jG8AgABiMACAACpIAIAARtiAgAA5RICAAAV4gP//18oAgADykYCAAENPgIAACGGAgAAYXACAAEwsAP//360A
Date: Wed, 24 Jun 2015 22:14:49 +0000
Message-ID: <D1B0A09A.B39ED%kwatsen@juniper.net>
References: <558AB359.5040609@cisco.com> <20150624.161041.1187353431349075601.mbj@tail-f.com> <D1B07D94.B397B%kwatsen@juniper.net> <20150624.221030.2196523344604052330.mbj@tail-f.com>
In-Reply-To: <20150624.221030.2196523344604052330.mbj@tail-f.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: tail-f.com; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB460; 5:uPUDMgl5CxhXSAZnYi5dWjYm1hAeUf9ZfBHSVSnVvBP269nXk/cWQcU4BVIPZfXF07nWWE825xovUXhO31Ni53wVSAeHjJ6t/TouCZf+vPfGis+dDho2qwOa3v9psir/zzM0DP67FR1VX0SBJEBgMw==; 24:/UAdCVaorrh8C7jhH7kbjO5o6k+/lXyUflO1QR0vdiSSGj9F2TVh9bvuW0IITAeaN0NT06HX1U2JRxd57qZfXeosUUXHrdtRRHbvY2RIP/0=; 20:Gsaam9GB0vdHxzUYS38GsqdzkDbm1t3IXUqV3UhAWSorbYb87fmVEWmEx9XBUkzhMP/UfDRbjpo0P31WgQbvOg==
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB460;
x-microsoft-antispam-prvs: <CO1PR05MB4608416A9BC55260BB615D7A5AF0@CO1PR05MB460.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB460; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB460; 
x-forefront-prvs: 061725F016
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(51704005)(19580395003)(2656002)(93886004)(99286002)(54356999)(46102003)(87936001)(66066001)(83506001)(110136002)(86362001)(62966003)(40100003)(189998001)(122556002)(5001960100002)(36756003)(5002640100001)(77156002)(50986999)(4001350100001)(15975445007)(76176999)(2900100001)(106116001)(102836002)(92566002)(2950100001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB460; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="iso-2022-jp"
Content-ID: <E4EACB9A49649745B1A3A6B52BBD8469@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2015 22:14:49.6373 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB460
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/0hDp4vg1doFqT2tpf3KtZVrxihc>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] follow-up from virtual interim and i2rs discussions
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 22:14:56 -0000

>>>Here's the updated table:
>> >
>> >       running      actual config    operational state
>> >       -------      -------------    -----------------
>> >  t0    half            half             half
>> >  t1    auto            half             half
>> >  t2    auto            half (*)         half
>> >  t3    auto            auto             half
>> >  t4    auto            auto             full
>>=20
>>=20
>> I don't understand how actual is ever not the same as operational.
>
>If it was always the same it would not be needed.

Not a helpful answer.  Please look at the right side of this picture:
http://www.ietf.org/mail-archive/web/netmod/current/jpgm4Rk4R9iBf.jpg.
Again, it seems that actual is just the part of operational that has
schema defined by the config=3Dtrue nodes...



>See Rob's picture.  In that picture, the schema for "actual" is the
>same as for "intended".

Right, same as what I've been saying - where's the disconnect?



>Well, I am still trying to understand what (if any) meaning this
>"actual config" has.  But Rob was pretty clear in his last email:
>
>  * We require the ability for an NMS to be able to see both the intended
>and
>    the actual configuration
>
>If I understand this correctly, "actual config" is only interesting in
>an asynchronous implementation; in a synchronous implementation actual
>will always be equal to intended.

Yes, I get it, but in my view there are only two columns of interest:

       running/intended      actual/operational
       ----------------      ------------------
  t0        half                    half
  t1        auto                    half
  t2        auto                    half
  t3        auto                    full




Your table allowed "actual" to contain the value "auto", but how is that
possible when we defined actual as being after:

  data-plane groks intended
    - e.g., =1B$B&$=1B(B time

  conditional enablement
    - e.g., line card plugged in

  protocol negotiated values
    - e.g., auto --> full / half


???



Kent






From nobody Wed Jun 24 16:20:04 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 7E9CB1A8704 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 16:20:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 sjhak_3ncCIN for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 16:20:01 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6A8121A1BF4 for <netmod@ietf.org>; Wed, 24 Jun 2015 16:20:01 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id C277D10C2; Thu, 25 Jun 2015 01:19:56 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id jfsyXhiNOW0W; Thu, 25 Jun 2015 01:19:58 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Thu, 25 Jun 2015 01:19:56 +0200 (CEST)
Received: from localhost (demetrius1.jacobs-university.de [212.201.44.46]) by hermes.jacobs-university.de (Postfix) with ESMTP id E70EC2002B; Thu, 25 Jun 2015 01:19:58 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius1.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id aQA6ypLKYLAj; Thu, 25 Jun 2015 01:19:57 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id B223A20013; Thu, 25 Jun 2015 01:19:56 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 70E7B347A03C; Thu, 25 Jun 2015 01:19:54 +0200 (CEST)
Date: Thu, 25 Jun 2015 01:19:54 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Rob Shakir <rjs@rob.sh>
Message-ID: <20150624231954.GA38620@elstar.local>
Mail-Followup-To: Rob Shakir <rjs@rob.sh>, NETMOD Working Group <netmod@ietf.org>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <etPan.558aeb61.2c1c2992.123@piccolo.local>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/QIn2380aM6FYtw6S2SuJj6wwwW0>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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, 24 Jun 2015 23:20:03 -0000

On Wed, Jun 24, 2015 at 06:39:44PM +0100, Rob Shakir wrote:

> A portion of the operational state date (marked operational: true)
> is the set of variables that are not related to state that an
> external system can assert the value of â€” for example, a counter, or
> a negotiated protocol timer.

Not sure I parse this correctly but it sounds a bit like you make
something a static data model property that in reality is a dynamic
property of state. Lets take as an example the IP address of an
interface.  It can be statically configured or it can bee optained
dynamically via DHCP. So would you mark this operational true (or
operational sometimes) in the data model?

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Wed Jun 24 18:22:32 2015
Return-Path: <aashaikh@google.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 3AF8F1A1AB2 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 18:22:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.388
X-Spam-Level: 
X-Spam-Status: No, score=-1.388 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 rqUxZHNVjDCR for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 18:22:29 -0700 (PDT)
Received: from mail-ob0-x22b.google.com (mail-ob0-x22b.google.com [IPv6:2607:f8b0:4003:c01::22b]) (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 C45361A1AAE for <netmod@ietf.org>; Wed, 24 Jun 2015 18:22:29 -0700 (PDT)
Received: by obpn3 with SMTP id n3so37955527obp.0 for <netmod@ietf.org>; Wed, 24 Jun 2015 18:22:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=KFgyufb+TejEZjdXKNO9sphtfvzKvdCLIvL9OHiF+JY=; b=p4KyxZV+hdy6B/p8tU1BWqOxNZrwb6Jx+n6fAyrEUXQwuuqTm5c/AN9HD3iS4BylKT c+Vv1TEGbFYrZl7GS4rHOoroTNXRwtgOyWTFhAeAakdJg2gTy+APW/0wDPyLBQ9SIr7s 8XtPbCVzEK2G9nZPNiRMISKn4TffQXqFr5KckXxL8eD9PnZcqWBmAv1ilZyW7dXGc1OM pAxN3bmLp+gDiyxjCUZTmC3ueZyHtX/WQjfLQrsjKSPTxcrxsZb+sTTgYgCEj2JKo20y uTD7Leb7WCoNVkVizAQxGbNJU9aX/h76GCL1TPIduklbeMrsEyvwALnbQ6sXzKl7u4Qk o3GQ==
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:content-type; bh=KFgyufb+TejEZjdXKNO9sphtfvzKvdCLIvL9OHiF+JY=; b=jKzSgOFkm12N9V5eOBkPa0UBwLNjMRtcJwICp3FdWadjoLEvyHO9xBzNOHnaoCzC5c ff0P7xIwEfRRGmAuNOJn8PdmFmM11DILxNRktyrm/AAil/BPxLQGsq4TqSQ4c92coWfN UZ2ucR5ufWROxbfkKIFvi1xxcR8t8M3BjlFExNYwmi1N/aL7g7By6VPtotfTcYT9hbcR 8ucJ229LWfQzx8fexuqtYH/0b5R7I3P9w6ejEkNF2+y7HnaPZWaYarmaYqYyXnjtRuD7 InW1DhDd6ECi/pdqvY4SCw8oAAQcqGWNPI71rWCXSVPaBDf+uSsCyqj//T0UQgvHmsCX Uo/A==
X-Gm-Message-State: ALoCoQm7QdYH3pxPoVUUQiwqBiiVQG59V2SPlr+lcd6cESCW3cwHQxeer7Pgif+AOKc9WSceZxWU
MIME-Version: 1.0
X-Received: by 10.182.24.40 with SMTP id r8mr37456296obf.15.1435195349058; Wed, 24 Jun 2015 18:22:29 -0700 (PDT)
Received: by 10.182.52.199 with HTTP; Wed, 24 Jun 2015 18:22:28 -0700 (PDT)
In-Reply-To: <20150624231954.GA38620@elstar.local>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <20150624231954.GA38620@elstar.local>
Date: Wed, 24 Jun 2015 18:22:28 -0700
Message-ID: <CAJK7ZqKw6wDwChxJj7ry__Un7CbUepiU4R5jXf5Wy1P9NmH5Vg@mail.gmail.com>
From: Anees Shaikh <aashaikh@google.com>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Rob Shakir <rjs@rob.sh>, NETMOD Working Group <netmod@ietf.org>
Content-Type: multipart/alternative; boundary=001a11c29f1af6f77405194d74c1
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/bNaYbKStwwtgw_mUQVBkrNmzYJ8>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 01:22:31 -0000

--001a11c29f1af6f77405194d74c1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

So the model probably would have this as a choice, right?  In one case I
set the mode as STATIC and specify the address (intended and actual config
leaves, marked config: true, and config: false, respectively), and in the
other case I set the interface to DHCP (again intended and actual config),
and the received IP address would be set in an operational state variable
(e.g., dhcp-assigned-address).  This last leaf would be marked as
operational:true in our proposal.

thanks.
-- Anees

On Wed, Jun 24, 2015 at 4:19 PM, Juergen Schoenwaelder <
j.schoenwaelder@jacobs-university.de> wrote:

> On Wed, Jun 24, 2015 at 06:39:44PM +0100, Rob Shakir wrote:
>
> > A portion of the operational state date (marked operational: true)
> > is the set of variables that are not related to state that an
> > external system can assert the value of =E2=80=94 for example, a counte=
r, or
> > a negotiated protocol timer.
>
> Not sure I parse this correctly but it sounds a bit like you make
> something a static data model property that in reality is a dynamic
> property of state. Lets take as an example the IP address of an
> interface.  It can be statically configured or it can bee optained
> dynamically via DHCP. So would you mark this operational true (or
> operational sometimes) in the data model?
>
> /js
>
> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a11c29f1af6f77405194d74c1
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">So the model probably would have this as a choice, right?=
=C2=A0 In one case I set the mode as STATIC and specify the address (intend=
ed and actual config leaves, marked config: true, and config: false, respec=
tively), and in the other case I set the interface to DHCP (again intended =
and actual config), and the received IP address would be set in an operatio=
nal state variable (e.g., dhcp-assigned-address).=C2=A0 This last leaf woul=
d be marked as operational:true in our proposal.<div><br></div><div>thanks.=
</div><div>-- Anees</div></div><div class=3D"gmail_extra"><br><div class=3D=
"gmail_quote">On Wed, Jun 24, 2015 at 4:19 PM, Juergen Schoenwaelder <span =
dir=3D"ltr">&lt;<a href=3D"mailto:j.schoenwaelder@jacobs-university.de" tar=
get=3D"_blank">j.schoenwaelder@jacobs-university.de</a>&gt;</span> wrote:<b=
r><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:=
1px #ccc solid;padding-left:1ex"><span class=3D"">On Wed, Jun 24, 2015 at 0=
6:39:44PM +0100, Rob Shakir wrote:<br>
<br>
&gt; A portion of the operational state date (marked operational: true)<br>
&gt; is the set of variables that are not related to state that an<br>
&gt; external system can assert the value of =E2=80=94 for example, a count=
er, or<br>
&gt; a negotiated protocol timer.<br>
<br>
</span>Not sure I parse this correctly but it sounds a bit like you make<br=
>
something a static data model property that in reality is a dynamic<br>
property of state. Lets take as an example the IP address of an<br>
interface.=C2=A0 It can be statically configured or it can bee optained<br>
dynamically via DHCP. So would you mark this operational true (or<br>
operational sometimes) in the data model?<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
/js<br>
<br>
--<br>
Juergen Schoenwaelder=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Jacobs Univer=
sity Bremen gGmbH<br>
Phone: <a href=3D"tel:%2B49%20421%20200%203587" value=3D"+494212003587">+49=
 421 200 3587</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Campus Ring 1 | 28759 Br=
emen | Germany<br>
Fax:=C2=A0 =C2=A0<a href=3D"tel:%2B49%20421%20200%203103" value=3D"+4942120=
03103">+49 421 200 3103</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;<a href=3D=
"http://www.jacobs-university.de/" rel=3D"noreferrer" target=3D"_blank">htt=
p://www.jacobs-university.de/</a>&gt;<br>
</font></span><div class=3D"HOEnZb"><div class=3D"h5"><br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</div></div></blockquote></div><br></div>

--001a11c29f1af6f77405194d74c1--


From nobody Wed Jun 24 19:57:19 2015
Return-Path: <aashaikh@google.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 C91F01A8F4C for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 19:57:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.188
X-Spam-Level: 
X-Spam-Status: No, score=-0.188 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 TxrIq49jnxWt for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 19:57:16 -0700 (PDT)
Received: from mail-ob0-x231.google.com (mail-ob0-x231.google.com [IPv6:2607:f8b0:4003:c01::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 C69E51A8AFC for <netmod@ietf.org>; Wed, 24 Jun 2015 19:57:15 -0700 (PDT)
Received: by obctg8 with SMTP id tg8so38871125obc.3 for <netmod@ietf.org>; Wed, 24 Jun 2015 19:57:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=ycMVexFYGQiWeijgRnNwCxcd4dRirY+QupAFPTsfWD4=; b=n1JvVcVszRu8ky8qqjff9IiirqphFotTRbODXqU5stgQYpUCG/Q77tB75RoSCQQ6Fv rVN/9hE9hJQeg29FnxUUpRdzVZpnPcMQ8QX9zeyg7O7Jag4+40/85FnxHN1VUDXcIcqW VAeRENnb+zHiiadH18XjA++5e8uCIuR8MxGhkcGeekf6ewKjQ3hV4ti4c10+1L5Cytdi KRiAIDHFij3eyOxs0mit6eQYGlKmVXBHKu/Efwet4oMxGJN1OXF3L04ZP8OrFkkDLoz/ 18bp+Ud0lTQ0hB/g1ZdWOciO5NPRSXf2i2QyAwNbLdR2/97I9LZ9HmwTujo4uP811kW5 Dkaw==
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=ycMVexFYGQiWeijgRnNwCxcd4dRirY+QupAFPTsfWD4=; b=RzDBgZpR0i9j00XcEkVw3U6yUfvT1+0SFvAJfidL0NWizrNeNImgcaorlYFSui/6gY l6xjvvH/q9FtxL0wCpCp3ZzSavEbmfKDhPQn0ylUyEJ3mIs+BmkzS1hy/kUYJZ/m2upW t+k6/R/b3pgJ9cUSHQORUwc7NX6tArGzMpxPdFbiWROOm2CxeyjZoe1aHwYQefEMrEJ4 S4Lvr0x1hhJQEoROuIBed2SI20ODmnkbfiDxl9+pGpE1UbB/SrJ2fpdDk2NEX3EnQ10c BVwpoPI159S2f+0LLelTtvchWD7Uz/5ExXhtIDlMvJBj4p1skT2inkdwQJRgh3lm1Azl 9ufw==
X-Gm-Message-State: ALoCoQmln5Z004JAaKC3Ct7zgoX5OJhz2/koM7AcgPcwK7xvTwLD5LoYaM8gwpEQKxT6Fj2aAovf
MIME-Version: 1.0
X-Received: by 10.60.155.132 with SMTP id vw4mr23098446oeb.51.1435201035062; Wed, 24 Jun 2015 19:57:15 -0700 (PDT)
Received: by 10.182.52.199 with HTTP; Wed, 24 Jun 2015 19:57:14 -0700 (PDT)
In-Reply-To: <D1B06CD7.B38CA%kwatsen@juniper.net>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <D1B06CD7.B38CA%kwatsen@juniper.net>
Date: Wed, 24 Jun 2015 19:57:14 -0700
Message-ID: <CAJK7ZqKifH-OLtikDG8_y8RDLoWtV82AVnn1bZBo3gM1S=FZtw@mail.gmail.com>
From: Anees Shaikh <aashaikh@google.com>
To: Kent Watsen <kwatsen@juniper.net>
Content-Type: multipart/alternative; boundary=047d7bd74feae07db505194ec778
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/qtkuF1DjUV15EatyC2KUc3f-JkI>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 02:57:19 -0000

--047d7bd74feae07db505194ec778
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi Kent,


<snip>

>
>
>
> > If I can make some slight tweaks to the diagrams that have
> > been distributed:
>
> This looks like a variant of the picture I posted here:
> http://www.ietf.org/mail-archive/web/netmod/current/msg12738.html.   On
> one hand I'm happy to see this because no one had acknowledged the pic
> previously, but on the other hand, I'm concerned that you felt the need t=
o
> draw another picture, implying there still being a gap...
>
> Actually, when looking at your picture, substituting running for intended=
,
> I think your picture is essentially the same as represented here:
> http://www.ietf.org/mail-archive/web/netmod/current/msg12729.html.  Of
> course, without ephemeral, running=3D=3Dintended, so your picture isn't w=
rong
> either.  I think the only difference is that your picture shows slides 2-=
4
> together, whereas mine had distinct slides.  Is there a more significant
> difference in your mind?
>

we actually took your followup picture as the basis for the one we drew,
i.e., the one with slides 3 and 4 combined (
http://www.ietf.org/mail-archive/web/netmod/current/msg12738.html).  You'll
see the main difference is that the applied config (what you call actual)
is part of the state (i.e., config: false
data).



> > * Intended and applied/actualised state are views of
> > the running configuration.
>
> Yes, but more precisely, running=3D=3Dintended when there is no ephemeral
> config, right?
>

I guess that's right, but as Rob said, we have not really considered a
separate type of config called ephemeral.  I personally view what we are
calling ephemeral as just control coming through a config channel (e.g.,
the i2rs case)



>
>
> > * All intention is written to the intended configuration
> > (whether it be by CLI, a human, an NMS via NETCONF, a
> > system agent, etc.) =C2=AD which then transitions to becoming
> > the applied/actualised configuration. This is based on
> > either an explicit request to do so (=C5=92commit=C2=B9) or may be
> > implicit. The success of the intended configuration
> > becoming the applied configuration may be due to time
> > deltas or condition, as Kent drew.
>
> Yes but, again, the clients are interacting with the "running" and/or
> "ephemeral" (not directly to "intended").  The important bit is that
> "ephemeral" can override "running", so the "intended" is actually the
> result of a merge operation of sorts...
>

here by intended config, we mean what the intended change to the running
config is.


>
> > * In what we referred to as a =C5=92synchronous=C2=B9 system =C2=AD we
> > expect the attempt to make the intended state transition
> > to the actual state to be completed when the operation
> > returns (e.g., after a <commit />) then the <ok /> should
> > return only when this intention has been applied.
>
> I see.  As stated on the call last week, NETCONF/RESTCONF are currently
> only "asynchronous" by this definition, as neither has any statement
> regarding *when* intended becomes operational wrt <ok/> or 200 OK.
> Dipping into design for a sec, it might be interesting to add an optional
> commit flag indicating that the server should not respond until
> actual=3D=3Dintended...
>

yes ... this is really down to implementations.  In some platforms, the
response comes back
once all involved downstream services have validated and applied the
requested config -- that would be considered synchronous in the way we have
been thinking about it.


>
> > * We require the ability for an NMS to be able to see both
> > the intended and the actual configuration =C2=AD such that it
> > can check whether its intention is currently the applied
> > configuration, or has not yet been applied due to some
> > external dependency (e.g., line card not plugged in).
>
> Understood, at least for leafs that get a protocol negotiated value, whic=
h
> may account for just 1% of the configuration.   Dipping again into design=
,
> I was hoping we might use [XML/JSON] attributes, for instance:
>
>      leaf duplex {
>        type enumeration {
>          enum "half";
>          enum "full";
>          enum "auto";
>        }
>        config true;
>      }
>
>   get-config from running:
>        <duplex>auto</duplex>
>
>   get-operational:
>        <duplex intended=3D"auto">full</duplex>
>

In the proposal laid out in the draft, you would be able see any
differences between intended, actual, and operational with <get> operation
since it would return config: true (intended) and config: false (actual +
negotiated) nodes.   I would view this a little differently as  (not really
netconf syntax):

get-config from running:
  <duplex>auto</duplex>

get:
  <duplex path=3Dconfig/>auto</duplex>
  <duplex path=3Dstate/>auto</duplex>
  <negotiated-duplex path=3Dstate/>full</negotiated-duplex>

get-operational:
  <negotiated-duplex path=3Dstate/>full</negotiated-duplex>

In particular, notice that the actual config part of the state reflects the
intended value (either immediately or eventually), and if there is
additional state required to reflect a negotiated value, that is a separate
leaf marked operational: true in the model.



>
>
> Less understood is how to support the conditional enablement cases
> (https://tools.ietf.org/html/draft-kwatsen-conditional-enablement-00) suc=
h
> as plugging in a line card, or installing a license, or time-of-day.  For
> these, it's not clear what <get-operational> would return...
>
>
>
> > * A portion of the operational state date (marked
> > operational: true) is the set of variables that
> > are not related to state that an external system
> > can assert the value of =E2=80=B9 for example, a counter,
> > or a negotiated protocol timer.
>
> This is what I think config=3Dfalse should be used for going forwards.  T=
hat
> is, as the example above shows, config=3Dtrue simultaneously defines some
> nodes returned by <get-operational/>, thus we only need config=3Dfalse to
> define the non-config based nodes like counters.
>

Agree this label makes sense, but if we agree that the applied (actual)
config is part of the state, then we would still need a way to get the
different types of state separately, i.e., the applied config vs. the
counters, negotiated values, etc.


>
> > * We believe that there is an important advantage
> > in being able to syntactically / structurally
> > retrieve the set of state that is associated with
> > some set of intended state. This is not =C5=92easy=C2=B9
> > today, as there is no common way to link the two
> > =C2=AD especially as models are composed. This does
> > not imply that we understand the semantics of that
> > set of state =C2=AD but simply that we can retrieve
> > all state data that relates to a particular entity
> > that we expressed some intention about (e.g., all
> > state data that corresponds to a particular
> > interface or BGP peer). This division is very
> > important, since there is separation between
> > elements of the NMS that interact with the network,
> > and those that do need to understand the semantics/
> > contents of the data leaves.  For some OpenConfig
> > operators, this separation of concerns is part of
> > their current NMS software architecture.
>
> Thanks for clarifying the motivation.  Looking at
> draft-openconfig-netmod-opstate, this requirement appears to be supported
> through tree-structure alone.  Is this solution sufficient or is there
> also a need to have something more explicit like XPath pointers in the
> data-model?
>

We've been able to make a good deal of progress with the data model pattern
in the draft and, at least at here internally, our NMS exploits that
structure to set and retrieve the different types of data we want to
compare.  We're still gaining experience with it.

thanks!
-- Anees



>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--047d7bd74feae07db505194ec778
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi Kent,=C2=A0<div><br></div><div><br></div><div>&lt;snip&=
gt;<br><div class=3D"gmail_extra"><div class=3D"gmail_quote"><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px=
;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1e=
x"><br>
<span><br>
<br>
&gt; If I can make some slight tweaks to the diagrams that have<br>
&gt; been distributed:<br>
<br>
</span>This looks like a variant of the picture I posted here:<br>
<a href=3D"http://www.ietf.org/mail-archive/web/netmod/current/msg12738.htm=
l" rel=3D"noreferrer" target=3D"_blank">http://www.ietf.org/mail-archive/we=
b/netmod/current/msg12738.html</a>.=C2=A0 =C2=A0On<br>
one hand I&#39;m happy to see this because no one had acknowledged the pic<=
br>
previously, but on the other hand, I&#39;m concerned that you felt the need=
 to<br>
draw another picture, implying there still being a gap...<br>
<br>
Actually, when looking at your picture, substituting running for intended,<=
br>
I think your picture is essentially the same as represented here:<br>
<a href=3D"http://www.ietf.org/mail-archive/web/netmod/current/msg12729.htm=
l" rel=3D"noreferrer" target=3D"_blank">http://www.ietf.org/mail-archive/we=
b/netmod/current/msg12729.html</a>.=C2=A0 Of<br>
course, without ephemeral, running=3D=3Dintended, so your picture isn&#39;t=
 wrong<br>
either.=C2=A0 I think the only difference is that your picture shows slides=
 2-4<br>
together, whereas mine had distinct slides.=C2=A0 Is there a more significa=
nt<br>
difference in your mind?<br></blockquote><div><br></div><div>we actually to=
ok your followup picture as the basis for the one we drew, i.e., the one wi=
th slides 3 and 4 combined (<a href=3D"http://www.ietf.org/mail-archive/web=
/netmod/current/msg12738.html" target=3D"_blank">http://www.ietf.org/mail-a=
rchive/web/netmod/current/msg12738.html</a>).=C2=A0 You&#39;ll see the main=
 difference is that the applied config (what you call actual) is part of th=
e state (i.e., config: false</div><div>data).</div><div><br></div><div>=C2=
=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-styl=
e:solid;padding-left:1ex">
&gt; * Intended and applied/actualised state are views of<br>
&gt; the running configuration.<br>
<br>
Yes, but more precisely, running=3D=3Dintended when there is no ephemeral<b=
r>
config, right?<br></blockquote><div><br></div><div>I guess that&#39;s right=
, but as Rob said, we have not really considered a separate type of config =
called ephemeral.=C2=A0 I personally view what we are calling ephemeral as =
just control coming through a config channel (e.g., the i2rs case)</div><di=
v><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,2=
04);border-left-style:solid;padding-left:1ex">
<br>
<br>
&gt; * All intention is written to the intended configuration<br>
<span>&gt; (whether it be by CLI, a human, an NMS via NETCONF, a<br>
&gt; system agent, etc.) =C2=AD which then transitions to becoming<br>
&gt; the applied/actualised configuration. This is based on<br>
</span>&gt; either an explicit request to do so (=C5=92commit=C2=B9) or may=
 be<br>
<span>&gt; implicit. The success of the intended configuration<br>
&gt; becoming the applied configuration may be due to time<br>
&gt; deltas or condition, as Kent drew.<br>
<br>
</span>Yes but, again, the clients are interacting with the &quot;running&q=
uot; and/or<br>
&quot;ephemeral&quot; (not directly to &quot;intended&quot;).=C2=A0 The imp=
ortant bit is that<br>
&quot;ephemeral&quot; can override &quot;running&quot;, so the &quot;intend=
ed&quot; is actually the<br>
result of a merge operation of sorts...<br></blockquote><div><br></div><div=
>here by intended config, we mean what the intended change to the running c=
onfig is.</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,=
204);border-left-style:solid;padding-left:1ex">
<br>
<br>
&gt; * In what we referred to as a =C5=92synchronous=C2=B9 system =C2=AD we=
<br>
<span>&gt; expect the attempt to make the intended state transition<br>
&gt; to the actual state to be completed when the operation<br>
&gt; returns (e.g., after a &lt;commit /&gt;) then the &lt;ok /&gt; should<=
br>
&gt; return only when this intention has been applied.<br>
<br>
</span>I see.=C2=A0 As stated on the call last week, NETCONF/RESTCONF are c=
urrently<br>
only &quot;asynchronous&quot; by this definition, as neither has any statem=
ent<br>
regarding *when* intended becomes operational wrt &lt;ok/&gt; or 200 OK.<br=
>
Dipping into design for a sec, it might be interesting to add an optional<b=
r>
commit flag indicating that the server should not respond until<br>
actual=3D=3Dintended...<br></blockquote><div><br></div><div>yes ... this is=
 really down to implementations.=C2=A0 In some platforms, the response come=
s back</div><div>once all involved downstream services have validated and a=
pplied the requested config -- that would be considered synchronous in the =
way we have been thinking about it.</div><div><br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;bo=
rder-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
&gt; * We require the ability for an NMS to be able to see both<br>
<span>&gt; the intended and the actual configuration =C2=AD such that it<br=
>
&gt; can check whether its intention is currently the applied<br>
&gt; configuration, or has not yet been applied due to some<br>
&gt; external dependency (e.g., line card not plugged in).<br>
<br>
</span>Understood, at least for leafs that get a protocol negotiated value,=
 which<br>
may account for just 1% of the configuration.=C2=A0 =C2=A0Dipping again int=
o design,<br>
I was hoping we might use [XML/JSON] attributes, for instance:<br>
<br>
=C2=A0 =C2=A0 =C2=A0leaf duplex {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0type enumeration {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum &quot;half&quot;;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum &quot;full&quot;;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum &quot;auto&quot;;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0config true;<br>
=C2=A0 =C2=A0 =C2=A0}<br>
<br>
=C2=A0 get-config from running:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;duplex&gt;auto&lt;/duplex&gt;<br>
<br>
=C2=A0 get-operational:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;duplex intended=3D&quot;auto&quot;&gt;full&l=
t;/duplex&gt;<br></blockquote><div><br></div><div>In the proposal laid out =
in the draft, you would be able see any differences between intended, actua=
l, and operational with &lt;get&gt; operation since it would return config:=
 true (intended) and config: false (actual + negotiated) nodes. =C2=A0 I wo=
uld view this a little differently as =C2=A0(not really netconf syntax):</d=
iv><div><br></div><div>get-config from running:</div><div>=C2=A0 &lt;duplex=
&gt;auto&lt;/duplex&gt;</div><div><br></div><div>get:</div><div>=C2=A0 &lt;=
duplex path=3Dconfig/&gt;auto&lt;/duplex&gt;</div><div>=C2=A0 &lt;duplex pa=
th=3Dstate/&gt;auto&lt;/duplex&gt;</div><div>=C2=A0 &lt;negotiated-duplex p=
ath=3Dstate/&gt;full&lt;/negotiated-duplex&gt;</div><div><br></div><div>get=
-operational:</div><div>=C2=A0 &lt;negotiated-duplex path=3Dstate/&gt;full&=
lt;/negotiated-duplex&gt;</div><div><br></div><div>In particular, notice th=
at the actual config part of the state reflects the intended value (either =
immediately or eventually), and if there is additional state required to re=
flect a negotiated value, that is a separate leaf marked operational: true =
in the model.</div><div><br></div><div>=C2=A0</div><blockquote class=3D"gma=
il_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-le=
ft-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
Less understood is how to support the conditional enablement cases<br>
(<a href=3D"https://tools.ietf.org/html/draft-kwatsen-conditional-enablemen=
t-00" rel=3D"noreferrer" target=3D"_blank">https://tools.ietf.org/html/draf=
t-kwatsen-conditional-enablement-00</a>) such<br>
as plugging in a line card, or installing a license, or time-of-day.=C2=A0 =
For<br>
these, it&#39;s not clear what &lt;get-operational&gt; would return...<br>
<br>
<br>
<br>
&gt; * A portion of the operational state date (marked<br>
<span>&gt; operational: true) is the set of variables that<br>
&gt; are not related to state that an external system<br>
&gt; can assert the value of =E2=80=B9 for example, a counter,<br>
&gt; or a negotiated protocol timer.<br>
<br>
</span>This is what I think config=3Dfalse should be used for going forward=
s.=C2=A0 That<br>
is, as the example above shows, config=3Dtrue simultaneously defines some<b=
r>
nodes returned by &lt;get-operational/&gt;, thus we only need config=3Dfals=
e to<br>
define the non-config based nodes like counters.<br></blockquote><div><br><=
/div><div>Agree this label makes sense, but if we agree that the applied (a=
ctual) config is part of the state, then we would still need a way to get t=
he different types of state separately, i.e., the applied config vs. the co=
unters, negotiated values, etc.</div><div><br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-l=
eft-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
&gt; * We believe that there is an important advantage<br>
<span>&gt; in being able to syntactically / structurally<br>
&gt; retrieve the set of state that is associated with<br>
</span>&gt; some set of intended state. This is not =C5=92easy=C2=B9<br>
<span>&gt; today, as there is no common way to link the two<br>
&gt; =C2=AD especially as models are composed. This does<br>
&gt; not imply that we understand the semantics of that<br>
&gt; set of state =C2=AD but simply that we can retrieve<br>
&gt; all state data that relates to a particular entity<br>
&gt; that we expressed some intention about (e.g., all<br>
&gt; state data that corresponds to a particular<br>
&gt; interface or BGP peer). This division is very<br>
&gt; important, since there is separation between<br>
&gt; elements of the NMS that interact with the network,<br>
&gt; and those that do need to understand the semantics/<br>
&gt; contents of the data leaves.=C2=A0 For some OpenConfig<br>
&gt; operators, this separation of concerns is part of<br>
&gt; their current NMS software architecture.<br>
<br>
</span>Thanks for clarifying the motivation.=C2=A0 Looking at<br>
draft-openconfig-netmod-opstate, this requirement appears to be supported<b=
r>
through tree-structure alone.=C2=A0 Is this solution sufficient or is there=
<br>
also a need to have something more explicit like XPath pointers in the<br>
data-model?<br></blockquote><div><br></div><div>We&#39;ve been able to make=
 a good deal of progress with the data model pattern in the draft and, at l=
east at here internally, our NMS exploits that structure to set and retriev=
e the different types of data we want to compare.=C2=A0 We&#39;re still gai=
ning experience with it.</div><div><br></div><div>thanks!</div><div>-- Anee=
s</div><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb=
(204,204,204);border-left-style:solid;padding-left:1ex"><div><div><br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</div></div></blockquote></div><br></div></div></div>

--047d7bd74feae07db505194ec778--


From nobody Wed Jun 24 20:24:36 2015
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 C94071ACD85 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 20:24:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.778
X-Spam-Level: 
X-Spam-Status: No, score=-0.778 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, RCVD_IN_DNSWL_LOW=-0.7, 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 dbT7L8V_uUu8 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 20:24:31 -0700 (PDT)
Received: from mail-la0-f49.google.com (mail-la0-f49.google.com [209.85.215.49]) (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 07BA51ACD90 for <netmod@ietf.org>; Wed, 24 Jun 2015 20:24:31 -0700 (PDT)
Received: by lagi2 with SMTP id i2so37144443lag.2 for <netmod@ietf.org>; Wed, 24 Jun 2015 20:24:29 -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=J6zsDVXAhhNmDOIxvxv01oDgnzwmLzASX7cg/yFkATc=; b=G+zKfC3LcCsS/jFkY/N9jtPZLrc05paWckjmyp9AkYNrk3W/fqm2UxT8v+awZm7bT6 G5/9hNDHYbvdSTlaCtStlqlcKunQ6urqucVgQO9DWlH+6MLjD12G/7HGK4piVsb0iIDj VVKqNzPQqOIKziQECtYE46p/FfX12c3txuJkQNMRhk+29zwDS+XW2+j4mYWMFDM3gEoT nuzLYMiCNFQfTvdYB1pv0Ov1/zAgsypABlemMELBnGDjFR4wkI2QzayOL1NC2uckQnOK l1pmsbTF/vvRiMBQfWgakmI+DwLu6jDfHgFXXkIYKHBNVFI/KSCCXzN+6xefYunTkuTG 7HEQ==
X-Gm-Message-State: ALoCoQlJKb5E15Ymyni4VDKR5QtmZs1S/uGVm9x/6LbahvYImUnjem8yp6fsPBxclHPEJ8nNtDYe
MIME-Version: 1.0
X-Received: by 10.152.116.49 with SMTP id jt17mr42633895lab.82.1435202669346;  Wed, 24 Jun 2015 20:24:29 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Wed, 24 Jun 2015 20:24:29 -0700 (PDT)
In-Reply-To: <CAJK7ZqKifH-OLtikDG8_y8RDLoWtV82AVnn1bZBo3gM1S=FZtw@mail.gmail.com>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <D1B06CD7.B38CA%kwatsen@juniper.net> <CAJK7ZqKifH-OLtikDG8_y8RDLoWtV82AVnn1bZBo3gM1S=FZtw@mail.gmail.com>
Date: Wed, 24 Jun 2015 20:24:29 -0700
Message-ID: <CABCOCHRQRnWvDNNMWPYep9wfaLxyT6C5Pxrb4pYuU+Qk0uBt3Q@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Anees Shaikh <aashaikh@google.com>
Content-Type: multipart/alternative; boundary=001a11c3677e499b3c05194f2907
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/6Nk87CArguYdE4y_5e_XbwwvJ-M>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 03:24:35 -0000

--001a11c3677e499b3c05194f2907
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On Wed, Jun 24, 2015 at 7:57 PM, Anees Shaikh <aashaikh@google.com> wrote:

> Hi Kent,
>
>
> <snip>
>
>>
>>
>>
>> > If I can make some slight tweaks to the diagrams that have
>> > been distributed:
>>
>> This looks like a variant of the picture I posted here:
>> http://www.ietf.org/mail-archive/web/netmod/current/msg12738.html.   On
>> one hand I'm happy to see this because no one had acknowledged the pic
>> previously, but on the other hand, I'm concerned that you felt the need =
to
>> draw another picture, implying there still being a gap...
>>
>> Actually, when looking at your picture, substituting running for intende=
d,
>> I think your picture is essentially the same as represented here:
>> http://www.ietf.org/mail-archive/web/netmod/current/msg12729.html.  Of
>> course, without ephemeral, running=3D=3Dintended, so your picture isn't =
wrong
>> either.  I think the only difference is that your picture shows slides 2=
-4
>> together, whereas mine had distinct slides.  Is there a more significant
>> difference in your mind?
>>
>
> we actually took your followup picture as the basis for the one we drew,
> i.e., the one with slides 3 and 4 combined (
> http://www.ietf.org/mail-archive/web/netmod/current/msg12738.html).
> You'll see the main difference is that the applied config (what you call
> actual) is part of the state (i.e., config: false
> data).
>
>
>
>> > * Intended and applied/actualised state are views of
>> > the running configuration.
>>
>> Yes, but more precisely, running=3D=3Dintended when there is no ephemera=
l
>> config, right?
>>
>
> I guess that's right, but as Rob said, we have not really considered a
> separate type of config called ephemeral.  I personally view what we are
> calling ephemeral as just control coming through a config channel (e.g.,
> the i2rs case)
>
>

The NETCONF WG has been asked by the I2RS WG to work on ephemeral
data (or configuration or whatever), so it is also high priority.

I2RS is not really "just control coming through a config channel".
It allows a controller to override device config and state in a standard wa=
y
based on machine-readable data models.  Instead of hand-coding
control protocols completely from scratch, after writing long complicated
RFCs,
just write a YANG module, turn the crank, and integrate. (That's the plan,
anyway ;-)



Andy



>
>>
>>
>> > * All intention is written to the intended configuration
>> > (whether it be by CLI, a human, an NMS via NETCONF, a
>> > system agent, etc.) =C2=AD which then transitions to becoming
>> > the applied/actualised configuration. This is based on
>> > either an explicit request to do so (=C5=92commit=C2=B9) or may be
>> > implicit. The success of the intended configuration
>> > becoming the applied configuration may be due to time
>> > deltas or condition, as Kent drew.
>>
>> Yes but, again, the clients are interacting with the "running" and/or
>> "ephemeral" (not directly to "intended").  The important bit is that
>> "ephemeral" can override "running", so the "intended" is actually the
>> result of a merge operation of sorts...
>>
>
> here by intended config, we mean what the intended change to the running
> config is.
>
>
>>
>> > * In what we referred to as a =C5=92synchronous=C2=B9 system =C2=AD we
>> > expect the attempt to make the intended state transition
>> > to the actual state to be completed when the operation
>> > returns (e.g., after a <commit />) then the <ok /> should
>> > return only when this intention has been applied.
>>
>> I see.  As stated on the call last week, NETCONF/RESTCONF are currently
>> only "asynchronous" by this definition, as neither has any statement
>> regarding *when* intended becomes operational wrt <ok/> or 200 OK.
>> Dipping into design for a sec, it might be interesting to add an optiona=
l
>> commit flag indicating that the server should not respond until
>> actual=3D=3Dintended...
>>
>
> yes ... this is really down to implementations.  In some platforms, the
> response comes back
> once all involved downstream services have validated and applied the
> requested config -- that would be considered synchronous in the way we ha=
ve
> been thinking about it.
>
>
>>
>> > * We require the ability for an NMS to be able to see both
>> > the intended and the actual configuration =C2=AD such that it
>> > can check whether its intention is currently the applied
>> > configuration, or has not yet been applied due to some
>> > external dependency (e.g., line card not plugged in).
>>
>> Understood, at least for leafs that get a protocol negotiated value, whi=
ch
>> may account for just 1% of the configuration.   Dipping again into desig=
n,
>> I was hoping we might use [XML/JSON] attributes, for instance:
>>
>>      leaf duplex {
>>        type enumeration {
>>          enum "half";
>>          enum "full";
>>          enum "auto";
>>        }
>>        config true;
>>      }
>>
>>   get-config from running:
>>        <duplex>auto</duplex>
>>
>>   get-operational:
>>        <duplex intended=3D"auto">full</duplex>
>>
>
> In the proposal laid out in the draft, you would be able see any
> differences between intended, actual, and operational with <get> operatio=
n
> since it would return config: true (intended) and config: false (actual +
> negotiated) nodes.   I would view this a little differently as  (not real=
ly
> netconf syntax):
>
> get-config from running:
>   <duplex>auto</duplex>
>
> get:
>   <duplex path=3Dconfig/>auto</duplex>
>   <duplex path=3Dstate/>auto</duplex>
>   <negotiated-duplex path=3Dstate/>full</negotiated-duplex>
>
> get-operational:
>   <negotiated-duplex path=3Dstate/>full</negotiated-duplex>
>
> In particular, notice that the actual config part of the state reflects
> the intended value (either immediately or eventually), and if there is
> additional state required to reflect a negotiated value, that is a separa=
te
> leaf marked operational: true in the model.
>
>
>
>>
>>
>> Less understood is how to support the conditional enablement cases
>> (https://tools.ietf.org/html/draft-kwatsen-conditional-enablement-00)
>> such
>> as plugging in a line card, or installing a license, or time-of-day.  Fo=
r
>> these, it's not clear what <get-operational> would return...
>>
>>
>>
>> > * A portion of the operational state date (marked
>> > operational: true) is the set of variables that
>> > are not related to state that an external system
>> > can assert the value of =E2=80=B9 for example, a counter,
>> > or a negotiated protocol timer.
>>
>> This is what I think config=3Dfalse should be used for going forwards.  =
That
>> is, as the example above shows, config=3Dtrue simultaneously defines som=
e
>> nodes returned by <get-operational/>, thus we only need config=3Dfalse t=
o
>> define the non-config based nodes like counters.
>>
>
> Agree this label makes sense, but if we agree that the applied (actual)
> config is part of the state, then we would still need a way to get the
> different types of state separately, i.e., the applied config vs. the
> counters, negotiated values, etc.
>
>
>>
>> > * We believe that there is an important advantage
>> > in being able to syntactically / structurally
>> > retrieve the set of state that is associated with
>> > some set of intended state. This is not =C5=92easy=C2=B9
>> > today, as there is no common way to link the two
>> > =C2=AD especially as models are composed. This does
>> > not imply that we understand the semantics of that
>> > set of state =C2=AD but simply that we can retrieve
>> > all state data that relates to a particular entity
>> > that we expressed some intention about (e.g., all
>> > state data that corresponds to a particular
>> > interface or BGP peer). This division is very
>> > important, since there is separation between
>> > elements of the NMS that interact with the network,
>> > and those that do need to understand the semantics/
>> > contents of the data leaves.  For some OpenConfig
>> > operators, this separation of concerns is part of
>> > their current NMS software architecture.
>>
>> Thanks for clarifying the motivation.  Looking at
>> draft-openconfig-netmod-opstate, this requirement appears to be supporte=
d
>> through tree-structure alone.  Is this solution sufficient or is there
>> also a need to have something more explicit like XPath pointers in the
>> data-model?
>>
>
> We've been able to make a good deal of progress with the data model
> pattern in the draft and, at least at here internally, our NMS exploits
> that structure to set and retrieve the different types of data we want to
> compare.  We're still gaining experience with it.
>
> thanks!
> -- Anees
>
>
>
>>
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>
>

--001a11c3677e499b3c05194f2907
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Jun 24, 2015 at 7:57 PM, Anees Shaikh <span dir=3D"ltr">&lt;<a =
href=3D"mailto:aashaikh@google.com" target=3D"_blank">aashaikh@google.com</=
a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0=
px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);b=
order-left-style:solid;padding-left:1ex"><div dir=3D"ltr">Hi Kent,=C2=A0<di=
v><br></div><div><br></div><div>&lt;snip&gt;<br><div class=3D"gmail_extra">=
<div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margi=
n:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204=
);border-left-style:solid;padding-left:1ex"><br>
<span><br>
<br>
&gt; If I can make some slight tweaks to the diagrams that have<br>
&gt; been distributed:<br>
<br>
</span>This looks like a variant of the picture I posted here:<br>
<a href=3D"http://www.ietf.org/mail-archive/web/netmod/current/msg12738.htm=
l" rel=3D"noreferrer" target=3D"_blank">http://www.ietf.org/mail-archive/we=
b/netmod/current/msg12738.html</a>.=C2=A0 =C2=A0On<br>
one hand I&#39;m happy to see this because no one had acknowledged the pic<=
br>
previously, but on the other hand, I&#39;m concerned that you felt the need=
 to<br>
draw another picture, implying there still being a gap...<br>
<br>
Actually, when looking at your picture, substituting running for intended,<=
br>
I think your picture is essentially the same as represented here:<br>
<a href=3D"http://www.ietf.org/mail-archive/web/netmod/current/msg12729.htm=
l" rel=3D"noreferrer" target=3D"_blank">http://www.ietf.org/mail-archive/we=
b/netmod/current/msg12729.html</a>.=C2=A0 Of<br>
course, without ephemeral, running=3D=3Dintended, so your picture isn&#39;t=
 wrong<br>
either.=C2=A0 I think the only difference is that your picture shows slides=
 2-4<br>
together, whereas mine had distinct slides.=C2=A0 Is there a more significa=
nt<br>
difference in your mind?<br></blockquote><div><br></div><div>we actually to=
ok your followup picture as the basis for the one we drew, i.e., the one wi=
th slides 3 and 4 combined (<a href=3D"http://www.ietf.org/mail-archive/web=
/netmod/current/msg12738.html" target=3D"_blank">http://www.ietf.org/mail-a=
rchive/web/netmod/current/msg12738.html</a>).=C2=A0 You&#39;ll see the main=
 difference is that the applied config (what you call actual) is part of th=
e state (i.e., config: false</div><div>data).</div><div><br></div><div>=C2=
=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-styl=
e:solid;padding-left:1ex">
&gt; * Intended and applied/actualised state are views of<br>
&gt; the running configuration.<br>
<br>
Yes, but more precisely, running=3D=3Dintended when there is no ephemeral<b=
r>
config, right?<br></blockquote><div><br></div><div>I guess that&#39;s right=
, but as Rob said, we have not really considered a separate type of config =
called ephemeral.=C2=A0 I personally view what we are calling ephemeral as =
just control coming through a config channel (e.g., the i2rs case)</div><di=
v><br></div></div></div></div></div></blockquote><div><br></div><div><br></=
div><div>The NETCONF WG has been asked by the I2RS WG to work on ephemeral<=
/div><div>data (or configuration or whatever), so it is also high priority.=
</div><div><br></div><div>I2RS is not really &quot;just control coming thro=
ugh a config channel&quot;.</div><div>It allows a controller to override de=
vice config and state in a standard way</div><div>based on machine-readable=
 data models.=C2=A0 Instead of hand-coding</div><div>control protocols comp=
letely from scratch, after writing long complicated RFCs,</div><div>just wr=
ite a YANG module, turn the crank, and integrate. (That&#39;s the plan, any=
way ;-)</div><div><br></div><div><br></div><div><br></div><div>Andy</div><d=
iv><br></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"marg=
in:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,20=
4);border-left-style:solid;padding-left:1ex"><div dir=3D"ltr"><div><div cla=
ss=3D"gmail_extra"><div class=3D"gmail_quote"><div></div><div>=C2=A0</div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;pa=
dding-left:1ex">
<br>
<br>
&gt; * All intention is written to the intended configuration<br>
<span>&gt; (whether it be by CLI, a human, an NMS via NETCONF, a<br>
&gt; system agent, etc.) =C2=AD which then transitions to becoming<br>
&gt; the applied/actualised configuration. This is based on<br>
</span>&gt; either an explicit request to do so (=C5=92commit=C2=B9) or may=
 be<br>
<span>&gt; implicit. The success of the intended configuration<br>
&gt; becoming the applied configuration may be due to time<br>
&gt; deltas or condition, as Kent drew.<br>
<br>
</span>Yes but, again, the clients are interacting with the &quot;running&q=
uot; and/or<br>
&quot;ephemeral&quot; (not directly to &quot;intended&quot;).=C2=A0 The imp=
ortant bit is that<br>
&quot;ephemeral&quot; can override &quot;running&quot;, so the &quot;intend=
ed&quot; is actually the<br>
result of a merge operation of sorts...<br></blockquote><div><br></div><div=
>here by intended config, we mean what the intended change to the running c=
onfig is.</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,=
204);border-left-style:solid;padding-left:1ex">
<br>
<br>
&gt; * In what we referred to as a =C5=92synchronous=C2=B9 system =C2=AD we=
<br>
<span>&gt; expect the attempt to make the intended state transition<br>
&gt; to the actual state to be completed when the operation<br>
&gt; returns (e.g., after a &lt;commit /&gt;) then the &lt;ok /&gt; should<=
br>
&gt; return only when this intention has been applied.<br>
<br>
</span>I see.=C2=A0 As stated on the call last week, NETCONF/RESTCONF are c=
urrently<br>
only &quot;asynchronous&quot; by this definition, as neither has any statem=
ent<br>
regarding *when* intended becomes operational wrt &lt;ok/&gt; or 200 OK.<br=
>
Dipping into design for a sec, it might be interesting to add an optional<b=
r>
commit flag indicating that the server should not respond until<br>
actual=3D=3Dintended...<br></blockquote><div><br></div><div>yes ... this is=
 really down to implementations.=C2=A0 In some platforms, the response come=
s back</div><div>once all involved downstream services have validated and a=
pplied the requested config -- that would be considered synchronous in the =
way we have been thinking about it.</div><div><br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;bo=
rder-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
&gt; * We require the ability for an NMS to be able to see both<br>
<span>&gt; the intended and the actual configuration =C2=AD such that it<br=
>
&gt; can check whether its intention is currently the applied<br>
&gt; configuration, or has not yet been applied due to some<br>
&gt; external dependency (e.g., line card not plugged in).<br>
<br>
</span>Understood, at least for leafs that get a protocol negotiated value,=
 which<br>
may account for just 1% of the configuration.=C2=A0 =C2=A0Dipping again int=
o design,<br>
I was hoping we might use [XML/JSON] attributes, for instance:<br>
<br>
=C2=A0 =C2=A0 =C2=A0leaf duplex {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0type enumeration {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum &quot;half&quot;;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum &quot;full&quot;;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum &quot;auto&quot;;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0config true;<br>
=C2=A0 =C2=A0 =C2=A0}<br>
<br>
=C2=A0 get-config from running:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;duplex&gt;auto&lt;/duplex&gt;<br>
<br>
=C2=A0 get-operational:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;duplex intended=3D&quot;auto&quot;&gt;full&l=
t;/duplex&gt;<br></blockquote><div><br></div><div>In the proposal laid out =
in the draft, you would be able see any differences between intended, actua=
l, and operational with &lt;get&gt; operation since it would return config:=
 true (intended) and config: false (actual + negotiated) nodes. =C2=A0 I wo=
uld view this a little differently as =C2=A0(not really netconf syntax):</d=
iv><div><br></div><div>get-config from running:</div><div>=C2=A0 &lt;duplex=
&gt;auto&lt;/duplex&gt;</div><div><br></div><div>get:</div><div>=C2=A0 &lt;=
duplex path=3Dconfig/&gt;auto&lt;/duplex&gt;</div><div>=C2=A0 &lt;duplex pa=
th=3Dstate/&gt;auto&lt;/duplex&gt;</div><div>=C2=A0 &lt;negotiated-duplex p=
ath=3Dstate/&gt;full&lt;/negotiated-duplex&gt;</div><div><br></div><div>get=
-operational:</div><div>=C2=A0 &lt;negotiated-duplex path=3Dstate/&gt;full&=
lt;/negotiated-duplex&gt;</div><div><br></div><div>In particular, notice th=
at the actual config part of the state reflects the intended value (either =
immediately or eventually), and if there is additional state required to re=
flect a negotiated value, that is a separate leaf marked operational: true =
in the model.</div><div><br></div><div>=C2=A0</div><blockquote class=3D"gma=
il_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-le=
ft-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
Less understood is how to support the conditional enablement cases<br>
(<a href=3D"https://tools.ietf.org/html/draft-kwatsen-conditional-enablemen=
t-00" rel=3D"noreferrer" target=3D"_blank">https://tools.ietf.org/html/draf=
t-kwatsen-conditional-enablement-00</a>) such<br>
as plugging in a line card, or installing a license, or time-of-day.=C2=A0 =
For<br>
these, it&#39;s not clear what &lt;get-operational&gt; would return...<br>
<br>
<br>
<br>
&gt; * A portion of the operational state date (marked<br>
<span>&gt; operational: true) is the set of variables that<br>
&gt; are not related to state that an external system<br>
&gt; can assert the value of =E2=80=B9 for example, a counter,<br>
&gt; or a negotiated protocol timer.<br>
<br>
</span>This is what I think config=3Dfalse should be used for going forward=
s.=C2=A0 That<br>
is, as the example above shows, config=3Dtrue simultaneously defines some<b=
r>
nodes returned by &lt;get-operational/&gt;, thus we only need config=3Dfals=
e to<br>
define the non-config based nodes like counters.<br></blockquote><div><br><=
/div><div>Agree this label makes sense, but if we agree that the applied (a=
ctual) config is part of the state, then we would still need a way to get t=
he different types of state separately, i.e., the applied config vs. the co=
unters, negotiated values, etc.</div><div><br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-l=
eft-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
<br>
&gt; * We believe that there is an important advantage<br>
<span>&gt; in being able to syntactically / structurally<br>
&gt; retrieve the set of state that is associated with<br>
</span>&gt; some set of intended state. This is not =C5=92easy=C2=B9<br>
<span>&gt; today, as there is no common way to link the two<br>
&gt; =C2=AD especially as models are composed. This does<br>
&gt; not imply that we understand the semantics of that<br>
&gt; set of state =C2=AD but simply that we can retrieve<br>
&gt; all state data that relates to a particular entity<br>
&gt; that we expressed some intention about (e.g., all<br>
&gt; state data that corresponds to a particular<br>
&gt; interface or BGP peer). This division is very<br>
&gt; important, since there is separation between<br>
&gt; elements of the NMS that interact with the network,<br>
&gt; and those that do need to understand the semantics/<br>
&gt; contents of the data leaves.=C2=A0 For some OpenConfig<br>
&gt; operators, this separation of concerns is part of<br>
&gt; their current NMS software architecture.<br>
<br>
</span>Thanks for clarifying the motivation.=C2=A0 Looking at<br>
draft-openconfig-netmod-opstate, this requirement appears to be supported<b=
r>
through tree-structure alone.=C2=A0 Is this solution sufficient or is there=
<br>
also a need to have something more explicit like XPath pointers in the<br>
data-model?<br></blockquote><div><br></div><div>We&#39;ve been able to make=
 a good deal of progress with the data model pattern in the draft and, at l=
east at here internally, our NMS exploits that structure to set and retriev=
e the different types of data we want to compare.=C2=A0 We&#39;re still gai=
ning experience with it.</div><div><br></div><div>thanks!</div><div>-- Anee=
s</div><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb=
(204,204,204);border-left-style:solid;padding-left:1ex"><div><div><br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org" target=3D"_blank">netmod@ietf.org</a><br=
>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</div></div></blockquote></div><br></div></div></div>
<br>_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
<br></blockquote></div><br></div></div>

--001a11c3677e499b3c05194f2907--


From nobody Wed Jun 24 20:34:34 2015
Return-Path: <aashaikh@google.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 5A0C61ACDBC for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 20:34:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.388
X-Spam-Level: 
X-Spam-Status: No, score=-1.388 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 hMtCW8RwT9pe for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 20:34:31 -0700 (PDT)
Received: from mail-ob0-x234.google.com (mail-ob0-x234.google.com [IPv6:2607:f8b0:4003:c01::234]) (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 3B9FD1ACD9A for <netmod@ietf.org>; Wed, 24 Jun 2015 20:34:31 -0700 (PDT)
Received: by obbop1 with SMTP id op1so39233352obb.2 for <netmod@ietf.org>; Wed, 24 Jun 2015 20:34:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=eNWXmA66uN2jzdFroCtvvMHdM9ZiuYYUrnzvkmce08I=; b=jN7vd+p5neT8TTBNbdGp21ojRiecDK2vEkbr2JQSX6J2CHlO+U962HDr0tfdwRaWvD wkiy4CCGX7z5vi5W4Qh33eXvvenx0SrR2/sBo9/N42sAMSfj6ZggDOuaV+2C/4zcMyS9 D339gQaih1AQbgfRKfyoL6TzmQAx5rledP6AWZJAojaGHC5EYg9PnxDGJgByurD+o6IL JpG/Wm7r8S6HCnsOjPCmHyCfw1sb71wIpwMNdXLkl8Un2J6ITbWxO8OnvussJBGKv1oz dYBf9BnefzPelEXlW2UEUuhCiGpbblezJhT9sWgDVR1C3YTUIBsv3cQxYpCnY3qgSuPX 8+zA==
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=eNWXmA66uN2jzdFroCtvvMHdM9ZiuYYUrnzvkmce08I=; b=j+tjuyhleMqQTg9ob3b6tsf0auYAvH5I1e2r5nt/HSZAMxMrH1kLqhQ9u8kBgf9rFv XxWJcfO8ZftrKOCYqs1ww0KfVT4TnWFa3hmASeVTsakAj4qtd66iI+o8fSwcbyFMECAJ ODS4yv4SDnzir7vuE/9ccuDAhchWyP3pDnt3mYw2bDdwGLnNKm4IOa5nTiylTJnUECRY mVS/ym4XI1+p2t9Yeg1u4JgppSjSuWCwQZ1uhX4D5BCBtL5k9w5NPvpJReY9Lh1w9LcT JxIoxYqrIXPYlrlre0KxwLf4cTZ+KnEP5zobURnW1dNAovs0c3DS9iGWjPzVGKTR6fin sYhw==
X-Gm-Message-State: ALoCoQkUZhFEgeN94r7qItKW26jSNleJl5hK3nA8fKaQpwWm37T8PGpEKoB6RlxpDq33wPdxsFF0
MIME-Version: 1.0
X-Received: by 10.182.240.228 with SMTP id wd4mr37417111obc.79.1435203270544;  Wed, 24 Jun 2015 20:34:30 -0700 (PDT)
Received: by 10.182.52.199 with HTTP; Wed, 24 Jun 2015 20:34:30 -0700 (PDT)
In-Reply-To: <20150624.220325.196257220955611030.mbj@tail-f.com>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <20150624.220325.196257220955611030.mbj@tail-f.com>
Date: Wed, 24 Jun 2015 20:34:30 -0700
Message-ID: <CAJK7ZqLwCqSGthz6vT_XyWMuzqZRjRY3KD1J8arZzqXRZZyB0Q@mail.gmail.com>
From: Anees Shaikh <aashaikh@google.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=089e01634d6e1f462605194f4d22
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/GXZ7jh9QE5FGhDUjLszd5iuEcHM>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 03:34:33 -0000

--089e01634d6e1f462605194f4d22
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi Martin,

On Wed, Jun 24, 2015 at 1:03 PM, Martin Bjorklund <mbj@tail-f.com> wrote:

>
> As Andy pointed out, there is some overlap in what you describe below
> with how NETCONF already works.  This raises some concerns, see below.
>
> >   * Intended and applied/actualised state are views of the running
> >     configuration.
>
> In NETCONF terms, I think intended config is the "running" data
> store.  Do you agree?
>

yes


>
> In your picture, it is clear that the schema for "intended" and
> "applied/actual" is the same.  Good.
>
> >   * All intention is written to the intended configuration (whether it
> be by
> >     CLI, a human, an NMS via NETCONF, a system agent, etc.) =E2=80=93 w=
hich then
> >     transitions to becoming the applied/actualised configuration. This =
is
> >     based on either an explicit request to do so (=E2=80=98commit=E2=80=
=99) or may be
> >     implicit. The success of the intended configuration becoming the
> applied
> >     configuration may be due to time deltas or condition, as Kent
> >     drew.
>
> This part is not clear to me.  Again in NETCONF terms, "commit" is an
> operation to copy the contents of the candidate data store into the
> running data store.  But if we agreed that running equals intended, I
> don't see what the explicit request would be to transition intended /
> running into applied/actual?
>

don't think of this as necessarily related to NETCONF terms (we didn't) --
the commit operation on a system might be explicit or implicit as Rob
mentioned.  Transition to applied/actualized here doesn't mean copying from
one datastore to another.  It simply means that the config that is written
to the running config may be applied at some later point.  On some systems
today, they translate a single configuration push to a series of CLI
equivalents followed by an explicit command (again, per the CLI) -- there
is no separate commit request required from the NMS; in this case the
'commit' is implicit from the perspective of the NMS.


> In NETCONF, as soon as something is written into running (via an
> explicit edit-config towards running or via commit), that data is
> starting to be used internally in the system.  NETCONF does not state
> that the write request must not return until the data has been
> "applied", so both asynchronous and synchronous implementations seems
> to be ok.
>

Yes, that is clear now.


>
> It is not possible to write something into NETCONF's running data
> store (intended config) and prevent it from being used internally.
>

Understood, for NETCONF behavior.  But one could imagine a system that
requires an explicit commit command to apply (or start applying) the
configuration that was pushed to the running config.  You could argue that
the config has to be staged somewhere analogous to a candidate datastore,
but it could also just be a simple cache.  In short, whether the transition
from intended running to actual running is implicit or explicitly triggered
is independent of NETCONF.


>   * We require the ability for an NMS to be able to see both the intended
> and
> >     the actual configuration =E2=80=93 such that it can check whether i=
ts
> intention is
> >     currently the applied configuration, or has not yet been applied du=
e
> to
> >     some external dependency (e.g., line card not plugged in).
>
> Are you saying that in a synchronous system, if I write the config of
> a card that is not plugged in, my <commit/> will hang until the card
> has been plugged in?
>

No, if the system supports pre-configured interfaces (the favorite example
it seems), it should apply the configuration and return when it has been
applied.  It is a valid applied configuration because the system supports
pre-configured interfaces.  The NMS should know that the "ok" that was
returned doesn't necessarily mean that the interface is present and active
-- and it would learn that from the oper-state value for the interface
being set to not-present.


> >   * A portion of the operational state date (marked operational: true)
> is the
> >     set of variables that are not related to state that an external
> system can
> >     assert the value of =E2=80=94 for example, a counter, or a negotiat=
ed
> protocol
> >     timer.
>
> Ok, but there is a simpler solution to this ;-)
>

We probably have a different view of what that is :-)


>
> >   * In terms of accessing subsets of leaves, we need to be able to:
> >
> >       + Retrieve the intended state =E2=80=93 this is done with a metho=
d that
> does
> >         similar to get-config in NETCONF.
> >
> >       + Retrieve the actual + operational state of the device =E2=80=93=
 done
> with a
> >         method similar to get.
>
> Actually, this is not what NETCONF's <get> gives you.  It will give
> you intended + operational.  But we could define a new rpc that gives
> you this in NETCONF.
>

yes, a bit of confusion here.  The actual configuration state (what has
been applied) and the operational state are all part of the state, and
marked config: false (or operational: true when that support is
implemented).   So the <get> should return all of the config: false nodes
including applied config, counters, negotiated values, etc.   You're right
of course that is also returns the intended config (config: true nodes).

>
>
> /martin
>
>
> thanks.
-- Anees

--089e01634d6e1f462605194f4d22
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi Martin,<div class=3D"gmail_extra"><br><div class=3D"gma=
il_quote">On Wed, Jun 24, 2015 at 1:03 PM, Martin Bjorklund <span dir=3D"lt=
r">&lt;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</=
a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0=
 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D""><br=
>
</span>As Andy pointed out, there is some overlap in what you describe belo=
w<br>
with how NETCONF already works.=C2=A0 This raises some concerns, see below.=
<br>
<br>
&gt;=C2=A0 =C2=A0* Intended and applied/actualised state are views of the r=
unning<br>
&gt;=C2=A0 =C2=A0 =C2=A0configuration.<br>
<br>
In NETCONF terms, I think intended config is the &quot;running&quot; data<b=
r>
store.=C2=A0 Do you agree?<br></blockquote><div><br></div><div>yes</div><di=
v>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;=
border-left:1px #ccc solid;padding-left:1ex">
<br>
In your picture, it is clear that the schema for &quot;intended&quot; and<b=
r>
&quot;applied/actual&quot; is the same.=C2=A0 Good.<br>
<br>
&gt;=C2=A0 =C2=A0* All intention is written to the intended configuration (=
whether it be by<br>
<span class=3D"">&gt;=C2=A0 =C2=A0 =C2=A0CLI, a human, an NMS via NETCONF, =
a system agent, etc.) =E2=80=93 which then<br>
&gt;=C2=A0 =C2=A0 =C2=A0transitions to becoming the applied/actualised conf=
iguration. This is<br>
&gt;=C2=A0 =C2=A0 =C2=A0based on either an explicit request to do so (=E2=
=80=98commit=E2=80=99) or may be<br>
&gt;=C2=A0 =C2=A0 =C2=A0implicit. The success of the intended configuration=
 becoming the applied<br>
&gt;=C2=A0 =C2=A0 =C2=A0configuration may be due to time deltas or conditio=
n, as Kent<br>
&gt;=C2=A0 =C2=A0 =C2=A0drew.<br>
<br>
</span>This part is not clear to me.=C2=A0 Again in NETCONF terms, &quot;co=
mmit&quot; is an<br>
operation to copy the contents of the candidate data store into the<br>
running data store.=C2=A0 But if we agreed that running equals intended, I<=
br>
don&#39;t see what the explicit request would be to transition intended /<b=
r>
running into applied/actual?<br></blockquote><div><br></div><div>don&#39;t =
think of this as necessarily related to NETCONF terms (we didn&#39;t) -- th=
e commit operation on a system might be explicit or implicit as Rob mention=
ed.=C2=A0 Transition to applied/actualized here doesn&#39;t mean copying fr=
om one datastore to another.=C2=A0 It simply means that the config that is =
written to the running config may be applied at some later point.=C2=A0 On =
some systems today, they translate a single configuration push to a series =
of CLI equivalents followed by an explicit command (again, per the CLI) -- =
there is no separate commit request required from the NMS; in this case the=
 &#39;commit&#39; is implicit from the perspective of the NMS.</div><div><b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border=
-left:1px #ccc solid;padding-left:1ex">
<br>
In NETCONF, as soon as something is written into running (via an<br>
explicit edit-config towards running or via commit), that data is<br>
starting to be used internally in the system.=C2=A0 NETCONF does not state<=
br>
that the write request must not return until the data has been<br>
&quot;applied&quot;, so both asynchronous and synchronous implementations s=
eems<br>
to be ok.<br></blockquote><div><br></div><div>Yes, that is clear now.</div>=
<div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
It is not possible to write something into NETCONF&#39;s running data<br>
store (intended config) and prevent it from being used internally.<br></blo=
ckquote><div><br></div><div>Understood, for NETCONF behavior.=C2=A0 But one=
 could imagine a system that requires an explicit commit command to apply (=
or start applying) the configuration that was pushed to the running config.=
=C2=A0 You could argue that the config has to be staged somewhere analogous=
 to a candidate datastore, but it could also just be a simple cache.=C2=A0 =
In short, whether the transition from intended running to actual running is=
 implicit or explicitly triggered is independent of NETCONF.</div><div>=C2=
=A0</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0=
 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
&gt;=C2=A0 =C2=A0* We require the ability for an NMS to be able to see both=
 the intended and<br>
<span class=3D"">&gt;=C2=A0 =C2=A0 =C2=A0the actual configuration =E2=80=93=
 such that it can check whether its intention is<br>
&gt;=C2=A0 =C2=A0 =C2=A0currently the applied configuration, or has not yet=
 been applied due to<br>
&gt;=C2=A0 =C2=A0 =C2=A0some external dependency (e.g., line card not plugg=
ed in).<br>
<br>
</span>Are you saying that in a synchronous system, if I write the config o=
f<br>
a card that is not plugged in, my &lt;commit/&gt; will hang until the card<=
br>
has been plugged in?<br></blockquote><div><br></div><div>No, if the system =
supports pre-configured interfaces (the favorite example it seems), it shou=
ld apply the configuration and return when it has been applied.=C2=A0 It is=
 a valid applied configuration because the system supports pre-configured i=
nterfaces.=C2=A0 The NMS should know that the &quot;ok&quot; that was retur=
ned doesn&#39;t necessarily mean that the interface is present and active -=
- and it would learn that from the oper-state value for the interface being=
 set to not-present.</div><div><br></div><blockquote class=3D"gmail_quote" =
style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
&gt;=C2=A0 =C2=A0* A portion of the operational state date (marked operatio=
nal: true) is the<br>
<span class=3D"">&gt;=C2=A0 =C2=A0 =C2=A0set of variables that are not rela=
ted to state that an external system can<br>
&gt;=C2=A0 =C2=A0 =C2=A0assert the value of =E2=80=94 for example, a counte=
r, or a negotiated protocol<br>
&gt;=C2=A0 =C2=A0 =C2=A0timer.<br>
<br>
</span>Ok, but there is a simpler solution to this ;-)<br></blockquote><div=
><br></div><div>We probably have a different view of what that is :-)</div>=
<div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D""><br>
</span>&gt;=C2=A0 =C2=A0* In terms of accessing subsets of leaves, we need =
to be able to:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0+ Retrieve the intended state =E2=80=93 this=
 is done with a method that does<br>
<span class=3D"">&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0similar to get-confi=
g in NETCONF.<br>
&gt;<br>
</span>&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0+ Retrieve the actual + operational s=
tate of the device =E2=80=93 done with a<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0method similar to get.<br>
<br>
Actually, this is not what NETCONF&#39;s &lt;get&gt; gives you.=C2=A0 It wi=
ll give<br>
you intended + operational.=C2=A0 But we could define a new rpc that gives<=
br>
you this in NETCONF.<br></blockquote><div><br></div><div>yes, a bit of conf=
usion here.=C2=A0 The actual configuration state (what has been applied) an=
d the operational state are all part of the state, and marked config: false=
 (or operational: true when that support is implemented). =C2=A0 So the &lt=
;get&gt; should return all of the config: false nodes including applied con=
fig, counters, negotiated values, etc. =C2=A0 You&#39;re right of course th=
at is also returns the intended config (config: true nodes).</div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc so=
lid;padding-left:1ex"><span class=3D"im HOEnZb"><br><br>
</span><span class=3D"HOEnZb"><font color=3D"#888888">/martin<br>
</font></span><div class=3D"HOEnZb"><div class=3D"h5"><br>
<br></div></div></blockquote><div>thanks.</div><div>-- Anees</div><div><br>=
</div><div>=C2=A0</div></div><br></div></div>

--089e01634d6e1f462605194f4d22--


From nobody Wed Jun 24 22:38:54 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 1470C1B2F85 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 22:38:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 O8_-C7Nltr25 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 22:38:50 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7588F1B2F84 for <netmod@ietf.org>; Wed, 24 Jun 2015 22:38:50 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id E0237122C; Thu, 25 Jun 2015 07:38:45 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id bwCXc0ioCqgm; Thu, 25 Jun 2015 07:38:47 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Thu, 25 Jun 2015 07:38:44 +0200 (CEST)
Received: from localhost (demetrius4.jacobs-university.de [212.201.44.49]) by hermes.jacobs-university.de (Postfix) with ESMTP id C45292002B; Thu, 25 Jun 2015 07:38:47 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius4.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id fwdpRtSLGmNU; Thu, 25 Jun 2015 07:39:07 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id C854C20013; Thu, 25 Jun 2015 07:38:44 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id D1A14347A1E6; Thu, 25 Jun 2015 07:38:43 +0200 (CEST)
Date: Thu, 25 Jun 2015 07:38:43 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Anees Shaikh <aashaikh@google.com>
Message-ID: <20150625053843.GA39332@elstar.local>
Mail-Followup-To: Anees Shaikh <aashaikh@google.com>, Rob Shakir <rjs@rob.sh>, NETMOD Working Group <netmod@ietf.org>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <20150624231954.GA38620@elstar.local> <CAJK7ZqKw6wDwChxJj7ry__Un7CbUepiU4R5jXf5Wy1P9NmH5Vg@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAJK7ZqKw6wDwChxJj7ry__Un7CbUepiU4R5jXf5Wy1P9NmH5Vg@mail.gmail.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/HH5pc08z1olcqSP1JPcXEW_37Cg>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 05:38:53 -0000

Anees,

does it really make sense to have to track multiple different objects
in order to find out which IP address(es) are used by an interface?
Perhaps I am old school but I do like the existing design better - one
place to find the operationally used state. I rather have additional
_metadata_ about where the values are originating from instead of a
static marker in a data model that requires to report state in
multiple places that than needs to be integrated again to answer
simple questions like which IP addresses are used by an interface.

Knowing the origin of operational state data is highly useful. Trying
to encode that in the design and structure of the data model, however,
seems complex, costly, and inefficient.

/js

On Wed, Jun 24, 2015 at 06:22:28PM -0700, Anees Shaikh wrote:
> So the model probably would have this as a choice, right?  In one case I
> set the mode as STATIC and specify the address (intended and actual config
> leaves, marked config: true, and config: false, respectively), and in the
> other case I set the interface to DHCP (again intended and actual config),
> and the received IP address would be set in an operational state variable
> (e.g., dhcp-assigned-address).  This last leaf would be marked as
> operational:true in our proposal.
> 
> thanks.
> -- Anees
> 
> On Wed, Jun 24, 2015 at 4:19 PM, Juergen Schoenwaelder <
> j.schoenwaelder@jacobs-university.de> wrote:
> 
> > On Wed, Jun 24, 2015 at 06:39:44PM +0100, Rob Shakir wrote:
> >
> > > A portion of the operational state date (marked operational: true)
> > > is the set of variables that are not related to state that an
> > > external system can assert the value of â€” for example, a counter, or
> > > a negotiated protocol timer.
> >
> > Not sure I parse this correctly but it sounds a bit like you make
> > something a static data model property that in reality is a dynamic
> > property of state. Lets take as an example the IP address of an
> > interface.  It can be statically configured or it can bee optained
> > dynamically via DHCP. So would you mark this operational true (or
> > operational sometimes) in the data model?
> >
> > /js
> >
> > --
> > Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> > Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> > Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
> >
> > _______________________________________________
> > netmod mailing list
> > netmod@ietf.org
> > https://www.ietf.org/mailman/listinfo/netmod
> >

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Thu Jun 25 00:29:18 2015
Return-Path: <aashaikh@google.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 7B1261B30D2 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 00:29:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.388
X-Spam-Level: 
X-Spam-Status: No, score=-1.388 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 QaU7tE_lPA2S for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 00:29:14 -0700 (PDT)
Received: from mail-ob0-x22b.google.com (mail-ob0-x22b.google.com [IPv6:2607:f8b0:4003:c01::22b]) (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 6CBD31B30BF for <netmod@ietf.org>; Thu, 25 Jun 2015 00:29:14 -0700 (PDT)
Received: by obctg8 with SMTP id tg8so41734995obc.3 for <netmod@ietf.org>; Thu, 25 Jun 2015 00:29:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=FY5L2cofndTfyoVaBCQB/fV6Ed6bIa0/xPkh/XJpJvc=; b=Fu36TJDLWak/eGctijyHS8QqvPGr/zQhglS7N0poDVLt2dNnsPavxrUxFzy6h2ftVz RJy/Mce6heDWQzeKMidXyWRaFDhF8WAgD1T3G5jt90SSNKUxpAwXVuN4yU5AUju3Q/QX cPI+x0fdQ4qckgKTP2VC4D0IxoHn+ckTuQNHsgks1V1r36go07m6lb9ajpMfZ3IF6IlT G1riSN8doDKiKzcZpITVsWEyeGirqFCb933A/VPnfnFW87OozRjvf1aCHiEMycGoiDLN hdZf16h8xOoNh2UjlJxaEa6PSb6RPAdod+P+dvJ0H8x3qn6FqYl8X7eMKOu8R/HSEopM 9nMQ==
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:content-type; bh=FY5L2cofndTfyoVaBCQB/fV6Ed6bIa0/xPkh/XJpJvc=; b=lhyElNF+VqMwXG+UBLoSs71pCSjeWSgyql+zCoW1W/X4Va3+61AHidO8HJXIqAjAP3 bUc18ZPyNkokFpqUjT3uogWFc5D0kdhZ+mSn7GyeuthwXyCB1WzeInMvZv2cyqqIg0sJ 5gn474IvW3a6xu2IKI7Y3ne0s7a6zj6lxigEUawj1GaSD1tUZUA0l9KuBmPZBH+hYPsz 4Q0RMDOoakDITp54CD2z8/2iXjGxMGIdKv5IG6HhO9GShZQ+eRdZwPokeElniF7pdv/n O2buknkk4RoSl4DyUAxpqqp3zWNNxOwZ4va6bdTWDUgTeEQ8h4wLbEBaonr/FAzhbsPj BJaw==
X-Gm-Message-State: ALoCoQkddmn/NhBCOewsNWaWpXjwfIN39Np/w99aHpRbWogBbNRTsnvILUdEud04BPgT1w3GxFUt
MIME-Version: 1.0
X-Received: by 10.202.187.138 with SMTP id l132mr36004498oif.31.1435217353663;  Thu, 25 Jun 2015 00:29:13 -0700 (PDT)
Received: by 10.182.52.199 with HTTP; Thu, 25 Jun 2015 00:29:13 -0700 (PDT)
In-Reply-To: <20150625053843.GA39332@elstar.local>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <20150624231954.GA38620@elstar.local> <CAJK7ZqKw6wDwChxJj7ry__Un7CbUepiU4R5jXf5Wy1P9NmH5Vg@mail.gmail.com> <20150625053843.GA39332@elstar.local>
Date: Thu, 25 Jun 2015 00:29:13 -0700
Message-ID: <CAJK7ZqKvR9DWH8XzFS+OgHuaAEdUS-PvtC5g0ZG2Qf4roP0DQA@mail.gmail.com>
From: Anees Shaikh <aashaikh@google.com>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>,  Anees Shaikh <aashaikh@google.com>, Rob Shakir <rjs@rob.sh>, NETMOD Working Group <netmod@ietf.org>
Content-Type: multipart/alternative; boundary=001a113ccf4a8a9a3a051952942e
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/2oma7v-Lq8BWYT1jxCH7HlHqpfA>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 07:29:16 -0000

--001a113ccf4a8a9a3a051952942e
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

hi Juergen,

I don't believe it involves tracking anything beyond what you would need to
track however the model is structured.   You would want to know when your
static IP is applied and being used, or you would want to know what IP
address was assigned by the DHCP server.  Our approach collects this
information in one consistent place (in terms of paths) independent of how
one wants to compose the models.   I guess don't understand what you mean
by it requires reporting and integrating state data from multiple places.

I really don't see where the extra complexity and cost you mention is
coming from.  Is the addition of some nodes in the data model so costly?
For whom?  A model writer?  I think the design pattern for writing models
in this way actually is pretty straightforward (having written several
reasonably complex models now).   For a human model reader?   Perhaps the
disconnect is that our perspective is coming from trying to build
operational software systems that consume the models without having to
write unnecessary model-specific code that just propagates more complexity
into the NMS.

thanks.
-- Anees

On Wed, Jun 24, 2015 at 10:38 PM, Juergen Schoenwaelder <
j.schoenwaelder@jacobs-university.de> wrote:

> Anees,
>
> does it really make sense to have to track multiple different objects
> in order to find out which IP address(es) are used by an interface?
> Perhaps I am old school but I do like the existing design better - one
> place to find the operationally used state. I rather have additional
> _metadata_ about where the values are originating from instead of a
> static marker in a data model that requires to report state in
> multiple places that than needs to be integrated again to answer
> simple questions like which IP addresses are used by an interface.
>
> Knowing the origin of operational state data is highly useful. Trying
> to encode that in the design and structure of the data model, however,
> seems complex, costly, and inefficient.
>
> /js
>
> On Wed, Jun 24, 2015 at 06:22:28PM -0700, Anees Shaikh wrote:
> > So the model probably would have this as a choice, right?  In one case =
I
> > set the mode as STATIC and specify the address (intended and actual
> config
> > leaves, marked config: true, and config: false, respectively), and in t=
he
> > other case I set the interface to DHCP (again intended and actual
> config),
> > and the received IP address would be set in an operational state variab=
le
> > (e.g., dhcp-assigned-address).  This last leaf would be marked as
> > operational:true in our proposal.
> >
> > thanks.
> > -- Anees
> >
> > On Wed, Jun 24, 2015 at 4:19 PM, Juergen Schoenwaelder <
> > j.schoenwaelder@jacobs-university.de> wrote:
> >
> > > On Wed, Jun 24, 2015 at 06:39:44PM +0100, Rob Shakir wrote:
> > >
> > > > A portion of the operational state date (marked operational: true)
> > > > is the set of variables that are not related to state that an
> > > > external system can assert the value of =E2=80=94 for example, a co=
unter, or
> > > > a negotiated protocol timer.
> > >
> > > Not sure I parse this correctly but it sounds a bit like you make
> > > something a static data model property that in reality is a dynamic
> > > property of state. Lets take as an example the IP address of an
> > > interface.  It can be statically configured or it can bee optained
> > > dynamically via DHCP. So would you mark this operational true (or
> > > operational sometimes) in the data model?
> > >
> > > /js
> > >
> > > --
> > > Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> > > Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | German=
y
> > > Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
> > >
> > > _______________________________________________
> > > netmod mailing list
> > > netmod@ietf.org
> > > https://www.ietf.org/mailman/listinfo/netmod
> > >
>
> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>

--001a113ccf4a8a9a3a051952942e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">hi Juergen,<div><br></div><div>I don&#39;t believe it invo=
lves tracking anything beyond what you would need to track however the mode=
l is structured. =C2=A0 You would want to know when your static IP is appli=
ed and being used, or you would want to know what IP address was assigned b=
y the DHCP server.=C2=A0 Our approach collects this information in one cons=
istent place (in terms of paths) independent of how one wants to compose th=
e models. =C2=A0 I guess don&#39;t understand what you mean by it requires =
reporting and integrating state data from multiple places.</div><div><br></=
div><div>I really don&#39;t see where the extra complexity and cost you men=
tion is coming from.=C2=A0 Is the addition of some nodes in the data model =
so costly?=C2=A0 For whom?=C2=A0 A model writer?=C2=A0 I think the design p=
attern for writing models in this way actually is pretty straightforward (h=
aving written several reasonably complex models now). =C2=A0 For a human mo=
del reader? =C2=A0 Perhaps the disconnect is that our perspective is coming=
 from trying to build operational software systems that consume the models =
without having to write unnecessary model-specific code that just propagate=
s more complexity into the NMS.</div><div><br></div><div>thanks.</div><div>=
-- Anees</div></div><div class=3D"gmail_extra"><br><div class=3D"gmail_quot=
e">On Wed, Jun 24, 2015 at 10:38 PM, Juergen Schoenwaelder <span dir=3D"ltr=
">&lt;<a href=3D"mailto:j.schoenwaelder@jacobs-university.de" target=3D"_bl=
ank">j.schoenwaelder@jacobs-university.de</a>&gt;</span> wrote:<br><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc s=
olid;padding-left:1ex">Anees,<br>
<br>
does it really make sense to have to track multiple different objects<br>
in order to find out which IP address(es) are used by an interface?<br>
Perhaps I am old school but I do like the existing design better - one<br>
place to find the operationally used state. I rather have additional<br>
_metadata_ about where the values are originating from instead of a<br>
static marker in a data model that requires to report state in<br>
multiple places that than needs to be integrated again to answer<br>
simple questions like which IP addresses are used by an interface.<br>
<br>
Knowing the origin of operational state data is highly useful. Trying<br>
to encode that in the design and structure of the data model, however,<br>
seems complex, costly, and inefficient.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
/js<br>
</font></span><div class=3D"HOEnZb"><div class=3D"h5"><br>
On Wed, Jun 24, 2015 at 06:22:28PM -0700, Anees Shaikh wrote:<br>
&gt; So the model probably would have this as a choice, right?=C2=A0 In one=
 case I<br>
&gt; set the mode as STATIC and specify the address (intended and actual co=
nfig<br>
&gt; leaves, marked config: true, and config: false, respectively), and in =
the<br>
&gt; other case I set the interface to DHCP (again intended and actual conf=
ig),<br>
&gt; and the received IP address would be set in an operational state varia=
ble<br>
&gt; (e.g., dhcp-assigned-address).=C2=A0 This last leaf would be marked as=
<br>
&gt; operational:true in our proposal.<br>
&gt;<br>
&gt; thanks.<br>
&gt; -- Anees<br>
&gt;<br>
&gt; On Wed, Jun 24, 2015 at 4:19 PM, Juergen Schoenwaelder &lt;<br>
&gt; <a href=3D"mailto:j.schoenwaelder@jacobs-university.de">j.schoenwaelde=
r@jacobs-university.de</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; On Wed, Jun 24, 2015 at 06:39:44PM +0100, Rob Shakir wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; A portion of the operational state date (marked operational:=
 true)<br>
&gt; &gt; &gt; is the set of variables that are not related to state that a=
n<br>
&gt; &gt; &gt; external system can assert the value of =E2=80=94 for exampl=
e, a counter, or<br>
&gt; &gt; &gt; a negotiated protocol timer.<br>
&gt; &gt;<br>
&gt; &gt; Not sure I parse this correctly but it sounds a bit like you make=
<br>
&gt; &gt; something a static data model property that in reality is a dynam=
ic<br>
&gt; &gt; property of state. Lets take as an example the IP address of an<b=
r>
&gt; &gt; interface.=C2=A0 It can be statically configured or it can bee op=
tained<br>
&gt; &gt; dynamically via DHCP. So would you mark this operational true (or=
<br>
&gt; &gt; operational sometimes) in the data model?<br>
&gt; &gt;<br>
&gt; &gt; /js<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; Juergen Schoenwaelder=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Jac=
obs University Bremen gGmbH<br>
&gt; &gt; Phone: <a href=3D"tel:%2B49%20421%20200%203587" value=3D"+4942120=
03587">+49 421 200 3587</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Campus Ring 1 =
| 28759 Bremen | Germany<br>
&gt; &gt; Fax:=C2=A0 =C2=A0<a href=3D"tel:%2B49%20421%20200%203103" value=
=3D"+494212003103">+49 421 200 3103</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&l=
t;<a href=3D"http://www.jacobs-university.de/" rel=3D"noreferrer" target=3D=
"_blank">http://www.jacobs-university.de/</a>&gt;<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; netmod mailing list<br>
&gt; &gt; <a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
&gt; &gt; <a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"n=
oreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</=
a><br>
&gt; &gt;<br>
<br>
--<br>
Juergen Schoenwaelder=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Jacobs Univer=
sity Bremen gGmbH<br>
Phone: <a href=3D"tel:%2B49%20421%20200%203587" value=3D"+494212003587">+49=
 421 200 3587</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Campus Ring 1 | 28759 Br=
emen | Germany<br>
Fax:=C2=A0 =C2=A0<a href=3D"tel:%2B49%20421%20200%203103" value=3D"+4942120=
03103">+49 421 200 3103</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;<a href=3D=
"http://www.jacobs-university.de/" rel=3D"noreferrer" target=3D"_blank">htt=
p://www.jacobs-university.de/</a>&gt;<br>
</div></div></blockquote></div><br></div>

--001a113ccf4a8a9a3a051952942e--


From nobody Thu Jun 25 00:40:31 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 8B5911B3131 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 00:40:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 TpE0Ag6eqLTN for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 00:40:28 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 391551B3130 for <netmod@ietf.org>; Thu, 25 Jun 2015 00:40:28 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id B21AA16F9; Thu, 25 Jun 2015 09:40:23 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id JlUhLlnRGQ00; Thu, 25 Jun 2015 09:40:24 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Thu, 25 Jun 2015 09:40:22 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id B52602002B; Thu, 25 Jun 2015 09:40:25 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id 1mgh8_iViSyE; Thu, 25 Jun 2015 09:40:24 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 3615C20013; Thu, 25 Jun 2015 09:40:23 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 92676347A3D3; Thu, 25 Jun 2015 09:40:20 +0200 (CEST)
Date: Thu, 25 Jun 2015 09:40:19 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Anees Shaikh <aashaikh@google.com>
Message-ID: <20150625074017.GA39607@elstar.local>
Mail-Followup-To: Anees Shaikh <aashaikh@google.com>, Rob Shakir <rjs@rob.sh>, NETMOD Working Group <netmod@ietf.org>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <20150624231954.GA38620@elstar.local> <CAJK7ZqKw6wDwChxJj7ry__Un7CbUepiU4R5jXf5Wy1P9NmH5Vg@mail.gmail.com> <20150625053843.GA39332@elstar.local> <CAJK7ZqKvR9DWH8XzFS+OgHuaAEdUS-PvtC5g0ZG2Qf4roP0DQA@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CAJK7ZqKvR9DWH8XzFS+OgHuaAEdUS-PvtC5g0ZG2Qf4roP0DQA@mail.gmail.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/JwFKfU--UzuGFvSMrFWtwckMyms>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 07:40:30 -0000

On Thu, Jun 25, 2015 at 12:29:13AM -0700, Anees Shaikh wrote:
> hi Juergen,
> 
> I don't believe it involves tracking anything beyond what you would need to
> track however the model is structured.   You would want to know when your
> static IP is applied and being used, or you would want to know what IP
> address was assigned by the DHCP server.  Our approach collects this
> information in one consistent place (in terms of paths) independent of how
> one wants to compose the models.   I guess don't understand what you mean
> by it requires reporting and integrating state data from multiple places.
> 
> I really don't see where the extra complexity and cost you mention is
> coming from.  Is the addition of some nodes in the data model so costly?
> For whom?  A model writer?  I think the design pattern for writing models
> in this way actually is pretty straightforward (having written several
> reasonably complex models now).   For a human model reader?   Perhaps the
> disconnect is that our perspective is coming from trying to build
> operational software systems that consume the models without having to
> write unnecessary model-specific code that just propagates more complexity
> into the NMS.

The problem with your approach is that you are assigning semantics to
where information is located in the data model. You can only do this
once. While have N different locations where IP addresses are listed
might answer one operationally relevant question, it makes other
opertionally relevant questions harder. If you continue with your
approach, you will start replicating data multiple times to address
different operationally relevant question. And this simply does not
scale, clearly not with standards in mind.

I like to understand:

- what are the additional semantics in the data model (e.g., machine
  readable information that helps to understand static model
  relationships)

- what is the meta data you like to have and that you might want to
  filter on in order to retrieve data in meaningful ways

I am having a hard time to believe that encoding semantics in the
naming structure is a proper and workable solution.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Thu Jun 25 01:14:30 2015
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 8C4181B31FD; Thu, 25 Jun 2015 01:14:29 -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 pSBumtviz7HK; Thu, 25 Jun 2015 01:14:28 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 4AC361B322A; Thu, 25 Jun 2015 01:14:20 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id ED4761AE046E; Thu, 25 Jun 2015 10:14:17 +0200 (CEST)
Date: Thu, 25 Jun 2015 10:14:17 +0200 (CEST)
Message-Id: <20150625.101417.2199972820527866360.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHQW8rWRFyxKQ92u3ThP4Fa976vt1n=ogygsG+3Qx4caPA@mail.gmail.com>
References: <20150624.231449.697617442831847315.mbj@tail-f.com> <CABCOCHQW8rWRFyxKQ92u3ThP4Fa976vt1n=ogygsG+3Qx4caPA@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/RU3EvapqPpr-YzxH4obcuGI1jV8>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 08:14:29 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Hi,
> >
> > I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> > to address Y45-04.  Note that YANG 1.1 uses the module
> > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > crossposting).
> >
> > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> >
> > We have a whole bunch of documents that have a normative reference to
> > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > draft-ietf-netconf-yang-library.  This means we need to finish this
> > document pretty soon.
> >
> > I ran into some issues with ietf-yang-library:
> >
> >   1.  The leaf "conformance" is of type "boolean".  It is not obvious
> >       what "conformance = false" means.  Should we change the name
> >       and/or type of this leaf?
> >
> >       I don't have a good proposal, but what we need is a way to
> >       indicate "I implement the protocol accessible nodes in this
> >       module" vs. "I just list this module b/c some other module that
> >       I implement uses typdefs/groupings/... from it".
> >
> >       This issue is related to the github issue #3.  I think we need
> >       this information; Y45-04 relies on it.
> >
> >
> 
> We went through this before and you didn't have a better suggestion last
> time either.
> 
> conformance=false means the server is not claiming conformance for this
> module.

Yes I know.  I just wish we had a better name for this.  But you're
right, if we can't come up with a better term, we'll stick to what we
have.

> A NETCONF <hello> should not have any modules tagged
> as conformance=false.
> 
> CoMI relies on this module as well.
> It has been ready for WGLC since January.
> 
> 
> 
> 
> >
> >   2.  The "/modules/module" list is keyed by "name" and "revision".
> >       Should we really have "revision" as key?  A server can only
> >       implement one revision of a module, and should only list one
> >       revision of a module w/ conformance = false.  I suggest we make
> >       this leaf mandatory, and not part of the key.
> >
> 
> 
> I am not in favor of this change.
> Two modules "foo" and "bar" released on the same date
> could not be represented.

The name of the module would be the (single) key, so this should be
possible.

> I think the indexing is fine in the current draft.
> The <get-schema> operation in NETCONF and RESTCONF need
> the module name and the revision-date.

Yes, revision must be mandatory.

> This module should not care how many revisions of each module
> are listed.  This is the full YANG library, not a <hello> message.

The whole point of this module is to replace the <hello> message!  It
first came up in RESTCONF, and we want to use it also in NETCONF in
order to have one single way to do YANG module advertisement
regardless of protocol.

There is already the schema list in ietf-netconf-monitoring that gives
you the full set of modules and submodules used in a server.



/martin


From nobody Thu Jun 25 01:35:26 2015
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 19A611B319A for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 01:35:25 -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 iEXxBznKJJgn for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 01:35:23 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 3F9CF1B3194 for <netmod@ietf.org>; Thu, 25 Jun 2015 01:35:23 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 78FED1AE046E; Thu, 25 Jun 2015 10:35:22 +0200 (CEST)
Date: Thu, 25 Jun 2015 10:35:21 +0200 (CEST)
Message-Id: <20150625.103521.354867116103127955.mbj@tail-f.com>
To: aashaikh@google.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CAJK7ZqLwCqSGthz6vT_XyWMuzqZRjRY3KD1J8arZzqXRZZyB0Q@mail.gmail.com>
References: <etPan.558aeb61.2c1c2992.123@piccolo.local> <20150624.220325.196257220955611030.mbj@tail-f.com> <CAJK7ZqLwCqSGthz6vT_XyWMuzqZRjRY3KD1J8arZzqXRZZyB0Q@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=utf-8
Content-Transfer-Encoding: base64
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/XT2Y7leijkqs__0JdIGvYCaCASE>
Cc: netmod@ietf.org
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 08:35:25 -0000

QW5lZXMgU2hhaWtoIDxhYXNoYWlraEBnb29nbGUuY29tPiB3cm90ZToNCj4gSGkgTWFydGluLA0K
PiANCj4gT24gV2VkLCBKdW4gMjQsIDIwMTUgYXQgMTowMyBQTSwgTWFydGluIEJqb3JrbHVuZCA8
bWJqQHRhaWwtZi5jb20+IHdyb3RlOg0KPiANCj4gPg0KPiA+IEFzIEFuZHkgcG9pbnRlZCBvdXQs
IHRoZXJlIGlzIHNvbWUgb3ZlcmxhcCBpbiB3aGF0IHlvdSBkZXNjcmliZSBiZWxvdw0KPiA+IHdp
dGggaG93IE5FVENPTkYgYWxyZWFkeSB3b3Jrcy4gIFRoaXMgcmFpc2VzIHNvbWUgY29uY2VybnMs
IHNlZSBiZWxvdy4NCj4gPg0KPiA+ID4gICAqIEludGVuZGVkIGFuZCBhcHBsaWVkL2FjdHVhbGlz
ZWQgc3RhdGUgYXJlIHZpZXdzIG9mIHRoZSBydW5uaW5nDQo+ID4gPiAgICAgY29uZmlndXJhdGlv
bi4NCj4gPg0KPiA+IEluIE5FVENPTkYgdGVybXMsIEkgdGhpbmsgaW50ZW5kZWQgY29uZmlnIGlz
IHRoZSAicnVubmluZyIgZGF0YQ0KPiA+IHN0b3JlLiAgRG8geW91IGFncmVlPw0KPiA+DQo+IA0K
PiB5ZXMNCj4gDQo+IA0KPiA+DQo+ID4gSW4geW91ciBwaWN0dXJlLCBpdCBpcyBjbGVhciB0aGF0
IHRoZSBzY2hlbWEgZm9yICJpbnRlbmRlZCIgYW5kDQo+ID4gImFwcGxpZWQvYWN0dWFsIiBpcyB0
aGUgc2FtZS4gIEdvb2QuDQo+ID4NCj4gPiA+ICAgKiBBbGwgaW50ZW50aW9uIGlzIHdyaXR0ZW4g
dG8gdGhlIGludGVuZGVkIGNvbmZpZ3VyYXRpb24gKHdoZXRoZXIgaXQNCj4gPiBiZSBieQ0KPiA+
ID4gICAgIENMSSwgYSBodW1hbiwgYW4gTk1TIHZpYSBORVRDT05GLCBhIHN5c3RlbSBhZ2VudCwg
ZXRjLikg4oCTIHdoaWNoIHRoZW4NCj4gPiA+ICAgICB0cmFuc2l0aW9ucyB0byBiZWNvbWluZyB0
aGUgYXBwbGllZC9hY3R1YWxpc2VkIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMNCj4gPiA+ICAgICBi
YXNlZCBvbiBlaXRoZXIgYW4gZXhwbGljaXQgcmVxdWVzdCB0byBkbyBzbyAo4oCYY29tbWl04oCZ
KSBvciBtYXkgYmUNCj4gPiA+ICAgICBpbXBsaWNpdC4gVGhlIHN1Y2Nlc3Mgb2YgdGhlIGludGVu
ZGVkIGNvbmZpZ3VyYXRpb24gYmVjb21pbmcgdGhlDQo+ID4gYXBwbGllZA0KPiA+ID4gICAgIGNv
bmZpZ3VyYXRpb24gbWF5IGJlIGR1ZSB0byB0aW1lIGRlbHRhcyBvciBjb25kaXRpb24sIGFzIEtl
bnQNCj4gPiA+ICAgICBkcmV3Lg0KPiA+DQo+ID4gVGhpcyBwYXJ0IGlzIG5vdCBjbGVhciB0byBt
ZS4gIEFnYWluIGluIE5FVENPTkYgdGVybXMsICJjb21taXQiIGlzIGFuDQo+ID4gb3BlcmF0aW9u
IHRvIGNvcHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBjYW5kaWRhdGUgZGF0YSBzdG9yZSBpbnRvIHRo
ZQ0KPiA+IHJ1bm5pbmcgZGF0YSBzdG9yZS4gIEJ1dCBpZiB3ZSBhZ3JlZWQgdGhhdCBydW5uaW5n
IGVxdWFscyBpbnRlbmRlZCwgSQ0KPiA+IGRvbid0IHNlZSB3aGF0IHRoZSBleHBsaWNpdCByZXF1
ZXN0IHdvdWxkIGJlIHRvIHRyYW5zaXRpb24gaW50ZW5kZWQgLw0KPiA+IHJ1bm5pbmcgaW50byBh
cHBsaWVkL2FjdHVhbD8NCj4gPg0KPiANCj4gZG9uJ3QgdGhpbmsgb2YgdGhpcyBhcyBuZWNlc3Nh
cmlseSByZWxhdGVkIHRvIE5FVENPTkYgdGVybXMgKHdlIGRpZG4ndCkgLS0NCj4gdGhlIGNvbW1p
dCBvcGVyYXRpb24gb24gYSBzeXN0ZW0gbWlnaHQgYmUgZXhwbGljaXQgb3IgaW1wbGljaXQgYXMg
Um9iDQo+IG1lbnRpb25lZC4gIFRyYW5zaXRpb24gdG8gYXBwbGllZC9hY3R1YWxpemVkIGhlcmUg
ZG9lc24ndCBtZWFuIGNvcHlpbmcgZnJvbQ0KPiBvbmUgZGF0YXN0b3JlIHRvIGFub3RoZXIuDQoN
Ckl0IHdvdWxkbid0IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCBpbiBORVRDT05GIGVpdGhlci4gIEV2
ZW4gaWYgd2UNCnJlcHJlc2VudGVkIGFjdHVhbCBhcyBhIGRhdGEgc3RvcmUgaW4gdGhlIHByb3Rv
Y29sLCBpdCdzIGEgY29uY2VwdHVhbA0KZW50aXR5Lg0KDQo+IEl0IHNpbXBseSBtZWFucyB0aGF0
IHRoZSBjb25maWcgdGhhdCBpcyB3cml0dGVuDQo+IHRvIHRoZSBydW5uaW5nIGNvbmZpZyBtYXkg
YmUgYXBwbGllZCBhdCBzb21lIGxhdGVyIHBvaW50LiAgT24gc29tZSBzeXN0ZW1zDQo+IHRvZGF5
LCB0aGV5IHRyYW5zbGF0ZSBhIHNpbmdsZSBjb25maWd1cmF0aW9uIHB1c2ggdG8gYSBzZXJpZXMg
b2YgQ0xJDQo+IGVxdWl2YWxlbnRzIGZvbGxvd2VkIGJ5IGFuIGV4cGxpY2l0IGNvbW1hbmQgKGFn
YWluLCBwZXIgdGhlIENMSSkgLS0gdGhlcmUNCj4gaXMgbm8gc2VwYXJhdGUgY29tbWl0IHJlcXVl
c3QgcmVxdWlyZWQgZnJvbSB0aGUgTk1TOyBpbiB0aGlzIGNhc2UgdGhlDQo+ICdjb21taXQnIGlz
IGltcGxpY2l0IGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSBOTVMuDQo+IA0KPiANCj4gPiBJ
biBORVRDT05GLCBhcyBzb29uIGFzIHNvbWV0aGluZyBpcyB3cml0dGVuIGludG8gcnVubmluZyAo
dmlhIGFuDQo+ID4gZXhwbGljaXQgZWRpdC1jb25maWcgdG93YXJkcyBydW5uaW5nIG9yIHZpYSBj
b21taXQpLCB0aGF0IGRhdGEgaXMNCj4gPiBzdGFydGluZyB0byBiZSB1c2VkIGludGVybmFsbHkg
aW4gdGhlIHN5c3RlbS4gIE5FVENPTkYgZG9lcyBub3Qgc3RhdGUNCj4gPiB0aGF0IHRoZSB3cml0
ZSByZXF1ZXN0IG11c3Qgbm90IHJldHVybiB1bnRpbCB0aGUgZGF0YSBoYXMgYmVlbg0KPiA+ICJh
cHBsaWVkIiwgc28gYm90aCBhc3luY2hyb25vdXMgYW5kIHN5bmNocm9ub3VzIGltcGxlbWVudGF0
aW9ucyBzZWVtcw0KPiA+IHRvIGJlIG9rLg0KPiA+DQo+IA0KPiBZZXMsIHRoYXQgaXMgY2xlYXIg
bm93Lg0KPiANCj4gDQo+ID4NCj4gPiBJdCBpcyBub3QgcG9zc2libGUgdG8gd3JpdGUgc29tZXRo
aW5nIGludG8gTkVUQ09ORidzIHJ1bm5pbmcgZGF0YQ0KPiA+IHN0b3JlIChpbnRlbmRlZCBjb25m
aWcpIGFuZCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgdXNlZCBpbnRlcm5hbGx5Lg0KPiA+DQo+IA0K
PiBVbmRlcnN0b29kLCBmb3IgTkVUQ09ORiBiZWhhdmlvci4gIEJ1dCBvbmUgY291bGQgaW1hZ2lu
ZSBhIHN5c3RlbSB0aGF0DQo+IHJlcXVpcmVzIGFuIGV4cGxpY2l0IGNvbW1pdCBjb21tYW5kIHRv
IGFwcGx5IChvciBzdGFydCBhcHBseWluZykgdGhlDQo+IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMg
cHVzaGVkIHRvIHRoZSBydW5uaW5nIGNvbmZpZy4NCg0KQnV0IHdoeSB3b3VsZCB5b3UgY2FsbCB0
aGUgY29uZmlnIHRoYXQgZXhpc3RzIGJlZm9yZSB0aGlzIGV4cGxpY2l0DQpjb21tYW5kICJpbnRl
bmRlZCI/ICBJZiBJIGNvcHkgYWxsIG15IGNvbmZpZyB0byBhIGxvY2FsIGZpbGUsIHdpdGggdGhl
DQppbnRlbnRpb24gb2YgYXBwbHlpbmcgaXQgbGF0ZXIsIGlzIHRoYXQgbG9jYWwgZmlsZSBteSAi
aW50ZW5kZWQNCmNvbmZpZyI/ICBIb3BlZnVsbHkgbm90LiAgTXkgY3VycmVudCAicnVubmluZyIg
aXMgc3RpbGwgaW50ZW5kZWQgdW50aWwNCkkgcmVwbGFjZSBpdC4NCg0KPiBZb3UgY291bGQgYXJn
dWUgdGhhdA0KPiB0aGUgY29uZmlnIGhhcyB0byBiZSBzdGFnZWQgc29tZXdoZXJlIGFuYWxvZ291
cyB0byBhIGNhbmRpZGF0ZSBkYXRhc3RvcmUsDQo+IGJ1dCBpdCBjb3VsZCBhbHNvIGp1c3QgYmUg
YSBzaW1wbGUgY2FjaGUuICBJbiBzaG9ydCwgd2hldGhlciB0aGUgdHJhbnNpdGlvbg0KPiBmcm9t
IGludGVuZGVkIHJ1bm5pbmcgdG8gYWN0dWFsIHJ1bm5pbmcgaXMgaW1wbGljaXQgb3IgZXhwbGlj
aXRseSB0cmlnZ2VyZWQNCj4gaXMgaW5kZXBlbmRlbnQgb2YgTkVUQ09ORi4NCj4gDQo+IA0KPiA+
ICAgKiBXZSByZXF1aXJlIHRoZSBhYmlsaXR5IGZvciBhbiBOTVMgdG8gYmUgYWJsZSB0byBzZWUg
Ym90aCB0aGUgaW50ZW5kZWQNCj4gPiBhbmQNCj4gPiA+ICAgICB0aGUgYWN0dWFsIGNvbmZpZ3Vy
YXRpb24g4oCTIHN1Y2ggdGhhdCBpdCBjYW4gY2hlY2sgd2hldGhlciBpdHMNCj4gPiBpbnRlbnRp
b24gaXMNCj4gPiA+ICAgICBjdXJyZW50bHkgdGhlIGFwcGxpZWQgY29uZmlndXJhdGlvbiwgb3Ig
aGFzIG5vdCB5ZXQgYmVlbiBhcHBsaWVkIGR1ZQ0KPiA+IHRvDQo+ID4gPiAgICAgc29tZSBleHRl
cm5hbCBkZXBlbmRlbmN5IChlLmcuLCBsaW5lIGNhcmQgbm90IHBsdWdnZWQgaW4pLg0KPiA+DQo+
ID4gQXJlIHlvdSBzYXlpbmcgdGhhdCBpbiBhIHN5bmNocm9ub3VzIHN5c3RlbSwgaWYgSSB3cml0
ZSB0aGUgY29uZmlnIG9mDQo+ID4gYSBjYXJkIHRoYXQgaXMgbm90IHBsdWdnZWQgaW4sIG15IDxj
b21taXQvPiB3aWxsIGhhbmcgdW50aWwgdGhlIGNhcmQNCj4gPiBoYXMgYmVlbiBwbHVnZ2VkIGlu
Pw0KPiA+DQo+IA0KPiBObywgaWYgdGhlIHN5c3RlbSBzdXBwb3J0cyBwcmUtY29uZmlndXJlZCBp
bnRlcmZhY2VzICh0aGUgZmF2b3JpdGUgZXhhbXBsZQ0KPiBpdCBzZWVtcyksIGl0IHNob3VsZCBh
cHBseSB0aGUgY29uZmlndXJhdGlvbiBhbmQgcmV0dXJuIHdoZW4gaXQgaGFzIGJlZW4NCj4gYXBw
bGllZC4gIEl0IGlzIGEgdmFsaWQgYXBwbGllZCBjb25maWd1cmF0aW9uIGJlY2F1c2UgdGhlIHN5
c3RlbSBzdXBwb3J0cw0KPiBwcmUtY29uZmlndXJlZCBpbnRlcmZhY2VzLiAgVGhlIE5NUyBzaG91
bGQga25vdyB0aGF0IHRoZSAib2siIHRoYXQgd2FzDQo+IHJldHVybmVkIGRvZXNuJ3QgbmVjZXNz
YXJpbHkgbWVhbiB0aGF0IHRoZSBpbnRlcmZhY2UgaXMgcHJlc2VudCBhbmQgYWN0aXZlDQo+IC0t
IGFuZCBpdCB3b3VsZCBsZWFybiB0aGF0IGZyb20gdGhlIG9wZXItc3RhdGUgdmFsdWUgZm9yIHRo
ZSBpbnRlcmZhY2UNCj4gYmVpbmcgc2V0IHRvIG5vdC1wcmVzZW50Lg0KDQpSb2Igd3JvdGU6DQoN
CiAgICBUaGUgc3VjY2VzcyBvZiB0aGUgaW50ZW5kZWQgY29uZmlndXJhdGlvbiBiZWNvbWluZyB0
aGUgYXBwbGllZA0KICAgIGNvbmZpZ3VyYXRpb24gbWF5IGJlIGR1ZSB0byB0aW1lIGRlbHRhcyBv
ciBjb25kaXRpb24NCg0KU28gY2FuIHlvdSBnaXZlIGFuIGV4YW1wbGUgb2Ygd2hlbiB0aGUgImNv
bW1pdCIgd291bGQgaGFuZyB1bnRpbCBhDQpkZXBlbmRlbmN5IGhhdmUgYmVlbiBmdWxmaWxsZWQ/
DQoNCg0KDQovbWFydGluDQoNCg0KDQoNCj4gPiA+ICAgKiBBIHBvcnRpb24gb2YgdGhlIG9wZXJh
dGlvbmFsIHN0YXRlIGRhdGUgKG1hcmtlZCBvcGVyYXRpb25hbDogdHJ1ZSkNCj4gPiBpcyB0aGUN
Cj4gPiA+ICAgICBzZXQgb2YgdmFyaWFibGVzIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIHN0YXRl
IHRoYXQgYW4gZXh0ZXJuYWwNCj4gPiBzeXN0ZW0gY2FuDQo+ID4gPiAgICAgYXNzZXJ0IHRoZSB2
YWx1ZSBvZiDigJQgZm9yIGV4YW1wbGUsIGEgY291bnRlciwgb3IgYSBuZWdvdGlhdGVkDQo+ID4g
cHJvdG9jb2wNCj4gPiA+ICAgICB0aW1lci4NCj4gPg0KPiA+IE9rLCBidXQgdGhlcmUgaXMgYSBz
aW1wbGVyIHNvbHV0aW9uIHRvIHRoaXMgOy0pDQo+ID4NCj4gDQo+IFdlIHByb2JhYmx5IGhhdmUg
YSBkaWZmZXJlbnQgdmlldyBvZiB3aGF0IHRoYXQgaXMgOi0pDQo+IA0KPiANCj4gPg0KPiA+ID4g
ICAqIEluIHRlcm1zIG9mIGFjY2Vzc2luZyBzdWJzZXRzIG9mIGxlYXZlcywgd2UgbmVlZCB0byBi
ZSBhYmxlIHRvOg0KPiA+ID4NCj4gPiA+ICAgICAgICsgUmV0cmlldmUgdGhlIGludGVuZGVkIHN0
YXRlIOKAkyB0aGlzIGlzIGRvbmUgd2l0aCBhIG1ldGhvZCB0aGF0DQo+ID4gZG9lcw0KPiA+ID4g
ICAgICAgICBzaW1pbGFyIHRvIGdldC1jb25maWcgaW4gTkVUQ09ORi4NCj4gPiA+DQo+ID4gPiAg
ICAgICArIFJldHJpZXZlIHRoZSBhY3R1YWwgKyBvcGVyYXRpb25hbCBzdGF0ZSBvZiB0aGUgZGV2
aWNlIOKAkyBkb25lDQo+ID4gd2l0aCBhDQo+ID4gPiAgICAgICAgIG1ldGhvZCBzaW1pbGFyIHRv
IGdldC4NCj4gPg0KPiA+IEFjdHVhbGx5LCB0aGlzIGlzIG5vdCB3aGF0IE5FVENPTkYncyA8Z2V0
PiBnaXZlcyB5b3UuICBJdCB3aWxsIGdpdmUNCj4gPiB5b3UgaW50ZW5kZWQgKyBvcGVyYXRpb25h
bC4gIEJ1dCB3ZSBjb3VsZCBkZWZpbmUgYSBuZXcgcnBjIHRoYXQgZ2l2ZXMNCj4gPiB5b3UgdGhp
cyBpbiBORVRDT05GLg0KPiA+DQo+IA0KPiB5ZXMsIGEgYml0IG9mIGNvbmZ1c2lvbiBoZXJlLiAg
VGhlIGFjdHVhbCBjb25maWd1cmF0aW9uIHN0YXRlICh3aGF0IGhhcw0KPiBiZWVuIGFwcGxpZWQp
IGFuZCB0aGUgb3BlcmF0aW9uYWwgc3RhdGUgYXJlIGFsbCBwYXJ0IG9mIHRoZSBzdGF0ZSwgYW5k
DQo+IG1hcmtlZCBjb25maWc6IGZhbHNlIChvciBvcGVyYXRpb25hbDogdHJ1ZSB3aGVuIHRoYXQg
c3VwcG9ydCBpcw0KPiBpbXBsZW1lbnRlZCkuICAgU28gdGhlIDxnZXQ+IHNob3VsZCByZXR1cm4g
YWxsIG9mIHRoZSBjb25maWc6IGZhbHNlIG5vZGVzDQo+IGluY2x1ZGluZyBhcHBsaWVkIGNvbmZp
ZywgY291bnRlcnMsIG5lZ290aWF0ZWQgdmFsdWVzLCBldGMuICAgWW91J3JlIHJpZ2h0DQo+IG9m
IGNvdXJzZSB0aGF0IGlzIGFsc28gcmV0dXJucyB0aGUgaW50ZW5kZWQgY29uZmlnIChjb25maWc6
IHRydWUgbm9kZXMpLg0KPiANCj4gPg0KPiA+DQo+ID4gL21hcnRpbg0KPiA+DQo+ID4NCj4gPiB0
aGFua3MuDQo+IC0tIEFuZWVzDQo=


From nobody Thu Jun 25 01:38:37 2015
Return-Path: <rjs@rob.sh>
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 3649A1B32DA for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 01:38:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level: 
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=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 Lb1Hr5hZydkP for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 01:38:34 -0700 (PDT)
Received: from cappuccino.rob.sh (cappuccino.rob.sh [IPv6:2a03:9800:10:4c::cafe:b00c]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6FEA61B325B for <netmod@ietf.org>; Thu, 25 Jun 2015 01:38:33 -0700 (PDT)
Received: from [86.176.100.75] (helo=piccolo.local) by cappuccino.rob.sh with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from <rjs@rob.sh>) id 1Z82fv-0003k8-TB; Thu, 25 Jun 2015 09:38:23 +0100
Date: Thu, 25 Jun 2015 09:38:29 +0100
From: Rob Shakir <rjs@rob.sh>
To: Martin Bjorklund <mbj@tail-f.com>, aashaikh@google.com
Message-ID: <etPan.558bbe05.5f6352bb.123@piccolo.local>
In-Reply-To: <20150625.103521.354867116103127955.mbj@tail-f.com>
References: <etPan.558aeb61.2c1c2992.123@piccolo.local> <20150624.220325.196257220955611030.mbj@tail-f.com> <CAJK7ZqLwCqSGthz6vT_XyWMuzqZRjRY3KD1J8arZzqXRZZyB0Q@mail.gmail.com> <20150625.103521.354867116103127955.mbj@tail-f.com>
X-Mailer: Airmail Beta (308)
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="558bbe05_643b6397_123"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/1AUqzX5nqQnruu4zQ6ineinmVlE>
Cc: netmod@ietf.org
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 08:38:36 -0000

--558bbe05_643b6397_123
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline




On 25 June 2015 at 09:35:19, Martin Bjorklund (mbj=40tail-f.com) wrote:


So can you give an example of when the =22commit=22 would hang until a=C2=
=A0
dependency have been fulfilled=3F=C2=A0
In cases where there is another =E2=80=9Ccommit=E2=80=9D ongoing from ano=
ther user, and this must complete before it is possible to apply this set=
 of intended state.

Thanks,
r.
--558bbe05_643b6397_123
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<html><head><style>
body =7B
	font-family: =22Helvetica Neue=22, Helvetica, Arial, sans-serif;
	padding:1em;
	margin:auto;
	background:=23fefefe;
=7D

h1, h2, h3, h4, h5, h6 =7B
	font-weight: bold;
=7D

h1 =7B
	color: =23000000;
	font-size: 28pt;
=7D

h2 =7B
	border-bottom: 1px solid =23CCCCCC;
	color: =23000000;
	font-size: 24px;
=7D

h3 =7B
	font-size: 18px;
=7D

h4 =7B
	font-size: 16px;
=7D

h5 =7B
	font-size: 14px;
=7D

h6 =7B
	color: =23777777;
	background-color: inherit;
	font-size: 14px;
=7D

hr =7B
	height: 0.2em;
	border: 0;
	color: =23CCCCCC;
	background-color: =23CCCCCC;
    display: inherit;
=7D

p, blockquote, ul, ol, dl, li, table, pre =7B
	margin: 15px 0;
=7D

a, a:visited =7B
	color: =234183C4;
	background-color: inherit;
	text-decoration: none;
=7D

=23message =7B
	border-radius: 6px;
	border: 1px solid =23ccc;
	display:block;
	width:100%;
	height:60px;
	margin:6px 0px;
=7D

button, =23ws =7B
	font-size: 12 pt;
	padding: 4px 6px;
	border-radius: 5px;
	border: 1px solid =23bbb;
	background-color: =23eee;
=7D

code, pre, =23ws, =23message =7B
	font-family: Monaco;
	font-size: 10pt;
	border-radius: 3px;
	background-color: =23=468=468=468;
	color: inherit;
=7D

code =7B
	border: 1px solid =23EAEAEA;
	margin: 0 2px;
	padding: 0 5px;
=7D

pre =7B
	border: 1px solid =23CCCCCC;
	overflow: auto;
	padding: 4px 8px;
=7D

pre > code =7B
	border: 0;
	margin: 0;
	padding: 0;
=7D

=23ws =7B background-color: =23f8f8f8; =7D


.bloop=5Fmarkdown table =7B
border-collapse: collapse; =20
font-family: Helvetica, arial, freesans, clean, sans-serif; =20
color: rgb(51, 51, 51); =20
font-size: 15px; line-height: 25px;
padding: 0; =7D

.bloop=5Fmarkdown table tr =7B
border-top: 1px solid =23cccccc;
background-color: white;
margin: 0;
padding: 0; =7D
    =20
.bloop=5Fmarkdown table tr:nth-child(2n) =7B
background-color: =23f8f8f8; =7D

.bloop=5Fmarkdown table tr th =7B
font-weight: bold;
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr td =7B
border: 1px solid =23cccccc;
margin: 0;
padding: 6px 13px; =7D

.bloop=5Fmarkdown table tr th :first-child, table tr td :first-child =7B
margin-top: 0; =7D

.bloop=5Fmarkdown table tr th :last-child, table tr td :last-child =7B
margin-bottom: 0; =7D

.bloop=5Fmarkdown blockquote=7B
  border-left: 4px solid =23dddddd;
  padding: 0 15px;
  color: =23777777; =7D
  blockquote > :first-child =7B
    margin-top: 0; =7D
  blockquote > :last-child =7B
    margin-bottom: 0; =7D

code, pre, =23ws, =23message =7B
    word-break: normal;
    word-wrap: normal;
=7D

hr =7B
    display: inherit;
=7D

.bloop=5Fmarkdown :first-child =7B
    -webkit-margin-before: 0;
=7D

code, pre, =23ws, =23message =7B
    font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
=7D


.send =7B color:=2377bb77; =7D
.server =7B color:=237799bb; =7D
.error =7B color:=23AA0000; =7D</style></head><body style=3D=22word-wrap:=
 break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-sp=
ace;=22><div class=3D=22bloop=5Fmarkdown=22><p></p></div><div class=3D=22=
bloop=5Foriginal=5Fhtml=22><style>body=7Bfont-family:Consolas,Arial;font-=
size:13px=7D</style><div id=3D=22bloop=5Fcustomfont=22 style=3D=22font-fa=
mily:Consolas,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; =
line-height: auto;=22><br></div> <br> <div id=3D=22bloop=5Fsign=5F1435221=
454510499840=22 class=3D=22bloop=5Fsign=22></div> <br><p class=3D=22airma=
il=5Fon=22 style=3D=22color:=23000;=22>On 25 June 2015 at 09:35:19, Marti=
n Bjorklund (<a href=3D=22mailto:mbj=40tail-f.com=22>mbj=40tail-f.com</a>=
) wrote:</p> <blockquote type=3D=22cite=22 class=3D=22clean=5Fbq=22><span=
><div><br style=3D=22color: rgb(0, 0, 0); font-family: 'helvetica Neue', =
helvetica; font-size: 12.727272033691406px; font-style: normal; font-vari=
ant: normal; font-weight: normal; letter-spacing: normal; line-height: 19=
.5px; orphans: auto; text-align: start; text-indent: 0px; text-transform:=
 none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text=
-stroke-width: 0px;=22><span style=3D=22color: rgb(0, 0, 0); font-family:=
 'helvetica Neue', helvetica; font-size: 12.727272033691406px; font-style=
: normal; font-variant: normal; font-weight: normal; letter-spacing: norm=
al; line-height: 19.5px; orphans: auto; text-align: start; text-indent: 0=
px; text-transform: none; white-space: normal; widows: auto; word-spacing=
: 0px; -webkit-text-stroke-width: 0px; display: inline =21important; floa=
t: none;=22>So can you give an example of when the =22commit=22 would han=
g until a<span class=3D=22Apple-converted-space=22>&nbsp;</span></span><b=
r style=3D=22color: rgb(0, 0, 0); font-family: 'helvetica Neue', helvetic=
a; font-size: 12.727272033691406px; font-style: normal; font-variant: nor=
mal; font-weight: normal; letter-spacing: normal; line-height: 19.5px; or=
phans: auto; text-align: start; text-indent: 0px; text-transform: none; w=
hite-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-=
width: 0px;=22><span style=3D=22color: rgb(0, 0, 0); font-family: 'helvet=
ica Neue', helvetica; font-size: 12.727272033691406px; font-style: normal=
; font-variant: normal; font-weight: normal; letter-spacing: normal; line=
-height: 19.5px; orphans: auto; text-align: start; text-indent: 0px; text=
-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -=
webkit-text-stroke-width: 0px; display: inline =21important; float: none;=
=22>dependency have been fulfilled=3F<span class=3D=22Apple-converted-spa=
ce=22>&nbsp;</span></span></div></span></blockquote></div><div class=3D=22=
bloop=5Fmarkdown=22><p></p>

<p>In cases where there is another =E2=80=9Ccommit=E2=80=9D ongoing from =
another user, and this must complete before it is possible to apply this =
set of intended state.</p>

<p>Thanks,<br>
r.</p></div></body></html>
--558bbe05_643b6397_123--


From nobody Thu Jun 25 05:50:12 2015
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 552C01A1BC3 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 05:50:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 dkH3nT1HdQQU for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 05:50:04 -0700 (PDT)
Received: from mail-la0-f52.google.com (mail-la0-f52.google.com [209.85.215.52]) (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 2E4951A1BB9 for <netmod@ietf.org>; Thu, 25 Jun 2015 05:50:04 -0700 (PDT)
Received: by lacny3 with SMTP id ny3so44186388lac.3 for <netmod@ietf.org>; Thu, 25 Jun 2015 05:50: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=VP6Hc7feZP6AaZ2Sh93ZoItLkoH5+fn1I3axoagI9C8=; b=hdUd/8tfiBpcM7qy2e+vLQsrlVTmQWXH6aA8f3eb+lPAQf0d7hTfe2wIye2gI1W5eC wKOiGu17utZ7rSOyFDvd3VNNs62VuR25Z0MmqQ36nFqfuebmkxJSXwYXOqKM6Y/BKcjB TYmjpy8piW9BACmHkPCSPYkQ/ENQoKyQexntwpPhdZwU/u0TUWvTwOuDr0hAfuIfe3Qk WeJSFItfqFKDqsEYPnfNFhzeKMb2G0pWDeFqaxDyXOkvBkKamsBf1phyF4Nt3XZAMssX DzpMs/f8A9hecsquXjClqSQ5nRSiW5QIZ0cVKPFFmsRq7jhbwGAPfH91gSHMQwJ+RVBa RfKA==
X-Gm-Message-State: ALoCoQnFLJhF7+pr9IU3QKVuVpXkW/EankTqdJ0x5dEhWeD49TSgXNPzrDegpPTAvUbqz2NwEjPa
MIME-Version: 1.0
X-Received: by 10.112.24.71 with SMTP id s7mr43691152lbf.37.1435236602564; Thu, 25 Jun 2015 05:50:02 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Thu, 25 Jun 2015 05:50:02 -0700 (PDT)
In-Reply-To: <20150625.101417.2199972820527866360.mbj@tail-f.com>
References: <20150624.231449.697617442831847315.mbj@tail-f.com> <CABCOCHQW8rWRFyxKQ92u3ThP4Fa976vt1n=ogygsG+3Qx4caPA@mail.gmail.com> <20150625.101417.2199972820527866360.mbj@tail-f.com>
Date: Thu, 25 Jun 2015 05:50:02 -0700
Message-ID: <CABCOCHTJ0Bd_cFHRpnuN4Wjz++6cogWHsDbVVsp+6DJdB08_sg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a11343832dd6a390519570fbe
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/w9FTuY9gtu-oKwQw4dqUiSK2KXM>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 12:50:10 -0000

--001a11343832dd6a390519570fbe
Content-Type: text/plain; charset=UTF-8

On Thu, Jun 25, 2015 at 1:14 AM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Andy Bierman <andy@yumaworks.com> wrote:
> > On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com>
> wrote:
> >
> > > Hi,
> > >
> > > I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> > > to address Y45-04.  Note that YANG 1.1 uses the module
> > > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > > crossposting).
> > >
> > > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> > >
> > > We have a whole bunch of documents that have a normative reference to
> > > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > > draft-ietf-netconf-yang-library.  This means we need to finish this
> > > document pretty soon.
> > >
> > > I ran into some issues with ietf-yang-library:
> > >
> > >   1.  The leaf "conformance" is of type "boolean".  It is not obvious
> > >       what "conformance = false" means.  Should we change the name
> > >       and/or type of this leaf?
> > >
> > >       I don't have a good proposal, but what we need is a way to
> > >       indicate "I implement the protocol accessible nodes in this
> > >       module" vs. "I just list this module b/c some other module that
> > >       I implement uses typdefs/groupings/... from it".
> > >
> > >       This issue is related to the github issue #3.  I think we need
> > >       this information; Y45-04 relies on it.
> > >
> > >
> >
> > We went through this before and you didn't have a better suggestion last
> > time either.
> >
> > conformance=false means the server is not claiming conformance for this
> > module.
>
> Yes I know.  I just wish we had a better name for this.  But you're
> right, if we can't come up with a better term, we'll stick to what we
> have.
>
> > A NETCONF <hello> should not have any modules tagged
> > as conformance=false.
> >
> > CoMI relies on this module as well.
> > It has been ready for WGLC since January.
> >
> >
> >
> >
> > >
> > >   2.  The "/modules/module" list is keyed by "name" and "revision".
> > >       Should we really have "revision" as key?  A server can only
> > >       implement one revision of a module, and should only list one
> > >       revision of a module w/ conformance = false.  I suggest we make
> > >       this leaf mandatory, and not part of the key.
> > >
> >
> >
> > I am not in favor of this change.
> > Two modules "foo" and "bar" released on the same date
> > could not be represented.
>
> The name of the module would be the (single) key, so this should be
> possible.
>
>

This does not work.



> > I think the indexing is fine in the current draft.
> > The <get-schema> operation in NETCONF and RESTCONF need
> > the module name and the revision-date.
>
> Yes, revision must be mandatory.
>

Unless revision is the key then only 1 revision of the module is possible.



>
> > This module should not care how many revisions of each module
> > are listed.  This is the full YANG library, not a <hello> message.
>
> The whole point of this module is to replace the <hello> message!  It
> first came up in RESTCONF, and we want to use it also in NETCONF in
> order to have one single way to do YANG module advertisement
> regardless of protocol.
>
> There is already the schema list in ietf-netconf-monitoring that gives
> you the full set of modules and submodules used in a server.
>
>

We already discussed relation to the schema list and decided to ignore it.
The whole point of this library is to provide the full list of YANG modules
and submodules on the device.

I strongly object to changing this module.
IMO it is quite clear how to fill in the list of modules.





>
>
> /martin
>


Andy

--001a11343832dd6a390519570fbe
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Thu, Jun 25, 2015 at 1:14 AM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">Andy Bierman &lt;<a href=
=3D"mailto:andy@yumaworks.com">andy@yumaworks.com</a>&gt; wrote:<br>
&gt; On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund &lt;<a href=3D"mailt=
o:mbj@tail-f.com">mbj@tail-f.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; Hi,<br>
&gt; &gt;<br>
&gt; &gt; I am preparing a new version of draft-ietf-netmod-rfc6020bis in o=
rder<br>
&gt; &gt; to address Y45-04.=C2=A0 Note that YANG 1.1 uses the module<br>
&gt; &gt; ietf-yang-library from draft-ietf-netconf-yang-library (hence the=
<br>
&gt; &gt; crossposting).<br>
&gt; &gt;<br>
&gt; &gt; [BTW, shouldn&#39;t ietf-yang-library be moved to NETMOD?]<br>
&gt; &gt;<br>
&gt; &gt; We have a whole bunch of documents that have a normative referenc=
e to<br>
&gt; &gt; draft-ietf-netmod-rfc6020bis, which has a normative reference to<=
br>
&gt; &gt; draft-ietf-netconf-yang-library.=C2=A0 This means we need to fini=
sh this<br>
&gt; &gt; document pretty soon.<br>
&gt; &gt;<br>
&gt; &gt; I ran into some issues with ietf-yang-library:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A01.=C2=A0 The leaf &quot;conformance&quot; is of type =
&quot;boolean&quot;.=C2=A0 It is not obvious<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0what &quot;conformance =3D false&quot; =
means.=C2=A0 Should we change the name<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0and/or type of this leaf?<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0I don&#39;t have a good proposal, but w=
hat we need is a way to<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0indicate &quot;I implement the protocol=
 accessible nodes in this<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0module&quot; vs. &quot;I just list this=
 module b/c some other module that<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0I implement uses typdefs/groupings/... =
from it&quot;.<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0This issue is related to the github iss=
ue #3.=C2=A0 I think we need<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0this information; Y45-04 relies on it.<=
br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt; We went through this before and you didn&#39;t have a better suggestio=
n last<br>
&gt; time either.<br>
&gt;<br>
&gt; conformance=3Dfalse means the server is not claiming conformance for t=
his<br>
&gt; module.<br>
<br>
Yes I know.=C2=A0 I just wish we had a better name for this.=C2=A0 But you&=
#39;re<br>
right, if we can&#39;t come up with a better term, we&#39;ll stick to what =
we<br>
have.<br>
<br>
&gt; A NETCONF &lt;hello&gt; should not have any modules tagged<br>
&gt; as conformance=3Dfalse.<br>
&gt;<br>
&gt; CoMI relies on this module as well.<br>
&gt; It has been ready for WGLC since January.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A02.=C2=A0 The &quot;/modules/module&quot; list is keye=
d by &quot;name&quot; and &quot;revision&quot;.<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0Should we really have &quot;revision&qu=
ot; as key?=C2=A0 A server can only<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0implement one revision of a module, and=
 should only list one<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0revision of a module w/ conformance =3D=
 false.=C2=A0 I suggest we make<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0this leaf mandatory, and not part of th=
e key.<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt; I am not in favor of this change.<br>
&gt; Two modules &quot;foo&quot; and &quot;bar&quot; released on the same d=
ate<br>
&gt; could not be represented.<br>
<br>
The name of the module would be the (single) key, so this should be<br>
possible.<br>
<br></blockquote><div><br></div><div><br></div><div>This does not work.</di=
v><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
&gt; I think the indexing is fine in the current draft.<br>
&gt; The &lt;get-schema&gt; operation in NETCONF and RESTCONF need<br>
&gt; the module name and the revision-date.<br>
<br>
Yes, revision must be mandatory.<br></blockquote><div><br></div><div>Unless=
 revision is the key then only 1 revision of the module is possible.</div><=
div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
&gt; This module should not care how many revisions of each module<br>
&gt; are listed.=C2=A0 This is the full YANG library, not a &lt;hello&gt; m=
essage.<br>
<br>
The whole point of this module is to replace the &lt;hello&gt; message!=C2=
=A0 It<br>
first came up in RESTCONF, and we want to use it also in NETCONF in<br>
order to have one single way to do YANG module advertisement<br>
regardless of protocol.<br>
<br>
There is already the schema list in ietf-netconf-monitoring that gives<br>
you the full set of modules and submodules used in a server.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br></font></span></blockquo=
te><div><br></div><div><br></div><div>We already discussed relation to the =
schema list and decided to ignore it.</div><div>The whole point of this lib=
rary is to provide the full list of YANG modules</div><div>and submodules o=
n the device.</div><div><br></div><div>I strongly object to changing this m=
odule.</div><div>IMO it is quite clear how to fill in the list of modules.<=
/div><div><br></div><div><br></div><div><br></div><div>=C2=A0</div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc s=
olid;padding-left:1ex"><span class=3D"HOEnZb"><font color=3D"#888888">
<br>
<br>
/martin<br>
</font></span></blockquote></div><br></div><div class=3D"gmail_extra"><br><=
/div><div class=3D"gmail_extra">Andy</div><div class=3D"gmail_extra"><br></=
div></div>

--001a11343832dd6a390519570fbe--


From nobody Thu Jun 25 06:06:05 2015
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 AD4FA1A8791 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 06:06:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 5qpvaYhtb1ZY for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 06:06:01 -0700 (PDT)
Received: from mail-la0-f41.google.com (mail-la0-f41.google.com [209.85.215.41]) (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 00CDB1A8756 for <netmod@ietf.org>; Thu, 25 Jun 2015 06:06:00 -0700 (PDT)
Received: by lagx9 with SMTP id x9so44608823lag.1 for <netmod@ietf.org>; Thu, 25 Jun 2015 06:05:59 -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=GO7nALE+H9GJyBsYVt7CWKAff6WP8ZMaVoQ5SH0QkrI=; b=jFwhmCtyeXpH8Mc8th0HXk56sHd/jdluyo41Le8NIOKNJPmuyy8R1lfjIkKdlxhNZA VsIsaADoyiuhax1/Xiu/kcIxU7+HknGuVPUQ65cuIPBPVUy5s1fsCuZ97utOdbeI4W8e XlVnPOK4irXPUF2hRg0JoHQig1XAuiOSfNakdL8UQO6r2pHQz26h5OTdT0F6WF6QcAlN SJcnTllsbr86J0KuhZUngTlY8h8FHa00PM5YHnI8c/QVgmwNNNfz+WLxeqAjnlLuRDcN ba4FNalqtrdiAncFrLCubr54zQQSa36ob5jeAiqXZuhUtmTUiUNFH6vYhACTOF08bxA1 VLkQ==
X-Gm-Message-State: ALoCoQm6bcvQGxApgHB7V3LRTUEiSRyulmUgYpVh2/3okR5QUO6OMdxMoHJILMOOxCzdH+GrEEpS
MIME-Version: 1.0
X-Received: by 10.152.7.65 with SMTP id h1mr11393370laa.33.1435237559514; Thu, 25 Jun 2015 06:05:59 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Thu, 25 Jun 2015 06:05:59 -0700 (PDT)
In-Reply-To: <20150625.101417.2199972820527866360.mbj@tail-f.com>
References: <20150624.231449.697617442831847315.mbj@tail-f.com> <CABCOCHQW8rWRFyxKQ92u3ThP4Fa976vt1n=ogygsG+3Qx4caPA@mail.gmail.com> <20150625.101417.2199972820527866360.mbj@tail-f.com>
Date: Thu, 25 Jun 2015 06:05:59 -0700
Message-ID: <CABCOCHTM+xVBywe-VxFqkf_zpJnRpZXnpjxW6tXEbCD7F80SKQ@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a11c27cf0e755190519574876
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/e_QwvghfhhcLt9Qk_zx_BnWRlnU>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 13:06:02 -0000

--001a11c27cf0e755190519574876
Content-Type: text/plain; charset=UTF-8

>
> .....
> There is already the schema list in ietf-netconf-monitoring that gives
> you the full set of modules and submodules used in a server.
>
>
>
This is not true.

       --ro schemas
      |  +--ro schema* [identifier version format]
      |     +--ro identifier    string
      |     +--ro version       string
      |     +--ro format        identityref
      |     +--ro namespace     inet:uri
      |     +--ro location*     union



There is no way to tell a submodule from a module in RFC 6022.
There is no way to tell which submodules go with which modules.
There is no way to identify deviation files.
So this 'schema' list does not work for RESTCONF or CoMI.
That is 1 reason it was rejected and the ietf-yang-library module
is being used instead.

It is very useful for a client to be able to scan 1 table and find out
all the YANG files used by the server, and then use <get-schema>
to retrieve any files missing from the client.

IMO the <hello> message issue is misguided because the size of the
hello message is not really a bottleneck anywhere.  Even 1000 YANG modules
would be less than 100K in a <hello> message.



> /martin
>

Andy

--001a11c27cf0e755190519574876
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote"><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left=
-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;paddi=
ng-left:1ex">.....<br>
There is already the schema list in ietf-netconf-monitoring that gives<br>
you the full set of modules and submodules used in a server.<br>
<span class=3D""><font color=3D"#888888"><br>
<br></font></span></blockquote><div><br></div><div>This is not true.</div><=
div><br></div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0--ro schemas</div><div>=C2=A0=
 =C2=A0 =C2=A0 | =C2=A0+--ro schema* [identifier version format]</div><div>=
=C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 +--ro identifier =C2=A0 =C2=A0string</=
div><div>=C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 +--ro version =C2=A0 =C2=A0 =
=C2=A0 string</div><div>=C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 +--ro format =
=C2=A0 =C2=A0 =C2=A0 =C2=A0identityref</div><div>=C2=A0 =C2=A0 =C2=A0 | =C2=
=A0 =C2=A0 +--ro namespace =C2=A0 =C2=A0 inet:uri</div><div>=C2=A0 =C2=A0 =
=C2=A0 | =C2=A0 =C2=A0 +--ro location* =C2=A0 =C2=A0 union</div><div>=C2=A0=
<br></div><div><br></div><div><br></div><div>There is no way to tell a subm=
odule from a module in RFC 6022.</div><div>There is no way to tell which su=
bmodules go with which modules.</div><div>There is no way to identify devia=
tion files.</div><div>So this &#39;schema&#39; list does not work for RESTC=
ONF or CoMI.</div><div>That is 1 reason it was rejected and the ietf-yang-l=
ibrary module</div><div>is being used instead.</div><div><br></div><div>It =
is very useful for a client to be able to scan 1 table and find out</div><d=
iv>all the YANG files used by the server, and then use &lt;get-schema&gt;</=
div><div>to retrieve any files missing from the client.</div><div><br></div=
><div>IMO the &lt;hello&gt; message issue is misguided because the size of =
the</div><div>hello message is not really a bottleneck anywhere.=C2=A0 Even=
 1000 YANG modules</div><div>would be less than 100K in a &lt;hello&gt; mes=
sage.</div><div><br></div><div><br></div><blockquote class=3D"gmail_quote" =
style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:r=
gb(204,204,204);border-left-style:solid;padding-left:1ex"><span class=3D"">=
<font color=3D"#888888">
<br>
/martin<br>
</font></span></blockquote></div><br></div><div class=3D"gmail_extra">Andy<=
/div><div class=3D"gmail_extra"><br></div></div>

--001a11c27cf0e755190519574876--


From nobody Thu Jun 25 06:26:44 2015
Return-Path: <tnadeau@lucidvision.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 5900B1A8844 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 06:26:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.412
X-Spam-Level: 
X-Spam-Status: No, score=-1.412 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, J_CHICKENPOX_65=0.6, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 30fyYZOnmgCx for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 06:26:41 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4FDB31A8843 for <netmod@ietf.org>; Thu, 25 Jun 2015 06:26:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1435238782; bh=AQ83r0CYhSdqjMBf/r2WLedscpSIEkResUvpLeHJTFU=; h=From:Subject:Date:To; b=GzAKBlKCdaf5fUVEoLEbzhyR/o2/VvDY7OeYYqI/WUvpLR/+aJSebnIAjxhOfW5dr 1a59xkksmes0Z1mtaUm6ADElXM2c/Vkf5b5gW2Pu8UHyvq+IJ4KFHNNuyB7CnqjRRN 3fSvwzMAve1PvPIsZuW2RBk/zjDFm4HtaYXT0r9k=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=50.255.148.181; 
From: Nadeau Thomas <tnadeau@lucidvision.com>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Message-Id: <43C858BB-68BD-400F-8412-856D65B361E3@lucidvision.com>
Date: Thu, 25 Jun 2015 09:26:37 -0400
To: NETMOD Working Group <netmod@ietf.org>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-ShareWhite: 50.255.148.181
X-MyRbl: Color=Yellow Age=0 Spam=0 Notspam=5 Stars=0 Good=0 Friend=0 Surbl=0 Catch=0 r=0 ip=50.255.148.181
X-IP-stats: Notspam Incoming Last 0, First 41, in=333, out=0, spam=0 Known=true ip=50.255.148.181
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/jeHjAKY3wzvfmAmD9jdtN83bA1M>
Subject: [netmod] draft meeting minutes from Interim meeting on June 18, 2015
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 13:26:43 -0000

	These are the draft meeting minutes from Interim meeting on June =
18, 2015. Please comment. If I don=E2=80=99t hear from anyone by Friday, =
they will be published as-is.

	=E2=80=94Tom




NETMOD Virtual Interim Meeting (June 18, 2015)

* Participants

- Acee
- Ambika Prasad Tripathy
- Andy Biermann
- Anees Shaikh
- Benoit Claise
- Einar Nilsen-Nygaard
- Martin Bjorklund
- Harish
- Helen Chen
- Ignas Bagdonas
- Jeffrey Haas
- Kent Watsen
- Lou Berger
- Mahesh Jethanandani
- Marcus Hines
- Norm Strahle
- Qin Wu
- Rob Shakir
- Robert Wilton
- Shitanshu Shah
- Steve Ulrich
- Susan Hares
- Thanasis Kypartis
- Vishnu Pavan Beeram
- Lada Lhotka
- Xufeng Liu
- Yingzhen Qu


Agenda:
- Agenda Bashing
- draft-openconfig-netmod-opstate-00
- draft-openconfig-netmod-model-structure-00


Meeting starting.=20
Anees presenting:=20
Now Rob Shakir presenting:
    Draft: http://tools.ietf.org/html/draft-openconfig-netmod-opstate-00
    Slides: =
http://www.openconfig.net/file-cabinet/netmod-interim-opstate.pdf?attredir=
ects=3D0&d=3D1
   =20
    =
https://www.ietf.org/proceedings/interim/2015/06/18/netmod/slides/slides-i=
nterim-2015-netmod-13-0.pdf

* Slide #2

  KW: Is the request for consistent state true for all three kinds of =
operational state?
  RS: Yes
  AS: It is important that all the state is in a consistent place that =
is easy to find by automated tools.

* Slide #3

  LL: Is intended configuration the same as config true in YANG and =
applied/actual/operational state is config false in YANG?
  RS: yes
  MH: Is config for a line card not present intended or applied state?
  JH: is there a distinction between counters that are never =
intermingled with config true nodes?
  BC: You only want an operational true flag, not a distinction between =
statistics, actual, applied, ... state?
  AS: Operational true is a subset of the config false data. The =
motivation is to be able to get only the config false data where the =
device has determine the value on its own (that is, the value does not =
come from the config).
  MB: Is operational true only needed if you have the config in the same =
data tree?
  RS: yes
  RS: I need a way to get all the config false leafs or the operational =
true leafs (as defined above).
  MB: There may be several solutions, one of them could be a separate =
datastore with the same data model.
  KW: I think I understand synchronous means a commit makes the =
operational state reflect the config state.
  KW: And an asynchronous system would not immediately reflect the =
config state in operational state after the commit.
  KW: Is this defined in NETCONF?
  MB: A successful write to :running means that config is valid and will =
be applied but you can have config for non-existing line cards etc.
  MB: I would add an axiom: Any solution should work with NETCONF.
  LL: What about hostname set by a CLI - is this intended or applied or =
... state?
  RS: In cases where there are multiple writers, the need for retrieval =
of operational state becomes important.
  BC: In a synchronous system, does it make sense to replicate data?
  RS: There are always parts of a device where systems tend to be not =
synchronous.
  RS: On the wire, duplication may be dealt with by proper design of =
RPCs.
  MB: I am concerned about large and complex data models with almost =
redundant definitions.
  AB: Yes, this sounds more like a protocol problem than a data model =
problem.
  RS: It is a one-time pain for a module writer.
  RS: Do we optimize for module writers or for NMS writers?
  LL: I do not understand applied operational state and the other =
operational state.
  RS: YANG config true =3D intended state, operational state derived =
from config true (intended state) =3D applied state, other operational =
state is the remaining state not resulting from config.
  RS: YANG config true =3D> intended and applied state, YANG config =
false =3D> operational state
  MB: The terminology confusion needs to be resolved.
  MB: Intended config is my configuration file, once loaded, it becomes =
applied config?
  KW: I continue to be confused by the terms synchronous and =
asynchronous.
  MB: Are not all systems asynchronous in your definition? Are there =
examples of synchronous systems?
  RS: Intended config means syntactically correct. This does not mean =
that a system will actually be able to apply it.
  AB: A NETCONF OK means more than syntactically correct (e.g. if you =
write the <running> datastore).
  TN: One hour gone, we made it to slide #3 out of 9.
  RS: We do not want to tightly couple this to NETCONF semantics.
  MB: But we are trying to understand your concepts from a NETCONF =
perspective.
  AB: I like to avoid rewriting RFCs.
  AT: Syntax checking is already part of YANG.
  RS: Intended config is expected to be syntactically valid, it still =
may not be applied without failures.
  JH: What do you mean when you use the term RPC?
  JH: is committed config (running datastore) =3D=3D intended config?
  RS: yes
  JH: The active state is usually a different node in the data tree, =
different from the config state.
  RS: No, they have different branches in our proposal.
  AB: We should keep the model stateless as much as possible, the =
distinction needs to happen at the protocol.
  MB: The duplication of intended and applied config does not seem to be =
necessary. Note that there is more, a startup value, an ephemeral value, =
etc.
  AB: proposal may not take into account Benoit's draft re: other SDO =
moudles
  KW: start-up/candidate datastores not relavent.  running datastore =3D=3D=
 "intended".  how running is set (via wriatable-running or candaidate =
commit) not important.  Operational state isn't related to datastore. =
e.g., not such thing as operational state of startup or candidate =
datastore.  Not clear if oprerational is even part of running datastore, =
or if it's more like another datastore that happens to have running =
datastore values intermingled in it...

* Slide #4/#5 (somehow)

  MB: There are semantics how leafs are related to each other that go =
beyond simply naming conventions.
  RS: I can easily check whether intended state =3D=3D applied state and =
I can easily obtain the related operational state.
  AB: Putting things under a certain container is not needed since you =
can define RPCs that have the proper semantics.
  RS: Do not just think NETCONF, there will be other systems involved.
  AB: I think JH stated the requirement that being able to retrieve the =
state data associated with a resource.
  JH: They are trying to use YANG for models that are not used with =
NETCONF.
  RS: But we have conventions and coding styles in many other languages.
  AB: There are rules for identifiers and they do not distinguish =
different combinations of characters to mean different things.
  KW: We need to define clear terminology and we should go back to the =
problem description.

Back to slide #3:
  MB/KW: definition of intended vs applied raised again, are they not =
the same given all servers are effectively assyncrounous?
  BC: recommandation to clarify =20
  ACTION ITEM for the authors: terminology=20
    - for intended, applied
    - synchronous/asynchronous
ACTION ITEM for the authors:=20
    - example of full NETCONF synchronous: RPC and datastore/leaf =
update. What are the consequences? duplicate leaf in /config and /state
    - example of (non-NETCONF) asynchronous: RPC and datastore/leaf =
update
  KW: NETCONF/RESTCONF are synchronous protocols but state application =
are applied asynchronously.
  RS: We like to have distinctions in the data model so that they are =
protocol agnostic.
 =20
  TN: Can we articulate a clear problem statement after almost two =
hours?
  AS: some agreement in understanding, some distance in solution.  need =
to clear up terminology
 =20

Wrap-up: review of requirements on slides 2 and 3
     =20
  Slide #2:=20
    - point 1: clear, and we have agreement (already the case with =
config=3Dfalse statement)
    - point 2: not clear
    - point 3: clear, and we have agreement
      - though re: point #3, JS questions if any YANG statements are =
NETCONF specific
      - AS says that it's really a statement about the protocol so the =
wording is a bit misleading

  Slide #3
    - point 1: not clear (most likely due to terminology)
    - point 2: clear and agreed (already the case)
    - point 3: not clear (again most likely a terminology issue)
   =20

MEETING ENDED @ 12:15 Eastern







From nobody Thu Jun 25 06:49:44 2015
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 58E361A88F1 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 06:49:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 j9z0W9UioFT7 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 06:49:41 -0700 (PDT)
Received: from mail-la0-f54.google.com (mail-la0-f54.google.com [209.85.215.54]) (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 98E761A88DE for <netmod@ietf.org>; Thu, 25 Jun 2015 06:49:40 -0700 (PDT)
Received: by lacny3 with SMTP id ny3so45281236lac.3 for <netmod@ietf.org>; Thu, 25 Jun 2015 06:49:39 -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:content-type; bh=2gSrE5rcZ72qApVNcigPBeYDU5V484zIqayM5xn09NE=; b=Ndb06nB/Kp8r5bQx7Wb/oFFsjrKRbm+hZOs4MaNJZuotOCwzSt+nwREyBrERMcxZDB 2sQGDBwabofE+reHTJSq5+RFhWUAe8/7n3MG/anwy5Vsy4XcrzcgCcdbXhmwUHVHC6bw rm7GpszUCoDRyWxBMcNQDQxHziLniy9VlFWdX6dBSCOBSDZCks89+PhdsWVayQ66Jhd+ hBj7sKu03tS4F61V6Ub2UOhWLe+flyqy7/goksggoIK3kFPECc4AuMcyEdOoMhoJELYJ dqYC6SqPno7YA6Op1ZuyETKAKGOC1T2KIcCt314ku5yU9Wex9R3T9HhRuMMQvfG9wTJa JH4Q==
X-Gm-Message-State: ALoCoQlRKmy8N8jbcpsDorrlRDse4NXtqSqHu1UaYJ1bPlLc2pzPtY/kb5ty0b38aCuvusFM7Owv
MIME-Version: 1.0
X-Received: by 10.112.24.71 with SMTP id s7mr43946547lbf.37.1435240178853; Thu, 25 Jun 2015 06:49:38 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Thu, 25 Jun 2015 06:49:38 -0700 (PDT)
In-Reply-To: <20150625074017.GA39607@elstar.local>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <20150624231954.GA38620@elstar.local> <CAJK7ZqKw6wDwChxJj7ry__Un7CbUepiU4R5jXf5Wy1P9NmH5Vg@mail.gmail.com> <20150625053843.GA39332@elstar.local> <CAJK7ZqKvR9DWH8XzFS+OgHuaAEdUS-PvtC5g0ZG2Qf4roP0DQA@mail.gmail.com> <20150625074017.GA39607@elstar.local>
Date: Thu, 25 Jun 2015 06:49:38 -0700
Message-ID: <CABCOCHTkRej=26mxQFdaRXifuxBFDcAjQZdRqyWTTBfOq7tLiQ@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>,  Anees Shaikh <aashaikh@google.com>, Rob Shakir <rjs@rob.sh>, NETMOD Working Group <netmod@ietf.org>
Content-Type: multipart/alternative; boundary=001a11343832073f7b051957e574
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/EiUn-SnScYFfZPbUWyC71ukbGlg>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 13:49:43 -0000

--001a11343832073f7b051957e574
Content-Type: text/plain; charset=UTF-8

On Thu, Jun 25, 2015 at 12:40 AM, Juergen Schoenwaelder <
j.schoenwaelder@jacobs-university.de> wrote:

> On Thu, Jun 25, 2015 at 12:29:13AM -0700, Anees Shaikh wrote:
> > hi Juergen,
> >
> > I don't believe it involves tracking anything beyond what you would need
> to
> > track however the model is structured.   You would want to know when your
> > static IP is applied and being used, or you would want to know what IP
> > address was assigned by the DHCP server.  Our approach collects this
> > information in one consistent place (in terms of paths) independent of
> how
> > one wants to compose the models.   I guess don't understand what you mean
> > by it requires reporting and integrating state data from multiple places.
> >
> > I really don't see where the extra complexity and cost you mention is
> > coming from.  Is the addition of some nodes in the data model so costly?
> > For whom?  A model writer?  I think the design pattern for writing models
> > in this way actually is pretty straightforward (having written several
> > reasonably complex models now).   For a human model reader?   Perhaps the
> > disconnect is that our perspective is coming from trying to build
> > operational software systems that consume the models without having to
> > write unnecessary model-specific code that just propagates more
> complexity
> > into the NMS.
>
> The problem with your approach is that you are assigning semantics to
> where information is located in the data model. You can only do this
> once. While have N different locations where IP addresses are listed
> might answer one operationally relevant question, it makes other
> opertionally relevant questions harder. If you continue with your
> approach, you will start replicating data multiple times to address
> different operationally relevant question. And this simply does not
> scale, clearly not with standards in mind.
>
>

The data modeling language allows the designer to choose
an arbitrary identifier for node names.

Making clever little rules about what arbitrary names are allowed,
where they allowed, etc. just adds complexity to the language.
The only robust design is to assign semantics to statements
with reserved keywords.

It would be unwise to design code that ignores a deterministic first order
language statement and relies on ad-hoc naming conventions instead.

Naming conventions are fine -- we have interfaces, interface-state, etc.
This helps readability but it is not a substitute for deterministic and
fully machine-usable statements.

The addition of extra layers is a big issue to me.
It clutters the data model, the XPath expressions, and adds bytes
to every payload that references that data.

I understand that the use of NP containers is very subjective.
Not all people think data should be organized the same way.
The only purpose of an NP-container is to organize data.
Each WG should decide the best way to organize its data.
If "config" and "state" containers really make sense for the
data, then use them.

But we don't need a CLR forcing this on everybody.



Andy



I like to understand:
>
> - what are the additional semantics in the data model (e.g., machine
>   readable information that helps to understand static model
>   relationships)
>
> - what is the meta data you like to have and that you might want to
>   filter on in order to retrieve data in meaningful ways
>
> I am having a hard time to believe that encoding semantics in the
> naming structure is a proper and workable solution.
>
> /js
>
> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a11343832073f7b051957e574
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Thu, Jun 25, 2015 at 12:40 AM, Juergen Schoenwaelder <span dir=3D"lt=
r">&lt;<a href=3D"mailto:j.schoenwaelder@jacobs-university.de" target=3D"_b=
lank">j.schoenwaelder@jacobs-university.de</a>&gt;</span> wrote:<br><blockq=
uote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc =
solid;padding-left:1ex">On Thu, Jun 25, 2015 at 12:29:13AM -0700, Anees Sha=
ikh wrote:<br>
&gt; hi Juergen,<br>
&gt;<br>
&gt; I don&#39;t believe it involves tracking anything beyond what you woul=
d need to<br>
&gt; track however the model is structured.=C2=A0 =C2=A0You would want to k=
now when your<br>
&gt; static IP is applied and being used, or you would want to know what IP=
<br>
&gt; address was assigned by the DHCP server.=C2=A0 Our approach collects t=
his<br>
&gt; information in one consistent place (in terms of paths) independent of=
 how<br>
&gt; one wants to compose the models.=C2=A0 =C2=A0I guess don&#39;t underst=
and what you mean<br>
&gt; by it requires reporting and integrating state data from multiple plac=
es.<br>
&gt;<br>
&gt; I really don&#39;t see where the extra complexity and cost you mention=
 is<br>
&gt; coming from.=C2=A0 Is the addition of some nodes in the data model so =
costly?<br>
&gt; For whom?=C2=A0 A model writer?=C2=A0 I think the design pattern for w=
riting models<br>
&gt; in this way actually is pretty straightforward (having written several=
<br>
&gt; reasonably complex models now).=C2=A0 =C2=A0For a human model reader?=
=C2=A0 =C2=A0Perhaps the<br>
&gt; disconnect is that our perspective is coming from trying to build<br>
&gt; operational software systems that consume the models without having to=
<br>
&gt; write unnecessary model-specific code that just propagates more comple=
xity<br>
&gt; into the NMS.<br>
<br>
The problem with your approach is that you are assigning semantics to<br>
where information is located in the data model. You can only do this<br>
once. While have N different locations where IP addresses are listed<br>
might answer one operationally relevant question, it makes other<br>
opertionally relevant questions harder. If you continue with your<br>
approach, you will start replicating data multiple times to address<br>
different operationally relevant question. And this simply does not<br>
scale, clearly not with standards in mind.<br>
<br></blockquote><div><br></div><div><br></div><div>The data modeling langu=
age allows the designer to choose</div><div>an arbitrary identifier for nod=
e names.<br></div><div><br></div><div>Making clever little rules about what=
 arbitrary names are allowed,</div><div>where they allowed, etc. just adds =
complexity to the language.</div><div>The only robust design is to assign s=
emantics to statements</div><div>with reserved keywords.</div><div><br></di=
v><div>It would be unwise to design code that ignores a deterministic first=
 order</div><div>language statement and relies on ad-hoc naming conventions=
 instead.</div><div><br></div><div>Naming conventions are fine -- we have i=
nterfaces, interface-state, etc.</div><div>This helps readability but it is=
 not a substitute for deterministic and</div><div>fully machine-usable stat=
ements.</div><div><br></div><div>The addition of extra layers is a big issu=
e to me.</div><div>It clutters the data model, the XPath expressions, and a=
dds bytes</div><div>to every payload that references that data.</div><div><=
br></div><div>I understand that the use of NP containers is very subjective=
.</div><div>Not all people think data should be organized the same way.</di=
v><div>The only purpose of an NP-container is to organize data.</div><div>E=
ach WG should decide the best way to organize its data.</div><div>If &quot;=
config&quot; and &quot;state&quot; containers really make sense for the</di=
v><div>data, then use them.</div><div><br></div><div>But we don&#39;t need =
a CLR forcing this on everybody.</div><div><br></div><div><br></div><div><b=
r></div><div>Andy</div><div><br></div><div><br></div><div><br></div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc =
solid;padding-left:1ex">
I like to understand:<br>
<br>
- what are the additional semantics in the data model (e.g., machine<br>
=C2=A0 readable information that helps to understand static model<br>
=C2=A0 relationships)<br>
<br>
- what is the meta data you like to have and that you might want to<br>
=C2=A0 filter on in order to retrieve data in meaningful ways<br>
<br>
I am having a hard time to believe that encoding semantics in the<br>
naming structure is a proper and workable solution.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
/js<br>
<br>
--<br>
Juergen Schoenwaelder=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Jacobs Univer=
sity Bremen gGmbH<br>
Phone: +49 421 200 3587=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Campus Ring 1 | 28=
759 Bremen | Germany<br>
Fax:=C2=A0 =C2=A0+49 421 200 3103=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;<a h=
ref=3D"http://www.jacobs-university.de/" rel=3D"noreferrer" target=3D"_blan=
k">http://www.jacobs-university.de/</a>&gt;<br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</font></span></blockquote></div><br></div></div>

--001a11343832073f7b051957e574--


From nobody Thu Jun 25 09:35:09 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 92B9E1A9072; Thu, 25 Jun 2015 09:35:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 3Jb_mcwsJ996; Thu, 25 Jun 2015 09:35:06 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8A4EC1A9066; Thu, 25 Jun 2015 09:35:04 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 5F0141493; Thu, 25 Jun 2015 18:34:59 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id ABsP5xeGSKqn; Thu, 25 Jun 2015 18:35:01 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Thu, 25 Jun 2015 18:34:58 +0200 (CEST)
Received: from localhost (demetrius3.jacobs-university.de [212.201.44.48]) by hermes.jacobs-university.de (Postfix) with ESMTP id 7A8752002C; Thu, 25 Jun 2015 18:35:02 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius3.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id u71pGDSYWDUZ; Thu, 25 Jun 2015 18:34:52 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 6C1FF20013; Thu, 25 Jun 2015 18:35:01 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 17A26347AC67; Thu, 25 Jun 2015 18:35:01 +0200 (CEST)
Date: Thu, 25 Jun 2015 18:35:01 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Andy Bierman <andy@yumaworks.com>
Message-ID: <20150625163500.GB40762@elstar.local>
Mail-Followup-To: Andy Bierman <andy@yumaworks.com>, "netmod@ietf.org" <netmod@ietf.org>, "i2rs@ietf.org" <i2rs@ietf.org>
References: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/AHYFTJbw2sU4w-cNdFbefrHtGn0>
Cc: "i2rs@ietf.org" <i2rs@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] extended datastores slide
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 16:35:08 -0000

On Wed, Jun 24, 2015 at 06:24:25AM -0700, Andy Bierman wrote:
> 
> I prepared 1 slide (based on Kent's slide).
> I am trying to understand the types of data
> and how they are identified in YANG and conceptually
> separated for protocol access.
> 

I do not understand the 'config ephemeral' on the left side. I think
it is the implementation (or its configuration) that decides which
data models also exist in the ephemeral data store.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Thu Jun 25 09:45:31 2015
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 22EA91A906E for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 09:45:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=unavailable
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 bm_Alhi7wPkm for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 09:45:30 -0700 (PDT)
Received: from mail-lb0-f176.google.com (mail-lb0-f176.google.com [209.85.217.176]) (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 F1C081A905D for <netmod@ietf.org>; Thu, 25 Jun 2015 09:45:25 -0700 (PDT)
Received: by lbnk3 with SMTP id k3so49204062lbn.1 for <netmod@ietf.org>; Thu, 25 Jun 2015 09:45:24 -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:content-type; bh=bywujalZOdC3dPguo7nSfXFXsjG5llcyrn7TpPIg5iE=; b=YTVOFMOqAAJ5KeNOM/FMHVkJ4J/rXkcuv7Ll79sOzrON89nSAXSbx+ZrcPiNlyIjZr 5jINUI0ZBaTHZuwSMDJEF/VqbF6Nb588IpjTydieK+kqUV5w+9fI65RCBnOG1ONTEg7j /yd4EhE05LDSmdqEWqzY6jaHOyjAuf0XgGko+oJ1E9SEZau0X7Pm8ngwdP5qNR/FJZSn 9wufO1lfk4TqPNnsKkQR+w7ZsXl5lgU11o6yfkCyPqneOvAUuWGs6LRInyDgHXk5S3hf pen9lf1VcKQv7ba6UxR5BhzP5+TLSTUK3ZHlSTFm8kycP2DGQJVtGaRE1boW+z6/grJT r6VQ==
X-Gm-Message-State: ALoCoQlBl/VSmx7LkthvPcMipnbP3tNTVd65lRmqm3a+YgNE6ZLxSKzywXctewYwwcBKKnRnN62o
MIME-Version: 1.0
X-Received: by 10.152.36.161 with SMTP id r1mr45730189laj.88.1435250724291; Thu, 25 Jun 2015 09:45:24 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Thu, 25 Jun 2015 09:45:24 -0700 (PDT)
In-Reply-To: <20150625163500.GB40762@elstar.local>
References: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com> <20150625163500.GB40762@elstar.local>
Date: Thu, 25 Jun 2015 09:45:24 -0700
Message-ID: <CABCOCHTfBnGniYC_Of-J=zB2iL9gRpQWhex9bohKGyRKtPXA4w@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Andy Bierman <andy@yumaworks.com>,  "netmod@ietf.org" <netmod@ietf.org>, "i2rs@ietf.org" <i2rs@ietf.org>
Content-Type: multipart/alternative; boundary=089e0158b5e495ded205195a59ab
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/iEG3_kKbt6vKUesmWqt_a4xV1y0>
Subject: Re: [netmod] extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 16:45:31 -0000

--089e0158b5e495ded205195a59ab
Content-Type: text/plain; charset=UTF-8

On Thu, Jun 25, 2015 at 9:35 AM, Juergen Schoenwaelder <
j.schoenwaelder@jacobs-university.de> wrote:

> On Wed, Jun 24, 2015 at 06:24:25AM -0700, Andy Bierman wrote:
> >
> > I prepared 1 slide (based on Kent's slide).
> > I am trying to understand the types of data
> > and how they are identified in YANG and conceptually
> > separated for protocol access.
> >
>
> I do not understand the 'config ephemeral' on the left side. I think
> it is the implementation (or its configuration) that decides which
> data models also exist in the ephemeral data store.
>
>

This is to allow for data that can only be edited in the ephemeral datastore
instead of running or ephemeral datastore.  It allows the XPath (and other
rules)
to be different than the existing rules for the running datastore.

My slide did not go as far as Jeff wanted wrt/ allowing ephemeral data
to reference operational data, but I think this would be OK.

As Jeff pointed out, the ephemeral data does not exist until
a controller creates it, unlike the persistent config that will be
applied at boot-time before the operational state exists.



/js
>
>

Andy


> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>

--089e0158b5e495ded205195a59ab
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Thu, Jun 25, 2015 at 9:35 AM, Juergen Schoenwaelder <span dir=3D"ltr=
">&lt;<a href=3D"mailto:j.schoenwaelder@jacobs-university.de" target=3D"_bl=
ank">j.schoenwaelder@jacobs-university.de</a>&gt;</span> wrote:<br><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc s=
olid;padding-left:1ex">On Wed, Jun 24, 2015 at 06:24:25AM -0700, Andy Bierm=
an wrote:<br>
&gt;<br>
&gt; I prepared 1 slide (based on Kent&#39;s slide).<br>
&gt; I am trying to understand the types of data<br>
&gt; and how they are identified in YANG and conceptually<br>
&gt; separated for protocol access.<br>
&gt;<br>
<br>
I do not understand the &#39;config ephemeral&#39; on the left side. I thin=
k<br>
it is the implementation (or its configuration) that decides which<br>
data models also exist in the ephemeral data store.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br></font></span></blockquo=
te><div><br></div><div><br></div><div>This is to allow for data that can on=
ly be edited in the ephemeral datastore</div><div>instead of running or eph=
emeral datastore.=C2=A0 It allows the XPath (and other rules)</div><div>to =
be different than the existing rules for the running datastore.</div><div><=
br></div><div>My slide did not go as far as Jeff wanted wrt/ allowing ephem=
eral data</div><div>to reference operational data, but I think this would b=
e OK.</div><div><br></div><div>As Jeff pointed out, the ephemeral data does=
 not exist until</div><div>a controller creates it, unlike the persistent c=
onfig that will be</div><div>applied at boot-time before the operational st=
ate exists.</div><div><br></div><div><br></div><div><br></div><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;=
padding-left:1ex"><span class=3D"HOEnZb"><font color=3D"#888888">
/js<br>
<br></font></span></blockquote><div><br></div><div><br></div><div>Andy</div=
><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D"HOEnZb"><fo=
nt color=3D"#888888">
--<br>
Juergen Schoenwaelder=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Jacobs Univer=
sity Bremen gGmbH<br>
Phone: +49 421 200 3587=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Campus Ring 1 | 28=
759 Bremen | Germany<br>
Fax:=C2=A0 =C2=A0+49 421 200 3103=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;<a h=
ref=3D"http://www.jacobs-university.de/" rel=3D"noreferrer" target=3D"_blan=
k">http://www.jacobs-university.de/</a>&gt;<br>
</font></span></blockquote></div><br></div></div>

--089e0158b5e495ded205195a59ab--


From nobody Thu Jun 25 09:51:50 2015
Return-Path: <tnadeau@lucidvision.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 4DF351A911A for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 09:51:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.012
X-Spam-Level: 
X-Spam-Status: No, score=-2.012 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_PASS=-0.001, 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 jyA9OsE4lQfw for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 09:51:48 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0D89E1A9119 for <netmod@ietf.org>; Thu, 25 Jun 2015 09:51:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1435251089; bh=7K260xpmmPKv3YWIFTW0TCky8IBw0rGXZ09yHUhRtIE=; h=From:Subject:Date:To; b=cD4gYzhztaKkoD7lt05ehb32Pmnn8R5kCS1RRAStvfTJ8ejDV5+TTZt/XWLYueRCi TYtxOR9prFdRiLiIgEH69XyeSaDrDjPIFRDWrnYWIRSfpazBYyePQuM6CSkTMeVJd3 sSwZ3RK9bJ7eF+ojT8cqfiki8OqT5+JTYDhI7ooo=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=50.255.148.181; 
From: Nadeau Thomas <tnadeau@lucidvision.com>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Message-Id: <E5C69652-BA42-4ADB-9ECB-4E1116C21144@lucidvision.com>
Date: Thu, 25 Jun 2015 12:51:49 -0400
To: NETMOD Working Group <netmod@ietf.org>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-ShareWhite: 50.255.148.181
X-MyRbl: Color=Yellow Age=0 Spam=0 Notspam=12 Stars=0 Good=0 Friend=0 Surbl=0 Catch=0 r=0 ip=50.255.148.181
X-IP-stats: Notspam Incoming Last 0, First 41, in=340, out=0, spam=0 Known=true ip=50.255.148.181
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/D5acCZToXAHm02ME_1f3AroZTTw>
Subject: [netmod] Action from Today's Interim Meeting
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 16:51:49 -0000

	First, can the folks that presented slides today (Acee and =
Anees) please send their slides to the list here. Preferred mode is a =
URL to a place where the slides exist so we don=E2=80=99t fill =
everyones=E2=80=99 boxes with PPTs. 8)

	Also, we need at least one person to try to document (slides/txt =
file is fine) both of the options around the ways to move forward with =
draft-openconfig-netmod-opstate-00. If you want to volunteer to do this, =
please write to the list in case others wish to coordinate with you. At =
a minimum, please inform the chairs. Specifically, there were two =
buckets that things fit in: changing the protocols =
(netconf/restconf/future), or changing the models.   The chairs would =
like you do document the pros/cons for each option, to be used as a =
guide to hopefully conclude this portion of the discussion here on the =
list, or at least at the Praha meeting.=20

	Thanks,

	Tom as NETMOD co-chair







From nobody Thu Jun 25 10:02:31 2015
Return-Path: <shares@ndzh.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 07F571A92B2; Thu, 25 Jun 2015 10:02:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -99.055
X-Spam-Level: 
X-Spam-Status: No, score=-99.055 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DOS_OUTLOOK_TO_MX=2.845, USER_IN_WHITELIST=-100] 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 p_DiMen57NNV; Thu, 25 Jun 2015 10:02:28 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EEDFF1A92B0; Thu, 25 Jun 2015 10:02:27 -0700 (PDT)
X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=174.124.187.115; 
From: "Susan Hares" <shares@ndzh.com>
To: "'Juergen Schoenwaelder'" <j.schoenwaelder@jacobs-university.de>, "'Andy Bierman'" <andy@yumaworks.com>
References: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com> <20150625163500.GB40762@elstar.local>
In-Reply-To: <20150625163500.GB40762@elstar.local>
Date: Thu, 25 Jun 2015 13:02:28 -0400
Message-ID: <00fa01d0af68$b86f0ed0$294d2c70$@ndzh.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQI38j8X2xhzt+7kOgR7BWPTAddxTwJDuLianNzO9wA=
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com 
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/hQPuz8gfr1p5h7HXk72IMu3xJVI>
Cc: i2rs@ietf.org, netmod@ietf.org
Subject: Re: [netmod] [i2rs]  extended datastores slide
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 17:02:29 -0000

Juergen: 

Where would you put the "config ephemeral"?

Sue 

-----Original Message-----
From: i2rs [mailto:i2rs-bounces@ietf.org] On Behalf Of Juergen Schoenwaelder
Sent: Thursday, June 25, 2015 12:35 PM
To: Andy Bierman
Cc: i2rs@ietf.org; netmod@ietf.org
Subject: Re: [i2rs] [netmod] extended datastores slide

On Wed, Jun 24, 2015 at 06:24:25AM -0700, Andy Bierman wrote:
> 
> I prepared 1 slide (based on Kent's slide).
> I am trying to understand the types of data and how they are 
> identified in YANG and conceptually separated for protocol access.
> 

I do not understand the 'config ephemeral' on the left side. I think
it is the implementation (or its configuration) that decides which
data models also exist in the ephemeral data store.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

_______________________________________________
i2rs mailing list
i2rs@ietf.org
https://www.ietf.org/mailman/listinfo/i2rs


From nobody Thu Jun 25 10:12:03 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 3B6721A92FE; Thu, 25 Jun 2015 10:12:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 vm349fRkTTfh; Thu, 25 Jun 2015 10:11:59 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9E6751A92F5; Thu, 25 Jun 2015 10:11:59 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id BCE44136E; Thu, 25 Jun 2015 19:11:54 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 6WD8eQfMD1pN; Thu, 25 Jun 2015 19:11:56 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Thu, 25 Jun 2015 19:11:54 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id 1623B20031; Thu, 25 Jun 2015 19:11:58 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id qBal91eMzAFp; Thu, 25 Jun 2015 19:11:57 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 4719F20013; Thu, 25 Jun 2015 19:11:57 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 5B90B347ACEB; Thu, 25 Jun 2015 19:11:56 +0200 (CEST)
Date: Thu, 25 Jun 2015 19:11:56 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Susan Hares <shares@ndzh.com>
Message-ID: <20150625171155.GA40931@elstar.local>
Mail-Followup-To: Susan Hares <shares@ndzh.com>, 'Andy Bierman' <andy@yumaworks.com>, i2rs@ietf.org, netmod@ietf.org
References: <CABCOCHRCFapg9hP1krw=K+62rj_LPetnACGEgkXsH5XOdjL1iw@mail.gmail.com> <20150625163500.GB40762@elstar.local> <00fa01d0af68$b86f0ed0$294d2c70$@ndzh.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <00fa01d0af68$b86f0ed0$294d2c70$@ndzh.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/tfhGU-wsB7UBCQbnp5ReTTXo6LQ>
Cc: i2rs@ietf.org, netmod@ietf.org
Subject: Re: [netmod] [i2rs]  extended datastores slide
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 17:12:02 -0000

On Thu, Jun 25, 2015 at 01:02:28PM -0400, Susan Hares wrote:
> Juergen: 
> 
> Where would you put the "config ephemeral"?
>

Perhaps this is not needed.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Thu Jun 25 10:15:16 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 E07C81A9135 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 10:15:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 A_7Y4fFOp855 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 10:15:13 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9ED861A92B8 for <netmod@ietf.org>; Thu, 25 Jun 2015 10:15:13 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id BAC0A103A; Thu, 25 Jun 2015 19:15:08 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id hLs2pOmvpRuK; Thu, 25 Jun 2015 19:15:09 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Thu, 25 Jun 2015 19:15:07 +0200 (CEST)
Received: from localhost (demetrius3.jacobs-university.de [212.201.44.48]) by hermes.jacobs-university.de (Postfix) with ESMTP id A23CC2002B; Thu, 25 Jun 2015 19:15:10 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius3.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id M3u9hUnOgjlz; Thu, 25 Jun 2015 19:15:01 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 7540120031; Thu, 25 Jun 2015 19:15:09 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 2CEFF347AD25; Thu, 25 Jun 2015 19:15:08 +0200 (CEST)
Date: Thu, 25 Jun 2015 19:15:07 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Nadeau Thomas <tnadeau@lucidvision.com>
Message-ID: <20150625171507.GB40931@elstar.local>
Mail-Followup-To: Nadeau Thomas <tnadeau@lucidvision.com>, NETMOD Working Group <netmod@ietf.org>
References: <E5C69652-BA42-4ADB-9ECB-4E1116C21144@lucidvision.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <E5C69652-BA42-4ADB-9ECB-4E1116C21144@lucidvision.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/izOVfDlqxFqgCOmxFfk6TEn5uRo>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Action from Today's Interim Meeting
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 17:15:15 -0000

On Thu, Jun 25, 2015 at 12:51:49PM -0400, Nadeau Thomas wrote:
> 
> 	First, can the folks that presented slides today (Acee and Anees) please send their slides to the list here. Preferred mode is a URL to a place where the slides exist so we donâ€™t fill everyonesâ€™ boxes with PPTs. 8)

Preferred place is the IETF meetings material manager. Simply send the
slides to me and I will upload them.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Thu Jun 25 10:27:36 2015
Return-Path: <tnadeau@lucidvision.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 65CBE1AC437 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 10:27:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.012
X-Spam-Level: 
X-Spam-Status: No, score=-2.012 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_PASS=-0.001, 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 BxOIdaGbBHQ6 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 10:27:34 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 133BC1AC42F for <netmod@ietf.org>; Thu, 25 Jun 2015 10:27:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1435253235; bh=9Wgu95FMCIg4aJP4eB8dwYiEAXdN8f6GOBp1Hb8bJNs=; h=Subject:From:In-Reply-To:Date:Cc:References:To; b=fkB2GXFdvhxrCOPMPxg87E6xqiSkKvMy5UOmEWvYE7+oa31EaT5F22GCWcN+qhGX5 w+xti87KJt7Wfd/yOsOBf1nelH9sIHmg8qTiZrjOPZmUOSXeD6dU09tOfkrzUyt2ft Y+KZHqRI+znCvbuYLtR7AjdqYnPCY1lbFb7eVPCM=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=50.255.148.181; 
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Nadeau Thomas <tnadeau@lucidvision.com>
In-Reply-To: <20150625171507.GB40931@elstar.local>
Date: Thu, 25 Jun 2015 13:27:34 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <E21A73E6-DFC4-492C-B8DD-EC51E428F71E@lucidvision.com>
References: <E5C69652-BA42-4ADB-9ECB-4E1116C21144@lucidvision.com> <20150625171507.GB40931@elstar.local>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-ShareWhite: 50.255.148.181
X-MyRbl: Color=Yellow Age=0 Spam=0 Notspam=16 Stars=0 Good=0 Friend=0 Surbl=0 Catch=0 r=0 ip=50.255.148.181
X-IP-stats: Notspam Incoming Last 0, First 41, in=344, out=0, spam=0 Known=true ip=50.255.148.181
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/HQK9jgFBmAsDD-CxAOTvPxIZIto>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Action from Today's Interim Meeting
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 17:27:35 -0000

	Good point.=20

	=E2=80=94Tom


> On Jun 25, 2015:1:15 PM, at 1:15 PM, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>=20
> On Thu, Jun 25, 2015 at 12:51:49PM -0400, Nadeau Thomas wrote:
>>=20
>> 	First, can the folks that presented slides today (Acee and =
Anees) please send their slides to the list here. Preferred mode is a =
URL to a place where the slides exist so we don=E2=80=99t fill =
everyones=E2=80=99 boxes with PPTs. 8)
>=20
> Preferred place is the IETF meetings material manager. Simply send the
> slides to me and I will upload them.
>=20
> /js
>=20
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Thu Jun 25 11:16:58 2015
Return-Path: <tnadeau@lucidvision.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 1807E1A1A55 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 11:16:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.012
X-Spam-Level: 
X-Spam-Status: No, score=-2.012 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_PASS=-0.001, 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 zGitWyT9pcHC for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 11:16:56 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0B8F61A1A19 for <netmod@ietf.org>; Thu, 25 Jun 2015 11:16:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1435256196; bh=ZGI5je6QAsCJ1O1cuAoyLlPtlaPI2InvL8V/ybbfbis=; h=From:Subject:Date:To; b=LPhyfeUKd80rYCOze8PWJoYpjPLGyvCcDP3e6BTLFyXIUEMNNibwrHc/6s55IXAgj HIs+cL3NxRCmCZA2MqH/XKTwr3dbd1s5Yxh2vIaDVFK8Yh8fDDmZkLh8HyAoRfgFun rMuDBIj5h9eM6dUYLERzlHIdEI8rOLnOPG22FsBI=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=50.255.148.181; 
From: Nadeau Thomas <tnadeau@lucidvision.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <FF95E075-8A2A-46EB-8DE0-FF1167EAB06E@lucidvision.com>
Date: Thu, 25 Jun 2015 14:16:48 -0400
To: NETMOD Working Group <netmod@ietf.org>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-ShareWhite: 50.255.148.181
X-MyRbl: Color=Yellow Age=0 Spam=0 Notspam=21 Stars=0 Good=0 Friend=0 Surbl=0 Catch=0 r=0 ip=50.255.148.181
X-IP-stats: Notspam Incoming Last 0, First 41, in=349, out=0, spam=0 Known=true ip=50.255.148.181
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/NP_Se6B3hQ9A9xjQG7orlzQpuXo>
Subject: [netmod] recording from today's interim meeting
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 18:16:57 -0000

https://ietf.webex.com/ietf/ldr.php?RCID=6099358e34d5c21048393d5ff437ab71



From nobody Thu Jun 25 11:48:59 2015
Return-Path: <tnadeau@lucidvision.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 704B51A8AD3 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 11:48:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.012
X-Spam-Level: 
X-Spam-Status: No, score=-2.012 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_HELO_PASS=-0.001, 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 uwh_1rxysEjl for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 11:48:50 -0700 (PDT)
Received: from lucidvision.com (lucidvision.com [64.71.170.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 981EC1A8ADD for <netmod@ietf.org>; Thu, 25 Jun 2015 11:48:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lucidvision.com; s=default; t=1435258111; bh=2XIeYSytx7QATIkkhI/89krXHjHpMH2uCLa5IloLENc=; h=Subject:From:In-Reply-To:Date:References:To; b=i15WKqzkQ/neM5B2X3QEizDOFlZdaCEUQZnQeaHIldkZF4NUPDoGM3uDeDHg29vnE /QmvZT2IJebo20x1gClOUIqWFn4h+LFWnbBUl+Ddx7JUGg/0SATUzrzPhxbzDNOl+M 1kc4mINSK46b22TEia353G+vnadunC635s4x+vY8=
X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=50.255.148.181; 
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Nadeau Thomas <tnadeau@lucidvision.com>
In-Reply-To: <FF95E075-8A2A-46EB-8DE0-FF1167EAB06E@lucidvision.com>
Date: Thu, 25 Jun 2015 14:48:49 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <A2A52745-0390-4C56-A1C3-6630555FF4B0@lucidvision.com>
References: <FF95E075-8A2A-46EB-8DE0-FF1167EAB06E@lucidvision.com>
To: NETMOD Working Group <netmod@ietf.org>
X-Mailer: Apple Mail (2.2098)
X-Authenticated-User: tnadeau@lucidvision.com 
X-Info: aspam skipped due to (g_smite_skip_relay)
X-Encryption: SSL encrypted
X-ShareWhite: 50.255.148.181
X-MyRbl: Color=Yellow Age=0 Spam=0 Notspam=22 Stars=0 Good=0 Friend=0 Surbl=0 Catch=0 r=0 ip=50.255.148.181
X-IP-stats: Notspam Incoming Last 0, First 41, in=350, out=0, spam=0 Known=true ip=50.255.148.181
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/g-owY2Z2MKB0a5CsvqxmjRmrs9A>
Subject: Re: [netmod] recording from today's interim meeting
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 18:48:58 -0000

	Sorry, that one was from last week. This one is from today:

	The file name says: NETMOD Virtual Interim Meeting-20150625 =
1408-1

=
https://ietf.webex.com/ietf/ldr.php?RCID=3D99e05d8c2a46b384379cbc5ce5ac265=
c



> On Jun 25, 2015:2:16 PM, at 2:16 PM, Nadeau Thomas =
<tnadeau@lucidvision.com> wrote:
>=20
>=20
> =
https://ietf.webex.com/ietf/ldr.php?RCID=3D6099358e34d5c21048393d5ff437ab7=
1
>=20
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


From nobody Thu Jun 25 12:25:45 2015
Return-Path: <internet-drafts@ietf.org>
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 F17AE1ACD0F; Thu, 25 Jun 2015 12:25:42 -0700 (PDT)
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] 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 MVPztWzfK6xz; Thu, 25 Jun 2015 12:25:41 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id D1E0F1ACCFD; Thu, 25 Jun 2015 12:25:41 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: internet-drafts@ietf.org
To: <i-d-announce@ietf.org>
X-Test-IDTracker: no
X-IETF-IDTracker: 6.0.4.p1
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20150625192541.15724.86699.idtracker@ietfa.amsl.com>
Date: Thu, 25 Jun 2015 12:25:41 -0700
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/XbK7kHF-gtcvJn35YuoYEhTb8KA>
Cc: netmod@ietf.org
Subject: [netmod] I-D Action: draft-ietf-netmod-acl-model-03.txt
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 19:25:43 -0000

A New Internet-Draft is available from the on-line Internet-Drafts directories.
 This draft is a work item of the NETCONF Data Modeling Language Working Group of the IETF.

        Title           : Network Access Control List (ACL) YANG Data Model
        Authors         : Dean Bogdanovic
                          Kiran Agrahara Sreenivasa
                          Lisa Huang
                          Dana Blair
	Filename        : draft-ietf-netmod-acl-model-03.txt
	Pages           : 26
	Date            : 2015-06-25

Abstract:
   This document describes a data model of Access Control List (ACL)
   basic building blocks.


The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draft-ietf-netmod-acl-model/

There's also a htmlized version available at:
https://tools.ietf.org/html/draft-ietf-netmod-acl-model-03

A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url2=draft-ietf-netmod-acl-model-03


Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/


From nobody Thu Jun 25 12:33:09 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 561D51ACD8C for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 12:33:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 m8r72V1pdqbm for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 12:33:06 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 84EAB1ACD71 for <netmod@ietf.org>; Thu, 25 Jun 2015 12:32:49 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 89AD316A9; Thu, 25 Jun 2015 21:32:44 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id d69nrw45fTjq; Thu, 25 Jun 2015 21:32:46 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Thu, 25 Jun 2015 21:32:43 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id 53FA22002B; Thu, 25 Jun 2015 21:32:47 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id XODsS4X2Zwb6; Thu, 25 Jun 2015 21:32:46 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 74A5520013; Thu, 25 Jun 2015 21:32:46 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 4D9C8347AF2F; Thu, 25 Jun 2015 21:32:45 +0200 (CEST)
Date: Thu, 25 Jun 2015 21:32:44 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: "Acee Lindem (acee)" <acee@cisco.com>
Message-ID: <20150625193244.GA41254@elstar.local>
Mail-Followup-To: "Acee Lindem (acee)" <acee@cisco.com>, netmod@ietf.org
References: <E5C69652-BA42-4ADB-9ECB-4E1116C21144@lucidvision.com> <20150625171507.GB40931@elstar.local> <E21A73E6-DFC4-492C-B8DD-EC51E428F71E@lucidvision.com> <D1B1CA09.25319%acee@cisco.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <D1B1CA09.25319%acee@cisco.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/f4Q5Rf1gRNGT5eciyOm4Rrgc4_0>
Cc: netmod@ietf.org
Subject: Re: [netmod] Action from Today's Interim Meeting
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 19:33:08 -0000

On Thu, Jun 25, 2015 at 07:10:46PM +0000, Acee Lindem (acee) wrote:
> Hi Juergen,
> Iâ€™m attaching the Model Structure slides for upload.

Thanks, uploaded:

https://www.ietf.org/proceedings/interim/2015/06/25/netmod/slides/slides-interim-2015-netmod-14-0.pdf

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Thu Jun 25 12:33:37 2015
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 2ADD21ACD4F; Thu, 25 Jun 2015 12:33:36 -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 vDYUf7AhtFZ8; Thu, 25 Jun 2015 12:33:34 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id A74941ACD96; Thu, 25 Jun 2015 12:33:09 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 17D9D1AE0981; Thu, 25 Jun 2015 21:33:08 +0200 (CEST)
Date: Thu, 25 Jun 2015 21:33:07 +0200 (CEST)
Message-Id: <20150625.213307.987589961886974156.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHTJ0Bd_cFHRpnuN4Wjz++6cogWHsDbVVsp+6DJdB08_sg@mail.gmail.com>
References: <CABCOCHQW8rWRFyxKQ92u3ThP4Fa976vt1n=ogygsG+3Qx4caPA@mail.gmail.com> <20150625.101417.2199972820527866360.mbj@tail-f.com> <CABCOCHTJ0Bd_cFHRpnuN4Wjz++6cogWHsDbVVsp+6DJdB08_sg@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/pYLoCYxQR2LNWuHUrylzxnMjI-M>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 19:33:36 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Thu, Jun 25, 2015 at 1:14 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Andy Bierman <andy@yumaworks.com> wrote:
> > > On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com>
> > wrote:
> > >
> > > > Hi,
> > > >
> > > > I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> > > > to address Y45-04.  Note that YANG 1.1 uses the module
> > > > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > > > crossposting).
> > > >
> > > > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> > > >
> > > > We have a whole bunch of documents that have a normative reference to
> > > > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > > > draft-ietf-netconf-yang-library.  This means we need to finish this
> > > > document pretty soon.
> > > >
> > > > I ran into some issues with ietf-yang-library:
> > > >
> > > >   1.  The leaf "conformance" is of type "boolean".  It is not obvious
> > > >       what "conformance = false" means.  Should we change the name
> > > >       and/or type of this leaf?
> > > >
> > > >       I don't have a good proposal, but what we need is a way to
> > > >       indicate "I implement the protocol accessible nodes in this
> > > >       module" vs. "I just list this module b/c some other module that
> > > >       I implement uses typdefs/groupings/... from it".
> > > >
> > > >       This issue is related to the github issue #3.  I think we need
> > > >       this information; Y45-04 relies on it.
> > > >
> > > >
> > >
> > > We went through this before and you didn't have a better suggestion last
> > > time either.
> > >
> > > conformance=false means the server is not claiming conformance for this
> > > module.
> >
> > Yes I know.  I just wish we had a better name for this.  But you're
> > right, if we can't come up with a better term, we'll stick to what we
> > have.
> >
> > > A NETCONF <hello> should not have any modules tagged
> > > as conformance=false.
> > >
> > > CoMI relies on this module as well.
> > > It has been ready for WGLC since January.
> > >
> > >
> > >
> > >
> > > >
> > > >   2.  The "/modules/module" list is keyed by "name" and "revision".
> > > >       Should we really have "revision" as key?  A server can only
> > > >       implement one revision of a module, and should only list one
> > > >       revision of a module w/ conformance = false.  I suggest we make
> > > >       this leaf mandatory, and not part of the key.
> > > >
> > >
> > >
> > > I am not in favor of this change.
> > > Two modules "foo" and "bar" released on the same date
> > > could not be represented.
> >
> > The name of the module would be the (single) key, so this should be
> > possible.
> >
> >
> 
> This does not work.
> 
> 
> 
> > > I think the indexing is fine in the current draft.
> > > The <get-schema> operation in NETCONF and RESTCONF need
> > > the module name and the revision-date.
> >
> > Yes, revision must be mandatory.
> >
> 
> Unless revision is the key then only 1 revision of the module is possible.

Correct.  We agreed that a server cannot implement more than one
version of a module (i.e., conformance = true).  And the reason for
listing other modules (conformance = false) is for the client to learn
which revision of such a module is used by the server in modules that
import them without revision.  Again, there must only be one such
revision.

An example might help.

Suppose we have a typedef only module "t", and three modules "a",
"b", and "c" importing it:

  module a {
    ...
    import t {
      prefix t;  // note: no revision-date
    }
    ...
  }

  module b {
    ...
    import t {
      prefix t;
      revision-date 2015-01-01;
    }
    ...
  }

  module c {
    ...
    import t {
      prefix t;
      revision-date 2015-02-02;
    }
    ...
  }

  module t {
    ...
    revision 2015-02-02;
    revision 2015-01-01;
    ...
  }

Now the server lists in ietf-yang-library:

  modules:
    module:
      name: t
      revision: 2015-01-01;
      conformance: false
    module:
      name: t
      revision: 2015-02-02;
      conformance: false
   ...

A client downloads all modules from the server.  Now, how can the
client tell which revsion of "t" was used to implement "a"?

I can se two solutions:

  1.  Just list one revision of "t" - the one used to implement module
      "a" (and any other module that imports "t" w/o revision).

      There really is no reason to list the other revsion of "t".

  2.  List both revisions of "t", but mark the one that is used to
      implement module "a" in some way.

> > > This module should not care how many revisions of each module
> > > are listed.  This is the full YANG library, not a <hello> message.
> >
> > The whole point of this module is to replace the <hello> message!  It
> > first came up in RESTCONF, and we want to use it also in NETCONF in
> > order to have one single way to do YANG module advertisement
> > regardless of protocol.
> >
> > There is already the schema list in ietf-netconf-monitoring that gives
> > you the full set of modules and submodules used in a server.
> >
> >
> 
> We already discussed relation to the schema list and decided to ignore it.
> The whole point of this library is to provide the full list of YANG modules
> and submodules on the device.
> 
> I strongly object to changing this module.
> IMO it is quite clear how to fill in the list of modules.

Yes it is clear.  I argue that it the information is provides is not
sufficient to solve the advertisement problem.


/martin


From nobody Thu Jun 25 12:37:32 2015
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 947191ACD03; Thu, 25 Jun 2015 12:37:29 -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 veUIEEOvRsfF; Thu, 25 Jun 2015 12:37:28 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 757241ACCFC; Thu, 25 Jun 2015 12:37:28 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 8B8861AE0981; Thu, 25 Jun 2015 21:37:27 +0200 (CEST)
Date: Thu, 25 Jun 2015 21:37:27 +0200 (CEST)
Message-Id: <20150625.213727.1996609386257583091.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHTM+xVBywe-VxFqkf_zpJnRpZXnpjxW6tXEbCD7F80SKQ@mail.gmail.com>
References: <CABCOCHQW8rWRFyxKQ92u3ThP4Fa976vt1n=ogygsG+3Qx4caPA@mail.gmail.com> <20150625.101417.2199972820527866360.mbj@tail-f.com> <CABCOCHTM+xVBywe-VxFqkf_zpJnRpZXnpjxW6tXEbCD7F80SKQ@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/xt1xaA4f8UmUa3930wXzb3HwKHs>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 19:37:29 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> >
> > .....
> > There is already the schema list in ietf-netconf-monitoring that gives
> > you the full set of modules and submodules used in a server.
> >
> >
> >
> This is not true.
> 
>        --ro schemas
>       |  +--ro schema* [identifier version format]
>       |     +--ro identifier    string
>       |     +--ro version       string
>       |     +--ro format        identityref
>       |     +--ro namespace     inet:uri
>       |     +--ro location*     union
> 
> 
> 
> There is no way to tell a submodule from a module in RFC 6022.
> There is no way to tell which submodules go with which modules.
> There is no way to identify deviation files.

A client can just download all of them and find which submodules etc
are in there.

> So this 'schema' list does not work for RESTCONF or CoMI.
> That is 1 reason it was rejected and the ietf-yang-library module
> is being used instead.
> 
> It is very useful for a client to be able to scan 1 table and find out
> all the YANG files used by the server, and then use <get-schema>
> to retrieve any files missing from the client.
> 
> IMO the <hello> message issue is misguided because the size of the
> hello message is not really a bottleneck anywhere.  Even 1000 YANG modules
> would be less than 100K in a <hello> message.

Are you saying you want to undo Y16?

One nice thing with ietf-yang-library is that is has potential to be
used as the advertisement solution for any YANG-based protocol.


/martin


From nobody Thu Jun 25 13:23:41 2015
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 4A6AA1ACEE3 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 13:23:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=unavailable
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 i80Pf9UfG43r for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 13:23:39 -0700 (PDT)
Received: from mail-la0-f51.google.com (mail-la0-f51.google.com [209.85.215.51]) (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 B58AD1ACEFF for <netmod@ietf.org>; Thu, 25 Jun 2015 13:23:25 -0700 (PDT)
Received: by lacny3 with SMTP id ny3so51803560lac.3 for <netmod@ietf.org>; Thu, 25 Jun 2015 13:23:24 -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=ElDIbYuPf0JS/qlJU8UyDC/I2pW6u96BUULzIyFyhAU=; b=J4VEgtQIz2zglxyjyxt5NpdC8WD7f46Ht8Kak+nWBzlnITBUnPSMaoOIoOB2hHPUdM D07s5tfbDJ9JixVrHZ10QLnsP4tCWMIjeQR6hqmQU9S1ekRZYgtMGgBBtogEfRFakTii sFtNaiD8cC34DChIRHcHUi4BkP9i9QsrH82IY4SX6ex0vUcK+j3ConRgVHewxOrN4oRv uj0CmL1IErF4c+zuGp90V2XG7cX4UeWzRkze3W+3C0Sdjs1M++bpwy2ZTqHg8F0AblbZ JuSox5Ib8FdfliCQk9ICupkYPto7f/2gLPW0Y5CXrVDlP8h7Y9aLgkWVeYXHeZmAC8yL cXyw==
X-Gm-Message-State: ALoCoQnilA6F4n6Jf5V2nizOpzCaXYyu0i+1WBvMgB/IpCvbUg8aVMMGcW71MkCii4aH+O+4Uasr
MIME-Version: 1.0
X-Received: by 10.112.124.71 with SMTP id mg7mr46463437lbb.38.1435263804090; Thu, 25 Jun 2015 13:23:24 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Thu, 25 Jun 2015 13:23:24 -0700 (PDT)
In-Reply-To: <20150625.213727.1996609386257583091.mbj@tail-f.com>
References: <CABCOCHQW8rWRFyxKQ92u3ThP4Fa976vt1n=ogygsG+3Qx4caPA@mail.gmail.com> <20150625.101417.2199972820527866360.mbj@tail-f.com> <CABCOCHTM+xVBywe-VxFqkf_zpJnRpZXnpjxW6tXEbCD7F80SKQ@mail.gmail.com> <20150625.213727.1996609386257583091.mbj@tail-f.com>
Date: Thu, 25 Jun 2015 13:23:24 -0700
Message-ID: <CABCOCHSr7y=eqNwWXJSV48UyQmYo2fsV66o-KX7MgGxLsaNMqg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=047d7bfd0d8633d96105195d6596
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/5MVAHi2KdHEygv6iW-Na_jmTpJk>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 20:23:40 -0000

--047d7bfd0d8633d96105195d6596
Content-Type: text/plain; charset=UTF-8

On Thu, Jun 25, 2015 at 12:37 PM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Andy Bierman <andy@yumaworks.com> wrote:
> > >
> > > .....
> > > There is already the schema list in ietf-netconf-monitoring that gives
> > > you the full set of modules and submodules used in a server.
> > >
> > >
> > >
> > This is not true.
> >
> >        --ro schemas
> >       |  +--ro schema* [identifier version format]
> >       |     +--ro identifier    string
> >       |     +--ro version       string
> >       |     +--ro format        identityref
> >       |     +--ro namespace     inet:uri
> >       |     +--ro location*     union
> >
> >
> >
> > There is no way to tell a submodule from a module in RFC 6022.
> > There is no way to tell which submodules go with which modules.
> > There is no way to identify deviation files.
>
> A client can just download all of them and find which submodules etc
> are in there.
>

The feedback I have received is that the NETCONF schema table is not
very good and does not list all the YANG files, such as
the submodules and deviations.  The goal is to be able to retrieve
the correct module set without needing to
parse the modules first to find all the imports and includes.

I don't see why it helps to remove the version index.
Explain what problem this solves?

Since YANG 1.1 allows module X to import an unlimited number of
revisions of Y, I don't see how the server can just list 1 revision of
each module in its library.





>
> > So this 'schema' list does not work for RESTCONF or CoMI.
> > That is 1 reason it was rejected and the ietf-yang-library module
> > is being used instead.
> >
> > It is very useful for a client to be able to scan 1 table and find out
> > all the YANG files used by the server, and then use <get-schema>
> > to retrieve any files missing from the client.
> >
> > IMO the <hello> message issue is misguided because the size of the
> > hello message is not really a bottleneck anywhere.  Even 1000 YANG
> modules
> > would be less than 100K in a <hello> message.
>
> Are you saying you want to undo Y16?
>
>

I don't care much if the YANG 1.0 way is used for YANG 1.1 as well.
IMO it is very confusing that there are 2 ways of advertising
modules, based on the language version.



One nice thing with ietf-yang-library is that is has potential to be
> used as the advertisement solution for any YANG-based protocol.
>
>
> /martin
>


Andy

--047d7bfd0d8633d96105195d6596
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Thu, Jun 25, 2015 at 12:37 PM, Martin Bjorklund <span dir=3D"ltr">&l=
t;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt=
;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 =
.8ex;border-left:1px #ccc solid;padding-left:1ex">Andy Bierman &lt;<a href=
=3D"mailto:andy@yumaworks.com">andy@yumaworks.com</a>&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt; .....<br>
&gt; &gt; There is already the schema list in ietf-netconf-monitoring that =
gives<br>
&gt; &gt; you the full set of modules and submodules used in a server.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; This is not true.<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 --ro schemas<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 +--ro schema* [identifier version fo=
rmat]<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0+--ro identifier=C2=A0 =
=C2=A0 string<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0+--ro version=C2=A0 =C2=
=A0 =C2=A0 =C2=A0string<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0+--ro format=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 identityref<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0+--ro namespace=C2=A0 =
=C2=A0 =C2=A0inet:uri<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0+--ro location*=C2=A0 =
=C2=A0 =C2=A0union<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; There is no way to tell a submodule from a module in RFC 6022.<br>
&gt; There is no way to tell which submodules go with which modules.<br>
&gt; There is no way to identify deviation files.<br>
<br>
A client can just download all of them and find which submodules etc<br>
are in there.<br></blockquote><div><br></div><div>The feedback I have recei=
ved is that the NETCONF schema table is not</div><div>very good and does no=
t list all the YANG files, such as</div><div>the submodules and deviations.=
=C2=A0 The goal is to be able to retrieve</div><div>the correct module set =
without needing to</div><div>parse the modules first to find all the import=
s and includes.</div><div><br></div><div>I don&#39;t see why it helps to re=
move the version index.</div><div>Explain what problem this solves?</div><d=
iv><br></div><div>Since YANG 1.1 allows module X to import an unlimited num=
ber of</div><div>revisions of Y, I don&#39;t see how the server can just li=
st 1 revision of</div><div>each module in its library.</div><div><br></div>=
<div><br></div><div><br></div><div>=C2=A0<br></div><blockquote class=3D"gma=
il_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-lef=
t:1ex">
<br>
&gt; So this &#39;schema&#39; list does not work for RESTCONF or CoMI.<br>
&gt; That is 1 reason it was rejected and the ietf-yang-library module<br>
&gt; is being used instead.<br>
&gt;<br>
&gt; It is very useful for a client to be able to scan 1 table and find out=
<br>
&gt; all the YANG files used by the server, and then use &lt;get-schema&gt;=
<br>
&gt; to retrieve any files missing from the client.<br>
&gt;<br>
&gt; IMO the &lt;hello&gt; message issue is misguided because the size of t=
he<br>
&gt; hello message is not really a bottleneck anywhere.=C2=A0 Even 1000 YAN=
G modules<br>
&gt; would be less than 100K in a &lt;hello&gt; message.<br>
<br>
Are you saying you want to undo Y16?<br>
<br></blockquote><div><br></div><div><br></div><div>I don&#39;t care much i=
f the YANG 1.0 way is used for YANG 1.1 as well.</div><div>IMO it is very c=
onfusing that there are 2 ways of advertising</div><div>modules, based on t=
he language version.</div><div><br></div><div><br></div><div><br></div><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #c=
cc solid;padding-left:1ex">
One nice thing with ietf-yang-library is that is has potential to be<br>
used as the advertisement solution for any YANG-based protocol.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
<br>
/martin<br>
</font></span></blockquote></div><br></div><div class=3D"gmail_extra"><br><=
/div><div class=3D"gmail_extra">Andy</div><div class=3D"gmail_extra"><br></=
div></div>

--047d7bfd0d8633d96105195d6596--


From nobody Thu Jun 25 14:46:21 2015
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 6E5CE1B2AE9 for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 14:46:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 cRIjOuwOc83n for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 14:46:16 -0700 (PDT)
Received: from mail-la0-f42.google.com (mail-la0-f42.google.com [209.85.215.42]) (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 0804E1B2A26 for <netmod@ietf.org>; Thu, 25 Jun 2015 14:46:16 -0700 (PDT)
Received: by lacny3 with SMTP id ny3so52869465lac.3 for <netmod@ietf.org>; Thu, 25 Jun 2015 14:46:14 -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=hWA7LONSD+/+eFzlALZDmbfA9W/c/zGzOBiYq2lbWeU=; b=M9oCZod6oNn4vCGbbM4xYYiBNJlkRmMrY//gDeNYEDyRrRrcRB1yeiEjiOKenRxRVo E94NYY3NWrZIXkX0G135Q1ZR0hDol2W/81igUkMi0fZIHo6u0mBxqab9Yudg8HcgAdAv pU5y9BVrL8/cLimvolw9hEGh5YvicejhTxhBO98Xe4uqq0I+9AWBwcisZSL5p09tU6iI X6MqDmBrAPaVFNHeMzIrWniElD59Hb3OXGQKOQNtniTpi3yFJk2zReJmZwhgRoNVOv+H wZHM0WBreJzIUc/r/j8sIYocJjOfQb5QRR8HAHROytfgkuF8wwXIJFBmTMwsgMUxWGIO 97cw==
X-Gm-Message-State: ALoCoQlHzgG6D0JOdYjJob+Rvd1sEw7Pags4GrhTcV/vWF2wSbRYOhoOzZFJHBqlLBB4rxaU/is6
MIME-Version: 1.0
X-Received: by 10.112.164.66 with SMTP id yo2mr25562360lbb.33.1435268774418; Thu, 25 Jun 2015 14:46:14 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Thu, 25 Jun 2015 14:46:14 -0700 (PDT)
In-Reply-To: <20150624.231449.697617442831847315.mbj@tail-f.com>
References: <20150624.231449.697617442831847315.mbj@tail-f.com>
Date: Thu, 25 Jun 2015 14:46:14 -0700
Message-ID: <CABCOCHRpVfC6yM9q51SnQqM1uJst6pnkhNaW46nxTi+Eb1+LVA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a11c32d5c74f27105195e8d15
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/rG5kc563Yo6454GPrknLsM7g-A0>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Thu, 25 Jun 2015 21:46:18 -0000

--001a11c32d5c74f27105195e8d15
Content-Type: text/plain; charset=UTF-8

On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Hi,
>
> I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> to address Y45-04.  Note that YANG 1.1 uses the module
> ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> crossposting).
>
> [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
>
> We have a whole bunch of documents that have a normative reference to
> draft-ietf-netmod-rfc6020bis, which has a normative reference to
> draft-ietf-netconf-yang-library.  This means we need to finish this
> document pretty soon.
>
> I ran into some issues with ietf-yang-library:
>
>   1.  The leaf "conformance" is of type "boolean".  It is not obvious
>       what "conformance = false" means.  Should we change the name
>       and/or type of this leaf?
>
>

Here is a proposal.
There are no restrictions about how many revisions can appear
in order to support existing YANG 1.0 servers, which have
no such restrictions.


    leaf conformance
      mandatory true;
      type enumeration {
         enum implement {
            description
              "The server implements the specified revision of this module";
         }
         enum import {
            description
               "The server imports the specified revision of this module";
         }
        enum none {
            description
               "The server does not use the specified revision of this
module.
                 The server only supports retrieval of this YANG module.";
         }
     }
   }






>       I don't have a good proposal, but what we need is a way to
>       indicate "I implement the protocol accessible nodes in this
>       module" vs. "I just list this module b/c some other module that
>       I implement uses typdefs/groupings/... from it".
>
>       This issue is related to the github issue #3.  I think we need
>       this information; Y45-04 relies on it.
>
>
>   2.  The "/modules/module" list is keyed by "name" and "revision".
>       Should we really have "revision" as key?  A server can only
>       implement one revision of a module, and should only list one
>       revision of a module w/ conformance = false.  I suggest we make
>       this leaf mandatory, and not part of the key.
>
>
> /martin
>
>
>
>

Andy



>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a11c32d5c74f27105195e8d15
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px=
 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-=
left-style:solid;padding-left:1ex">Hi,<br>
<br>
I am preparing a new version of draft-ietf-netmod-rfc6020bis in order<br>
to address Y45-04.=C2=A0 Note that YANG 1.1 uses the module<br>
ietf-yang-library from draft-ietf-netconf-yang-library (hence the<br>
crossposting).<br>
<br>
[BTW, shouldn&#39;t ietf-yang-library be moved to NETMOD?]<br>
<br>
We have a whole bunch of documents that have a normative reference to<br>
draft-ietf-netmod-rfc6020bis, which has a normative reference to<br>
draft-ietf-netconf-yang-library.=C2=A0 This means we need to finish this<br=
>
document pretty soon.<br>
<br>
I ran into some issues with ietf-yang-library:<br>
<br>
=C2=A0 1.=C2=A0 The leaf &quot;conformance&quot; is of type &quot;boolean&q=
uot;.=C2=A0 It is not obvious<br>
=C2=A0 =C2=A0 =C2=A0 what &quot;conformance =3D false&quot; means.=C2=A0 Sh=
ould we change the name<br>
=C2=A0 =C2=A0 =C2=A0 and/or type of this leaf?<br>
<br></blockquote><div><br></div><div><br></div><div>Here is a proposal.</di=
v><div>There are no restrictions about how many revisions can appear</div><=
div>in order to support existing YANG 1.0 servers, which have</div><div>no =
such restrictions.</div><div><br></div><div><br></div><div>=C2=A0 =C2=A0 le=
af conformance</div><div>=C2=A0 =C2=A0 =C2=A0 mandatory true;<br></div><div=
>=C2=A0 =C2=A0 =C2=A0 type enumeration {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0enum implement {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 description</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
&quot;The server implements the specified revision of this module&quot;;</d=
iv><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}</div><div><div>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0enum import {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 description</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0&quot;The server imports the specified revision of this module=
&quot;;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}</div></div><div><div>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 enum none {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 description</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0&quot;The server does not use the specified revision of=
 this module.</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0The server only supports retrieval of this YANG module.&quot;;=
</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}</div></div><div>=C2=A0 =C2=
=A0 =C2=A0}</div><div>=C2=A0 =C2=A0}</div><div><br></div><div><br></div><di=
v><br></div><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-colo=
r:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
=C2=A0 =C2=A0 =C2=A0 I don&#39;t have a good proposal, but what we need is =
a way to<br>
=C2=A0 =C2=A0 =C2=A0 indicate &quot;I implement the protocol accessible nod=
es in this<br>
=C2=A0 =C2=A0 =C2=A0 module&quot; vs. &quot;I just list this module b/c som=
e other module that<br>
=C2=A0 =C2=A0 =C2=A0 I implement uses typdefs/groupings/... from it&quot;.<=
br>
<br>
=C2=A0 =C2=A0 =C2=A0 This issue is related to the github issue #3.=C2=A0 I =
think we need<br>
=C2=A0 =C2=A0 =C2=A0 this information; Y45-04 relies on it.<br>
<br>
<br>
=C2=A0 2.=C2=A0 The &quot;/modules/module&quot; list is keyed by &quot;name=
&quot; and &quot;revision&quot;.<br>
=C2=A0 =C2=A0 =C2=A0 Should we really have &quot;revision&quot; as key?=C2=
=A0 A server can only<br>
=C2=A0 =C2=A0 =C2=A0 implement one revision of a module, and should only li=
st one<br>
=C2=A0 =C2=A0 =C2=A0 revision of a module w/ conformance =3D false.=C2=A0 I=
 suggest we make<br>
=C2=A0 =C2=A0 =C2=A0 this leaf mandatory, and not part of the key.<br>
<br>
<br>
/martin<br>
<br>
<br>
<br></blockquote><div><br></div><div><br></div><div>Andy</div><div><br></di=
v><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border=
-left-style:solid;padding-left:1ex">
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div></div>

--001a11c32d5c74f27105195e8d15--


From nobody Thu Jun 25 21:40:25 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 165C01B329A for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 21:40:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 OdGVEAkSZP2w for <netmod@ietfa.amsl.com>; Thu, 25 Jun 2015 21:40:22 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0DCBC1AD356 for <netmod@ietf.org>; Thu, 25 Jun 2015 21:40:22 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 8646D1263; Fri, 26 Jun 2015 06:40:16 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 55jy26rTw0ZC; Fri, 26 Jun 2015 06:40:18 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Fri, 26 Jun 2015 06:40:15 +0200 (CEST)
Received: from localhost (demetrius3.jacobs-university.de [212.201.44.48]) by hermes.jacobs-university.de (Postfix) with ESMTP id 0001A2002B; Fri, 26 Jun 2015 06:40:19 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius3.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id 2bCgSbv2g_IC; Fri, 26 Jun 2015 06:40:09 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 218E820013; Fri, 26 Jun 2015 06:40:19 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id C9BC5347B17F; Fri, 26 Jun 2015 06:40:15 +0200 (CEST)
Date: Fri, 26 Jun 2015 06:40:15 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Anees Shaikh <aashaikh@google.com>
Message-ID: <20150626044013.GA42038@elstar.local>
Mail-Followup-To: Anees Shaikh <aashaikh@google.com>, netmod@ietf.org
References: <E5C69652-BA42-4ADB-9ECB-4E1116C21144@lucidvision.com> <20150625171507.GB40931@elstar.local> <E21A73E6-DFC4-492C-B8DD-EC51E428F71E@lucidvision.com> <D1B1CA09.25319%acee@cisco.com> <20150625193244.GA41254@elstar.local> <CAJK7ZqKWEJx6zcDLzz=dkqo4USgYqWsET5kfX5BEKmcnng-iHA@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CAJK7ZqKWEJx6zcDLzz=dkqo4USgYqWsET5kfX5BEKmcnng-iHA@mail.gmail.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/XHZv6fx2cHBeOuf5PfsmyUKQmyg>
Cc: netmod@ietf.org
Subject: Re: [netmod] Action from Today's Interim Meeting
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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, 26 Jun 2015 04:40:24 -0000

On Thu, Jun 25, 2015 at 03:09:31PM -0700, Anees Shaikh wrote:
> Here are the opstate slides -- thanks Juergen.
> 

Thanks. Uploaded to the archive:

https://www.ietf.org/proceedings/interim/2015/06/25/netmod/slides/slides-interim-2015-netmod-14-1.pdf

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Fri Jun 26 01:32:06 2015
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 88B4B1A00ED; Fri, 26 Jun 2015 01:32:04 -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 eaWzDeMo9GMu; Fri, 26 Jun 2015 01:32:03 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id C6BAD1A00EC; Fri, 26 Jun 2015 01:32:02 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id ACF721AE0286; Fri, 26 Jun 2015 10:32:00 +0200 (CEST)
Date: Fri, 26 Jun 2015 10:32:00 +0200 (CEST)
Message-Id: <20150626.103200.573472643590304772.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHSr7y=eqNwWXJSV48UyQmYo2fsV66o-KX7MgGxLsaNMqg@mail.gmail.com>
References: <CABCOCHTM+xVBywe-VxFqkf_zpJnRpZXnpjxW6tXEbCD7F80SKQ@mail.gmail.com> <20150625.213727.1996609386257583091.mbj@tail-f.com> <CABCOCHSr7y=eqNwWXJSV48UyQmYo2fsV66o-KX7MgGxLsaNMqg@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/2iXaxEZWMWNOV3TplUznWPgJu_g>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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, 26 Jun 2015 08:32:04 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Thu, Jun 25, 2015 at 12:37 PM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Andy Bierman <andy@yumaworks.com> wrote:
> > > >
> > > > .....
> > > > There is already the schema list in ietf-netconf-monitoring that gives
> > > > you the full set of modules and submodules used in a server.
> > > >
> > > >
> > > >
> > > This is not true.
> > >
> > >        --ro schemas
> > >       |  +--ro schema* [identifier version format]
> > >       |     +--ro identifier    string
> > >       |     +--ro version       string
> > >       |     +--ro format        identityref
> > >       |     +--ro namespace     inet:uri
> > >       |     +--ro location*     union
> > >
> > >
> > >
> > > There is no way to tell a submodule from a module in RFC 6022.
> > > There is no way to tell which submodules go with which modules.
> > > There is no way to identify deviation files.
> >
> > A client can just download all of them and find which submodules etc
> > are in there.
> >
> 
> The feedback I have received is that the NETCONF schema table is not
> very good and does not list all the YANG files, such as
> the submodules and deviations.

That seems to be an issue with the implementation rather than the
model.

> The goal is to be able to retrieve
> the correct module set without needing to
> parse the modules first to find all the imports and includes.

Yes; download all modules in the schema list.

> I don't see why it helps to remove the version index.
> Explain what problem this solves?

It solves the advertisement problem:

  1.  The client needs to know which modules the server implements,
      and their revisions.

      Since a server can only implement one revision of a module, this
      is easy.  List the module and mark it with conformance
      true.

  2.  Some definitions-only modules might be imported by revision by
      the modules that are implemented.  These do not need to be
      advertised.

  3.  Some definitions-only modules might be imported without revision
      by the modules that are implemented.  The server MUST pick one
      revision and use that, and it needs to advertise this revision,
      and mark it with conformance false.

      Again, it is just one revision.


If this list contains more than one revision of a conformance false
module, the client cannot tell which revision was used.  And if the
list contains more than one revision of a conformance true module, the
server lies (since it cannot implement more than one revision).

> Since YANG 1.1 allows module X to import an unlimited number of
> revisions of Y, I don't see how the server can just list 1 revision of
> each module in its library.

See above. 


> > > So this 'schema' list does not work for RESTCONF or CoMI.
> > > That is 1 reason it was rejected and the ietf-yang-library module
> > > is being used instead.
> > >
> > > It is very useful for a client to be able to scan 1 table and find out
> > > all the YANG files used by the server, and then use <get-schema>
> > > to retrieve any files missing from the client.
> > >
> > > IMO the <hello> message issue is misguided because the size of the
> > > hello message is not really a bottleneck anywhere.  Even 1000 YANG
> > modules
> > > would be less than 100K in a <hello> message.
> >
> > Are you saying you want to undo Y16?
> >
> >
> 
> I don't care much if the YANG 1.0 way is used for YANG 1.1 as well.
> IMO it is very confusing that there are 2 ways of advertising
> modules, based on the language version.

The YANG 1.0 way only works for NETCONF.  So there will be another
mechanism for RESTCONF and possibly other protocols.  Isn't it better
to use that mechanism for all protocols?


/martin




> 
> 
> 
> One nice thing with ietf-yang-library is that is has potential to be
> > used as the advertisement solution for any YANG-based protocol.
> >
> >
> > /martin
> >
> 
> 
> Andy


From nobody Fri Jun 26 01:59:10 2015
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 BB2C71A1A5F; Fri, 26 Jun 2015 01:59:09 -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 U5Ks-Nz8jrkS; Fri, 26 Jun 2015 01:59:08 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 5A9361A1A5D; Fri, 26 Jun 2015 01:59:08 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 88AFA1AE048E; Fri, 26 Jun 2015 10:59:07 +0200 (CEST)
Date: Fri, 26 Jun 2015 10:59:07 +0200 (CEST)
Message-Id: <20150626.105907.1929816701749723248.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHRpVfC6yM9q51SnQqM1uJst6pnkhNaW46nxTi+Eb1+LVA@mail.gmail.com>
References: <20150624.231449.697617442831847315.mbj@tail-f.com> <CABCOCHRpVfC6yM9q51SnQqM1uJst6pnkhNaW46nxTi+Eb1+LVA@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/BZf0_NN1Ooyebm8Ih3qmYuJbzok>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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, 26 Jun 2015 08:59:09 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Hi,
> >
> > I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> > to address Y45-04.  Note that YANG 1.1 uses the module
> > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > crossposting).
> >
> > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> >
> > We have a whole bunch of documents that have a normative reference to
> > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > draft-ietf-netconf-yang-library.  This means we need to finish this
> > document pretty soon.
> >
> > I ran into some issues with ietf-yang-library:
> >
> >   1.  The leaf "conformance" is of type "boolean".  It is not obvious
> >       what "conformance = false" means.  Should we change the name
> >       and/or type of this leaf?
> >
> >
> 
> Here is a proposal.

Thanks, I think this is good progress.

> There are no restrictions about how many revisions can appear
> in order to support existing YANG 1.0 servers, which have
> no such restrictions.

I don't think this is an important goal.  I also think that this
module should have yang-version 1.1 - which all modules will have
going forward.

But if we combine what both of us have said there are two goals with
this module:

  1.  Solve the advertisement problem (protocol independent).

  2.  Provide a complete listing of all YANG modules used in the
      server.

I believe that your proposed solution below can solve both these
requirements (with some minor tweaks):

>     leaf conformance
>       mandatory true;
>       type enumeration {
>          enum implement {
>             description
>               "The server implements the specified revision of this module";

Ok.  We need to clearly define what "implement" a module means.  I
have started to do this in 6020bis, so we should provide a ref to that
section.

>          }
>          enum import {
>             description
>                "The server imports the specified revision of this module";

This should be more precise - "the server uses the specified revision
of this module for all other modules that import this module without
revision".

>          }
>         enum none {
>             description
>                "The server does not use the specified revision of this
> module.
>                  The server only supports retrieval of this YANG module.";

I don't think this is correct.  The server would list a typedef only
module that is imported by revision here, right?   I think it should
be something like "the server uses the specified revision of this
module because some other module imports this revision".

We should also say:

  There MUST NOT be more than one listing with conformance "implemented"
  for a given module name.

  There MUST NOT be more than one listing with conformance "import"
  for a given module name.


How is a deviation module listed?  Does the conformance leaf matter
for such a module?


/martin


From nobody Fri Jun 26 07:12:22 2015
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 EA90B1B2F55 for <netmod@ietfa.amsl.com>; Fri, 26 Jun 2015 07:12:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=unavailable
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 AGD8gBVwf7KH for <netmod@ietfa.amsl.com>; Fri, 26 Jun 2015 07:12:18 -0700 (PDT)
Received: from mail-lb0-f175.google.com (mail-lb0-f175.google.com [209.85.217.175]) (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 B68611B2F59 for <netmod@ietf.org>; Fri, 26 Jun 2015 07:12:17 -0700 (PDT)
Received: by lbbwc1 with SMTP id wc1so65244782lbb.2 for <netmod@ietf.org>; Fri, 26 Jun 2015 07:12:15 -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=eD5D19nuoOwglmvWn09Xgz3I+HqrWe+hZaSLjmLAnoA=; b=ddPbwCE0CoCL0klPHYUrjYTJlX6Rdbiig10LhDYOMSjAnvbmL3q7uOIWRRZ/qz472E OGIzNgX4g+QgUVYSWipc2ezs9ZZsyq/cboTfBOPvB1HxChqiU+7lV2eXaaO/buRtM48W XXVziIrUDP4HvdbWL83ojdiXVm4+t4sCaFBhmwkzr/edoO9gXQMdALH48zeXlBkp51DO lNM4+dRV4BZ8wVm1EhMZUXoclOwommWWCk3DuVX3HWcuOfU5BCrKSa/1WkzOpxIagC+D +G9Qwa2kxlV/HwrOHu8j8ttyS8X6ZnfVCH1+suoXcWt7ZpnZL1ut4r1Lz+1+o4KrGpjd eWeg==
X-Gm-Message-State: ALoCoQmwx9L3j/FDPSNCGvti657WDhojnrj/NXixNUmsYxqIJcDny9/Wc2VjsR6mIkyLmgnPnSmZ
MIME-Version: 1.0
X-Received: by 10.112.41.171 with SMTP id g11mr1760894lbl.123.1435327935333; Fri, 26 Jun 2015 07:12:15 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Fri, 26 Jun 2015 07:12:15 -0700 (PDT)
In-Reply-To: <20150626.105907.1929816701749723248.mbj@tail-f.com>
References: <20150624.231449.697617442831847315.mbj@tail-f.com> <CABCOCHRpVfC6yM9q51SnQqM1uJst6pnkhNaW46nxTi+Eb1+LVA@mail.gmail.com> <20150626.105907.1929816701749723248.mbj@tail-f.com>
Date: Fri, 26 Jun 2015 07:12:15 -0700
Message-ID: <CABCOCHTnU5+xrF9sukf0at1CpzU8wzN08NxDY-yfShcCT55DHQ@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a11346d9cb8dda505196c538f
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Zp-R51WOcfIupdHM9HCtCcY3Eds>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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, 26 Jun 2015 14:12:20 -0000

--001a11346d9cb8dda505196c538f
Content-Type: text/plain; charset=UTF-8

On Fri, Jun 26, 2015 at 1:59 AM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Andy Bierman <andy@yumaworks.com> wrote:
> > On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com>
> wrote:
> >
> > > Hi,
> > >
> > > I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> > > to address Y45-04.  Note that YANG 1.1 uses the module
> > > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > > crossposting).
> > >
> > > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> > >
> > > We have a whole bunch of documents that have a normative reference to
> > > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > > draft-ietf-netconf-yang-library.  This means we need to finish this
> > > document pretty soon.
> > >
> > > I ran into some issues with ietf-yang-library:
> > >
> > >   1.  The leaf "conformance" is of type "boolean".  It is not obvious
> > >       what "conformance = false" means.  Should we change the name
> > >       and/or type of this leaf?
> > >
> > >
> >
> > Here is a proposal.
>
> Thanks, I think this is good progress.
>
> > There are no restrictions about how many revisions can appear
> > in order to support existing YANG 1.0 servers, which have
> > no such restrictions.
>
> I don't think this is an important goal.  I also think that this
> module should have yang-version 1.1 - which all modules will have
> going forward.
>
>

This is an an important goal to me.

I do not see any value in restricting the contents of the YANG library,

IMO the library MUST contain all the YANG files and it MUST
bwe absolutely clear which files are modules, submodules, or deviations.
The schema list does not do that.



> But if we combine what both of us have said there are two goals with
> this module:
>
>   1.  Solve the advertisement problem (protocol independent).
>
>   2.  Provide a complete listing of all YANG modules used in the
>       server.
>
> I believe that your proposed solution below can solve both these
> requirements (with some minor tweaks):
>
> >     leaf conformance
> >       mandatory true;
> >       type enumeration {
> >          enum implement {
> >             description
> >               "The server implements the specified revision of this
> module";
>
> Ok.  We need to clearly define what "implement" a module means.  I
> have started to do this in 6020bis, so we should provide a ref to that
> section.
>

Any implementation of a protocol-accessible object.
Fairly obvious I think.




>
> >          }
> >          enum import {
> >             description
> >                "The server imports the specified revision of this
> module";
>
> This should be more precise - "the server uses the specified revision
> of this module for all other modules that import this module without
> revision".
>
> >          }
> >         enum none {
> >             description
> >                "The server does not use the specified revision of this
> > module.
> >                  The server only supports retrieval of this YANG
> module.";
>
> I don't think this is correct.  The server would list a typedef only
> module that is imported by revision here, right?   I think it should
> be something like "the server uses the specified revision of this
> module because some other module imports this revision".
>
>

I want to support a "module server" that does nothing more than
provide all the YANG modules for retrieval.



> We should also say:
>
>   There MUST NOT be more than one listing with conformance "implemented"
>   for a given module name.
>
>   There MUST NOT be more than one listing with conformance "import"
>   for a given module name.
>
>
>

No -- YANG 1.1 allows module X to
import module Y a million times if it wants.
Every one of those revisions of module Y will be listed.




> How is a deviation module listed?  Does the conformance leaf matter
> for such a module?
>
>
I would say 'none'



>
> /martin
>


Andy

--001a11346d9cb8dda505196c538f
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Fri, Jun 26, 2015 at 1:59 AM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">Andy Bierman &lt;<a href=
=3D"mailto:andy@yumaworks.com">andy@yumaworks.com</a>&gt; wrote:<br>
&gt; On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund &lt;<a href=3D"mailt=
o:mbj@tail-f.com">mbj@tail-f.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; Hi,<br>
&gt; &gt;<br>
&gt; &gt; I am preparing a new version of draft-ietf-netmod-rfc6020bis in o=
rder<br>
&gt; &gt; to address Y45-04.=C2=A0 Note that YANG 1.1 uses the module<br>
&gt; &gt; ietf-yang-library from draft-ietf-netconf-yang-library (hence the=
<br>
&gt; &gt; crossposting).<br>
&gt; &gt;<br>
&gt; &gt; [BTW, shouldn&#39;t ietf-yang-library be moved to NETMOD?]<br>
&gt; &gt;<br>
&gt; &gt; We have a whole bunch of documents that have a normative referenc=
e to<br>
&gt; &gt; draft-ietf-netmod-rfc6020bis, which has a normative reference to<=
br>
&gt; &gt; draft-ietf-netconf-yang-library.=C2=A0 This means we need to fini=
sh this<br>
&gt; &gt; document pretty soon.<br>
&gt; &gt;<br>
&gt; &gt; I ran into some issues with ietf-yang-library:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A01.=C2=A0 The leaf &quot;conformance&quot; is of type =
&quot;boolean&quot;.=C2=A0 It is not obvious<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0what &quot;conformance =3D false&quot; =
means.=C2=A0 Should we change the name<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0and/or type of this leaf?<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt; Here is a proposal.<br>
<br>
Thanks, I think this is good progress.<br>
<br>
&gt; There are no restrictions about how many revisions can appear<br>
&gt; in order to support existing YANG 1.0 servers, which have<br>
&gt; no such restrictions.<br>
<br>
I don&#39;t think this is an important goal.=C2=A0 I also think that this<b=
r>
module should have yang-version 1.1 - which all modules will have<br>
going forward.<br>
<br></blockquote><div><br></div><div><br></div><div>This is an an important=
 goal to me.</div><div><br></div><div>I do not see any value in restricting=
 the contents of the YANG library,</div><div><br></div><div>IMO the library=
 MUST contain all the YANG files and it MUST</div><div>bwe absolutely clear=
 which files are modules, submodules, or deviations.</div><div>The schema l=
ist does not do that.</div><div><br></div><div>=C2=A0<br></div><blockquote =
class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid=
;padding-left:1ex">
But if we combine what both of us have said there are two goals with<br>
this module:<br>
<br>
=C2=A0 1.=C2=A0 Solve the advertisement problem (protocol independent).<br>
<br>
=C2=A0 2.=C2=A0 Provide a complete listing of all YANG modules used in the<=
br>
=C2=A0 =C2=A0 =C2=A0 server.<br>
<br>
I believe that your proposed solution below can solve both these<br>
requirements (with some minor tweaks):<br>
<br>
&gt;=C2=A0 =C2=A0 =C2=A0leaf conformance<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0mandatory true;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0type enumeration {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enum implement {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;The server=
 implements the specified revision of this module&quot;;<br>
<br>
Ok.=C2=A0 We need to clearly define what &quot;implement&quot; a module mea=
ns.=C2=A0 I<br>
have started to do this in 6020bis, so we should provide a ref to that<br>
section.<br></blockquote><div><br></div><div>Any implementation of a protoc=
ol-accessible object.</div><div>Fairly obvious I think.</div><div><br></div=
><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D=
"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enum import {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;The serve=
r imports the specified revision of this module&quot;;<br>
<br>
This should be more precise - &quot;the server uses the specified revision<=
br>
of this module for all other modules that import this module without<br>
revision&quot;.<br>
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum none {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;The serve=
r does not use the specified revision of this<br>
&gt; module.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 The serv=
er only supports retrieval of this YANG module.&quot;;<br>
<br>
I don&#39;t think this is correct.=C2=A0 The server would list a typedef on=
ly<br>
module that is imported by revision here, right?=C2=A0 =C2=A0I think it sho=
uld<br>
be something like &quot;the server uses the specified revision of this<br>
module because some other module imports this revision&quot;.<br>
<br></blockquote><div><br></div><div><br></div><div>I want to support a &qu=
ot;module server&quot; that does nothing more than</div><div>provide all th=
e YANG modules for retrieval.</div><div><br></div><div>=C2=A0</div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc s=
olid;padding-left:1ex">
We should also say:<br>
<br>
=C2=A0 There MUST NOT be more than one listing with conformance &quot;imple=
mented&quot;<br>
=C2=A0 for a given module name.<br>
<br>
=C2=A0 There MUST NOT be more than one listing with conformance &quot;impor=
t&quot;<br>
=C2=A0 for a given module name.<br>
<br>
<br></blockquote><div><br></div><div><br></div><div>No -- YANG 1.1 allows m=
odule X to</div><div>import module Y a million times if it wants.</div><div=
>Every one of those revisions of module Y will be listed.</div><div><br></d=
iv><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
How is a deviation module listed?=C2=A0 Does the conformance leaf matter<br=
>
for such a module?<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br></font></span></blockquo=
te><div><br></div><div>I would say &#39;none&#39;</div><div><br></div><div>=
=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bo=
rder-left:1px #ccc solid;padding-left:1ex"><span class=3D"HOEnZb"><font col=
or=3D"#888888">
<br>
/martin<br>
</font></span></blockquote></div><br></div><div class=3D"gmail_extra"><br><=
/div><div class=3D"gmail_extra">Andy</div><div class=3D"gmail_extra"><br></=
div></div>

--001a11346d9cb8dda505196c538f--


From nobody Fri Jun 26 07:33:38 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 7761C1B2FC2 for <netmod@ietfa.amsl.com>; Fri, 26 Jun 2015 07:33:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 EUkyyV3dUsOc for <netmod@ietfa.amsl.com>; Fri, 26 Jun 2015 07:33:35 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C9DA01B2FBD for <netmod@ietf.org>; Fri, 26 Jun 2015 07:33:34 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id C8C721633; Fri, 26 Jun 2015 16:33:27 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id A05uqwa5XVZM; Fri, 26 Jun 2015 16:33:29 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Fri, 26 Jun 2015 16:33:26 +0200 (CEST)
Received: from localhost (demetrius4.jacobs-university.de [212.201.44.49]) by hermes.jacobs-university.de (Postfix) with ESMTP id 281C72002B; Fri, 26 Jun 2015 16:33:31 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius4.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id MuONTEKmwdum; Fri, 26 Jun 2015 16:33:50 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 44FB820013; Fri, 26 Jun 2015 16:33:29 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 12637347B6F2; Fri, 26 Jun 2015 16:33:27 +0200 (CEST)
Date: Fri, 26 Jun 2015 16:33:27 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Kent Watsen <kwatsen@juniper.net>
Message-ID: <20150626143327.GA43292@elstar.local>
Mail-Followup-To: Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <D1A4CEBA.B22F8%kwatsen@juniper.net>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/XNfYbD4CicXcVLikW5lwTUjLpcM>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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, 26 Jun 2015 14:33:37 -0000

On Mon, Jun 15, 2015 at 10:49:32PM +0000, Kent Watsen wrote:
> 
> This is a notice to start a NETMOD WG last call for the document "Defining and Using Metadata with YANG":
> 
> https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01
> 
> Please indicate your support by Monday June 29, 2015 at 9PM EST.

Hi,

I have reviewed draft-ietf-netmod-yang-metadata-01 and I have a couple
of comments.

- I would prefer if the terminology would be streamlined. Currently,
  the I-D sometimes uses "metadata", sometimes "annotation", sometimes
  "metadata annotation". If these terms all mean the same, then I
  suggest we settle on a single term. Furthermore, the YANG statement
  'annotation' is defined in the module 'ietf-metadata'. I am not sure
  whether there is a specific reasoning behind this.

- In order to group YANG modules together that define YANG extensions
  and nothing else, does it make sense to call them 'ietf-yang-<xxx>'?

- I am having problems with the examples presented in the
  Introduction.  The 'deactivating a subtree' annotation requires a
  negotiation mechanism to be robust. The usage of attributes in the
  <edit-config> is more a protocol specification detail. Do you
  suggest that annotations would be used to define them? If so, how?

  I think there needs to be text in section 1 that distinsuishes
  between annotations that are harmless (because they can be ignored)
  and annotations that require annotation negotiation in order to be
  used.

- Why is the type statement optional for annotations? This seems to be
  inconsistent with the YANG rules.

- The definition of 'inactive' on page 6 is kind of confusing. The
  text says the presence of the annotation deactives a data node.
  If so, why is the type of the annotation a boolean?

- The text about advertisements is not clear. I think a server
  advertising annotation A not only commits to comply to this I-D but
  also to the semantics of the annotations A. I note that there is no
  mechanism to scope annotations - a server either support annotations
  for all data models it implements or none. Is this correct?
  Furthermore, if a module M defines annotation A and it contains also
  other definitions, then I can't implement M without implementing A
  system wide? That is, it is advisable to define annotations in their
  own separate modules in order to preserve flexibility, no?

- Does the presence of an annotation impact the JSON encoding rules
  that control when a module name prefix is needed or not? I assume
  the answer is 'no' but it is not clear from the text.

- s/whose the/whose/

- bump the copyright year to 2015

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Fri Jun 26 10:18:56 2015
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 6C7071A8FD2 for <netmod@ietfa.amsl.com>; Fri, 26 Jun 2015 10:18:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.378
X-Spam-Level: 
X-Spam-Status: No, score=-1.378 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_61=0.6, RCVD_IN_DNSWL_LOW=-0.7, 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 WzkGpN03vfYD for <netmod@ietfa.amsl.com>; Fri, 26 Jun 2015 10:18:53 -0700 (PDT)
Received: from mail-lb0-f178.google.com (mail-lb0-f178.google.com [209.85.217.178]) (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 1D1B51A8A96 for <netmod@ietf.org>; Fri, 26 Jun 2015 10:18:53 -0700 (PDT)
Received: by lbbvz5 with SMTP id vz5so68454836lbb.0 for <netmod@ietf.org>; Fri, 26 Jun 2015 10:18:51 -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=qVbxGwjPl8KzEKAbtL2uYzqrUOMd1PPQEyc2ZzcG7iI=; b=Bf7DPWqleQgr1sLvlpt0bZbMZotUZt+wnN0o2P0RemA7g3kBmHNVUKpCjKKGpSfeuS kTUXidY91Q5DEZj7VQWCrHzEcUSZKkoxhgrYF1s0rwXKbT5IpwyUzSXGipSYzFy7AsM+ 9eNMbpBhZ7KjCEntAsZqJp6GDwWNS8VeHeYL4SyMbjKK6GLx4pVfoCqFv4nsOo0DwVnT GJKn/vDPSW2sPvqkb9leTreNi6nKyDdZ/MMMZkHHvImJe5JNshn8J7dko4qRnrmXW0qq 7cpMxyOwbx+Xb9bRxHU+OyYDO+oIF+Z2JdbjN6TNK+MFN0ioBWOopSgz6exv6T5S8zwf R3XA==
X-Gm-Message-State: ALoCoQmryykPEZMYkeczZKX3Szb98jxuTtQEYEoUBHkHB1Idi5reHrS23GWqVgmAWWdEgPdDE5cc
MIME-Version: 1.0
X-Received: by 10.152.36.161 with SMTP id r1mr2530737laj.88.1435339131623; Fri, 26 Jun 2015 10:18:51 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Fri, 26 Jun 2015 10:18:51 -0700 (PDT)
In-Reply-To: <20150626.105907.1929816701749723248.mbj@tail-f.com>
References: <20150624.231449.697617442831847315.mbj@tail-f.com> <CABCOCHRpVfC6yM9q51SnQqM1uJst6pnkhNaW46nxTi+Eb1+LVA@mail.gmail.com> <20150626.105907.1929816701749723248.mbj@tail-f.com>
Date: Fri, 26 Jun 2015 10:18:51 -0700
Message-ID: <CABCOCHS5MRbW=aM2pkQdYv3gRtZSiDYo-94+o3eJRvGP7e764g@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=089e0158b5e412b4fe05196eef55
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/WPswDdR8Nn_scpWKGVulpMeXTyI>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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, 26 Jun 2015 17:18:55 -0000

--089e0158b5e412b4fe05196eef55
Content-Type: text/plain; charset=UTF-8

On Fri, Jun 26, 2015 at 1:59 AM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Andy Bierman <andy@yumaworks.com> wrote:
> > On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com>
> wrote:
> >
> > > Hi,
> > >
> > > I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> > > to address Y45-04.  Note that YANG 1.1 uses the module
> > > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > > crossposting).
> > >
> > > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> > >
> > > We have a whole bunch of documents that have a normative reference to
> > > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > > draft-ietf-netconf-yang-library.  This means we need to finish this
> > > document pretty soon.
> > >
> > > I ran into some issues with ietf-yang-library:
> > >
> > >   1.  The leaf "conformance" is of type "boolean".  It is not obvious
> > >       what "conformance = false" means.  Should we change the name
> > >       and/or type of this leaf?
> > >
> > >
> >
> > Here is a proposal.
>
> Thanks, I think this is good progress.
>
> > There are no restrictions about how many revisions can appear
> > in order to support existing YANG 1.0 servers, which have
> > no such restrictions.
>
> I don't think this is an important goal.  I also think that this
> module should have yang-version 1.1 - which all modules will have
> going forward.
>
> But if we combine what both of us have said there are two goals with
> this module:
>
>   1.  Solve the advertisement problem (protocol independent).
>
>   2.  Provide a complete listing of all YANG modules used in the
>       server.
>
> I believe that your proposed solution below can solve both these
> requirements (with some minor tweaks):
>
> >     leaf conformance
> >       mandatory true;
> >       type enumeration {
> >          enum implement {
> >             description
> >               "The server implements the specified revision of this
> module";
>
> Ok.  We need to clearly define what "implement" a module means.  I
> have started to do this in 6020bis, so we should provide a ref to that
> section.
>
> >          }
> >          enum import {
> >             description
> >                "The server imports the specified revision of this
> module";
>
> This should be more precise - "the server uses the specified revision
> of this module for all other modules that import this module without
> revision".
>
> >          }
> >         enum none {
> >             description
> >                "The server does not use the specified revision of this
> > module.
> >                  The server only supports retrieval of this YANG
> module.";
>
> I don't think this is correct.  The server would list a typedef only
> module that is imported by revision here, right?   I think it should
> be something like "the server uses the specified revision of this
> module because some other module imports this revision".
>
> We should also say:
>
>   There MUST NOT be more than one listing with conformance "implemented"
>   for a given module name.
>


This is not true for YANG 1.0, only YANG 1.1


>
>   There MUST NOT be more than one listing with conformance "import"
>   for a given module name.
>
>
There are no restrictions on YANG for what is contained in the same module.

Module X can have typedefs, groupings, and objects.
The server implements the objects in X.5.
According to YANG 1.1, Y45-04:
Module A can import X.1 for its typedefs.
Module B can import X.2 for a different version of the typedefs.
Module C can import X.3 for the groupings in that version.

The library will have these entries:

    module=A, revision=1, conformance=implement
    module=B, revision=1, conformance=implement
    module=C, revision=1, conformance=implement
    module=X, revision=1, conformance=import
    module=X, revision=2, conformance=import
    module=X, revision=3, conformance=import
    module=X, revision=5, conformance=implement



> How is a deviation module listed?  Does the conformance leaf matter
> for such a module?
>
>
I think 'deviation' should be its own enum, not use 'none'

The nice thing about enum 'import' is that the server does not need to
provide deviation statements for any objects in the base module,
just to import from the module.




>
> /martin
>


Andy

--089e0158b5e412b4fe05196eef55
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Fri, Jun 26, 2015 at 1:59 AM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px=
 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-=
left-style:solid;padding-left:1ex">Andy Bierman &lt;<a href=3D"mailto:andy@=
yumaworks.com">andy@yumaworks.com</a>&gt; wrote:<br>
&gt; On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund &lt;<a href=3D"mailt=
o:mbj@tail-f.com">mbj@tail-f.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; Hi,<br>
&gt; &gt;<br>
&gt; &gt; I am preparing a new version of draft-ietf-netmod-rfc6020bis in o=
rder<br>
&gt; &gt; to address Y45-04.=C2=A0 Note that YANG 1.1 uses the module<br>
&gt; &gt; ietf-yang-library from draft-ietf-netconf-yang-library (hence the=
<br>
&gt; &gt; crossposting).<br>
&gt; &gt;<br>
&gt; &gt; [BTW, shouldn&#39;t ietf-yang-library be moved to NETMOD?]<br>
&gt; &gt;<br>
&gt; &gt; We have a whole bunch of documents that have a normative referenc=
e to<br>
&gt; &gt; draft-ietf-netmod-rfc6020bis, which has a normative reference to<=
br>
&gt; &gt; draft-ietf-netconf-yang-library.=C2=A0 This means we need to fini=
sh this<br>
&gt; &gt; document pretty soon.<br>
&gt; &gt;<br>
&gt; &gt; I ran into some issues with ietf-yang-library:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A01.=C2=A0 The leaf &quot;conformance&quot; is of type =
&quot;boolean&quot;.=C2=A0 It is not obvious<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0what &quot;conformance =3D false&quot; =
means.=C2=A0 Should we change the name<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0and/or type of this leaf?<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt; Here is a proposal.<br>
<br>
Thanks, I think this is good progress.<br>
<br>
&gt; There are no restrictions about how many revisions can appear<br>
&gt; in order to support existing YANG 1.0 servers, which have<br>
&gt; no such restrictions.<br>
<br>
I don&#39;t think this is an important goal.=C2=A0 I also think that this<b=
r>
module should have yang-version 1.1 - which all modules will have<br>
going forward.<br>
<br>
But if we combine what both of us have said there are two goals with<br>
this module:<br>
<br>
=C2=A0 1.=C2=A0 Solve the advertisement problem (protocol independent).<br>
<br>
=C2=A0 2.=C2=A0 Provide a complete listing of all YANG modules used in the<=
br>
=C2=A0 =C2=A0 =C2=A0 server.<br>
<br>
I believe that your proposed solution below can solve both these<br>
requirements (with some minor tweaks):<br>
<br>
&gt;=C2=A0 =C2=A0 =C2=A0leaf conformance<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0mandatory true;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0type enumeration {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enum implement {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;The server=
 implements the specified revision of this module&quot;;<br>
<br>
Ok.=C2=A0 We need to clearly define what &quot;implement&quot; a module mea=
ns.=C2=A0 I<br>
have started to do this in 6020bis, so we should provide a ref to that<br>
section.<br>
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enum import {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;The serve=
r imports the specified revision of this module&quot;;<br>
<br>
This should be more precise - &quot;the server uses the specified revision<=
br>
of this module for all other modules that import this module without<br>
revision&quot;.<br>
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum none {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;The serve=
r does not use the specified revision of this<br>
&gt; module.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 The serv=
er only supports retrieval of this YANG module.&quot;;<br>
<br>
I don&#39;t think this is correct.=C2=A0 The server would list a typedef on=
ly<br>
module that is imported by revision here, right?=C2=A0 =C2=A0I think it sho=
uld<br>
be something like &quot;the server uses the specified revision of this<br>
module because some other module imports this revision&quot;.<br>
<br>
We should also say:<br>
<br>
=C2=A0 There MUST NOT be more than one listing with conformance &quot;imple=
mented&quot;<br>
=C2=A0 for a given module name.<br></blockquote><div><br></div><div><br></d=
iv><div>This is not true for YANG 1.0, only YANG 1.1</div><div>=C2=A0</div>=
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;p=
adding-left:1ex">
<br>
=C2=A0 There MUST NOT be more than one listing with conformance &quot;impor=
t&quot;<br>
=C2=A0 for a given module name.<br>
<br></blockquote><div><br></div><div>There are no restrictions on YANG for =
what is contained in the same module.</div><div><br></div><div>Module X can=
 have typedefs, groupings, and objects.</div><div>The server implements the=
 objects in X.5.</div><div>According to YANG 1.1, Y45-04:</div><div>Module =
A can import X.1 for its typedefs.</div><div>Module B can import X.2 for a =
different version of the typedefs.</div><div>Module C can import X.3 for th=
e groupings in that version.</div><div><br></div><div>The library will have=
 these entries:</div><div><br></div><div>=C2=A0 =C2=A0 module=3DA, revision=
=3D1, conformance=3Dimplement</div><div>=C2=A0 =C2=A0 module=3DB, revision=
=3D1, conformance=3Dimplement</div><div>=C2=A0 =C2=A0 module=3DC, revision=
=3D1, conformance=3Dimplement</div><div>=C2=A0 =C2=A0 module=3DX, revision=
=3D1, conformance=3Dimport<br></div><div>=C2=A0 =C2=A0 module=3DX, revision=
=3D2, conformance=3Dimport</div><div>=C2=A0 =C2=A0 module=3DX, revision=3D3=
, conformance=3Dimport</div><div>=C2=A0 =C2=A0 module=3DX, revision=3D5, co=
nformance=3Dimplement</div><div>=C2=A0</div><div><br></div><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;b=
order-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"=
>
<br>
How is a deviation module listed?=C2=A0 Does the conformance leaf matter<br=
>
for such a module?<br>
<span class=3D""><font color=3D"#888888"><br></font></span></blockquote><di=
v><br></div><div>I think &#39;deviation&#39; should be its own enum, not us=
e &#39;none&#39;</div><div><br></div><div>The nice thing about enum &#39;im=
port&#39; is that the server does not need to</div><div>provide deviation s=
tatements for any objects in the base module,</div><div>just to import from=
 the module.</div><div><br></div><div><br></div><div>=C2=A0</div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width=
:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-lef=
t:1ex"><span class=3D""><font color=3D"#888888">
<br>
/martin<br>
</font></span></blockquote></div><br></div><div class=3D"gmail_extra"><br><=
/div><div class=3D"gmail_extra">Andy</div><div class=3D"gmail_extra"><br></=
div></div>

--089e0158b5e412b4fe05196eef55--


From nobody Sat Jun 27 01:19:33 2015
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 D06461B3227; Sat, 27 Jun 2015 01:19:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.311
X-Spam-Level: 
X-Spam-Status: No, score=-1.311 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_61=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 NiPvTCAiVsEj; Sat, 27 Jun 2015 01:19:29 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 582CC1B3226; Sat, 27 Jun 2015 01:19:29 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 4C1A21AE047A; Sat, 27 Jun 2015 10:19:27 +0200 (CEST)
Date: Sat, 27 Jun 2015 10:19:27 +0200 (CEST)
Message-Id: <20150627.101927.980507351929498326.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHS5MRbW=aM2pkQdYv3gRtZSiDYo-94+o3eJRvGP7e764g@mail.gmail.com>
References: <CABCOCHRpVfC6yM9q51SnQqM1uJst6pnkhNaW46nxTi+Eb1+LVA@mail.gmail.com> <20150626.105907.1929816701749723248.mbj@tail-f.com> <CABCOCHS5MRbW=aM2pkQdYv3gRtZSiDYo-94+o3eJRvGP7e764g@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/Jho6BGw45pAvd7uwRZYAiz1UBrs>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Sat, 27 Jun 2015 08:19:31 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Fri, Jun 26, 2015 at 1:59 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Andy Bierman <andy@yumaworks.com> wrote:
> > > On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com>
> > wrote:
> > >
> > > > Hi,
> > > >
> > > > I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> > > > to address Y45-04.  Note that YANG 1.1 uses the module
> > > > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > > > crossposting).
> > > >
> > > > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> > > >
> > > > We have a whole bunch of documents that have a normative reference to
> > > > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > > > draft-ietf-netconf-yang-library.  This means we need to finish this
> > > > document pretty soon.
> > > >
> > > > I ran into some issues with ietf-yang-library:
> > > >
> > > >   1.  The leaf "conformance" is of type "boolean".  It is not obvious
> > > >       what "conformance = false" means.  Should we change the name
> > > >       and/or type of this leaf?
> > > >
> > > >
> > >
> > > Here is a proposal.
> >
> > Thanks, I think this is good progress.
> >
> > > There are no restrictions about how many revisions can appear
> > > in order to support existing YANG 1.0 servers, which have
> > > no such restrictions.
> >
> > I don't think this is an important goal.  I also think that this
> > module should have yang-version 1.1 - which all modules will have
> > going forward.
> >
> > But if we combine what both of us have said there are two goals with
> > this module:
> >
> >   1.  Solve the advertisement problem (protocol independent).
> >
> >   2.  Provide a complete listing of all YANG modules used in the
> >       server.
> >
> > I believe that your proposed solution below can solve both these
> > requirements (with some minor tweaks):
> >
> > >     leaf conformance
> > >       mandatory true;
> > >       type enumeration {
> > >          enum implement {
> > >             description
> > >               "The server implements the specified revision of this
> > module";
> >
> > Ok.  We need to clearly define what "implement" a module means.  I
> > have started to do this in 6020bis, so we should provide a ref to that
> > section.
> >
> > >          }
> > >          enum import {
> > >             description
> > >                "The server imports the specified revision of this
> > module";
> >
> > This should be more precise - "the server uses the specified revision
> > of this module for all other modules that import this module without
> > revision".
> >
> > >          }
> > >         enum none {
> > >             description
> > >                "The server does not use the specified revision of this
> > > module.
> > >                  The server only supports retrieval of this YANG
> > module.";
> >
> > I don't think this is correct.  The server would list a typedef only
> > module that is imported by revision here, right?   I think it should
> > be something like "the server uses the specified revision of this
> > module because some other module imports this revision".
> >
> > We should also say:
> >
> >   There MUST NOT be more than one listing with conformance "implemented"
> >   for a given module name.
> >
> 
> 
> This is not true for YANG 1.0, only YANG 1.1

How can you implement two revisions of a module in YANG 1.0?  IMO it
is not possible.

> >   There MUST NOT be more than one listing with conformance "import"
> >   for a given module name.
> >
> >
> There are no restrictions on YANG for what is contained in the same module.
> 
> Module X can have typedefs, groupings, and objects.
> The server implements the objects in X.5.
> According to YANG 1.1, Y45-04:
> Module A can import X.1 for its typedefs.
> Module B can import X.2 for a different version of the typedefs.
> Module C can import X.3 for the groupings in that version.
> 
> The library will have these entries:
> 
>     module=A, revision=1, conformance=implement
>     module=B, revision=1, conformance=implement
>     module=C, revision=1, conformance=implement

Ok.

>     module=X, revision=1, conformance=import
>     module=X, revision=2, conformance=import
>     module=X, revision=3, conformance=import

I would say that all these should be conformace=none.  Or maybe a new
enum if you prefer.  

I have tried to explain the rationale for this, but apparently I have
failed.  The problem is that if module D imports X without revision,
the client needs to be able to determine which revision of X the
server uses.

>     module=X, revision=5, conformance=implement
> 
> 
> 
> > How is a deviation module listed?  Does the conformance leaf matter
> > for such a module?
> >
> >
> I think 'deviation' should be its own enum, not use 'none'

But as you wrote above, deviations can be mixed with other statements,
so a module cannot be classified as "deviation" only.

> The nice thing about enum 'import' is that the server does not need to
> provide deviation statements for any objects in the base module,
> just to import from the module.


/martin


From nobody Sat Jun 27 08:50:10 2015
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 83AC31B2E5C for <netmod@ietfa.amsl.com>; Sat, 27 Jun 2015 08:50:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.378
X-Spam-Level: 
X-Spam-Status: No, score=-1.378 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_61=0.6, RCVD_IN_DNSWL_LOW=-0.7, 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 Sr4iW64ilY4P for <netmod@ietfa.amsl.com>; Sat, 27 Jun 2015 08:50:04 -0700 (PDT)
Received: from mail-la0-f45.google.com (mail-la0-f45.google.com [209.85.215.45]) (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 08D051B2E1E for <netmod@ietf.org>; Sat, 27 Jun 2015 08:50:03 -0700 (PDT)
Received: by lagx9 with SMTP id x9so84922846lag.1 for <netmod@ietf.org>; Sat, 27 Jun 2015 08:50: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=3mVyxaI4kahQokfx89c3T4LN8TjRE0Q2xy4IcpqV7/w=; b=fw3SGTl+0EfyX2+UGpbSvsDZEXH4+cYsWPVACP4vgF1swG8GvSFt4R5YgoPKoqnKWe Jhy3gAKqM6VGq14P5NGUtMI0d/9eRUaWYdlw8wgN+ec2hk43JrqjZAFNSQDH7oic7hv0 BOdi0eRofNrNlzqTG9zN6mdq6jcisV3QGjrbYSKyHWhZprzRosrTvpbeFUGarjIFHg1U uXQdoxaa9kIMsEBImzMulvB8yoZrzdg4iVCm5b1vBBC0vw7rcbP7W86bRiC/tijKA0gT UIsvG/4XxM4Z0J4puK+QnAh0EvXvLSPECZ+BaCVDHYfoBhU242Niw8pU39+bzlRnfAg6 r2dQ==
X-Gm-Message-State: ALoCoQng5mkOyw+En6qNxMEQ3Ble/xsl5fHLel8xNhMaZ6llW7waNn9BKVZlCjk8no0c3wZbKpqe
MIME-Version: 1.0
X-Received: by 10.152.7.65 with SMTP id h1mr6431225laa.33.1435420202337; Sat, 27 Jun 2015 08:50:02 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Sat, 27 Jun 2015 08:50:02 -0700 (PDT)
In-Reply-To: <20150627.101927.980507351929498326.mbj@tail-f.com>
References: <CABCOCHRpVfC6yM9q51SnQqM1uJst6pnkhNaW46nxTi+Eb1+LVA@mail.gmail.com> <20150626.105907.1929816701749723248.mbj@tail-f.com> <CABCOCHS5MRbW=aM2pkQdYv3gRtZSiDYo-94+o3eJRvGP7e764g@mail.gmail.com> <20150627.101927.980507351929498326.mbj@tail-f.com>
Date: Sat, 27 Jun 2015 08:50:02 -0700
Message-ID: <CABCOCHR2Z8z+x-EcRDfqQj+tMmhh8j63bkAD9HQfNvdVJM9=6Q@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a11c27cf043a7b6051981cfc0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/k4bdXYniF1WDz2f0Qekaj9aaY-8>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Sat, 27 Jun 2015 15:50:07 -0000

--001a11c27cf043a7b6051981cfc0
Content-Type: text/plain; charset=UTF-8

On Sat, Jun 27, 2015 at 1:19 AM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Andy Bierman <andy@yumaworks.com> wrote:
> > On Fri, Jun 26, 2015 at 1:59 AM, Martin Bjorklund <mbj@tail-f.com>
> wrote:
> >
> > > Andy Bierman <andy@yumaworks.com> wrote:
> > > > On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com>
> > > wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > I am preparing a new version of draft-ietf-netmod-rfc6020bis in
> order
> > > > > to address Y45-04.  Note that YANG 1.1 uses the module
> > > > > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > > > > crossposting).
> > > > >
> > > > > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> > > > >
> > > > > We have a whole bunch of documents that have a normative reference
> to
> > > > > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > > > > draft-ietf-netconf-yang-library.  This means we need to finish this
> > > > > document pretty soon.
> > > > >
> > > > > I ran into some issues with ietf-yang-library:
> > > > >
> > > > >   1.  The leaf "conformance" is of type "boolean".  It is not
> obvious
> > > > >       what "conformance = false" means.  Should we change the name
> > > > >       and/or type of this leaf?
> > > > >
> > > > >
> > > >
> > > > Here is a proposal.
> > >
> > > Thanks, I think this is good progress.
> > >
> > > > There are no restrictions about how many revisions can appear
> > > > in order to support existing YANG 1.0 servers, which have
> > > > no such restrictions.
> > >
> > > I don't think this is an important goal.  I also think that this
> > > module should have yang-version 1.1 - which all modules will have
> > > going forward.
> > >
> > > But if we combine what both of us have said there are two goals with
> > > this module:
> > >
> > >   1.  Solve the advertisement problem (protocol independent).
> > >
> > >   2.  Provide a complete listing of all YANG modules used in the
> > >       server.
> > >
> > > I believe that your proposed solution below can solve both these
> > > requirements (with some minor tweaks):
> > >
> > > >     leaf conformance
> > > >       mandatory true;
> > > >       type enumeration {
> > > >          enum implement {
> > > >             description
> > > >               "The server implements the specified revision of this
> > > module";
> > >
> > > Ok.  We need to clearly define what "implement" a module means.  I
> > > have started to do this in 6020bis, so we should provide a ref to that
> > > section.
> > >
> > > >          }
> > > >          enum import {
> > > >             description
> > > >                "The server imports the specified revision of this
> > > module";
> > >
> > > This should be more precise - "the server uses the specified revision
> > > of this module for all other modules that import this module without
> > > revision".
>


It is true in YANG 1.1 that the revision used if no import-date
is given in the import-stmt, if the server implements some specific
revision.  If not, then good luck figuring out which one to use.

Is this a new requirement you are adding that all import-without-revision
of X refer to just 1 revision of X?


> >
> > > >          }
> > > >         enum none {
> > > >             description
> > > >                "The server does not use the specified revision of
> this
> > > > module.
> > > >                  The server only supports retrieval of this YANG
> > > module.";
> > >
> > > I don't think this is correct.  The server would list a typedef only
> > > module that is imported by revision here, right?   I think it should
> > > be something like "the server uses the specified revision of this
> > > module because some other module imports this revision".
> > >
> > > We should also say:
> > >
> > >   There MUST NOT be more than one listing with conformance
> "implemented"
> > >   for a given module name.
> > >
> >
> >
> > This is not true for YANG 1.0, only YANG 1.1
>
> How can you implement two revisions of a module in YANG 1.0?  IMO it
> is not possible.
>
> > >   There MUST NOT be more than one listing with conformance "import"
> > >   for a given module name.
> > >
> > >
> > There are no restrictions on YANG for what is contained in the same
> module.
> >
> > Module X can have typedefs, groupings, and objects.
> > The server implements the objects in X.5.
> > According to YANG 1.1, Y45-04:
> > Module A can import X.1 for its typedefs.
> > Module B can import X.2 for a different version of the typedefs.
> > Module C can import X.3 for the groupings in that version.
> >
> > The library will have these entries:
> >
> >     module=A, revision=1, conformance=implement
> >     module=B, revision=1, conformance=implement
> >     module=C, revision=1, conformance=implement
>
> Ok.
>
> >     module=X, revision=1, conformance=import
> >     module=X, revision=2, conformance=import
> >     module=X, revision=3, conformance=import
>
> I would say that all these should be conformace=none.  Or maybe a new
> enum if you prefer.
>
>

The module X example above could all be import-by-revision.
All this example, modules, A, B, and C just use typedefs and groupings
from module A.  Even in RFC 6020 (sec. 7.1.5) it is quite clear that
each of these modules (A, B ,C) can import their own revision of module A.



   When the optional "revision-date" substatement is present, any
   typedef, grouping, extension, feature, and identity referenced by
   definitions in the local module are taken from the specified revision
   of the imported module.  It is an error if the specified revision of
   the imported module does not exist.  If no "revision-date"
   substatement is present, it is undefined from which revision of the
   module they are taken.


Note that this text says import-without-revision does not require the
server to
use any specific revision.  Are you proposing a new YANG 1.1 issue,
and trying to change this paragraph?

In the example, let's say A and B import X by revision but C does not.
This list does not help a client figure out which entry for X was used.
As you pointed out to the WG, the only way to do that would be
to replicate all the nested import-stmts for a module and add
any missing revision dates.




> I have tried to explain the rationale for this, but apparently I have
> failed.  The problem is that if module D imports X without revision,
> the client needs to be able to determine which revision of X the
> server uses.
>
>

No --- the current RFC says that is not possible.
There is no way to do that. What if module X is not implemented
at all, just the typedefs and groupings used?


   module A {
      ...
     import X { revision 2014-01-01; prefix x; }
     revision 2014-06-01;
   }

   module B {
      ...
     import X { prefix x; }
     revision 2015-02-01;
   }

  module C {
      ...
     import X { revision 2015-01-01; prefix x; }
     revision 2015-06-01;
   }


     module=A, revision=2014-06-01, conformance=implement
     module=B, revision=2015-02-01, conformance=implement
     module=C, revision=2015-06-01, conformance=implement
     module=X, revision=2014-01-01, conformance=import
     module=X, revision=2015-06-01, conformance=import


In this case, the client has no idea which revision of X is imported by B.
The library narrows the choice from all revisions to 2 in this example.

What if modules A, B, C, and X import other modules,
which in turn import other modules?  YANG clearly allows
each one to import a specific revision or leave the revision
completely unspecified.

I think you are suggesting a new rule and maybe a new leaf,
sibling of the 'conformance' leaf:

   leaf default-revision {
      type boolean;
      default false;
      description
         "Indicates that this revision is used by the server if this module
          is imported without a specific revision date.";
    }

I can't think of any reason this could not be implemented
in a YANG 1.1 server.  It is quite clear YANG 1.0 imports
cannot be restricted in this way.



> >     module=X, revision=5, conformance=implement
> >
> >
> >
> > > How is a deviation module listed?  Does the conformance leaf matter
> > > for such a module?
> > >
> > >
> > I think 'deviation' should be its own enum, not use 'none'
>
> But as you wrote above, deviations can be mixed with other statements,
> so a module cannot be classified as "deviation" only.
>


It is true that deviations can be combined with regular objects,
except it is not allowed in IETF modules. In practice this does not work
because the regular modules are shared by all the vendor platforms.
The deviations are platform-specific so they are done in their own module.
I would suggest conformance 'none' for deviations.



> > The nice thing about enum 'import' is that the server does not need to
> > provide deviation statements for any objects in the base module,
> > just to import from the module.
>
>
> /martin
>


Andy

--001a11c27cf043a7b6051981cfc0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Sat, Jun 27, 2015 at 1:19 AM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px=
 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-=
left-style:solid;padding-left:1ex">Andy Bierman &lt;<a href=3D"mailto:andy@=
yumaworks.com">andy@yumaworks.com</a>&gt; wrote:<br>
&gt; On Fri, Jun 26, 2015 at 1:59 AM, Martin Bjorklund &lt;<a href=3D"mailt=
o:mbj@tail-f.com">mbj@tail-f.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; Andy Bierman &lt;<a href=3D"mailto:andy@yumaworks.com">andy@yumaw=
orks.com</a>&gt; wrote:<br>
&gt; &gt; &gt; On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund &lt;<a hre=
f=3D"mailto:mbj@tail-f.com">mbj@tail-f.com</a>&gt;<br>
&gt; &gt; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Hi,<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I am preparing a new version of draft-ietf-netmod-rfc60=
20bis in order<br>
&gt; &gt; &gt; &gt; to address Y45-04.=C2=A0 Note that YANG 1.1 uses the mo=
dule<br>
&gt; &gt; &gt; &gt; ietf-yang-library from draft-ietf-netconf-yang-library =
(hence the<br>
&gt; &gt; &gt; &gt; crossposting).<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; [BTW, shouldn&#39;t ietf-yang-library be moved to NETMO=
D?]<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; We have a whole bunch of documents that have a normativ=
e reference to<br>
&gt; &gt; &gt; &gt; draft-ietf-netmod-rfc6020bis, which has a normative ref=
erence to<br>
&gt; &gt; &gt; &gt; draft-ietf-netconf-yang-library.=C2=A0 This means we ne=
ed to finish this<br>
&gt; &gt; &gt; &gt; document pretty soon.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I ran into some issues with ietf-yang-library:<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;=C2=A0 =C2=A01.=C2=A0 The leaf &quot;conformance&quot; i=
s of type &quot;boolean&quot;.=C2=A0 It is not obvious<br>
&gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0what &quot;conformance =3D fa=
lse&quot; means.=C2=A0 Should we change the name<br>
&gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0and/or type of this leaf?<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Here is a proposal.<br>
&gt; &gt;<br>
&gt; &gt; Thanks, I think this is good progress.<br>
&gt; &gt;<br>
&gt; &gt; &gt; There are no restrictions about how many revisions can appea=
r<br>
&gt; &gt; &gt; in order to support existing YANG 1.0 servers, which have<br=
>
&gt; &gt; &gt; no such restrictions.<br>
&gt; &gt;<br>
&gt; &gt; I don&#39;t think this is an important goal.=C2=A0 I also think t=
hat this<br>
&gt; &gt; module should have yang-version 1.1 - which all modules will have=
<br>
&gt; &gt; going forward.<br>
&gt; &gt;<br>
&gt; &gt; But if we combine what both of us have said there are two goals w=
ith<br>
&gt; &gt; this module:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A01.=C2=A0 Solve the advertisement problem (protocol in=
dependent).<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A02.=C2=A0 Provide a complete listing of all YANG modul=
es used in the<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0server.<br>
&gt; &gt;<br>
&gt; &gt; I believe that your proposed solution below can solve both these<=
br>
&gt; &gt; requirements (with some minor tweaks):<br>
&gt; &gt;<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0leaf conformance<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0mandatory true;<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0type enumeration {<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enum implement {<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<b=
r>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;=
The server implements the specified revision of this<br>
&gt; &gt; module&quot;;<br>
&gt; &gt;<br>
&gt; &gt; Ok.=C2=A0 We need to clearly define what &quot;implement&quot; a =
module means.=C2=A0 I<br>
&gt; &gt; have started to do this in 6020bis, so we should provide a ref to=
 that<br>
&gt; &gt; section.<br>
&gt; &gt;<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enum import {<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<b=
r>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot=
;The server imports the specified revision of this<br>
&gt; &gt; module&quot;;<br>
&gt; &gt;<br>
&gt; &gt; This should be more precise - &quot;the server uses the specified=
 revision<br>
&gt; &gt; of this module for all other modules that import this module with=
out<br>
&gt; &gt; revision&quot;.<br></blockquote><div><br></div><div><br></div><di=
v>It is true in YANG 1.1 that the revision used if no import-date</div><div=
>is given in the import-stmt, if the server implements some specific</div><=
div>revision.=C2=A0 If not, then good luck figuring out which one to use.</=
div><div><br></div><div>Is this a new requirement you are adding that all i=
mport-without-revision</div><div>of X refer to just 1 revision of X?</div><=
div><br></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,2=
04);border-left-style:solid;padding-left:1ex">
&gt; &gt;<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum none {<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<b=
r>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot=
;The server does not use the specified revision of this<br>
&gt; &gt; &gt; module.<br>
&gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 The server only supports retrieval of this YANG<br>
&gt; &gt; module.&quot;;<br>
&gt; &gt;<br>
&gt; &gt; I don&#39;t think this is correct.=C2=A0 The server would list a =
typedef only<br>
&gt; &gt; module that is imported by revision here, right?=C2=A0 =C2=A0I th=
ink it should<br>
&gt; &gt; be something like &quot;the server uses the specified revision of=
 this<br>
&gt; &gt; module because some other module imports this revision&quot;.<br>
&gt; &gt;<br>
&gt; &gt; We should also say:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0There MUST NOT be more than one listing with conforma=
nce &quot;implemented&quot;<br>
&gt; &gt;=C2=A0 =C2=A0for a given module name.<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt; This is not true for YANG 1.0, only YANG 1.1<br>
<br>
How can you implement two revisions of a module in YANG 1.0?=C2=A0 IMO it<b=
r>
is not possible.<br>
<br>
&gt; &gt;=C2=A0 =C2=A0There MUST NOT be more than one listing with conforma=
nce &quot;import&quot;<br>
&gt; &gt;=C2=A0 =C2=A0for a given module name.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; There are no restrictions on YANG for what is contained in the same mo=
dule.<br>
&gt;<br>
&gt; Module X can have typedefs, groupings, and objects.<br>
&gt; The server implements the objects in X.5.<br>
&gt; According to YANG 1.1, Y45-04:<br>
&gt; Module A can import X.1 for its typedefs.<br>
&gt; Module B can import X.2 for a different version of the typedefs.<br>
&gt; Module C can import X.3 for the groupings in that version.<br>
&gt;<br>
&gt; The library will have these entries:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0module=3DA, revision=3D1, conformance=3Dimplement<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0module=3DB, revision=3D1, conformance=3Dimplement<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0module=3DC, revision=3D1, conformance=3Dimplement<b=
r>
<br>
Ok.<br>
<br>
&gt;=C2=A0 =C2=A0 =C2=A0module=3DX, revision=3D1, conformance=3Dimport<br>
&gt;=C2=A0 =C2=A0 =C2=A0module=3DX, revision=3D2, conformance=3Dimport<br>
&gt;=C2=A0 =C2=A0 =C2=A0module=3DX, revision=3D3, conformance=3Dimport<br>
<br>
I would say that all these should be conformace=3Dnone.=C2=A0 Or maybe a ne=
w<br>
enum if you prefer.<br>
<br></blockquote><div><br></div><div><br></div><div>The module X example ab=
ove could all be import-by-revision.</div><div>All this example, modules, A=
, B, and C just use typedefs and groupings</div><div>from module A.=C2=A0 E=
ven in RFC 6020 (sec. 7.1.5) it is quite clear that</div><div>each of these=
 modules (A, B ,C) can import their own revision of module A.</div><pre sty=
le=3D"color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><br class=
=3D"">
   When the optional &quot;revision-date&quot; substatement is present, any
   typedef, grouping, extension, feature, and identity referenced by
   definitions in the local module are taken from the specified revision
   of the imported module.  It is an error if the specified revision of
   the imported module does not exist.  If no &quot;revision-date&quot;
   substatement is present, it is undefined from which revision of the
  <span style=3D"font-family:arial,sans-serif"> module they are taken.</spa=
n></pre><div><br></div><div>Note that this text says import-without-revisio=
n does not require the server to</div><div>use any specific revision.=C2=A0=
 Are you proposing a new YANG 1.1 issue,</div><div>and trying to change thi=
s paragraph?</div><div><br></div><div>In the example, let&#39;s say A and B=
 import X by revision but C does not.</div><div>This list does not help a c=
lient figure out which entry for X was used.</div><div>As you pointed out t=
o the WG, the only way to do that would be</div><div>to replicate all the n=
ested import-stmts for a module and add</div><div>any missing revision date=
s.</div><div><br></div><div><br></div><div>=C2=A0</div><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;borde=
r-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
I have tried to explain the rationale for this, but apparently I have<br>
failed.=C2=A0 The problem is that if module D imports X without revision,<b=
r>
the client needs to be able to determine which revision of X the<br>
server uses.<br>
<br></blockquote><div><br></div><div><br></div><div>No --- the current RFC =
says that is not possible.</div><div>There is no way to do that. What if mo=
dule X is not implemented</div><div>at all, just the typedefs and groupings=
 used?</div><div><br></div><div><br></div><div>=C2=A0 =C2=A0module A {</div=
><div>=C2=A0 =C2=A0 =C2=A0 ...</div><div>=C2=A0 =C2=A0 =C2=A0import X { rev=
ision 2014-01-01; prefix x; }</div><div>=C2=A0 =C2=A0 =C2=A0revision 2014-0=
6-01;</div><div>=C2=A0 =C2=A0}</div><div><br></div><div><div>=C2=A0 =C2=A0m=
odule B {</div><div>=C2=A0 =C2=A0 =C2=A0 ...</div><div>=C2=A0 =C2=A0 =C2=A0=
import X { prefix x; }</div><div>=C2=A0 =C2=A0 =C2=A0revision 2015-02-01;<b=
r></div><div>=C2=A0 =C2=A0}</div></div><div><br></div><div><div>=C2=A0 modu=
le C {</div><div>=C2=A0 =C2=A0 =C2=A0 ...</div><div>=C2=A0 =C2=A0 =C2=A0imp=
ort X { revision 2015-01-01; prefix x; }</div><div>=C2=A0 =C2=A0 =C2=A0revi=
sion 2015-06-01;<br></div><div>=C2=A0 =C2=A0}</div></div><div><br></div><di=
v><br></div><div>=C2=A0 =C2=A0 =C2=A0module=3DA, revision=3D2014-06-01, con=
formance=3Dimplement<br>=C2=A0 =C2=A0 =C2=A0module=3DB, revision=3D2015-02-=
01, conformance=3Dimplement<br>=C2=A0 =C2=A0 =C2=A0module=3DC, revision=3D2=
015-06-01, conformance=3Dimplement<br>=C2=A0 =C2=A0 =C2=A0module=3DX, revis=
ion=3D2014-01-01, conformance=3Dimport<br>=C2=A0 =C2=A0 =C2=A0module=3DX, r=
evision=3D2015-06-01, conformance=3Dimport<br><br></div><div><br></div><div=
>In this case, the client has no idea which revision of X is imported by B.=
</div><div>The library narrows the choice from all revisions to 2 in this e=
xample.</div><div><br></div><div>What if modules A, B, C, and X import othe=
r modules,</div><div>which in turn import other modules?=C2=A0 YANG clearly=
 allows</div><div>each one to import a specific revision or leave the revis=
ion</div><div>completely unspecified.=C2=A0</div><div><br></div><div>I thin=
k you are suggesting a new rule and maybe a new leaf,</div><div>sibling of =
the &#39;conformance&#39; leaf:</div><div><br></div><div>=C2=A0 =C2=A0leaf =
default-revision {</div><div>=C2=A0 =C2=A0 =C2=A0 type boolean;</div><div>=
=C2=A0 =C2=A0 =C2=A0 default false;</div><div>=C2=A0 =C2=A0 =C2=A0 descript=
ion</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;Indicates that this r=
evision is used by the server if this module</div><div>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 is imported without a specific revision date.&quot;;</div><d=
iv>=C2=A0 =C2=A0 }</div><div><br></div><div>I can&#39;t think of any reason=
 this could not be implemented</div><div>in a YANG 1.1 server.=C2=A0 It is =
quite clear YANG 1.0 imports</div><div>cannot be restricted in this way.</d=
iv><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(20=
4,204,204);border-left-style:solid;padding-left:1ex">
&gt;=C2=A0 =C2=A0 =C2=A0module=3DX, revision=3D5, conformance=3Dimplement<b=
r>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &gt; How is a deviation module listed?=C2=A0 Does the conformance leaf=
 matter<br>
&gt; &gt; for such a module?<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; I think &#39;deviation&#39; should be its own enum, not use &#39;none&=
#39;<br>
<br>
But as you wrote above, deviations can be mixed with other statements,<br>
so a module cannot be classified as &quot;deviation&quot; only.<br></blockq=
uote><div><br></div><div><br></div><div>It is true that deviations can be c=
ombined with regular objects,</div><div>except it is not allowed in IETF mo=
dules. In practice this does not work</div><div>because the regular modules=
 are shared by all the vendor platforms.</div><div>The deviations are platf=
orm-specific so they are done in their own module.</div><div>I would sugges=
t conformance &#39;none&#39; for deviations.</div><div><br></div><div><br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:so=
lid;padding-left:1ex">
<br>
&gt; The nice thing about enum &#39;import&#39; is that the server does not=
 need to<br>
&gt; provide deviation statements for any objects in the base module,<br>
&gt; just to import from the module.<br>
<span class=3D""><font color=3D"#888888"><br>
<br>
/martin<br>
</font></span></blockquote></div><br></div><div class=3D"gmail_extra"><br><=
/div><div class=3D"gmail_extra">Andy</div><div class=3D"gmail_extra"><br></=
div></div>

--001a11c27cf043a7b6051981cfc0--


From nobody Sun Jun 28 01:11:23 2015
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 258961ACDD0; Sun, 28 Jun 2015 01:11:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.311
X-Spam-Level: 
X-Spam-Status: No, score=-1.311 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_61=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 kudxnq77lsof; Sun, 28 Jun 2015 01:11:18 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id CA2D11ACDCD; Sun, 28 Jun 2015 01:11:17 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id B42C51AE00DA; Sun, 28 Jun 2015 10:11:15 +0200 (CEST)
Date: Sun, 28 Jun 2015 10:11:15 +0200 (CEST)
Message-Id: <20150628.101115.524154870753102418.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHR2Z8z+x-EcRDfqQj+tMmhh8j63bkAD9HQfNvdVJM9=6Q@mail.gmail.com>
References: <CABCOCHS5MRbW=aM2pkQdYv3gRtZSiDYo-94+o3eJRvGP7e764g@mail.gmail.com> <20150627.101927.980507351929498326.mbj@tail-f.com> <CABCOCHR2Z8z+x-EcRDfqQj+tMmhh8j63bkAD9HQfNvdVJM9=6Q@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/WSRtqfqZc6GtjU4pAn2PjbpiyPg>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 28 Jun 2015 08:11:20 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Sat, Jun 27, 2015 at 1:19 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Andy Bierman <andy@yumaworks.com> wrote:
> > > On Fri, Jun 26, 2015 at 1:59 AM, Martin Bjorklund <mbj@tail-f.com>
> > wrote:
> > >
> > > > Andy Bierman <andy@yumaworks.com> wrote:
> > > > > On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com>
> > > > wrote:
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > I am preparing a new version of draft-ietf-netmod-rfc6020bis in
> > order
> > > > > > to address Y45-04.  Note that YANG 1.1 uses the module
> > > > > > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > > > > > crossposting).
> > > > > >
> > > > > > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> > > > > >
> > > > > > We have a whole bunch of documents that have a normative reference
> > to
> > > > > > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > > > > > draft-ietf-netconf-yang-library.  This means we need to finish this
> > > > > > document pretty soon.
> > > > > >
> > > > > > I ran into some issues with ietf-yang-library:
> > > > > >
> > > > > >   1.  The leaf "conformance" is of type "boolean".  It is not
> > obvious
> > > > > >       what "conformance = false" means.  Should we change the name
> > > > > >       and/or type of this leaf?
> > > > > >
> > > > > >
> > > > >
> > > > > Here is a proposal.
> > > >
> > > > Thanks, I think this is good progress.
> > > >
> > > > > There are no restrictions about how many revisions can appear
> > > > > in order to support existing YANG 1.0 servers, which have
> > > > > no such restrictions.
> > > >
> > > > I don't think this is an important goal.  I also think that this
> > > > module should have yang-version 1.1 - which all modules will have
> > > > going forward.
> > > >
> > > > But if we combine what both of us have said there are two goals with
> > > > this module:
> > > >
> > > >   1.  Solve the advertisement problem (protocol independent).
> > > >
> > > >   2.  Provide a complete listing of all YANG modules used in the
> > > >       server.
> > > >
> > > > I believe that your proposed solution below can solve both these
> > > > requirements (with some minor tweaks):
> > > >
> > > > >     leaf conformance
> > > > >       mandatory true;
> > > > >       type enumeration {
> > > > >          enum implement {
> > > > >             description
> > > > >               "The server implements the specified revision of this
> > > > module";
> > > >
> > > > Ok.  We need to clearly define what "implement" a module means.  I
> > > > have started to do this in 6020bis, so we should provide a ref to that
> > > > section.
> > > >
> > > > >          }
> > > > >          enum import {
> > > > >             description
> > > > >                "The server imports the specified revision of this
> > > > module";
> > > >
> > > > This should be more precise - "the server uses the specified revision
> > > > of this module for all other modules that import this module without
> > > > revision".
> >
> 
> 
> It is true in YANG 1.1 that the revision used if no import-date
> is given in the import-stmt, if the server implements some specific
> revision.  If not, then good luck figuring out which one to use.
> 
> Is this a new requirement you are adding that all import-without-revision
> of X refer to just 1 revision of X?

I thought this was discussed and decided.  The idea being that in a
specific server, all import-without-revision of X refers to exactly
one revision of X.



> > > > >          }
> > > > >         enum none {
> > > > >             description
> > > > >                "The server does not use the specified revision of
> > this
> > > > > module.
> > > > >                  The server only supports retrieval of this YANG
> > > > module.";
> > > >
> > > > I don't think this is correct.  The server would list a typedef only
> > > > module that is imported by revision here, right?   I think it should
> > > > be something like "the server uses the specified revision of this
> > > > module because some other module imports this revision".
> > > >
> > > > We should also say:
> > > >
> > > >   There MUST NOT be more than one listing with conformance
> > "implemented"
> > > >   for a given module name.
> > > >
> > >
> > >
> > > This is not true for YANG 1.0, only YANG 1.1
> >
> > How can you implement two revisions of a module in YANG 1.0?  IMO it
> > is not possible.
> >
> > > >   There MUST NOT be more than one listing with conformance "import"
> > > >   for a given module name.
> > > >
> > > >
> > > There are no restrictions on YANG for what is contained in the same
> > module.
> > >
> > > Module X can have typedefs, groupings, and objects.
> > > The server implements the objects in X.5.
> > > According to YANG 1.1, Y45-04:
> > > Module A can import X.1 for its typedefs.
> > > Module B can import X.2 for a different version of the typedefs.
> > > Module C can import X.3 for the groupings in that version.
> > >
> > > The library will have these entries:
> > >
> > >     module=A, revision=1, conformance=implement
> > >     module=B, revision=1, conformance=implement
> > >     module=C, revision=1, conformance=implement
> >
> > Ok.
> >
> > >     module=X, revision=1, conformance=import
> > >     module=X, revision=2, conformance=import
> > >     module=X, revision=3, conformance=import
> >
> > I would say that all these should be conformace=none.  Or maybe a new
> > enum if you prefer.
> >
> >
> 
> The module X example above could all be import-by-revision.
> All this example, modules, A, B, and C just use typedefs and groupings
> from module A.  Even in RFC 6020 (sec. 7.1.5) it is quite clear that
> each of these modules (A, B ,C) can import their own revision of module A.
> 
> 
> 
>    When the optional "revision-date" substatement is present, any
>    typedef, grouping, extension, feature, and identity referenced by
>    definitions in the local module are taken from the specified revision
>    of the imported module.  It is an error if the specified revision of
>    the imported module does not exist.  If no "revision-date"
>    substatement is present, it is undefined from which revision of the
>    module they are taken.
> 
> 
> Note that this text says import-without-revision does not require the
> server to
> use any specific revision.

The text means that from a modelling perspective, the revision is not
fixed.  A server will of course use some revision.

> Are you proposing a new YANG 1.1 issue,
> and trying to change this paragraph?

No.

> In the example, let's say A and B import X by revision but C does not.
> This list does not help a client figure out which entry for X was used.
> As you pointed out to the WG, the only way to do that would be
> to replicate all the nested import-stmts for a module and add
> any missing revision dates.
> 
> 
> 
> 
> > I have tried to explain the rationale for this, but apparently I have
> > failed.  The problem is that if module D imports X without revision,
> > the client needs to be able to determine which revision of X the
> > server uses.
> >
> >
> 
> No --- the current RFC says that is not possible.

I don't think it does.  But more importantly, do you agree that the
server will use one revision of X?   If so, wouldn't it be good to
inform the client about which revision is used?

> There is no way to do that. What if module X is not implemented
> at all, just the typedefs and groupings used?
> 
> 
>    module A {
>       ...
>      import X { revision 2014-01-01; prefix x; }
>      revision 2014-06-01;
>    }
> 
>    module B {
>       ...
>      import X { prefix x; }
>      revision 2015-02-01;
>    }
> 
>   module C {
>       ...
>      import X { revision 2015-01-01; prefix x; }
>      revision 2015-06-01;
>    }
> 
> 
>      module=A, revision=2014-06-01, conformance=implement
>      module=B, revision=2015-02-01, conformance=implement
>      module=C, revision=2015-06-01, conformance=implement
>      module=X, revision=2014-01-01, conformance=import
>      module=X, revision=2015-06-01, conformance=import
> 
> 
> In this case, the client has no idea which revision of X is imported by B.
> The library narrows the choice from all revisions to 2 in this example.

Exactly.  This is the problem I thought we're trying to solve.

How about we introduce conformace=import-by-revision in addition to
conformace=import.  Then the above example would be

      module=X, revision=2014-01-01, conformance=import-by-revision
      module=X, revision=2015-06-01, conformance=import


> What if modules A, B, C, and X import other modules,
> which in turn import other modules?  YANG clearly allows
> each one to import a specific revision or leave the revision
> completely unspecified.
> 
> I think you are suggesting a new rule and maybe a new leaf,
> sibling of the 'conformance' leaf:
> 
>    leaf default-revision {
>       type boolean;
>       default false;
>       description
>          "Indicates that this revision is used by the server if this module
>           is imported without a specific revision date.";
>     }

Yes this would also work, I think.

Or conformance import-by-revision/import or
import/import-default-revision.

> I can't think of any reason this could not be implemented
> in a YANG 1.1 server.  It is quite clear YANG 1.0 imports
> cannot be restricted in this way.
> 
> 
> 
> > >     module=X, revision=5, conformance=implement
> > >
> > >
> > >
> > > > How is a deviation module listed?  Does the conformance leaf matter
> > > > for such a module?
> > > >
> > > >
> > > I think 'deviation' should be its own enum, not use 'none'
> >
> > But as you wrote above, deviations can be mixed with other statements,
> > so a module cannot be classified as "deviation" only.
> >
> 
> 
> It is true that deviations can be combined with regular objects,
> except it is not allowed in IETF modules. In practice this does not work
> because the regular modules are shared by all the vendor platforms.
> The deviations are platform-specific so they are done in their own module.
> I would suggest conformance 'none' for deviations.

Sounds good.


/martin


> 
> 
> 
> > > The nice thing about enum 'import' is that the server does not need to
> > > provide deviation statements for any objects in the base module,
> > > just to import from the module.
> >
> >
> > /martin
> >
> 
> 
> Andy


From nobody Sun Jun 28 07:16:29 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 D6D5A1A1A7B for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 07:16:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.961
X-Spam-Level: 
X-Spam-Status: No, score=-1.961 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 mT4qYDbdXzA9 for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 07:16:25 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id ACCFC1A1A72 for <netmod@ietf.org>; Sun, 28 Jun 2015 07:16:24 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id C2510136E; Sun, 28 Jun 2015 16:16:16 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 5uGXJ4mT1gSZ; Sun, 28 Jun 2015 16:16:21 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Sun, 28 Jun 2015 16:16:16 +0200 (CEST)
Received: from localhost (demetrius1.jacobs-university.de [212.201.44.46]) by hermes.jacobs-university.de (Postfix) with ESMTP id C0BFC2002B; Sun, 28 Jun 2015 16:16:22 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius1.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id AC7gSFJRsAps; Sun, 28 Jun 2015 16:16:21 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 35FAC20013; Sun, 28 Jun 2015 16:16:19 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id D51F634E2A74; Sun, 28 Jun 2015 16:16:17 +0200 (CEST)
Date: Sun, 28 Jun 2015 16:16:17 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Martin Bjorklund <mbj@tail-f.com>
Message-ID: <20150628141617.GA31380@elstar.local>
Mail-Followup-To: Martin Bjorklund <mbj@tail-f.com>, netmod@ietf.org
References: <20150624.121655.768495259505238309.mbj@tail-f.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20150624.121655.768495259505238309.mbj@tail-f.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/fhvZ_oI-Bxeu2bND0qYftWPYQ2U>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 28 Jun 2015 14:16:28 -0000

On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorklund wrote:
> Hi,
> 
> Currently we have an inconsistency in
> draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty in
> unions.  But section 7.8.2 says:
> 
>    A leaf that is part of the key can be of any built-in or derived
>    type, except it MUST NOT be the built-in type "empty".
> 
> This means that this is legal:
> 
>   typedef my-empty {
>     type union {
>       type empty;
>     }
>   }
> 
>   list foo {
>     key id;
>     leaf id {
>       type my-empty;
>     }
>     ...
>   }
> 
> I suggest we allow type empty also in keys:
> 
> NEW:
> 
>    A leaf that is part of the key can be of any built-in or derived
>    type.

And my understanding is that the list foo defined above will never
have an instance, correct? I assume decent compilers will continue to
create warnings when they can decide that a list will never have any
instances. (And yes, there are other ways to construct such lists, so
I am OK with removing a constraint preventing a specific case of such
useless lists.)

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Sun Jun 28 07:42:32 2015
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 168881B2DFD for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 07:42:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 Z9Nui4dX8VE4 for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 07:42:29 -0700 (PDT)
Received: from mail-la0-f42.google.com (mail-la0-f42.google.com [209.85.215.42]) (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 E04471B2DFC for <netmod@ietf.org>; Sun, 28 Jun 2015 07:42:28 -0700 (PDT)
Received: by laar3 with SMTP id r3so37805426laa.0 for <netmod@ietf.org>; Sun, 28 Jun 2015 07:42:27 -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:content-type; bh=LBSYg9txuM5ei/7OVEWzS6SorsHgoQTUKlISIzQAeYc=; b=EbzZZAIN3n87ctYEHfO0cH8Osr3iYbzEz3AuVEz0F4LQzQVSzMc3cUlEjrz0wbpuVD EzBj+Z4PSV3ZbMj1ahuQQ3PEnxAXsK7UdV86n8JL3vSe/yz4OBt+ofdqyKxXd/rSot7L VUrGoZF8SVpzd8C/CsJo+W2Moqq6dTq1eOgaMWzII2FAbZg0RuDPzo2VVWmJNzQ9Fhis iJZP/Z7FAe7TQy51woZouUlkcsRJF7MnyIsWbGkKyHfa6hjtNXvKpFJeX/1LPix4FXPv Cr1mm7r94HLuBGp8+XYcdUv8ovkrfvQBqSazMnpV4C6dbf6biaBXMAyjkJEuO/dirAgs O/mA==
X-Gm-Message-State: ALoCoQnKFaMglJ0o55+BmoG1ufixlstJ1FlFVtuuyM87vPsv74RmU8VuL5ML9GuT67KNn9Xi9Tpl
MIME-Version: 1.0
X-Received: by 10.112.55.207 with SMTP id u15mr10055423lbp.88.1435502547314; Sun, 28 Jun 2015 07:42:27 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Sun, 28 Jun 2015 07:42:27 -0700 (PDT)
In-Reply-To: <20150628141617.GA31380@elstar.local>
References: <20150624.121655.768495259505238309.mbj@tail-f.com> <20150628141617.GA31380@elstar.local>
Date: Sun, 28 Jun 2015 07:42:27 -0700
Message-ID: <CABCOCHTQU1ijCZd+iwTJrvSo1LiqM1JMvFco4LMSbyDL2M9E0Q@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Martin Bjorklund <mbj@tail-f.com>, "netmod@ietf.org" <netmod@ietf.org>
Content-Type: multipart/alternative; boundary=001a113403d868449c051994fb67
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/ooz-mH8VfPMS70bwH5GjID-NtwQ>
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 28 Jun 2015 14:42:31 -0000

--001a113403d868449c051994fb67
Content-Type: text/plain; charset=UTF-8

On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder <
j.schoenwaelder@jacobs-university.de> wrote:

> On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorklund wrote:
> > Hi,
> >
> > Currently we have an inconsistency in
> > draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty in
> > unions.  But section 7.8.2 says:
> >
> >    A leaf that is part of the key can be of any built-in or derived
> >    type, except it MUST NOT be the built-in type "empty".
> >
> > This means that this is legal:
> >
> >   typedef my-empty {
> >     type union {
> >       type empty;
> >     }
> >   }
> >
> >   list foo {
> >     key id;
> >     leaf id {
> >       type my-empty;
> >     }
> >     ...
> >   }
> >
> > I suggest we allow type empty also in keys:
> >
> > NEW:
> >
> >    A leaf that is part of the key can be of any built-in or derived
> >    type.
>
> And my understanding is that the list foo defined above will never
> have an instance, correct? I assume decent compilers will continue to
> create warnings when they can decide that a list will never have any
> instances. (And yes, there are other ways to construct such lists, so
> I am OK with removing a constraint preventing a specific case of such
> useless lists.)
>
>
I think the list can have 1 instance.


/js
>


Andy


>
> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a113403d868449c051994fb67
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder <span dir=3D"ltr=
">&lt;<a href=3D"mailto:j.schoenwaelder@jacobs-university.de" target=3D"_bl=
ank">j.schoenwaelder@jacobs-university.de</a>&gt;</span> wrote:<br><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc s=
olid;padding-left:1ex">On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjo=
rklund wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; Currently we have an inconsistency in<br>
&gt; draft-ietf-netmod-rfc6020bis-05.=C2=A0 With Y35, we allow type empty i=
n<br>
&gt; unions.=C2=A0 But section 7.8.2 says:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 A leaf that is part of the key can be of any built-in or =
derived<br>
&gt;=C2=A0 =C2=A0 type, except it MUST NOT be the built-in type &quot;empty=
&quot;.<br>
&gt;<br>
&gt; This means that this is legal:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0typedef my-empty {<br>
&gt;=C2=A0 =C2=A0 =C2=A0type union {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0type empty;<br>
&gt;=C2=A0 =C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;<br>
&gt;=C2=A0 =C2=A0list foo {<br>
&gt;=C2=A0 =C2=A0 =C2=A0key id;<br>
&gt;=C2=A0 =C2=A0 =C2=A0leaf id {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0type my-empty;<br>
&gt;=C2=A0 =C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0 =C2=A0...<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;<br>
&gt; I suggest we allow type empty also in keys:<br>
&gt;<br>
&gt; NEW:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 A leaf that is part of the key can be of any built-in or =
derived<br>
&gt;=C2=A0 =C2=A0 type.<br>
<br>
And my understanding is that the list foo defined above will never<br>
have an instance, correct? I assume decent compilers will continue to<br>
create warnings when they can decide that a list will never have any<br>
instances. (And yes, there are other ways to construct such lists, so<br>
I am OK with removing a constraint preventing a specific case of such<br>
useless lists.)<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br></font></span></blockquo=
te><div><br></div><div>I think the list can have 1 instance.</div><div><br>=
</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 =
0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D"HOEnZb">=
<font color=3D"#888888">
/js<br></font></span></blockquote><div><br></div><div><br></div><div>Andy</=
div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 =
0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D"HOEnZb">=
<font color=3D"#888888">
<br>
--<br>
Juergen Schoenwaelder=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Jacobs Univer=
sity Bremen gGmbH<br>
Phone: +49 421 200 3587=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Campus Ring 1 | 28=
759 Bremen | Germany<br>
Fax:=C2=A0 =C2=A0+49 421 200 3103=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;<a h=
ref=3D"http://www.jacobs-university.de/" rel=3D"noreferrer" target=3D"_blan=
k">http://www.jacobs-university.de/</a>&gt;<br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</font></span></blockquote></div><br></div></div>

--001a113403d868449c051994fb67--


From nobody Sun Jun 28 08:11:34 2015
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 EBD761A872F for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 08:11:32 -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 Qf8vJF4740dU for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 08:11:31 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 6C9CB1A872A for <netmod@ietf.org>; Sun, 28 Jun 2015 08:11:31 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 81D8F1AE00DA; Sun, 28 Jun 2015 17:11:29 +0200 (CEST)
Date: Sun, 28 Jun 2015 17:11:28 +0200 (CEST)
Message-Id: <20150628.171128.964571351255864502.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHTQU1ijCZd+iwTJrvSo1LiqM1JMvFco4LMSbyDL2M9E0Q@mail.gmail.com>
References: <20150624.121655.768495259505238309.mbj@tail-f.com> <20150628141617.GA31380@elstar.local> <CABCOCHTQU1ijCZd+iwTJrvSo1LiqM1JMvFco4LMSbyDL2M9E0Q@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/5gsalNSww_wBLz9fQxuZ7jr9fCk>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 28 Jun 2015 15:11:33 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder <
> j.schoenwaelder@jacobs-university.de> wrote:
> 
> > On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorklund wrote:
> > > Hi,
> > >
> > > Currently we have an inconsistency in
> > > draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty in
> > > unions.  But section 7.8.2 says:
> > >
> > >    A leaf that is part of the key can be of any built-in or derived
> > >    type, except it MUST NOT be the built-in type "empty".
> > >
> > > This means that this is legal:
> > >
> > >   typedef my-empty {
> > >     type union {
> > >       type empty;
> > >     }
> > >   }
> > >
> > >   list foo {
> > >     key id;
> > >     leaf id {
> > >       type my-empty;
> > >     }
> > >     ...
> > >   }
> > >
> > > I suggest we allow type empty also in keys:
> > >
> > > NEW:
> > >
> > >    A leaf that is part of the key can be of any built-in or derived
> > >    type.
> >
> > And my understanding is that the list foo defined above will never
> > have an instance, correct? I assume decent compilers will continue to
> > create warnings when they can decide that a list will never have any
> > instances. (And yes, there are other ways to construct such lists, so
> > I am OK with removing a constraint preventing a specific case of such
> > useless lists.)
> >
> >
> I think the list can have 1 instance.

Yes.


/martin


From nobody Sun Jun 28 09:21:19 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 B0D001ACD44 for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 09:21:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 4dORhffvL2pn for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 09:21:16 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B80B31ACD3F for <netmod@ietf.org>; Sun, 28 Jun 2015 09:21:15 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id EBBFAF8F; Sun, 28 Jun 2015 18:21:07 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 9Wu9jktEvCsW; Sun, 28 Jun 2015 18:21:12 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Sun, 28 Jun 2015 18:21:07 +0200 (CEST)
Received: from localhost (demetrius1.jacobs-university.de [212.201.44.46]) by hermes.jacobs-university.de (Postfix) with ESMTP id 7A82F2002B; Sun, 28 Jun 2015 18:21:13 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius1.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id 4XI1eNtbI2Zm; Sun, 28 Jun 2015 18:21:12 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 0D4DE20013; Sun, 28 Jun 2015 18:21:11 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 91A0734E2B03; Sun, 28 Jun 2015 18:21:10 +0200 (CEST)
Date: Sun, 28 Jun 2015 18:21:10 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Martin Bjorklund <mbj@tail-f.com>
Message-ID: <20150628162109.GA31577@elstar.local>
Mail-Followup-To: Martin Bjorklund <mbj@tail-f.com>, andy@yumaworks.com, netmod@ietf.org
References: <20150624.121655.768495259505238309.mbj@tail-f.com> <20150628141617.GA31380@elstar.local> <CABCOCHTQU1ijCZd+iwTJrvSo1LiqM1JMvFco4LMSbyDL2M9E0Q@mail.gmail.com> <20150628.171128.964571351255864502.mbj@tail-f.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20150628.171128.964571351255864502.mbj@tail-f.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/ws7_apls2PwNyxkum7sqWTpJnsM>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 28 Jun 2015 16:21:17 -0000

On Sun, Jun 28, 2015 at 05:11:28PM +0200, Martin Bjorklund wrote:
> Andy Bierman <andy@yumaworks.com> wrote:
> > On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder <
> > j.schoenwaelder@jacobs-university.de> wrote:
> > 
> > > On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorklund wrote:
> > > > Hi,
> > > >
> > > > Currently we have an inconsistency in
> > > > draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty in
> > > > unions.  But section 7.8.2 says:
> > > >
> > > >    A leaf that is part of the key can be of any built-in or derived
> > > >    type, except it MUST NOT be the built-in type "empty".
> > > >
> > > > This means that this is legal:
> > > >
> > > >   typedef my-empty {
> > > >     type union {
> > > >       type empty;
> > > >     }
> > > >   }
> > > >
> > > >   list foo {
> > > >     key id;
> > > >     leaf id {
> > > >       type my-empty;
> > > >     }
> > > >     ...
> > > >   }
> > > >
> > > > I suggest we allow type empty also in keys:
> > > >
> > > > NEW:
> > > >
> > > >    A leaf that is part of the key can be of any built-in or derived
> > > >    type.
> > >
> > > And my understanding is that the list foo defined above will never
> > > have an instance, correct? I assume decent compilers will continue to
> > > create warnings when they can decide that a list will never have any
> > > instances. (And yes, there are other ways to construct such lists, so
> > > I am OK with removing a constraint preventing a specific case of such
> > > useless lists.)
> > >
> > >
> > I think the list can have 1 instance.
> 
> Yes.
>

OK. I guess RFC 6020 section 9.11.2. confused me. Is the lexical
representation not simply an empty string? I mean, it seems that

  <foo>
    <id></id>
  </foo>

would be as valid as

  <foo><id/></foo>

or am I confused? And in JSON it would be this?

   "foo": [
    {
      "id": [null]
    }
    ]

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Sun Jun 28 11:55:46 2015
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 88ABD1A02BE for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 11:55:44 -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 DR5dx4ZSb3Wx for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 11:55:43 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 1F0A21A026C for <netmod@ietf.org>; Sun, 28 Jun 2015 11:55:43 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id B9A001AE00DA; Sun, 28 Jun 2015 20:55:40 +0200 (CEST)
Date: Sun, 28 Jun 2015 20:55:39 +0200 (CEST)
Message-Id: <20150628.205539.1981412660798506668.mbj@tail-f.com>
To: j.schoenwaelder@jacobs-university.de
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <20150628162109.GA31577@elstar.local>
References: <CABCOCHTQU1ijCZd+iwTJrvSo1LiqM1JMvFco4LMSbyDL2M9E0Q@mail.gmail.com> <20150628.171128.964571351255864502.mbj@tail-f.com> <20150628162109.GA31577@elstar.local>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/MLuFveImKTn8g4UWQJYie2JaUf4>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 28 Jun 2015 18:55:44 -0000

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> On Sun, Jun 28, 2015 at 05:11:28PM +0200, Martin Bjorklund wrote:
> > Andy Bierman <andy@yumaworks.com> wrote:
> > > On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder <
> > > j.schoenwaelder@jacobs-university.de> wrote:
> > > 
> > > > On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorklund wrote:
> > > > > Hi,
> > > > >
> > > > > Currently we have an inconsistency in
> > > > > draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty in
> > > > > unions.  But section 7.8.2 says:
> > > > >
> > > > >    A leaf that is part of the key can be of any built-in or derived
> > > > >    type, except it MUST NOT be the built-in type "empty".
> > > > >
> > > > > This means that this is legal:
> > > > >
> > > > >   typedef my-empty {
> > > > >     type union {
> > > > >       type empty;
> > > > >     }
> > > > >   }
> > > > >
> > > > >   list foo {
> > > > >     key id;
> > > > >     leaf id {
> > > > >       type my-empty;
> > > > >     }
> > > > >     ...
> > > > >   }
> > > > >
> > > > > I suggest we allow type empty also in keys:
> > > > >
> > > > > NEW:
> > > > >
> > > > >    A leaf that is part of the key can be of any built-in or derived
> > > > >    type.
> > > >
> > > > And my understanding is that the list foo defined above will never
> > > > have an instance, correct? I assume decent compilers will continue to
> > > > create warnings when they can decide that a list will never have any
> > > > instances. (And yes, there are other ways to construct such lists, so
> > > > I am OK with removing a constraint preventing a specific case of such
> > > > useless lists.)
> > > >
> > > >
> > > I think the list can have 1 instance.
> > 
> > Yes.
> >
> 
> OK. I guess RFC 6020 section 9.11.2. confused me. Is the lexical
> representation not simply an empty string?

No, since the empty string in JSON is "".

A leaf of type empty doesn't have a value, thus there is no lexical
represention.

> I mean, it seems that
> 
>   <foo>
>     <id></id>
>   </foo>
> 
> would be as valid as
> 
>   <foo><id/></foo>

Correct.

> or am I confused? And in JSON it would be this?
> 
>    "foo": [
>     {
>       "id": [null]
>     }
>     ]

I think this is correct.


/martin


From nobody Sun Jun 28 12:10:40 2015
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 1B78A1A1A0C for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 12:10:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 Z2mTb-k9tEhY for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 12:10:37 -0700 (PDT)
Received: from mail-la0-f45.google.com (mail-la0-f45.google.com [209.85.215.45]) (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 AD05F1A03A6 for <netmod@ietf.org>; Sun, 28 Jun 2015 12:10:36 -0700 (PDT)
Received: by laar3 with SMTP id r3so41284840laa.0 for <netmod@ietf.org>; Sun, 28 Jun 2015 12:10:35 -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=RwlpXfremhaq3+6qIbdUmUdw5K5qXlZGRPNS36Z7wqw=; b=b0b7IuAVSBPqQLW/lskKtiDBhjoUF9IiBtRGVL2ld/FsQMzQNIHw6iFhcai58l9jNn A0Pl/LPHbkmXjoKcuK0wiHuu14oJl1Gf/84NRmjwXPxq5/38clo5Pfp+gZcZQFFJ6+Di nIzJHLpYW18GjFqlYeqW27+NuU41VjI1Z208c4lgRHhZVPpq6tpIums7lhUhePGgHirL ssgcDPZISUlpwMOJXYOm+iZgfxZ42JQYw8R7D0nSARMCE5trhoyrv7SoIXQfbQdA95Aq t3ZYxOaIdxngBFmB0WKr4Rb8oMRy5fh1PExNHYzhHmUpnnsvz5Y9vdYuB665j/q0QrC2 fIdA==
X-Gm-Message-State: ALoCoQkX+X3ILQlRq359nbLA5UYNIYUJYhnPrwI9PR7JXY+7cPdRgULkofIMMVwk6GUeNPJY58LR
MIME-Version: 1.0
X-Received: by 10.152.121.99 with SMTP id lj3mr10527408lab.37.1435518635244; Sun, 28 Jun 2015 12:10:35 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Sun, 28 Jun 2015 12:10:35 -0700 (PDT)
In-Reply-To: <20150628.205539.1981412660798506668.mbj@tail-f.com>
References: <CABCOCHTQU1ijCZd+iwTJrvSo1LiqM1JMvFco4LMSbyDL2M9E0Q@mail.gmail.com> <20150628.171128.964571351255864502.mbj@tail-f.com> <20150628162109.GA31577@elstar.local> <20150628.205539.1981412660798506668.mbj@tail-f.com>
Date: Sun, 28 Jun 2015 12:10:35 -0700
Message-ID: <CABCOCHSCvn=Ue3SL_BWO4zFHNPZfPUjnpVb62Ri=q8ASgkheVg@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=089e0115e88252964a051998ba50
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/XoH-ba0QeyZrWOKy-cIipMGzvDc>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 28 Jun 2015 19:10:39 -0000

--089e0115e88252964a051998ba50
Content-Type: text/plain; charset=UTF-8

On Sun, Jun 28, 2015 at 11:55 AM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> > On Sun, Jun 28, 2015 at 05:11:28PM +0200, Martin Bjorklund wrote:
> > > Andy Bierman <andy@yumaworks.com> wrote:
> > > > On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder <
> > > > j.schoenwaelder@jacobs-university.de> wrote:
> > > >
> > > > > On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorklund wrote:
> > > > > > Hi,
> > > > > >
> > > > > > Currently we have an inconsistency in
> > > > > > draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty
> in
> > > > > > unions.  But section 7.8.2 says:
> > > > > >
> > > > > >    A leaf that is part of the key can be of any built-in or
> derived
> > > > > >    type, except it MUST NOT be the built-in type "empty".
> > > > > >
> > > > > > This means that this is legal:
> > > > > >
> > > > > >   typedef my-empty {
> > > > > >     type union {
> > > > > >       type empty;
> > > > > >     }
> > > > > >   }
> > > > > >
> > > > > >   list foo {
> > > > > >     key id;
> > > > > >     leaf id {
> > > > > >       type my-empty;
> > > > > >     }
> > > > > >     ...
> > > > > >   }
> > > > > >
> > > > > > I suggest we allow type empty also in keys:
> > > > > >
> > > > > > NEW:
> > > > > >
> > > > > >    A leaf that is part of the key can be of any built-in or
> derived
> > > > > >    type.
> > > > >
> > > > > And my understanding is that the list foo defined above will never
> > > > > have an instance, correct? I assume decent compilers will continue
> to
> > > > > create warnings when they can decide that a list will never have
> any
> > > > > instances. (And yes, there are other ways to construct such lists,
> so
> > > > > I am OK with removing a constraint preventing a specific case of
> such
> > > > > useless lists.)
> > > > >
> > > > >
> > > > I think the list can have 1 instance.
> > >
> > > Yes.
> > >
> >
> > OK. I guess RFC 6020 section 9.11.2. confused me. Is the lexical
> > representation not simply an empty string?
>
> No, since the empty string in JSON is "".
>
> A leaf of type empty doesn't have a value, thus there is no lexical
> represention.
>
> > I mean, it seems that
> >
> >   <foo>
> >     <id></id>
> >   </foo>
> >
> > would be as valid as
> >
> >   <foo><id/></foo>
>
> Correct.
>
> > or am I confused? And in JSON it would be this?
> >
> >    "foo": [
> >     {
> >       "id": [null]
> >     }
> >     ]
>
> I think this is correct.
>
>
So you are saying that XML and JSON could encode the
following leaf differently:

   leaf broken {
       type union {
          type string;
          type empty;
       }
     }

If set with XML then an empty string or empty type look the same:

    <broken></broken>  OR <broken />

Both will be treated as a string if encoded in XML.
But in JSON, the encoding will be [null] or "",
and the server will save the type as either string or empty.

The server remembers the type that wins when a union is
parsed, so the leaf will be rendered correctly.  This is important
even for XML (e.g., identityref, instance-identifier, xpath1.0).


> /martin
>


Andy

--089e0115e88252964a051998ba50
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Sun, Jun 28, 2015 at 11:55 AM, Martin Bjorklund <span dir=3D"ltr">&l=
t;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt=
;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 =
.8ex;border-left:1px #ccc solid;padding-left:1ex">Juergen Schoenwaelder &lt=
;<a href=3D"mailto:j.schoenwaelder@jacobs-university.de">j.schoenwaelder@ja=
cobs-university.de</a>&gt; wrote:<br>
&gt; On Sun, Jun 28, 2015 at 05:11:28PM +0200, Martin Bjorklund wrote:<br>
&gt; &gt; Andy Bierman &lt;<a href=3D"mailto:andy@yumaworks.com">andy@yumaw=
orks.com</a>&gt; wrote:<br>
&gt; &gt; &gt; On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder &lt;<=
br>
&gt; &gt; &gt; <a href=3D"mailto:j.schoenwaelder@jacobs-university.de">j.sc=
hoenwaelder@jacobs-university.de</a>&gt; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorkl=
und wrote:<br>
&gt; &gt; &gt; &gt; &gt; Hi,<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Currently we have an inconsistency in<br>
&gt; &gt; &gt; &gt; &gt; draft-ietf-netmod-rfc6020bis-05.=C2=A0 With Y35, w=
e allow type empty in<br>
&gt; &gt; &gt; &gt; &gt; unions.=C2=A0 But section 7.8.2 says:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 A leaf that is part of the key can be=
 of any built-in or derived<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 type, except it MUST NOT be the built=
-in type &quot;empty&quot;.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; This means that this is legal:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0typedef my-empty {<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0type union {<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0type empty;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0}<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0}<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0list foo {<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0key id;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0leaf id {<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0type my-empty;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0}<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0...<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0}<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; I suggest we allow type empty also in keys:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; NEW:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 A leaf that is part of the key can be=
 of any built-in or derived<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 type.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; And my understanding is that the list foo defined above=
 will never<br>
&gt; &gt; &gt; &gt; have an instance, correct? I assume decent compilers wi=
ll continue to<br>
&gt; &gt; &gt; &gt; create warnings when they can decide that a list will n=
ever have any<br>
&gt; &gt; &gt; &gt; instances. (And yes, there are other ways to construct =
such lists, so<br>
&gt; &gt; &gt; &gt; I am OK with removing a constraint preventing a specifi=
c case of such<br>
&gt; &gt; &gt; &gt; useless lists.)<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; I think the list can have 1 instance.<br>
&gt; &gt;<br>
&gt; &gt; Yes.<br>
&gt; &gt;<br>
&gt;<br>
&gt; OK. I guess RFC 6020 section 9.11.2. confused me. Is the lexical<br>
&gt; representation not simply an empty string?<br>
<br>
No, since the empty string in JSON is &quot;&quot;.<br>
<br>
A leaf of type empty doesn&#39;t have a value, thus there is no lexical<br>
represention.<br>
<br>
&gt; I mean, it seems that<br>
&gt;<br>
&gt;=C2=A0 =C2=A0&lt;foo&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&lt;id&gt;&lt;/id&gt;<br>
&gt;=C2=A0 =C2=A0&lt;/foo&gt;<br>
&gt;<br>
&gt; would be as valid as<br>
&gt;<br>
&gt;=C2=A0 =C2=A0&lt;foo&gt;&lt;id/&gt;&lt;/foo&gt;<br>
<br>
Correct.<br>
<br>
&gt; or am I confused? And in JSON it would be this?<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 &quot;foo&quot;: [<br>
&gt;=C2=A0 =C2=A0 =C2=A0{<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;id&quot;: [null]<br>
&gt;=C2=A0 =C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0 =C2=A0]<br>
<br>
I think this is correct.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br></font></span></blockquo=
te><div><br></div><div>So you are saying that XML and JSON could encode the=
</div><div>following leaf differently:</div><div><br></div><div>=C2=A0 =C2=
=A0leaf broken {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0type union {</div><di=
v>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 type string;</div><div>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 type empty;=C2=A0</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0}</div><div>=C2=A0 =C2=A0 =C2=A0}</div><div><br></div><div>If set with X=
ML then an empty string or empty type look the same:</div><div><br></div><d=
iv>=C2=A0 =C2=A0 &lt;broken&gt;&lt;/broken&gt; =C2=A0OR &lt;broken /&gt;</d=
iv><div><br></div><div>Both will be treated as a string if encoded in XML.<=
/div><div>But in JSON, the encoding will be [null] or &quot;&quot;,</div><d=
iv>and the server will save the type as either string or empty.</div><div><=
br></div><div>The server remembers the type that wins when a union is</div>=
<div>parsed, so the leaf will be rendered correctly.=C2=A0 This is importan=
t</div><div>even for XML (e.g., identityref, instance-identifier, xpath1.0)=
.</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0=
 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D"HOEnZb"=
><font color=3D"#888888">
<br>
/martin<br>
</font></span></blockquote></div><br></div><div class=3D"gmail_extra"><br><=
/div><div class=3D"gmail_extra">Andy</div><div class=3D"gmail_extra"><br></=
div></div>

--089e0115e88252964a051998ba50--


From nobody Sun Jun 28 12:14:46 2015
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 9569C1A1A8A for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 12:14:44 -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 wDf2f8NmIqfM for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 12:14:43 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 3683B1A1A87 for <netmod@ietf.org>; Sun, 28 Jun 2015 12:14:43 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 74F0C1AE00DA; Sun, 28 Jun 2015 21:14:42 +0200 (CEST)
Date: Sun, 28 Jun 2015 21:14:42 +0200 (CEST)
Message-Id: <20150628.211442.1371976531574560504.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHSCvn=Ue3SL_BWO4zFHNPZfPUjnpVb62Ri=q8ASgkheVg@mail.gmail.com>
References: <20150628162109.GA31577@elstar.local> <20150628.205539.1981412660798506668.mbj@tail-f.com> <CABCOCHSCvn=Ue3SL_BWO4zFHNPZfPUjnpVb62Ri=q8ASgkheVg@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/0ROvSosPESEOx97igGSVkD1gvBo>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 28 Jun 2015 19:14:44 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Sun, Jun 28, 2015 at 11:55 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> > > On Sun, Jun 28, 2015 at 05:11:28PM +0200, Martin Bjorklund wrote:
> > > > Andy Bierman <andy@yumaworks.com> wrote:
> > > > > On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder <
> > > > > j.schoenwaelder@jacobs-university.de> wrote:
> > > > >
> > > > > > On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorklund wrote:
> > > > > > > Hi,
> > > > > > >
> > > > > > > Currently we have an inconsistency in
> > > > > > > draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty
> > in
> > > > > > > unions.  But section 7.8.2 says:
> > > > > > >
> > > > > > >    A leaf that is part of the key can be of any built-in or
> > derived
> > > > > > >    type, except it MUST NOT be the built-in type "empty".
> > > > > > >
> > > > > > > This means that this is legal:
> > > > > > >
> > > > > > >   typedef my-empty {
> > > > > > >     type union {
> > > > > > >       type empty;
> > > > > > >     }
> > > > > > >   }
> > > > > > >
> > > > > > >   list foo {
> > > > > > >     key id;
> > > > > > >     leaf id {
> > > > > > >       type my-empty;
> > > > > > >     }
> > > > > > >     ...
> > > > > > >   }
> > > > > > >
> > > > > > > I suggest we allow type empty also in keys:
> > > > > > >
> > > > > > > NEW:
> > > > > > >
> > > > > > >    A leaf that is part of the key can be of any built-in or
> > derived
> > > > > > >    type.
> > > > > >
> > > > > > And my understanding is that the list foo defined above will never
> > > > > > have an instance, correct? I assume decent compilers will continue
> > to
> > > > > > create warnings when they can decide that a list will never have
> > any
> > > > > > instances. (And yes, there are other ways to construct such lists,
> > so
> > > > > > I am OK with removing a constraint preventing a specific case of
> > such
> > > > > > useless lists.)
> > > > > >
> > > > > >
> > > > > I think the list can have 1 instance.
> > > >
> > > > Yes.
> > > >
> > >
> > > OK. I guess RFC 6020 section 9.11.2. confused me. Is the lexical
> > > representation not simply an empty string?
> >
> > No, since the empty string in JSON is "".
> >
> > A leaf of type empty doesn't have a value, thus there is no lexical
> > represention.
> >
> > > I mean, it seems that
> > >
> > >   <foo>
> > >     <id></id>
> > >   </foo>
> > >
> > > would be as valid as
> > >
> > >   <foo><id/></foo>
> >
> > Correct.
> >
> > > or am I confused? And in JSON it would be this?
> > >
> > >    "foo": [
> > >     {
> > >       "id": [null]
> > >     }
> > >     ]
> >
> > I think this is correct.
> >
> >
> So you are saying that XML and JSON could encode the
> following leaf differently:
> 
>    leaf broken {
>        type union {
>           type string;
>           type empty;
>        }
>      }
> 
> If set with XML then an empty string or empty type look the same:
> 
>     <broken></broken>  OR <broken />
> 
> Both will be treated as a string if encoded in XML.
> But in JSON, the encoding will be [null] or "",
> and the server will save the type as either string or empty.

Same problem with this:

  leaf broken2 {
    type union {
      type string;
      type int32;
    }
  }

If set via XML <broken2>42</broken2> will be a string, but in JSON,
"broken2": 42 is an int32.


/martin

> The server remembers the type that wins when a union is
> parsed, so the leaf will be rendered correctly.  This is important
> even for XML (e.g., identityref, instance-identifier, xpath1.0).
> 
> 
> > /martin
> >
> 
> 
> Andy


From nobody Sun Jun 28 12:18:07 2015
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 2FDBF1A1A1D for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 12:18:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 8hPKzKtsY7Rh for <netmod@ietfa.amsl.com>; Sun, 28 Jun 2015 12:18:04 -0700 (PDT)
Received: from mail-la0-f53.google.com (mail-la0-f53.google.com [209.85.215.53]) (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 8CE8E1A046D for <netmod@ietf.org>; Sun, 28 Jun 2015 12:18:03 -0700 (PDT)
Received: by lacny3 with SMTP id ny3so103146031lac.3 for <netmod@ietf.org>; Sun, 28 Jun 2015 12:18: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=f+U1Rv9hbGPrjLaqYmsiNq0xjhcNxB9Epz0rW/NuSxU=; b=Bzyytfzsp1mEtcyksZk2jRQQs4DSnBumAxg/Gp7bz8fyJ8+bYzWJQozrFzliBu2ULB quQta6vhJEAEZzmgdJ+Wzitlg/D/VrdpHPrvqKRzRCXLqneq/zaIhSgvppHTWtuIfKuB G1dxIefVLxAqQperJGxCkzij6rNK4J41DbupqaRnlSChpMfsLwI0k69vOntibUQqjmWK +98ur25z2GrbNWY2vkfOuE26m2tEavkt+kw36f4hiNuGqZm7KXVKi8KcReREbtQQv+eC wojYOWAVWWAgKM5dLheLzt3Vcxibf2L9Z4/zaK3rSnexNaxBJC2feQlywJRXiGXBJlMi 8zRQ==
X-Gm-Message-State: ALoCoQl2mA5xUbSb/SZmpG2MVAwPqOr+h9cmZRR72Uaoh5ByhgKZTAc/VFywNI2NT+zwofKcVPrV
MIME-Version: 1.0
X-Received: by 10.152.36.161 with SMTP id r1mr10843133laj.88.1435519081923; Sun, 28 Jun 2015 12:18:01 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Sun, 28 Jun 2015 12:18:01 -0700 (PDT)
In-Reply-To: <CABCOCHSCvn=Ue3SL_BWO4zFHNPZfPUjnpVb62Ri=q8ASgkheVg@mail.gmail.com>
References: <CABCOCHTQU1ijCZd+iwTJrvSo1LiqM1JMvFco4LMSbyDL2M9E0Q@mail.gmail.com> <20150628.171128.964571351255864502.mbj@tail-f.com> <20150628162109.GA31577@elstar.local> <20150628.205539.1981412660798506668.mbj@tail-f.com> <CABCOCHSCvn=Ue3SL_BWO4zFHNPZfPUjnpVb62Ri=q8ASgkheVg@mail.gmail.com>
Date: Sun, 28 Jun 2015 12:18:01 -0700
Message-ID: <CABCOCHTuLMYP31AsNffM7SwdQ4UweS_BXkOusY0pNA9RPsifKA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=089e0158b5e4f25ba1051998d42e
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/xi04omVJbkFPytNh1qEcJCnFqe4>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Sun, 28 Jun 2015 19:18:06 -0000

--089e0158b5e4f25ba1051998d42e
Content-Type: text/plain; charset=UTF-8

Hi,

Notice we already have this XML vs. JSON
encoding problem in RESTCONF for numbers

  leaf broken2 {
     type union {
        type string;
        type int32;
     }
  }


In XML, <broken2>42<broken2> will always resolve to a string
in the example above. In JSON it will be string or int32.

In order for a union to work correctly in all encodings
it must be specified so the types are ordered from most specific
to most generic.  This is not any rule in YANG, but
maybe it should be a rule (YANG guidelines draft?)



Andy





On Sun, Jun 28, 2015 at 12:10 PM, Andy Bierman <andy@yumaworks.com> wrote:

>
>
> On Sun, Jun 28, 2015 at 11:55 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
>
>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
>> > On Sun, Jun 28, 2015 at 05:11:28PM +0200, Martin Bjorklund wrote:
>> > > Andy Bierman <andy@yumaworks.com> wrote:
>> > > > On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder <
>> > > > j.schoenwaelder@jacobs-university.de> wrote:
>> > > >
>> > > > > On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorklund wrote:
>> > > > > > Hi,
>> > > > > >
>> > > > > > Currently we have an inconsistency in
>> > > > > > draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty
>> in
>> > > > > > unions.  But section 7.8.2 says:
>> > > > > >
>> > > > > >    A leaf that is part of the key can be of any built-in or
>> derived
>> > > > > >    type, except it MUST NOT be the built-in type "empty".
>> > > > > >
>> > > > > > This means that this is legal:
>> > > > > >
>> > > > > >   typedef my-empty {
>> > > > > >     type union {
>> > > > > >       type empty;
>> > > > > >     }
>> > > > > >   }
>> > > > > >
>> > > > > >   list foo {
>> > > > > >     key id;
>> > > > > >     leaf id {
>> > > > > >       type my-empty;
>> > > > > >     }
>> > > > > >     ...
>> > > > > >   }
>> > > > > >
>> > > > > > I suggest we allow type empty also in keys:
>> > > > > >
>> > > > > > NEW:
>> > > > > >
>> > > > > >    A leaf that is part of the key can be of any built-in or
>> derived
>> > > > > >    type.
>> > > > >
>> > > > > And my understanding is that the list foo defined above will never
>> > > > > have an instance, correct? I assume decent compilers will
>> continue to
>> > > > > create warnings when they can decide that a list will never have
>> any
>> > > > > instances. (And yes, there are other ways to construct such
>> lists, so
>> > > > > I am OK with removing a constraint preventing a specific case of
>> such
>> > > > > useless lists.)
>> > > > >
>> > > > >
>> > > > I think the list can have 1 instance.
>> > >
>> > > Yes.
>> > >
>> >
>> > OK. I guess RFC 6020 section 9.11.2. confused me. Is the lexical
>> > representation not simply an empty string?
>>
>> No, since the empty string in JSON is "".
>>
>> A leaf of type empty doesn't have a value, thus there is no lexical
>> represention.
>>
>> > I mean, it seems that
>> >
>> >   <foo>
>> >     <id></id>
>> >   </foo>
>> >
>> > would be as valid as
>> >
>> >   <foo><id/></foo>
>>
>> Correct.
>>
>> > or am I confused? And in JSON it would be this?
>> >
>> >    "foo": [
>> >     {
>> >       "id": [null]
>> >     }
>> >     ]
>>
>> I think this is correct.
>>
>>
> So you are saying that XML and JSON could encode the
> following leaf differently:
>
>    leaf broken {
>        type union {
>           type string;
>           type empty;
>        }
>      }
>
> If set with XML then an empty string or empty type look the same:
>
>     <broken></broken>  OR <broken />
>
> Both will be treated as a string if encoded in XML.
> But in JSON, the encoding will be [null] or "",
> and the server will save the type as either string or empty.
>
> The server remembers the type that wins when a union is
> parsed, so the leaf will be rendered correctly.  This is important
> even for XML (e.g., identityref, instance-identifier, xpath1.0).
>
>
>> /martin
>>
>
>
> Andy
>
>

--089e0158b5e4f25ba1051998d42e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<div><br></div><div>Notice we already have this XML vs.=
 JSON</div><div>encoding problem in RESTCONF for numbers</div><div><br></di=
v><div>=C2=A0 leaf broken2 {</div><div>=C2=A0 =C2=A0 =C2=A0type union {</di=
v><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 type string;</div><div>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 type int32;</div><div>=C2=A0 =C2=A0 =C2=A0}</div><div>=C2=A0 }</=
div><div><br></div><div><br></div><div>In XML, &lt;broken2&gt;42&lt;broken2=
&gt; will always resolve to a string</div><div>in the example above. In JSO=
N it will be string or int32.</div><div><br></div><div>In order for a union=
 to work correctly in all encodings</div><div>it must be specified so the t=
ypes are ordered from most specific</div><div>to most generic.=C2=A0 This i=
s not any rule in YANG, but</div><div>maybe it should be a rule (YANG guide=
lines draft?)</div><div><br></div><div><br></div><div><br></div><div>Andy</=
div><div><br></div><div><br></div><div><br></div><div><br></div></div><div =
class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Sun, Jun 28, 2015 a=
t 12:10 PM, Andy Bierman <span dir=3D"ltr">&lt;<a href=3D"mailto:andy@yumaw=
orks.com" target=3D"_blank">andy@yumaworks.com</a>&gt;</span> wrote:<br><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #=
ccc solid;padding-left:1ex"><div dir=3D"ltr"><br><div class=3D"gmail_extra"=
><br><div class=3D"gmail_quote">On Sun, Jun 28, 2015 at 11:55 AM, Martin Bj=
orklund <span dir=3D"ltr">&lt;<a href=3D"mailto:mbj@tail-f.com" target=3D"_=
blank">mbj@tail-f.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_q=
uote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1e=
x">Juergen Schoenwaelder &lt;<a href=3D"mailto:j.schoenwaelder@jacobs-unive=
rsity.de" target=3D"_blank">j.schoenwaelder@jacobs-university.de</a>&gt; wr=
ote:<br>
&gt; On Sun, Jun 28, 2015 at 05:11:28PM +0200, Martin Bjorklund wrote:<br>
&gt; &gt; Andy Bierman &lt;<a href=3D"mailto:andy@yumaworks.com" target=3D"=
_blank">andy@yumaworks.com</a>&gt; wrote:<br>
&gt; &gt; &gt; On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder &lt;<=
br>
&gt; &gt; &gt; <a href=3D"mailto:j.schoenwaelder@jacobs-university.de" targ=
et=3D"_blank">j.schoenwaelder@jacobs-university.de</a>&gt; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorkl=
und wrote:<br>
&gt; &gt; &gt; &gt; &gt; Hi,<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Currently we have an inconsistency in<br>
&gt; &gt; &gt; &gt; &gt; draft-ietf-netmod-rfc6020bis-05.=C2=A0 With Y35, w=
e allow type empty in<br>
&gt; &gt; &gt; &gt; &gt; unions.=C2=A0 But section 7.8.2 says:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 A leaf that is part of the key can be=
 of any built-in or derived<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 type, except it MUST NOT be the built=
-in type &quot;empty&quot;.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; This means that this is legal:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0typedef my-empty {<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0type union {<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0type empty;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0}<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0}<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0list foo {<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0key id;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0leaf id {<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0type my-empty;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0}<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 =C2=A0...<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0}<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; I suggest we allow type empty also in keys:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; NEW:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 A leaf that is part of the key can be=
 of any built-in or derived<br>
&gt; &gt; &gt; &gt; &gt;=C2=A0 =C2=A0 type.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; And my understanding is that the list foo defined above=
 will never<br>
&gt; &gt; &gt; &gt; have an instance, correct? I assume decent compilers wi=
ll continue to<br>
&gt; &gt; &gt; &gt; create warnings when they can decide that a list will n=
ever have any<br>
&gt; &gt; &gt; &gt; instances. (And yes, there are other ways to construct =
such lists, so<br>
&gt; &gt; &gt; &gt; I am OK with removing a constraint preventing a specifi=
c case of such<br>
&gt; &gt; &gt; &gt; useless lists.)<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; I think the list can have 1 instance.<br>
&gt; &gt;<br>
&gt; &gt; Yes.<br>
&gt; &gt;<br>
&gt;<br>
&gt; OK. I guess RFC 6020 section 9.11.2. confused me. Is the lexical<br>
&gt; representation not simply an empty string?<br>
<br>
No, since the empty string in JSON is &quot;&quot;.<br>
<br>
A leaf of type empty doesn&#39;t have a value, thus there is no lexical<br>
represention.<br>
<br>
&gt; I mean, it seems that<br>
&gt;<br>
&gt;=C2=A0 =C2=A0&lt;foo&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&lt;id&gt;&lt;/id&gt;<br>
&gt;=C2=A0 =C2=A0&lt;/foo&gt;<br>
&gt;<br>
&gt; would be as valid as<br>
&gt;<br>
&gt;=C2=A0 =C2=A0&lt;foo&gt;&lt;id/&gt;&lt;/foo&gt;<br>
<br>
Correct.<br>
<br>
&gt; or am I confused? And in JSON it would be this?<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 &quot;foo&quot;: [<br>
&gt;=C2=A0 =C2=A0 =C2=A0{<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;id&quot;: [null]<br>
&gt;=C2=A0 =C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0 =C2=A0]<br>
<br>
I think this is correct.<br>
<span><font color=3D"#888888"><br></font></span></blockquote><div><br></div=
><div>So you are saying that XML and JSON could encode the</div><div>follow=
ing leaf differently:</div><div><br></div><div>=C2=A0 =C2=A0leaf broken {</=
div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0type union {</div><div>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 type string;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 type empty;=C2=A0</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0}</div><div>=C2=
=A0 =C2=A0 =C2=A0}</div><div><br></div><div>If set with XML then an empty s=
tring or empty type look the same:</div><div><br></div><div>=C2=A0 =C2=A0 &=
lt;broken&gt;&lt;/broken&gt; =C2=A0OR &lt;broken /&gt;</div><div><br></div>=
<div>Both will be treated as a string if encoded in XML.</div><div>But in J=
SON, the encoding will be [null] or &quot;&quot;,</div><div>and the server =
will save the type as either string or empty.</div><div><br></div><div>The =
server remembers the type that wins when a union is</div><div>parsed, so th=
e leaf will be rendered correctly.=C2=A0 This is important</div><div>even f=
or XML (e.g., identityref, instance-identifier, xpath1.0).</div><div><br></=
div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-lef=
t:1px #ccc solid;padding-left:1ex"><span><font color=3D"#888888">
<br>
/martin<span class=3D"HOEnZb"><font color=3D"#888888"><br>
</font></span></font></span></blockquote></div><span class=3D"HOEnZb"><font=
 color=3D"#888888"><br></font></span></div><span class=3D"HOEnZb"><font col=
or=3D"#888888"><div class=3D"gmail_extra"><br></div><div class=3D"gmail_ext=
ra">Andy</div><div class=3D"gmail_extra"><br></div></font></span></div>
</blockquote></div><br></div>

--089e0158b5e4f25ba1051998d42e--


From nobody Sun Jun 28 23:10:06 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 4D94E1A1A46; Sun, 28 Jun 2015 23:10:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 MyBoGW8EN2D6; Sun, 28 Jun 2015 23:10:03 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A44641A1A45; Sun, 28 Jun 2015 23:10:02 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id D53AF1440; Mon, 29 Jun 2015 08:10:00 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id n0OSkE-zY7WP; Mon, 29 Jun 2015 08:09:57 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Mon, 29 Jun 2015 08:09:59 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id 576F32002B; Mon, 29 Jun 2015 08:09:59 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id A7sRYY7bolii; Mon, 29 Jun 2015 08:09:57 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id AC40520013; Mon, 29 Jun 2015 08:09:56 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 3E9A234E2DF6; Mon, 29 Jun 2015 08:09:55 +0200 (CEST)
Date: Mon, 29 Jun 2015 08:09:54 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Martin Bjorklund <mbj@tail-f.com>
Message-ID: <20150629060954.GB32652@elstar.local>
Mail-Followup-To: Martin Bjorklund <mbj@tail-f.com>, andy@yumaworks.com, netconf@ietf.org, netmod@ietf.org
References: <CABCOCHQW8rWRFyxKQ92u3ThP4Fa976vt1n=ogygsG+3Qx4caPA@mail.gmail.com> <20150625.101417.2199972820527866360.mbj@tail-f.com> <CABCOCHTJ0Bd_cFHRpnuN4Wjz++6cogWHsDbVVsp+6DJdB08_sg@mail.gmail.com> <20150625.213307.987589961886974156.mbj@tail-f.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20150625.213307.987589961886974156.mbj@tail-f.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Beu0ihm9XjCNS2PXGWTDP_vcpRk>
Cc: netmod@ietf.org, netconf@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 06:10:05 -0000

On Thu, Jun 25, 2015 at 09:33:07PM +0200, Martin Bjorklund wrote:
> Andy Bierman <andy@yumaworks.com> wrote:
> > On Thu, Jun 25, 2015 at 1:14 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
> > 
> > > Andy Bierman <andy@yumaworks.com> wrote:
> > > > On Wed, Jun 24, 2015 at 2:14 PM, Martin Bjorklund <mbj@tail-f.com>
> > > wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > I am preparing a new version of draft-ietf-netmod-rfc6020bis in order
> > > > > to address Y45-04.  Note that YANG 1.1 uses the module
> > > > > ietf-yang-library from draft-ietf-netconf-yang-library (hence the
> > > > > crossposting).
> > > > >
> > > > > [BTW, shouldn't ietf-yang-library be moved to NETMOD?]
> > > > >
> > > > > We have a whole bunch of documents that have a normative reference to
> > > > > draft-ietf-netmod-rfc6020bis, which has a normative reference to
> > > > > draft-ietf-netconf-yang-library.  This means we need to finish this
> > > > > document pretty soon.
> > > > >
> > > > > I ran into some issues with ietf-yang-library:
> > > > >
> > > > >   1.  The leaf "conformance" is of type "boolean".  It is not obvious
> > > > >       what "conformance = false" means.  Should we change the name
> > > > >       and/or type of this leaf?
> > > > >
> > > > >       I don't have a good proposal, but what we need is a way to
> > > > >       indicate "I implement the protocol accessible nodes in this
> > > > >       module" vs. "I just list this module b/c some other module that
> > > > >       I implement uses typdefs/groupings/... from it".
> > > > >
> > > > >       This issue is related to the github issue #3.  I think we need
> > > > >       this information; Y45-04 relies on it.
> > > > >
> > > > >
> > > >
> > > > We went through this before and you didn't have a better suggestion last
> > > > time either.
> > > >
> > > > conformance=false means the server is not claiming conformance for this
> > > > module.
> > >
> > > Yes I know.  I just wish we had a better name for this.  But you're
> > > right, if we can't come up with a better term, we'll stick to what we
> > > have.
> > >
> > > > A NETCONF <hello> should not have any modules tagged
> > > > as conformance=false.
> > > >
> > > > CoMI relies on this module as well.
> > > > It has been ready for WGLC since January.
> > > >
> > > >
> > > >
> > > >
> > > > >
> > > > >   2.  The "/modules/module" list is keyed by "name" and "revision".
> > > > >       Should we really have "revision" as key?  A server can only
> > > > >       implement one revision of a module, and should only list one
> > > > >       revision of a module w/ conformance = false.  I suggest we make
> > > > >       this leaf mandatory, and not part of the key.
> > > > >
> > > >
> > > >
> > > > I am not in favor of this change.
> > > > Two modules "foo" and "bar" released on the same date
> > > > could not be represented.
> > >
> > > The name of the module would be the (single) key, so this should be
> > > possible.
> > >
> > >
> > 
> > This does not work.
> > 
> > 
> > 
> > > > I think the indexing is fine in the current draft.
> > > > The <get-schema> operation in NETCONF and RESTCONF need
> > > > the module name and the revision-date.
> > >
> > > Yes, revision must be mandatory.
> > >
> > 
> > Unless revision is the key then only 1 revision of the module is possible.
> 
> Correct.  We agreed that a server cannot implement more than one
> version of a module (i.e., conformance = true).  And the reason for
> listing other modules (conformance = false) is for the client to learn
> which revision of such a module is used by the server in modules that
> import them without revision.  Again, there must only be one such
> revision.
> 
> An example might help.
> 
> Suppose we have a typedef only module "t", and three modules "a",
> "b", and "c" importing it:
> 
>   module a {
>     ...
>     import t {
>       prefix t;  // note: no revision-date
>     }
>     ...
>   }
> 
>   module b {
>     ...
>     import t {
>       prefix t;
>       revision-date 2015-01-01;
>     }
>     ...
>   }
> 
>   module c {
>     ...
>     import t {
>       prefix t;
>       revision-date 2015-02-02;
>     }
>     ...
>   }
> 
>   module t {
>     ...
>     revision 2015-02-02;
>     revision 2015-01-01;
>     ...
>   }
> 
> Now the server lists in ietf-yang-library:
> 
>   modules:
>     module:
>       name: t
>       revision: 2015-01-01;
>       conformance: false
>     module:
>       name: t
>       revision: 2015-02-02;
>       conformance: false
>    ...
> 
> A client downloads all modules from the server.  Now, how can the
> client tell which revsion of "t" was used to implement "a"?
> 
> I can se two solutions:
> 
>   1.  Just list one revision of "t" - the one used to implement module
>       "a" (and any other module that imports "t" w/o revision).
> 
>       There really is no reason to list the other revsion of "t".
> 
>   2.  List both revisions of "t", but mark the one that is used to
>       implement module "a" in some way.

Note that you can have two modules importing t without a revision and
the two modules may use different versions of t. If so, then it seems
the indexing we have is right since you may need to list multiple
revisions of t. If the requirement is to announce which version of t
has been used by module a, then it seems you need to kind of list the
imports with the revisions actually used in the data model, no?
 
> > > > This module should not care how many revisions of each module
> > > > are listed.  This is the full YANG library, not a <hello> message.
> > >
> > > The whole point of this module is to replace the <hello> message!  It
> > > first came up in RESTCONF, and we want to use it also in NETCONF in
> > > order to have one single way to do YANG module advertisement
> > > regardless of protocol.
> > >
> > > There is already the schema list in ietf-netconf-monitoring that gives
> > > you the full set of modules and submodules used in a server.
> > >
> > >
> > 
> > We already discussed relation to the schema list and decided to ignore it.
> > The whole point of this library is to provide the full list of YANG modules
> > and submodules on the device.
> > 
> > I strongly object to changing this module.
> > IMO it is quite clear how to fill in the list of modules.
> 
> Yes it is clear.  I argue that it the information is provides is not
> sufficient to solve the advertisement problem.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Mon Jun 29 02:49:22 2015
Return-Path: <lhotka@nic.cz>
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 4C7311A893F for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 02:49:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.9
X-Spam-Level: 
X-Spam-Status: No, score=-3.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, GB_I_LETTER=-2] 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 ZmC5r-wLcDwH for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 02:49:17 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 1C99B1A893B for <netmod@ietf.org>; Mon, 29 Jun 2015 02:49:14 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 30E531CC0098; Mon, 29 Jun 2015 11:49:16 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Kent Watsen <kwatsen@juniper.net>
In-Reply-To: <20150624145325.GB38016@elstar.local>
References: <D1A4CEB7.B22F7%kwatsen@juniper.net> <20150624145325.GB38016@elstar.local>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Mon, 29 Jun 2015 11:49:11 +0200
Message-ID: <m2lhf27sko.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/FXqOmLSff5Q7-zFesWRKVtcS5P8>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 09:49:20 -0000

Hi Juergen,

thank you for the review.

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:

> On Mon, Jun 15, 2015 at 10:49:28PM +0000, Kent Watsen wrote:
>>=20
>> This is a notice to start a NETMOD WG last call for the document "JSON E=
ncoding of Data Modeled with YANG":
>>=20
>> https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04
>>=20
>> Please indicate your support by Monday June 29, 2015 at 9PM EST.
>
> Hi,
>
> I have reviewed draft-ietf-netmod-yang-json-04.
>
> - I am not sure I agree with the wording in section 3. Why is section
>   8.3.3 only applicable to XML encoded data? Validation applies to
>   datastores. While constraints are defined using XML-based notations

You are right that this section shouldn't talk about XML-encoded data,
i.e. serialized form. On the other hand, XPath 1.0 spec says: "XPath
operates on the abstract, logical structure of an XML document, =E2=80=A6".

So I think a datastore needs to be represented, at least conceptually,
as XML infoset.

>   such as XPATH, how the validation is carried out is not defined in
>   the YANG specifications. I guess I actually disagree with the

I don't think this is true. YANG spec doesn't say how "must" and "when"
statements are evaluated, and relies on XPath.

>   wording in section 3 of the JSON encoding I-D.

What specifically? Do you have any suggestions for changes?

>
> - It is unclear whether the 'if and only if' on page 4 means that an
>   implementation that generates namespace prefixes that are not
>   strictly needed is violating this I-D. I see the need for a MUST to

Yes, that's the intention. Why is it unclear?

>   include the module name if the parent node belongs to a different
>   module. I am not sure why it is necessary to mandate minimal
>   encodings (if that is the idea here). Whatever the answer is, it
>   would be good to use RFC 2119 language.

Revision -02 used 2119 terms but there were objections against it:

https://mailarchive.ietf.org/arch/msg/netmod/xXS0uSKKu83qBQVCJ_CYmdsavUc

In fact, YANG spec also states syntax rules without using 2119 keywords,
for example "Each identifier starts with an uppercase or lowercase ASCII
letter or an underscore character, =E2=80=A6", it doesn't say that it MUST =
NOT
start with anything else.

>
> - The reason for the requirement that list keys are encoded first in
>   RFC 6020 is to make it easier to process data in a stream-oriented
>   fashion. If keys can appear anywhere, they might appear at the very
>   end and thus buffering is required in order to process data
>   properly. Is this concern not relevant for the JSON encoding?

This cannot be required as long as our aim is interoperability of
implementations based on off-the-shelf JSON parsers, hence I_JSON. RFC
7493 states it clearly: "The order of object members in an I-JSON
message does not change the meaning of an I-JSON message."

>   Perhaps this is not relevant, but then we might also state this
>   explicitly:
>
>       As a consequence, implementations must be cable to buffer JSON
>       encoded instances in order to locate keys that may appear at the
>       end of a JSON encoded instance.

I think it is clear that an implementation needs to be able to handle
keys appearing anywhere in a list-entry-object. How it is handled is IMO
implementation-specific - I guess it also depends on where and how the
stream-oriented data processing is used.

>
> - I think that section 5.5 should say:
>
>       If the data model for the data in an anydata instance is known,
>       then the data must be encoded following the rules defined in
>       this I-D.

Something like this should then probably appear in 6020bis, yet it doesn't.

I am unclear how one can determine that the data model is known because
anydata nodes don't provide this information. Perhaps it can be
specified in the description but then is it known including the
revisions of YANG modules involved? Moreover, the data model needn't be
known at all.

Therefore, I tend to think about anydata as kind of ad hoc data
that's just piggybacked inside YANG-modelled data. There may be rules
that this data have to conform to (expressed in YANG or not) but they
are out of scope from the perspective of the data model that's specified
in hello or yang-library.

That's why sec. 5.5 only states syntactic constraints to make sure that
the data "can be modelled with YANG".

BTW, I have a growing concern that anydata creates more problems than it
solves.

>
>   In other words, it is not arbitrary JSON with a few constraints but
>   something that matches the JSON encoding rules once the data model
>   is known.
>
> - Section 6, I suggest s/mapped/encoded/.

Agreed.

>
> - I do not understand 'An "enumeration" value is mapped in the same
>   way as a string except that permitted values are defined by enum
>   statements in YANG.' Perhaps this is simpler:
>
>      An "enumeration" value is encoded as a JSON string. The allowed
>      string values are the enumeration names assigned by the enum
>      statement in YANG.
>
>      The representation is identifical to the XML encoding, see
>      sec. 9.6 in [RFC6020bis].
>
>   I specifically tried to avoid 'value' in order to avoid confusion with
>   the value YANG statement.

OK, good point.

>
> - Perhaps remove the reference to XML in section 6.5 from the
>   definition of the encoding rules so that the JSON encoding rules are
>   not tied into the XML encoding rules. It is OK to mention that it is
>   the same.
>
>      A "bits" value is encoded as a JSON string. Multiple bit names
>      assigned by the bit statement in YANG are encoded as a
>      space-separated string of bit names representing the individual
>      bits that are set.
>
>      The representation is identifical to the XML encoding, see
>      sec. 9.7 in [RFC6020bis].
>
> - Same as before for section 6.6:
>
>      A "binary" value is encoded by first encoding the binary value in
>      base64 and encoding the resulting base64-encoded value as a JSON
>      string.
>
>      The representation is identifical to the XML encoding, see
>      sec. 9.8 in [RFC6020bis].

OK.

>
> - I am not sure I understand the argument why [null] is better than
>   null for the empty type. Perhaps it is but the text does not really
>   tell me.

"foo": null

may sometimes appear as if the "foo" instance is not present at all - in
some languages this is probably more serious than in others. This is how
it works in Python:

>>> import json
>>> obj =3D json.loads('{"foo": null, "bar": [null]}')
>>> "YES" if obj["foo"] else "NO"
'NO'
>>> "YES" if obj["bar"] else "NO"
'YES'

So the special value "[null]" seems safer and it cannot appear in any
other context.

>
> - I suggest to remove the reference to 9.13.3 in the definition. In

=E2=80=A6 definition of instance-identifier encoding.

>   fact, the representation is pretty different since XML uses
>   namespace prefixes while JSON uses module names. (I must admit that
>   I find the JSON representation more readable since it does not
>   require XML namespace context.)

Yes, the document could simply state an ABNF production for JSON-endoded in=
stance-identifier without
further ado.

>
> - Section 7: So what happens in the rare case of a binary value
>   appearing in a RESTCONF URI? Is the resulting BASE64 value than
>   simply subject to URI escaping rules?

Right, and I agree the document should say this.

>
>   I assume this 'rare event' would happen if a list is indexed by a
>   leaf of type binary, no? Are there any other cases?

I am not aware of any other case.

>
> /js
>
> PS: Should RFC 6020bis change the section titles "XML Mapping Rules" to
>     "XML Encoding Rules"? I think we really talk about 'encoding', not
>     about 'mapping' and if we agree on this, we should try to be
>     consistent with the terms we use.

I agree, it would be better.

Lada

>
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--=20
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Mon Jun 29 06:13:37 2015
Return-Path: <kwatsen@juniper.net>
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 536FF1A9129 for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:13:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 gk74olk5TA2r for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:13:34 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0139.outbound.protection.outlook.com [65.55.169.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 40B2B1A9127 for <netmod@ietf.org>; Mon, 29 Jun 2015 06:13:33 -0700 (PDT)
Received: from CO1PR05MB457.namprd05.prod.outlook.com (10.141.72.141) by CO1PR05MB362.namprd05.prod.outlook.com (10.141.51.147) with Microsoft SMTP Server (TLS) id 15.1.195.15; Mon, 29 Jun 2015 13:13:32 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB457.namprd05.prod.outlook.com (10.141.72.141) with Microsoft SMTP Server (TLS) id 15.1.195.15; Mon, 29 Jun 2015 13:13:31 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Mon, 29 Jun 2015 13:13:31 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until  2015-06-29)
Thread-Index: AQHQsm1lJjPnwQ1E70qubMqq6fhLyA==
Date: Mon, 29 Jun 2015 13:13:31 +0000
Message-ID: <D1B6BB50.B48A3%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.10]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB457; 5:xbRtDcw5aMERwvRtNowGbM+W/ncRNeoXoIHHO08jlI0l1goS/WBJSmlIJbRdjQ4ZTIqo1vJGr0qiFa9EAnKiZc5RANkqqaO0n8nliC13akgrRGOo3SfRhGD9ToOyXQvjR/wkA3fVpKBBThg5KiKMeg==; 24:f2kdjPO6DmDVtV+Xk2myE23O2rKZEZ8hX4tr3u/pqQSe16SkeRMIQIEoqZw/4zMujs+Hg84Mu8AAcItShDb8d1urgiIzeoZZRl4SM/1H3jA=; 20:J+PQ6OSyPPMEzEFl9dIuT11jYxGXN0cKPZ/eLnOKT9saX4EJvCL+NS/UNaIHQcATS5Ve5XaOJRJtellw9SpNbQ==
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB457; UriScan:; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB362; 
x-microsoft-antispam-prvs: <CO1PR05MB4573B3643C57DE8D862FA04A5AA0@CO1PR05MB457.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB457; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB457; 
x-forefront-prvs: 0622A98CD5
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(979002)(377424004)(377454003)(5423002)(54356999)(50986999)(99286002)(106116001)(66066001)(92566002)(19617315012)(19580405001)(19580395003)(83506001)(86362001)(87936001)(2656002)(36756003)(5001920100001)(2900100001)(122556002)(189998001)(46102003)(107886002)(110136002)(4001350100001)(40100003)(102836002)(2501003)(2351001)(15975445007)(230783001)(16236675004)(5002640100001)(5001960100002)(450100001)(77156002)(62966003)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB457; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_D1B6BB50B48A3kwatsenjunipernet_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2015 13:13:31.4652 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB457
X-Microsoft-Exchange-Diagnostics: 1; CO1PR05MB362; 2:Wq6QEW4LWOMaUPtJybPDtyi/8g0nyn1SOM8vQ1bVRYtsfDT8ywY35tQr91FO7+3x; 3:9+ZP/Ux0N8w0/S1oD7sdXsslJSt8BzLmLIHm5H2axFCOI63On/WCSd1yXCOnZEczKDz9O/JjT+ulx4KXGwMF9XMdnyOXcKUG7MfPsgRA8abCIrXJohetPq34T08Z1nlOIOsSh8s/oPUw9IGn8GSYuQ==; 23:NvctviCCpmCjk/BwOz07DqRBqVGCgx8pV7gFMnOqVgm+qPle6PJUi4/vCzDNZP3Rz9ewXWwRZ2l7XCovEURSf/pcqydHA8iKG+WVp7ouw/vLM9n0q4k678Q2XL+gC8mtrzm1SV7GmBBHqkk/ZJLPUwfRF4Wazg/1M2K0QCjknESIkrvtzCP8jkuUhqcgxjcNVtQRQXhTK0DK2uYl/UMQ3Rvov3bg6AewkrkMorxsK51N0egnWgqTFMwPcVUGr8Xe
X-OriginatorOrg: juniper.net
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/eaYZbuyblYKuXtTDf5UVKOZi4Do>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 13:13:36 -0000

--_000_D1B6BB50B48A3kwatsenjunipernet_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


All,

Today is the cutoff date for the Last Call for this draft, but the author i=
ndicated that comments received today or tomorrow can be incorporated into =
the draft-update being worked on.  So, if you have any lingering reviews, p=
lease send them before as soon as possible.

Thanks!
Kent



From: Kent Watsen <kwatsen@juniper.net<mailto:kwatsen@juniper.net>>
Date: Monday, June 15, 2015 at 6:49 PM
To: "netmod@ietf.org<mailto:netmod@ietf.org>" <netmod@ietf.org<mailto:netmo=
d@ietf.org>>
Subject: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (unti=
l 2015-06-29)


This is a notice to start a NETMOD WG last call for the document "Defining =
and Using Metadata with YANG":

https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01

Please indicate your support by Monday June 29, 2015 at 9PM EST.
We are not only interested in receiving defect reports, we are equally
interested in statements of the form:

  "I have reviewed I-D XYZ and I found no issues"
  "I have implemented the data model in I-D XYZ"
  "I am implementing the data model in I-D XYZ"
  "I am considering to implement the data model in I-D XYZ"

This is the first Last Call for this document.

Kent, as NETMOD co-chair


--_000_D1B6BB50B48A3kwatsenjunipernet_
Content-Type: text/html; charset="us-ascii"
Content-ID: <EFBA7D22C46C34459A0EA2C70643734D@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-fami=
ly: Calibri, sans-serif;">
<div><br>
</div>
<div>All,</div>
<div><br>
</div>
<div>Today is the cutoff date for the Last Call for this draft, but the aut=
hor indicated that comments received today or tomorrow can be incorporated =
into the draft-update being worked on. &nbsp;So, if you have any lingering =
reviews, please send them before as soon
 as possible.</div>
<div><br>
</div>
<div>Thanks!</div>
<div>Kent</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<span id=3D"OLK_SRC_BODY_SECTION">
<div style=3D"font-family:Calibri; font-size:11pt; text-align:left; color:b=
lack; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM:=
 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid;=
 BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style=3D"font-weight:bold">From: </span>Kent Watsen &lt;<a href=3D"ma=
ilto:kwatsen@juniper.net">kwatsen@juniper.net</a>&gt;<br>
<span style=3D"font-weight:bold">Date: </span>Monday, June 15, 2015 at 6:49=
 PM<br>
<span style=3D"font-weight:bold">To: </span>&quot;<a href=3D"mailto:netmod@=
ietf.org">netmod@ietf.org</a>&quot; &lt;<a href=3D"mailto:netmod@ietf.org">=
netmod@ietf.org</a>&gt;<br>
<span style=3D"font-weight:bold">Subject: </span>[netmod] WG Last Call for =
draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)<br>
</div>
<div><br>
</div>
<div>
<div style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line=
-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-famil=
y: Calibri, sans-serif;">
<div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">This is a notice to start a NETMOD W=
G last call for the document &quot;Defining and Using Metadata with YANG&qu=
ot;:</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif"><span class=3D"Apple-tab-span" style=
=3D"white-space:pre"></span></font><font face=3D"Calibri,sans-serif"><a hre=
f=3D"https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01">https:=
//tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01</a></font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Please indicate your support by Mond=
ay June 29, 2015 at 9PM EST.&nbsp;</font></div>
<div><font face=3D"Calibri,sans-serif">We are not only interested in receiv=
ing defect reports, we are equally</font></div>
<div><font face=3D"Calibri,sans-serif">interested in statements of the form=
:</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I have reviewed I-D XYZ=
 and I found no issues&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I have implemented the =
data model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I am implementing the d=
ata model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I am considering to imp=
lement the data model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">This is the first Last Call for this=
 document.</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Kent, as NETMOD co-chair</font></div=
>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
</div>
</div>
</span>
</body>
</html>

--_000_D1B6BB50B48A3kwatsenjunipernet_--


From nobody Mon Jun 29 06:13:53 2015
Return-Path: <kwatsen@juniper.net>
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 201621A9129 for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:13:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 zWHzxPFQYBze for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:13:50 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0122.outbound.protection.outlook.com [65.55.169.122]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4D1751A9127 for <netmod@ietf.org>; Mon, 29 Jun 2015 06:13:50 -0700 (PDT)
Received: from CO1PR05MB457.namprd05.prod.outlook.com (10.141.72.141) by CO1PR05MB362.namprd05.prod.outlook.com (10.141.51.147) with Microsoft SMTP Server (TLS) id 15.1.195.15; Mon, 29 Jun 2015 13:13:49 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB457.namprd05.prod.outlook.com (10.141.72.141) with Microsoft SMTP Server (TLS) id 15.1.195.15; Mon, 29 Jun 2015 13:13:48 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Mon, 29 Jun 2015 13:13:48 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
Thread-Index: AQHQsm1vFTAznCwShkux7NnNwH5lfA==
Date: Mon, 29 Jun 2015 13:13:48 +0000
Message-ID: <D1B6BB56.B48A4%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.10]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB457; 5:V0/ieNy1PfOElwzwKcIGVYcUBBKQeetY5bIxtR18VWzNdEk9Hpd6ZZd35XEs/PuiQ+rDuxfWeOv6N2MKOrKmkUi1xBC0yhiXdDeCKH5q9Q3fEelAodk8X7oi6ymCjpRVUNvFauJSmXiFY/b5uEEBZA==; 24:isyclNmLOaKjRn/5uOmBi2s+gd9MHsOm4VbnCJPB3otvIBqhVf3NAZctDhMog8XsWDLVJ0XBTlpXDHHk6zniUKyjMfNckMt3nhLV5n6fgeE=; 20:3i9XGBTWHhRMI6TtKT/7pZW70/WDh8fYrv48f8gQ9tfAG4gXoUde+o0Q1PpNdCP/87p9CVtmyrlhQFa1+/wmmw==
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB457; UriScan:; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB362; 
x-microsoft-antispam-prvs: <CO1PR05MB457C38FFD1E5C00B2CE415FA5AA0@CO1PR05MB457.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB457; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB457; 
x-forefront-prvs: 0622A98CD5
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(377424004)(377454003)(5423002)(54356999)(50986999)(99286002)(106116001)(66066001)(92566002)(19617315012)(19580405001)(19580395003)(83506001)(86362001)(87936001)(2656002)(36756003)(5001920100001)(2900100001)(122556002)(189998001)(46102003)(107886002)(110136002)(4001350100001)(40100003)(102836002)(2501003)(2351001)(15975445007)(230783001)(16236675004)(5002640100001)(5001960100002)(450100001)(77156002)(62966003); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB457; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_D1B6BB56B48A4kwatsenjunipernet_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2015 13:13:48.6248 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB457
X-Microsoft-Exchange-Diagnostics: 1; CO1PR05MB362; 2:HZW2GsY0WlCZGxFiqp0lBH6uHumvDRahFCf6ObprQUlHBOskCm2VqH1mgDfcb4hF; 3:Azm4EqY+kSiTWfQ/nS5mWvuLG4ZY1DntY6hcfn3PyUnfW71KiuEqzpzX7zwOCiiRlqoQ5vS5s6KR/YsA1rPWdQuZxz51vrv04SHqiAdRC0L2HDc4IQUQT2SIUPsGXp5bDxxoJn6DMnAi+EmxG3MB6Q==; 23:GlxPlIkaAkxO5oCT0p/OxNEKJX6v+Iw3q0qOEVLFlqySmjZk7bzmq6knuNsA8WyUimEYo2P8oFg5vDKUT5YaXXBVY5iumOfq7rR6xPQLZKGS3d7OqhmzM7iz8orID1QHgIyH4BudcDZzWpcIXZDig6awEyxmxIM30gitu0kNn73y8oC2bc2gab1LRbm4M0rRJ+czdILPoY8Kf3cwseH89gwo5/zNFgJ93A8LuABxVmnuGByobWBc5FT+MoFVm10W
X-OriginatorOrg: juniper.net
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/BmfoKFbj2-LGqh0xSiCTWJIrnHg>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 13:13:52 -0000

--_000_D1B6BB56B48A4kwatsenjunipernet_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


All,

Today is the cutoff date for the Last Call for this draft, but the author i=
ndicated that comments received today or tomorrow can be incorporated into =
the draft-update being worked on.  So, if you have any lingering reviews, p=
lease send them before as soon as possible.

Thanks!
Kent



From: Kent Watsen <kwatsen@juniper.net<mailto:kwatsen@juniper.net>>
Date: Monday, June 15, 2015 at 6:49 PM
To: "netmod@ietf.org<mailto:netmod@ietf.org>" <netmod@ietf.org<mailto:netmo=
d@ietf.org>>
Subject: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 20=
15-06-29)


This is a notice to start a NETMOD WG last call for the document "JSON Enco=
ding of Data Modeled with YANG":

https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04

Please indicate your support by Monday June 29, 2015 at 9PM EST.
We are not only interested in receiving defect reports, we are equally
interested in statements of the form:

  "I have reviewed I-D XYZ and I found no issues"
  "I have implemented the data model in I-D XYZ"
  "I am implementing the data model in I-D XYZ"
  "I am considering to implement the data model in I-D XYZ"

This is the first Last Call for this document.

Kent, as NETMOD co-chair


--_000_D1B6BB56B48A4kwatsenjunipernet_
Content-Type: text/html; charset="us-ascii"
Content-ID: <54D4B15D24991148A703A654B43A3985@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space;">
<div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">All,</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Today is the cutoff date for the Las=
t Call for this draft, but the author indicated that comments received toda=
y or tomorrow can be incorporated into the draft-update being worked on. &n=
bsp;So, if you have any lingering reviews,
 please send them before as soon as possible.</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">Thanks!</font></div>
<div><font face=3D"Calibri,sans-serif">Kent</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<span id=3D"OLK_SRC_BODY_SECTION" style=3D"color: rgb(0, 0, 0); font-family=
: Calibri, sans-serif; font-size: 14px;">
<div style=3D"font-family:Calibri; font-size:11pt; text-align:left; color:b=
lack; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM:=
 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid;=
 BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style=3D"font-weight:bold">From: </span>Kent Watsen &lt;<a href=3D"ma=
ilto:kwatsen@juniper.net">kwatsen@juniper.net</a>&gt;<br>
<span style=3D"font-weight:bold">Date: </span>Monday, June 15, 2015 at 6:49=
 PM<br>
<span style=3D"font-weight:bold">To: </span>&quot;<a href=3D"mailto:netmod@=
ietf.org">netmod@ietf.org</a>&quot; &lt;<a href=3D"mailto:netmod@ietf.org">=
netmod@ietf.org</a>&gt;<br>
<span style=3D"font-weight:bold">Subject: </span>[netmod] WG Last Call for =
draft-ietf-netmod-yang-json-04 (until 2015-06-29)<br>
</div>
<div><br>
</div>
<div>
<div style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line=
-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-famil=
y: Calibri, sans-serif;">
<div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<font face=3D"Calibri,sans-serif">
<div><br>
</div>
<div>This is a notice to start a NETMOD WG last call for the document &quot=
;JSON Encoding of Data Modeled with YANG&quot;:</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
</font></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<span style=3D"font-family: Calibri, sans-serif;"><span class=3D"Apple-tab-=
span" style=3D"white-space:pre"></span><a href=3D"https://tools.ietf.org/ht=
ml/draft-ietf-netmod-yang-json-04">https://tools.ietf.org/html/draft-ietf-n=
etmod-yang-json-04</a></span></div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div>
<div><font face=3D"Calibri,sans-serif">Please indicate your support by Mond=
ay June 29, 2015 at&nbsp;</font><font face=3D"Calibri,sans-serif">9PM EST</=
font><span style=3D"font-family: Calibri, sans-serif;">.&nbsp;</span></div>
<div><span style=3D"font-family: Calibri, sans-serif;">We are not&nbsp;</sp=
an><span style=3D"font-family: Calibri, sans-serif;">only interested in rec=
eiving defect reports, we are equally</span></div>
<div><span style=3D"font-family: Calibri, sans-serif;">interested&nbsp;</sp=
an><span style=3D"font-family: Calibri, sans-serif;">in statements of the f=
orm:</span></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I have reviewed I-D XYZ=
 and I found no issues&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I have implemented the =
data model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I am implementing the d=
ata model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif">&nbsp; &quot;I am considering to imp=
lement the data model in I-D XYZ&quot;</font></div>
<div><font face=3D"Calibri,sans-serif"><br>
</font></div>
<div><font face=3D"Calibri,sans-serif">This is the first Last Call for this=
 document.</font></div>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<span style=3D"font-family: Calibri, sans-serif;">Kent, as NETMOD co-chair<=
/span></div>
</div>
<div style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 14px;">
<br>
</div>
</div>
</div>
</span>
</body>
</html>

--_000_D1B6BB56B48A4kwatsenjunipernet_--


From nobody Mon Jun 29 06:23:01 2015
Return-Path: <lhotka@nic.cz>
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 C00111A914C for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:22:59 -0700 (PDT)
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] 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 qmqz-V1wfZR5 for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:22:57 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id EFE5C1A9148 for <netmod@ietf.org>; Mon, 29 Jun 2015 06:22:56 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 49B0E1CC0473; Mon, 29 Jun 2015 15:22:59 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Kent Watsen <kwatsen@juniper.net>
In-Reply-To: <20150626143327.GA43292@elstar.local>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150626143327.GA43292@elstar.local>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Mon, 29 Jun 2015 15:22:55 +0200
Message-ID: <m2ioa67iog.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/TyObJv62iwRvfXgb1Lm-YGIwfP4>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 13:22:59 -0000

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:

> On Mon, Jun 15, 2015 at 10:49:32PM +0000, Kent Watsen wrote:
>> 
>> This is a notice to start a NETMOD WG last call for the document "Defining and Using Metadata with YANG":
>> 
>> https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01
>> 
>> Please indicate your support by Monday June 29, 2015 at 9PM EST.
>
> Hi,
>
> I have reviewed draft-ietf-netmod-yang-metadata-01 and I have a couple
> of comments.

Thanks, my replies are inline.

>
> - I would prefer if the terminology would be streamlined. Currently,
>   the I-D sometimes uses "metadata", sometimes "annotation", sometimes
>   "metadata annotation". If these terms all mean the same, then I
>   suggest we settle on a single term. Furthermore, the YANG statement
>   'annotation' is defined in the module 'ietf-metadata'. I am not sure
>   whether there is a specific reasoning behind this.

In my interpretation, metadata is a more general term, i.e. metadata of an
instance document may consist of multiple (different) annotations.

That said, it should be possible to get rid of the "metadata" term, and
change the module name e.g. to "ietf-annotation-extension"

>
> - In order to group YANG modules together that define YANG extensions
>   and nothing else, does it make sense to call them 'ietf-yang-<xxx>'?

Such a convention, if it is agreed upon, IMO belongs to 6087bis. Moreover, ietf-yang-types
doesn't fit this pattern. 

>
> - I am having problems with the examples presented in the
>   Introduction.  The 'deactivating a subtree' annotation requires a
>   negotiation mechanism to be robust. The usage of attributes in the

Martin already proposed using a less controversial example in his review, and I agreed.

>   <edit-config> is more a protocol specification detail. Do you
>   suggest that annotations would be used to define them? If so, how?

I haven't thought about this particular use, although it probably won't
be any worse than "get-filter-element-attributes" extension in the
"ietf-netconf" module. 

>
>   I think there needs to be text in section 1 that distinsuishes
>   between annotations that are harmless (because they can be ignored)
>   and annotations that require annotation negotiation in order to be
>   used.

I am not sure there is a good and absolute definition of "harmless", it
depends on the context. For example, if DSDL mapping ignores the
extension, then no instance document containing *any* XML attributes (no
matter how benign) can ever be successfully validated with the generated
RELAX NG schema.

I agree it is a problem but IMO it comes down to the (wrong) assumption
that a client is free to cherry-pick arbitrary parts of the data model
advertised by the server, without even telling the server which parts were
chosen/omitted.

>
> - Why is the type statement optional for annotations? This seems to be
>   inconsistent with the YANG rules.

This was also in Martin's review, and I am ready to make it mandatory.

>
> - The definition of 'inactive' on page 6 is kind of confusing. The
>   text says the presence of the annotation deactives a data node.
>   If so, why is the type of the annotation a boolean?

Yes, it should be "presence with the value of 'true'".

>
> - The text about advertisements is not clear. I think a server
>   advertising annotation A not only commits to comply to this I-D but
>   also to the semantics of the annotations A. I note that there is no

I'd agree with this but see below.

>   mechanism to scope annotations - a server either support annotations
>   for all data models it implements or none. Is this correct?

Yes.

>   Furthermore, if a module M defines annotation A and it contains also
>   other definitions, then I can't implement M without implementing A
>   system wide? That is, it is advisable to define annotations in their
>   own separate modules in order to preserve flexibility, no?

Not sure, it depends on what this text in 6020(bis) really means:

   If a YANG compiler does not support a particular extension, which
   appears in a YANG module as an unknown-statement (see Section 13),
   the entire unknown-statement MAY be ignored by the compiler.

I would assume that servers also use a "YANG compiler", so the above
wording may also mean that the server can ignore extensions even in
modules it advertises.

>
> - Does the presence of an annotation impact the JSON encoding rules
>   that control when a module name prefix is needed or not? I assume
>   the answer is 'no' but it is not clear from the text.

Bullet #1 in sec. 4.2 says this.

>
> - s/whose the/whose/

Corrected.

>
> - bump the copyright year to 2015

Yes, Martin already noticed this one, too.

Thanks, Lada

>
> /js
>
> -- 
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Mon Jun 29 06:31:12 2015
Return-Path: <lhotka@nic.cz>
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 C5EA31A9239 for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:31:11 -0700 (PDT)
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] 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 j0PuakKAA34b for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:31:10 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 68EF91A9238 for <netmod@ietf.org>; Mon, 29 Jun 2015 06:31:10 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id B71FA1CC0473; Mon, 29 Jun 2015 15:31:13 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>, netmod@ietf.org
In-Reply-To: <20150624.121655.768495259505238309.mbj@tail-f.com>
References: <20150624.121655.768495259505238309.mbj@tail-f.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Mon, 29 Jun 2015 15:31:09 +0200
Message-ID: <m2fv5a7iaq.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/PoNLPuD6ZXJT3JoRBRdkFoEW_AA>
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 13:31:11 -0000

Martin Bjorklund <mbj@tail-f.com> writes:

> Hi,
>
> Currently we have an inconsistency in
> draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty in
> unions.  But section 7.8.2 says:
>
>    A leaf that is part of the key can be of any built-in or derived
>    type, except it MUST NOT be the built-in type "empty".
>
> This means that this is legal:
>
>   typedef my-empty {
>     type union {
>       type empty;
>     }
>   }
>
>   list foo {
>     key id;
>     leaf id {
>       type my-empty;
>     }
>     ...
>   }
>
>
> I suggest we allow type empty also in keys:
>
> NEW:
>
>    A leaf that is part of the key can be of any built-in or derived
>    type.
>

I support this.

Lada

>
> /martin
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Mon Jun 29 06:32:32 2015
Return-Path: <lhotka@nic.cz>
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 2DBFC1A923B for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:32:31 -0700 (PDT)
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] 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 R4vtqx7N_SNu for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 06:32:29 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 81C481A923A for <netmod@ietf.org>; Mon, 29 Jun 2015 06:32:29 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id CBABC1CC0473; Mon, 29 Jun 2015 15:32:32 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>, j.schoenwaelder@jacobs-university.de
In-Reply-To: <20150628.205539.1981412660798506668.mbj@tail-f.com>
References: <CABCOCHTQU1ijCZd+iwTJrvSo1LiqM1JMvFco4LMSbyDL2M9E0Q@mail.gmail.com> <20150628.171128.964571351255864502.mbj@tail-f.com> <20150628162109.GA31577@elstar.local> <20150628.205539.1981412660798506668.mbj@tail-f.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Mon, 29 Jun 2015 15:32:29 +0200
Message-ID: <m2d20e7i8i.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/GpRxBWkI_jcnm-HwaJ1qyiQMowI>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 13:32:31 -0000

Martin Bjorklund <mbj@tail-f.com> writes:

> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
>> On Sun, Jun 28, 2015 at 05:11:28PM +0200, Martin Bjorklund wrote:
>> > Andy Bierman <andy@yumaworks.com> wrote:
>> > > On Sun, Jun 28, 2015 at 7:16 AM, Juergen Schoenwaelder <
>> > > j.schoenwaelder@jacobs-university.de> wrote:
>> > > 
>> > > > On Wed, Jun 24, 2015 at 12:16:55PM +0200, Martin Bjorklund wrote:
>> > > > > Hi,
>> > > > >
>> > > > > Currently we have an inconsistency in
>> > > > > draft-ietf-netmod-rfc6020bis-05.  With Y35, we allow type empty in
>> > > > > unions.  But section 7.8.2 says:
>> > > > >
>> > > > >    A leaf that is part of the key can be of any built-in or derived
>> > > > >    type, except it MUST NOT be the built-in type "empty".
>> > > > >
>> > > > > This means that this is legal:
>> > > > >
>> > > > >   typedef my-empty {
>> > > > >     type union {
>> > > > >       type empty;
>> > > > >     }
>> > > > >   }
>> > > > >
>> > > > >   list foo {
>> > > > >     key id;
>> > > > >     leaf id {
>> > > > >       type my-empty;
>> > > > >     }
>> > > > >     ...
>> > > > >   }
>> > > > >
>> > > > > I suggest we allow type empty also in keys:
>> > > > >
>> > > > > NEW:
>> > > > >
>> > > > >    A leaf that is part of the key can be of any built-in or derived
>> > > > >    type.
>> > > >
>> > > > And my understanding is that the list foo defined above will never
>> > > > have an instance, correct? I assume decent compilers will continue to
>> > > > create warnings when they can decide that a list will never have any
>> > > > instances. (And yes, there are other ways to construct such lists, so
>> > > > I am OK with removing a constraint preventing a specific case of such
>> > > > useless lists.)
>> > > >
>> > > >
>> > > I think the list can have 1 instance.
>> > 
>> > Yes.
>> >
>> 
>> OK. I guess RFC 6020 section 9.11.2. confused me. Is the lexical
>> representation not simply an empty string?
>
> No, since the empty string in JSON is "".
>
> A leaf of type empty doesn't have a value, thus there is no lexical
> represention.
>
>> I mean, it seems that
>> 
>>   <foo>
>>     <id></id>
>>   </foo>
>> 
>> would be as valid as
>> 
>>   <foo><id/></foo>
>
> Correct.
>
>> or am I confused? And in JSON it would be this?
>> 
>>    "foo": [
>>     {
>>       "id": [null]
>>     }
>>     ]
>
> I think this is correct.

Yes.

Lada

>
>
> /martin
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Mon Jun 29 08:27:44 2015
Return-Path: <alex@cisco.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 044041A7034 for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 08:27:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.51
X-Spam-Level: 
X-Spam-Status: No, score=-14.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 wK5rGKmAuhCe for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 08:27:40 -0700 (PDT)
Received: from alln-iport-8.cisco.com (alln-iport-8.cisco.com [173.37.142.95]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 248691A1ADA for <netmod@ietf.org>; Mon, 29 Jun 2015 08:27:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=17104; q=dns/txt; s=iport; t=1435591660; x=1436801260; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=lw25uudpIRcjyLybZd0SDsaBAckqrJaUSLIAogHrDL4=; b=arwT7o0D7ZFpK4vXPSyAqBmJ4BCITeHcyzRLFh54Tfhz73YKqSFQsGS5 B8HrKNGjeXV006yS6zZ93DF8LnLVgkREp5hMg9sajZWktRcJocxaW5oBf 5baio1Vxi+V6Egqpejw2gc8o4xm7qovr0aG8ZLR9lppe8wpdtNK5/si2D I=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CnAwCSY5FV/4QNJK1bgkVMVF8GvRkJgWaFeAKBNzgUAQEBAQEBAYEKhCIBAQEEHRBcAgEIDgMDAQEBCx0HMhQJCAIEARIIiCcNyE0BAQEBAQEBAQEBAQEBAQEBAQEBAQETBItKgT2DGCANCgGDF4EUBZEngl0BhFiEXINaFIN9imyEJ4NdJoI9gT1vgQMGPYECAQEB
X-IronPort-AV: E=Sophos;i="5.13,699,1427760000";  d="scan'208,217";a="163833457"
Received: from alln-core-10.cisco.com ([173.36.13.132]) by alln-iport-8.cisco.com with ESMTP; 29 Jun 2015 15:27:39 +0000
Received: from xhc-aln-x01.cisco.com (xhc-aln-x01.cisco.com [173.36.12.75]) by alln-core-10.cisco.com (8.14.5/8.14.5) with ESMTP id t5TFRdUT020539 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Mon, 29 Jun 2015 15:27:39 GMT
Received: from xmb-rcd-x05.cisco.com ([169.254.15.132]) by xhc-aln-x01.cisco.com ([173.36.12.75]) with mapi id 14.03.0195.001; Mon, 29 Jun 2015 10:27:38 -0500
From: "Alexander Clemm (alex)" <alex@cisco.com>
To: Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>, "lhotka@nic.cz" <lhotka@nic.cz>
Thread-Topic: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
Thread-Index: AQHQsm1l0JtyitIWP0yrkEY9hY04tZ3Dlzsw
Date: Mon, 29 Jun 2015 15:27:38 +0000
Message-ID: <DBC595ED2346914F9F81D17DD5C32B571DBCF548@xmb-rcd-x05.cisco.com>
References: <D1B6BB50.B48A3%kwatsen@juniper.net>
In-Reply-To: <D1B6BB50.B48A3%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.154.204.27]
Content-Type: multipart/alternative; boundary="_000_DBC595ED2346914F9F81D17DD5C32B571DBCF548xmbrcdx05ciscoc_"
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/pnXxv2bX0rSPJ4Jhr50Mc0znric>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 15:27:43 -0000

--_000_DBC595ED2346914F9F81D17DD5C32B571DBCF548xmbrcdx05ciscoc_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi Lada,

FWIW, I have a few general question/comment on the draft, for which it migh=
t be useful to add clarification:


-          The general approach appears to be that metadata generally needs=
 to be defined as part of the module, and when it is, must be supported.  H=
ow about augmenting an existing model with metadata "after" the fact (i.e. =
after the original definition)?  This appears to be potentially a more comm=
on usage in practice.  It would be useful to comment on expected usage, and=
 perhaps add an example in which an existing model is augmented with metada=
ta (or at least allude to the fact that this is a possibility).

-          How does metadata show up in regular operations - how is it modi=
fied and retrieved; how is it being populated?  I think it would also be he=
lpful to add a section that illustrates usage of metadata. I was surprised =
to e.g. not see "default" as a substatement; is this something that should =
be added?

--- Alex

From: netmod [mailto:netmod-bounces@ietf.org] On Behalf Of Kent Watsen
Sent: Monday, June 29, 2015 6:14 AM
To: netmod@ietf.org
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (=
until 2015-06-29)


All,

Today is the cutoff date for the Last Call for this draft, but the author i=
ndicated that comments received today or tomorrow can be incorporated into =
the draft-update being worked on.  So, if you have any lingering reviews, p=
lease send them before as soon as possible.

Thanks!
Kent



From: Kent Watsen <kwatsen@juniper.net<mailto:kwatsen@juniper.net>>
Date: Monday, June 15, 2015 at 6:49 PM
To: "netmod@ietf.org<mailto:netmod@ietf.org>" <netmod@ietf.org<mailto:netmo=
d@ietf.org>>
Subject: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (unti=
l 2015-06-29)


This is a notice to start a NETMOD WG last call for the document "Defining =
and Using Metadata with YANG":

https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01

Please indicate your support by Monday June 29, 2015 at 9PM EST.
We are not only interested in receiving defect reports, we are equally
interested in statements of the form:

  "I have reviewed I-D XYZ and I found no issues"
  "I have implemented the data model in I-D XYZ"
  "I am implementing the data model in I-D XYZ"
  "I am considering to implement the data model in I-D XYZ"

This is the first Last Call for this document.

Kent, as NETMOD co-chair


--_000_DBC595ED2346914F9F81D17DD5C32B571DBCF548xmbrcdx05ciscoc_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman",serif;}
span.apple-tab-span
	{mso-style-name:apple-tab-span;}
span.EmailStyle18
	{mso-style-type:personal;
	font-family:"Calibri",sans-serif;
	color:#1F497D;}
span.EmailStyle19
	{mso-style-type:personal-compose;
	font-family:"Calibri",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:1942568905;
	mso-list-type:hybrid;
	mso-list-template-ids:1797951488 899479536 67698691 67698693 67698689 6769=
8691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-start-at:4;
	mso-level-number-format:bullet;
	mso-level-text:-;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Calibri",sans-serif;
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
@list l0:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:#1F497D">Hi Lada,<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:#1F497D">FWIW, I have a few general question/c=
omment on the draft, for which it might be useful to add clarification:<o:p=
></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo1"><![if !supportLists]><span style=3D"font-size:11.0pt;font-family:&q=
uot;Calibri&quot;,sans-serif;color:#1F497D"><span style=3D"mso-list:Ignore"=
>-<span style=3D"font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style=3D"font-size:11.0pt;font-family:=
&quot;Calibri&quot;,sans-serif;color:#1F497D">The general approach appears =
to be that metadata generally needs to be defined as part of the module, an=
d when it is, must be supported.&nbsp; How about
 augmenting an existing model with metadata &#8220;after&#8221; the fact (i=
.e. after the original definition)?&nbsp; This appears to be potentially a =
more common usage in practice.&nbsp; It would be useful to comment on expec=
ted usage, and perhaps add an example in which an existing
 model is augmented with metadata (or at least allude to the fact that this=
 is a possibility).&nbsp;
<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo1"><![if !supportLists]><span style=3D"font-size:11.0pt;font-family:&q=
uot;Calibri&quot;,sans-serif;color:#1F497D"><span style=3D"mso-list:Ignore"=
>-<span style=3D"font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style=3D"font-size:11.0pt;font-family:=
&quot;Calibri&quot;,sans-serif;color:#1F497D">How does metadata show up in =
regular operations &#8211; how is it modified and retrieved; how is it bein=
g populated?&nbsp; I think it would also be helpful to
 add a section that illustrates usage of metadata. I was surprised to e.g. =
not see &#8220;default&#8221; as a substatement; is this something that sho=
uld be added?
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:#1F497D">--- Alex<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:11.0pt;font-family:&quot=
;Calibri&quot;,sans-serif">From:</span></b><span style=3D"font-size:11.0pt;=
font-family:&quot;Calibri&quot;,sans-serif"> netmod [mailto:netmod-bounces@=
ietf.org]
<b>On Behalf Of </b>Kent Watsen<br>
<b>Sent:</b> Monday, June 29, 2015 6:14 AM<br>
<b>To:</b> netmod@ietf.org<br>
<b>Subject:</b> Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metada=
ta-01 (until 2015-06-29)<o:p></o:p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">All,<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">Today is the cutoff date for the Last C=
all for this draft, but the author indicated that comments received today o=
r tomorrow can be incorporated into the draft-update
 being worked on. &nbsp;So, if you have any lingering reviews, please send =
them before as soon as possible.<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">Thanks!<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">Kent<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:11.0pt;font-family:&quot=
;Calibri&quot;,sans-serif;color:black">From:
</span></b><span style=3D"font-size:11.0pt;font-family:&quot;Calibri&quot;,=
sans-serif;color:black">Kent Watsen &lt;<a href=3D"mailto:kwatsen@juniper.n=
et">kwatsen@juniper.net</a>&gt;<br>
<b>Date: </b>Monday, June 15, 2015 at 6:49 PM<br>
<b>To: </b>&quot;<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a>&quo=
t; &lt;<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a>&gt;<br>
<b>Subject: </b>[netmod] WG Last Call for draft-ietf-netmod-yang-metadata-0=
1 (until 2015-06-29)<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<div>
<div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">This is a notice to start a NETMOD WG l=
ast call for the document &quot;Defining and Using Metadata with YANG&quot;=
:<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><a href=3D"https://tools.ietf.org/html/=
draft-ietf-netmod-yang-metadata-01">https://tools.ietf.org/html/draft-ietf-=
netmod-yang-metadata-01</a><o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">Please indicate your support by Monday =
June 29, 2015 at 9PM EST.&nbsp;<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">We are not only interested in receiving=
 defect reports, we are equally<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">interested in statements of the form:<o=
:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">&nbsp; &quot;I have reviewed I-D XYZ an=
d I found no issues&quot;<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">&nbsp; &quot;I have implemented the dat=
a model in I-D XYZ&quot;<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">&nbsp; &quot;I am implementing the data=
 model in I-D XYZ&quot;<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">&nbsp; &quot;I am considering to implem=
ent the data model in I-D XYZ&quot;<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">This is the first Last Call for this do=
cument.<o:p></o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black">Kent, as NETMOD co-chair<o:p></o:p></sp=
an></p>
</div>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:10.5pt;font-family:&quot;Ca=
libri&quot;,sans-serif;color:black"><o:p>&nbsp;</o:p></span></p>
</div>
</div>
</div>
</div>
</body>
</html>

--_000_DBC595ED2346914F9F81D17DD5C32B571DBCF548xmbrcdx05ciscoc_--


From nobody Mon Jun 29 09:28:53 2015
Return-Path: <wwwrun@rfc-editor.org>
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 2D9AB1AD160 for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 09:28:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -106.912
X-Spam-Level: 
X-Spam-Status: No, score=-106.912 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_WHITELIST=-100] 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 U9Fcsh0YxbXC for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 09:28:43 -0700 (PDT)
Received: from rfc-editor.org (rfc-editor.org [4.31.198.49]) by ietfa.amsl.com (Postfix) with ESMTP id 1F1D01AD36E for <netmod@ietf.org>; Mon, 29 Jun 2015 09:28:43 -0700 (PDT)
Received: by rfc-editor.org (Postfix, from userid 30) id 58473180452; Mon, 29 Jun 2015 09:25:36 -0700 (PDT)
To: mbj@tail-f.com, bclaise@cisco.com, joelja@bogus.com, j.schoenwaelder@jacobs-university.de, kwatsen@juniper.net, tnadeau@lucidvision.com
X-PHP-Originating-Script: 6000:errata_mail_lib.php
From: RFC Errata System <rfc-editor@rfc-editor.org>
Message-Id: <20150629162536.58473180452@rfc-editor.org>
Date: Mon, 29 Jun 2015 09:25:36 -0700 (PDT)
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/QSShBcIF6ITcLfmdjgCJkTFFg7U>
Cc: netmod@ietf.org, rfc-editor@rfc-editor.org
Subject: [netmod] [Editorial Errata Reported] RFC7223 (4405)
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 16:28:45 -0000

The following errata report has been submitted for RFC7223,
"A YANG Data Model for Interface Management".

--------------------------------------
You may review the report below and at:
http://www.rfc-editor.org/errata_search.php?rfc=7223&eid=4405

--------------------------------------
Type: Editorial
Reported by: Rob Wilton <rwilton@cisco.com>

Section: 1.2.

Original Text
-------------
   o  Symbols after data node names: "?" means an optional node, "!"
      means a presence container, and "*" denotes a list and leaf-list.

Corrected Text
--------------
   o  Symbols after data node names: "?" means an optional node, "!"
      means a presence container, and "*" denotes a list or leaf-list.

Notes
-----
Change "list and leaf-list" to "list or leaf-list"

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 (IESG)
can log in to change the status and edit the report, if necessary. 

--------------------------------------
RFC7223 (draft-ietf-netmod-interfaces-cfg-16)
--------------------------------------
Title               : A YANG Data Model for Interface Management
Publication Date    : May 2014
Author(s)           : M. Bjorklund
Category            : PROPOSED STANDARD
Source              : NETCONF Data Modeling Language
Area                : Operations and Management
Stream              : IETF
Verifying Party     : IESG


From nobody Mon Jun 29 14:42:14 2015
Return-Path: <phil@juniper.net>
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 0BECE1B3551 for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 14:42:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 q3sN0sUXBfWR for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 14:42:11 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0123.outbound.protection.outlook.com [207.46.100.123]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 41ACC1B354A for <netmod@ietf.org>; Mon, 29 Jun 2015 14:42:10 -0700 (PDT)
Received: from BY1PR0501CA0013.namprd05.prod.outlook.com (10.162.139.23) by BLUPR05MB769.namprd05.prod.outlook.com (10.141.209.19) with Microsoft SMTP Server (TLS) id 15.1.195.15; Mon, 29 Jun 2015 21:42:09 +0000
Received: from BY2FFO11OLC008.protection.gbl (2a01:111:f400:7c0c::191) by BY1PR0501CA0013.outlook.office365.com (2a01:111:e400:4821::23) with Microsoft SMTP Server (TLS) id 15.1.201.16 via Frontend Transport; Mon, 29 Jun 2015 21:42:09 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.18) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.18 as permitted sender)
Received: from p-emfe01b-sac.jnpr.net (66.129.239.18) by BY2FFO11OLC008.mail.protection.outlook.com (10.1.14.255) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Mon, 29 Jun 2015 21:42:09 +0000
Received: from magenta.juniper.net (172.17.27.123) by p-emfe01b-sac.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.123.3; Mon, 29 Jun 2015 14:42:06 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5TLg5D77683;	Mon, 29 Jun 2015 14:42:05 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5TLeMOp048833; Mon, 29 Jun 2015 17:40:22 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506292140.t5TLeMOp048833@idle.juniper.net>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
In-Reply-To: <20150628141617.GA31380@elstar.local>
Date: Mon, 29 Jun 2015 17:40:22 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC008; 1:Y0f3Us0Ud1lYD6hukIv+snUnpWBr0Q66+aM86jIfJly04xhiBmCiXqLNhv4NXl+sW4lhYF2Fa9r5cRTxN+sEu0Sskm2deQTruizEj4yCHUPIpdNRUzJvffP5ayQ1fyZmcYd63mRtmsBZ5EXs97zIVk4I+rJ32FvjjtqfVnZopH2ChAuFtYm5a1zWTkEiGkWLqbO0/gNI2vVCPRqeQc2e6p1eJWlp5SIXbNLOWX2u3sl33rZtB4oaw4zL5ppYMEdwq2E3FDHFWzMun4wiW/njxP9s/gwLq2/LwIwMrjrWX4Om73Lz4yBIQ7wulf3VMdqY
X-Forefront-Antispam-Report: CIP:66.129.239.18; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(164054003)(189002)(199003)(46102003)(5003600100002)(6806004)(47776003)(48376002)(106466001)(62966003)(77156002)(86362001)(50466002)(2950100001)(77096005)(92566002)(76506005)(189998001)(5001960100002)(87936001)(105596002)(5001920100001)(110136002)(53416004)(50986999)(54356999); DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR05MB769; H:p-emfe01b-sac.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB769; 2:HdjZf3Ef60x1sNJVTIsoMQ7RfOZeS5Tq7jqWEQ5XDvVExlulOSywTfZexl8XUWaZ; 3:v0eTr3Z+UjQvwRPOpGaSFdCGFUNqq3nVrExV1AJR/uwwKLOAl2+F1KlVrf/pUesvaTo4C/Zpe4WoP0USfHAQl2yNmz1TU/t7jgqcFz2blnDv6x7EptcWpyn5WIPOW+Qp/iJC/yf3QoA6wWyjUs5unUX1a1oYNcugmdXp7fkuJk+9mf91foAve5oIQNUuvgIutYb3PPIFOVFW43FiXqbNy6JCrf2fFSk7TYWIeaPwvNg=; 20:erkRJMRArVgvMZ9u5oSRpc2SjGS96eGIbxqGqqC1hEfO/kzMsG4WLaEONBHNda4RAt3y/wu9fNeM2Cr4k+RfypS8AFN2w1GP01Flh78oUQBnKJBPNH3S4CF3tr+8RFjr0gDQqxXyFTULOD4i0P4OHxjwwKeBW27uWF5IWkBbgCGOm1F8icneprtn/zyM233ECXB8jpJJZuxtiNTTBiFfiHZwzy27JhIPZOYQ9YHjhqqSj5xb1RTOaPtJS9ZdkLyn4lcopIx5T2fla5E/gn9B3pXUNvowzkncZVnFEcogb1GjDaamYdWDMC/XRsr8Waxyhr5RBEJCfQS4YUzzv81xu3f9UGRsF3RUrIczlxK5fIh+gA0sAbnTQCABEJjUT4YXoZgOSyTyLoKyJx8O5SZ7JPeaze0QwFt84SZBCiqA1ahLQFquyz5HMfTEqBWv95WMaxCi7H0JpdrPJ+MG0JsA232jRKMUFjkMx00j6dPe2uWdiedOAarp4jy4jjbu3k6h
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR05MB769;
X-Microsoft-Antispam-PRVS: <BLUPR05MB769ACC55D107EC3CBD4BF5CC9AA0@BLUPR05MB769.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BLUPR05MB769; BCL:0; PCL:0; RULEID:; SRVR:BLUPR05MB769; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB769; 4:147SIiXJTgSJDkTwzLVHb+piwrJkLTVm0ybkXHf7y5nt7t3PnE/OmHTlX6IT7Q6JocYSFT1jpvdiHE6rttBUnQCikMIjgARXeyLvzZ7huIry8cLmGXKYgWjweUSx/DpY6TyiApLfi0gQfocP5quGaXXaZkk0IQA+XbA1pU5ic8g/d9KseIFSdFEG3ik0133R9v+21swhaX25vYCo8X5eh6s2uptsz9BnBUakU0m8A11FY1KXF/LEeLRfo4o8IrPW5TH9JIgUcpq8V+gCyjCTZEpiRX9a+TPoPtYLiHaGhaQ=
X-Forefront-PRVS: 0622A98CD5
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB769; 23:S5XeAsExDKgMYsyCkcVRdZKCCQ+1o1TlMuj8/O+cBlsZh2ekHbcuzSD8VidVswEHia5/37Eipykko8rdmFxayH7xN0buXW1GcAyTrFUO6DZKqAUmRHethwueQ9v1izk4hevu2jPcd3jvbWCVY55ZU9O5/tuhswRJe/hLWRYRyl0cqtKgFqcQj7fuGihZl6HxtvYqU+AU0LKR0/FMe/lKU7jDf9uGOF1pYGvaPVtgnFAQX7ylI+XPGSe9luXCFam33xMnMcr7wcezAUa0mjYb2K08iKxQeh+y2bwyNbqy62sRq4zWUC/H4uamF9XRtmmnt0lVZz/LyFBVNHYDPHcc4qmBPBp8MwfuVtccVOzAPSx9oVtHMGQ6S2I1billpDF8HVNrFmsK1QP+Owh2rObgYidwg4HrBtYd3trhkHcQRYYDpxG0nxt2SdSXgCDQAfvxwlxwf2cgnHZ15SYtRGOGcmfdEfJhp0QLSWsiqtEC+eNMQj0K0qC8OG0W2u3Ok9gW9XWFigrsSGwDX/r8hJqueC9lkG1QCYU4luRwDBPJ5QQmCrakATfFnZq9tt9wQCmKYKFAMlbbE+Y1+1r3lH9+g+vU+UA3/zKirZjbRRtYPJKDYYyJllmTEjwMFsU2HT9nYDa8wtw3qPlGKBVijU6997jW7yL246PtBoHO1pzdW9cl7vCgOsJGUm0hVATFoK2VgrKyHL5vl2Wai9ucaPMJDbInO1Dw01oychrlilwvuRgdUnAWB83kbzAg/JpXA7+xz3ZsH8F4KEiIB0htBGoTSw==; 5:MpoizavTy1rgp6JZ0m7M6s8FK5eBge2+0nyR/x4r/9fPnJEbuiFAhcdGyjgIza35uiffBCinX5eZCMIIpbUQkwQ11RDdX8d90qPV+Ks3/Yj3uPiGb2Adp11MXdWtFfNbHGeYveVCXc8/qHm0YbTYqA==
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB769; 24:/k3s4GIW27Jw/WppxFEbE5XXpR1NVKR7ntxMo8htIj3AVnNqM1ZLTyhQxMbn+oRgPqa/ZdPyCtVqmZNFRyEZNvLW021GX308NhcBWTo6Nrk=; 20:56bF2J86Vw4/Ib3uCFV7AahIKfj9WFMv7BSTfXsyIeO9BQoz3awVEgP0F+z25Xvx8aP4ideD7hroVl7wzNIKVQ==
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2015 21:42:09.1739 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.18];  Helo=[p-emfe01b-sac.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR05MB769
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/sZNb6P3woTDfMQPPcps771V1QPU>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 21:42:13 -0000

Juergen Schoenwaelder writes:
>And my understanding is that the list foo defined above will never
>have an instance, correct? I assume decent compilers will continue to
>create warnings when they can decide that a list will never have any
>instances. (And yes, there are other ways to construct such lists, so
>I am OK with removing a constraint preventing a specific case of such
>useless lists.)

Doesn't removing the prohibition require us to accept such nonsense?

Thanks,
 Phil


From nobody Mon Jun 29 14:51:42 2015
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 CE8191A8A5E for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 14:51:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 X6ksRUb2x-qz for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 14:51:32 -0700 (PDT)
Received: from mail-la0-f45.google.com (mail-la0-f45.google.com [209.85.215.45]) (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 BD40D1A8963 for <netmod@ietf.org>; Mon, 29 Jun 2015 14:51:31 -0700 (PDT)
Received: by laar3 with SMTP id r3so79717076laa.0 for <netmod@ietf.org>; Mon, 29 Jun 2015 14:51:30 -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=8cjVKVDJCayzU6m1HwWHdicabXiHfq6ix/91JYnLRXw=; b=G7nm8uc69H9bFWGPoGDTp0eAbCbkxrDH1ngowAAft5Jpv631m31JNT4ehzEJyU3zSJ oFAj/xSYIXGfT2SGyOHlyEtc2p3bCSDZ4BUW/ks5Ebwf8t2KTGTvLciB0ZwTmjJODmn/ 8Mu6Xf8irKQNgIXyThRDfjAGGU4zeWWsUZtHYF8z02P1VncJCwfop2aFRgwXrdhOx51k rj4l2D7x3CpFN4QwIwCVg4U1Z820kgdgVaA/c1kJa4GeZ4nwkd+HofFGplnrCBv3TU5j Bp2X0kYhMb1GH+y2mlyky1J3AhAalKtAEwK/OsjtcoVZHsmNrZEKbZXZ71cxcKTcet2b psqQ==
X-Gm-Message-State: ALoCoQkAts46NrnfOyVuVMElkDxhpRTA8a6AA1NTfKUKoZkzfo6RmrC/TfVjbKKotYVfv38+fwkM
MIME-Version: 1.0
X-Received: by 10.152.116.49 with SMTP id jt17mr16196572lab.82.1435614690311;  Mon, 29 Jun 2015 14:51:30 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Mon, 29 Jun 2015 14:51:30 -0700 (PDT)
In-Reply-To: <201506292140.t5TLeMOp048833@idle.juniper.net>
References: <20150628141617.GA31380@elstar.local> <201506292140.t5TLeMOp048833@idle.juniper.net>
Date: Mon, 29 Jun 2015 14:51:30 -0700
Message-ID: <CABCOCHRCyDp5dArYp9OKRgfxwRNO=tmb=oiys4v_PC0969FboQ@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Phil Shafer <phil@juniper.net>
Content-Type: multipart/alternative; boundary=001a11c3677ea697740519af17e9
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/8P-F1a2XwpQ0tJ91wf4Dlv2joo4>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 21:51:38 -0000

--001a11c3677ea697740519af17e9
Content-Type: text/plain; charset=UTF-8

On Mon, Jun 29, 2015 at 2:40 PM, Phil Shafer <phil@juniper.net> wrote:

> Juergen Schoenwaelder writes:
> >And my understanding is that the list foo defined above will never
> >have an instance, correct? I assume decent compilers will continue to
> >create warnings when they can decide that a list will never have any
> >instances. (And yes, there are other ways to construct such lists, so
> >I am OK with removing a constraint preventing a specific case of such
> >useless lists.)
>
> Doesn't removing the prohibition require us to accept such nonsense?
>
>

No - using 'empty' as a key allows 1 instance, same as a container.
It may be pointless bug not harmful.

We currently allow things in YANG 1.1 such as "mandatory true"
on an enumeration leaf, yet if-feature is allowed on enum-stmt so
it could be the server will not actually accept any of the values,
yet the leaf is still mandatory.  (At least for bits the
server will accept an empty bit set, but not enumeration).


Thanks,
>  Phil
>
>
Andy


> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a11c3677ea697740519af17e9
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Mon, Jun 29, 2015 at 2:40 PM, Phil Shafer <span dir=3D"ltr">&lt;<a h=
ref=3D"mailto:phil@juniper.net" target=3D"_blank">phil@juniper.net</a>&gt;<=
/span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">Juergen Schoenwaelder write=
s:<br>
&gt;And my understanding is that the list foo defined above will never<br>
&gt;have an instance, correct? I assume decent compilers will continue to<b=
r>
&gt;create warnings when they can decide that a list will never have any<br=
>
&gt;instances. (And yes, there are other ways to construct such lists, so<b=
r>
&gt;I am OK with removing a constraint preventing a specific case of such<b=
r>
&gt;useless lists.)<br>
<br>
Doesn&#39;t removing the prohibition require us to accept such nonsense?<br=
>
<br></blockquote><div><br></div><div><br></div><div>No - using &#39;empty&#=
39; as a key allows 1 instance, same as a container.</div><div>It may be po=
intless bug not harmful.</div><div><br></div><div>We currently allow things=
 in YANG 1.1 such as &quot;mandatory true&quot;</div><div>on an enumeration=
 leaf, yet if-feature is allowed on enum-stmt so</div><div>it could be the =
server will not actually accept any of the values,</div><div>yet the leaf i=
s still mandatory. =C2=A0(At least for bits the</div><div>server will accep=
t an empty bit set, but not enumeration).</div><div><br></div><div><br></di=
v><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:=
1px #ccc solid;padding-left:1ex">
Thanks,<br>
=C2=A0Phil<br>
<br></blockquote><div><br></div><div>Andy</div><div>=C2=A0</div><blockquote=
 class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc soli=
d;padding-left:1ex">
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div></div>

--001a11c3677ea697740519af17e9--


From nobody Mon Jun 29 16:14:52 2015
Return-Path: <bclaise@cisco.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 012B91B2F8F for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 16:14:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.51
X-Spam-Level: 
X-Spam-Status: No, score=-14.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 ku9A-8CauGE7 for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 16:14:46 -0700 (PDT)
Received: from aer-iport-4.cisco.com (aer-iport-4.cisco.com [173.38.203.54]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 47ECE1B2F8C for <netmod@ietf.org>; Mon, 29 Jun 2015 16:14:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=10997; q=dns/txt; s=iport; t=1435619686; x=1436829286; h=subject:to:references:from:message-id:date:mime-version: in-reply-to; bh=/n8r+INTXwLAcq9dR/ph29hLWG8tGHcUPzC+loG/gPA=; b=QEy+NgJXa1hhp7iJ/fmpDYV80ceobeNi9QL9752R+kbba9U5Us/ggBvc Ef2IAMcvTQG5+DtCVefvweKayvRiJZtaDr77PzKIbd4lg24TKZE5qaBuj GZh8zwCHXjFGnzNz+M+MnNMhAP1E2qWgY4bgl3sl53iyFNvskcr77tkes Y=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CiBADa0JFV/xbLJq1bgkWBIF+/EQEJhS5KAoIMAQEBAQEBgQuEIgEBAQQBAQEaUQoRCw4DAwECChYIBwkDAgECARUfCQgGAQwGAgEBiCsNyWQBAQEBAQEBAQEBAQEBAQEBAQEBARQEi0qBPYM4GIQrAQSRJ4JdhFmEXIIggToUg32Ca4gBhCeDXSaCGSSBPzwxAYECBoE/AQEB
X-IronPort-AV: E=Sophos;i="5.15,373,1432598400";  d="scan'208,217";a="544222535"
Received: from aer-iport-nat.cisco.com (HELO aer-core-2.cisco.com) ([173.38.203.22]) by aer-iport-4.cisco.com with ESMTP; 29 Jun 2015 23:14:43 +0000
Received: from [10.60.67.87] (ams-bclaise-8916.cisco.com [10.60.67.87]) by aer-core-2.cisco.com (8.14.5/8.14.5) with ESMTP id t5TNEgdd030903; Mon, 29 Jun 2015 23:14:43 GMT
To: Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D1B6BB50.B48A3%kwatsen@juniper.net>
From: Benoit Claise <bclaise@cisco.com>
Message-ID: <5591D162.4010100@cisco.com>
Date: Tue, 30 Jun 2015 01:14:42 +0200
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1
MIME-Version: 1.0
In-Reply-To: <D1B6BB50.B48A3%kwatsen@juniper.net>
Content-Type: multipart/alternative; boundary="------------010903020606010909000605"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/xGcG_NYUJ1yCGmRQ8iPYBhauSDU>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 29 Jun 2015 23:14:50 -0000

This is a multi-part message in MIME format.
--------------010903020606010909000605
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit

Dear all,

As a contributor, I browsed through draft-ietf-netmod-yang-metadata

-
        The set of annotations must be extensible in a distributed manner
        so as to allow for defining new annotations without running into
        the risk of collisions with annotations defined and used by
        others.

What does "in a distributed manner" mean?



- In the introduction, you mention:
    Typical use cases are:

    o  Deactivating a subtree in a configuration datastore while keeping
       the data in place.

    o  Complementing data model information with instance-specific data.

    o  RPC operations may use metadata annotations for various purposes
       in both requests and responses.  For example, the <edit-config>
       operation in the NETCONF protocol (seesection 7.2 of [RFC6241] <https://tools.ietf.org/html/rfc6241#section-7.2>)
       uses annotations in the form of XML attributes for identifying the
       point in the configuration and type of the operation.


Don't you have any other examples than those 3?
What about showing these examples with the spec. in this document?
Note: I see that the first one is documented with module example-inactive


- Please correct the IANA considerations as in RFC7277, in particular the Registrant Contact:
    This document registers a URI in the "IETF XML Registry" [RFC3688 <https://tools.ietf.org/html/rfc3688>].
    Following the format inRFC 3688 <https://tools.ietf.org/html/rfc3688>, the following registration has been
    made.

        URI: urn:ietf:params:xml:ns:yang:ietf-ip

        Registrant Contact: The NETMOD WG of the IETF.

        XML: N/A; the requested URI is an XML namespace.

Regards, Benoit
>
> All,
>
> Today is the cutoff date for the Last Call for this draft, but the 
> author indicated that comments received today or tomorrow can be 
> incorporated into the draft-update being worked on.  So, if you have 
> any lingering reviews, please send them before as soon as possible.
>
> Thanks!
> Kent
>
>
>
> From: Kent Watsen <kwatsen@juniper.net <mailto:kwatsen@juniper.net>>
> Date: Monday, June 15, 2015 at 6:49 PM
> To: "netmod@ietf.org <mailto:netmod@ietf.org>" <netmod@ietf.org 
> <mailto:netmod@ietf.org>>
> Subject: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 
> (until 2015-06-29)
>
>
> This is a notice to start a NETMOD WG last call for the document 
> "Defining and Using Metadata with YANG":
>
> https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01
>
> Please indicate your support by Monday June 29, 2015 at 9PM EST.
> We are not only interested in receiving defect reports, we are equally
> interested in statements of the form:
>
>   "I have reviewed I-D XYZ and I found no issues"
>   "I have implemented the data model in I-D XYZ"
>   "I am implementing the data model in I-D XYZ"
>   "I am considering to implement the data model in I-D XYZ"
>
> This is the first Last Call for this document.
>
> Kent, as NETMOD co-chair
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod


--------------010903020606010909000605
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Dear all,<br>
      <br>
      As a contributor, I browsed through
      draft-ietf-netmod-yang-metadata<br>
      <div class="moz-forward-container">
        <pre class="newpage">-
       The set of annotations must be extensible in a distributed manner
       so as to allow for defining new annotations without running into
       the risk of collisions with annotations defined and used by
       others.

What does "in a distributed manner" mean?



- In the introduction, you mention: 
   Typical use cases are:

   o  Deactivating a subtree in a configuration datastore while keeping
      the data in place.

   o  Complementing data model information with instance-specific data.

   o  RPC operations may use metadata annotations for various purposes
      in both requests and responses.  For example, the &lt;edit-config&gt;
      operation in the NETCONF protocol (see <a moz-do-not-send="true" href="https://tools.ietf.org/html/rfc6241#section-7.2">section 7.2 of [RFC6241]</a>)
      uses annotations in the form of XML attributes for identifying the
      point in the configuration and type of the operation.


Don't you have any other examples than those 3?
What about showing these examples with the spec. in this document?
Note: I see that the first one is documented with module example-inactive


- Please correct the IANA considerations as in RFC7277, in particular the Registrant Contact:
   This document registers a URI in the "IETF XML Registry" [<a moz-do-not-send="true" href="https://tools.ietf.org/html/rfc3688" title="&quot;The IETF XML Registry&quot;">RFC3688</a>].
   Following the format in <a moz-do-not-send="true" href="https://tools.ietf.org/html/rfc3688">RFC 3688</a>, the following registration has been
   made.

       URI: urn:ietf:params:xml:ns:yang:ietf-ip

       Registrant Contact: The NETMOD WG of the IETF.

       XML: N/A; the requested URI is an XML namespace.
</pre>
      </div>
      Regards, Benoit</div>
    <blockquote cite="mid:D1B6BB50.B48A3%25kwatsen@juniper.net"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <div><br>
      </div>
      <div>All,</div>
      <div><br>
      </div>
      <div>Today is the cutoff date for the Last Call for this draft,
        but the author indicated that comments received today or
        tomorrow can be incorporated into the draft-update being worked
        on.  So, if you have any lingering reviews, please send them
        before as soon as possible.</div>
      <div><br>
      </div>
      <div>Thanks!</div>
      <div>Kent</div>
      <div><br>
      </div>
      <div><br>
      </div>
      <div><br>
      </div>
      <span id="OLK_SRC_BODY_SECTION">
        <div style="font-family:Calibri; font-size:11pt;
          text-align:left; color:black; BORDER-BOTTOM: medium none;
          BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT:
          0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid;
          BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
          <span style="font-weight:bold">From: </span>Kent Watsen &lt;<a
            moz-do-not-send="true" href="mailto:kwatsen@juniper.net"><a class="moz-txt-link-abbreviated" href="mailto:kwatsen@juniper.net">kwatsen@juniper.net</a></a>&gt;<br>
          <span style="font-weight:bold">Date: </span>Monday, June 15,
          2015 at 6:49 PM<br>
          <span style="font-weight:bold">To: </span>"<a
            moz-do-not-send="true" href="mailto:netmod@ietf.org"><a class="moz-txt-link-abbreviated" href="mailto:netmod@ietf.org">netmod@ietf.org</a></a>"
          &lt;<a moz-do-not-send="true" href="mailto:netmod@ietf.org">netmod@ietf.org</a>&gt;<br>
          <span style="font-weight:bold">Subject: </span>[netmod] WG
          Last Call for draft-ietf-netmod-yang-metadata-01 (until
          2015-06-29)<br>
        </div>
        <div><br>
        </div>
        <div>
          <div style="word-wrap: break-word; -webkit-nbsp-mode: space;
            -webkit-line-break: after-white-space; color: rgb(0, 0, 0);
            font-size: 14px; font-family: Calibri, sans-serif;">
            <div>
              <div><font face="Calibri,sans-serif"><br>
                </font></div>
              <div><font face="Calibri,sans-serif">This is a notice to
                  start a NETMOD WG last call for the document "Defining
                  and Using Metadata with YANG":</font></div>
              <div><font face="Calibri,sans-serif"><br>
                </font></div>
              <div><font face="Calibri,sans-serif"><span class="Apple-tab-span" style="white-space:pre"></span></font><font
                  face="Calibri,sans-serif"><a moz-do-not-send="true"
                    href="https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01">https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01</a></font></div>
              <div><font face="Calibri,sans-serif"><br>
                </font></div>
              <div><font face="Calibri,sans-serif">Please indicate your
                  support by Monday June 29, 2015 at 9PM EST. </font></div>
              <div><font face="Calibri,sans-serif">We are not only
                  interested in receiving defect reports, we are equally</font></div>
              <div><font face="Calibri,sans-serif">interested in
                  statements of the form:</font></div>
              <div><font face="Calibri,sans-serif"><br>
                </font></div>
              <div><font face="Calibri,sans-serif">  "I have reviewed
                  I-D XYZ and I found no issues"</font></div>
              <div><font face="Calibri,sans-serif">  "I have implemented
                  the data model in I-D XYZ"</font></div>
              <div><font face="Calibri,sans-serif">  "I am implementing
                  the data model in I-D XYZ"</font></div>
              <div><font face="Calibri,sans-serif">  "I am considering
                  to implement the data model in I-D XYZ"</font></div>
              <div><font face="Calibri,sans-serif"><br>
                </font></div>
              <div><font face="Calibri,sans-serif">This is the first
                  Last Call for this document.</font></div>
              <div><font face="Calibri,sans-serif"><br>
                </font></div>
              <div><font face="Calibri,sans-serif">Kent, as NETMOD
                  co-chair</font></div>
            </div>
            <div style="color: rgb(0, 0, 0); font-family: Calibri,
              sans-serif; font-size: 14px;">
              <br>
            </div>
          </div>
        </div>
      </span>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
netmod mailing list
<a class="moz-txt-link-abbreviated" href="mailto:netmod@ietf.org">netmod@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/netmod">https://www.ietf.org/mailman/listinfo/netmod</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>

--------------010903020606010909000605--


From Pienaar.Ferdinand@alcatel-sbell.com.cn  Mon Jun 29 21:31:03 2015
Return-Path: <Pienaar.Ferdinand@alcatel-sbell.com.cn>
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 5CC471B308A for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 21:31:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.789
X-Spam-Level: 
X-Spam-Status: No, score=0.789 tagged_above=-999 required=5 tests=[BAYES_50=0.8, 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 lzl_Am1CurnT for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 21:31:02 -0700 (PDT)
Received: from cnshjsmin03.alcatel-sbell.com.cn (cnshjsmin03.alcatel-sbell.com.cn [211.144.215.47]) by ietfa.amsl.com (Postfix) with ESMTP id C2AFF1B3084 for <netmod@ietf.org>; Mon, 29 Jun 2015 21:31:01 -0700 (PDT)
X-AuditID: ac189297-f79ba6d00000129e-c4-55921ace0eb6
Received: from CNSHJCASHUB02.ad4.ad.alcatel.com (CNSHJCASHUB02.ad4.ad.alcatel.com [135.251.50.72]) by cnshjsmin03.alcatel-sbell.com.cn (Symantec Messaging Gateway) with SMTP id C7.A0.04766.ECA12955; Tue, 30 Jun 2015 12:27:58 +0800 (HKT)
Received: from CNSHJMBX04.ad4.ad.alcatel.com ([135.251.50.104]) by CNSHJCASHUB02.ad4.ad.alcatel.com ([135.251.50.72]) with mapi id 14.03.0123.003; Tue, 30 Jun 2015 12:30:56 +0800
From: FERDINAND Pienaar <Pienaar.Ferdinand@alcatel-sbell.com.cn>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: three color meters in diffserv model
Thread-Index: AdCy65SYTOfe57f0S5ebfft/gzcLcQ==
Date: Tue, 30 Jun 2015 04:30:55 +0000
Message-ID: <7579CCA174A41243ACCA0BD307F639F147A4D7C4@cnshjmbx04>
Accept-Language: zh-CN, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [135.251.31.246]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-CFilter-Loop: Reflected
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrLLMWRmVeSWpSXmKPExsXS/ts0Uvec1KRQg9OXdS3mX2xkdWD0WLLk J1MAYxSXTUpqTmZZapG+XQJXxqcb4QVr2Sr6L25gaWDsZu1i5OSQEDCRePj/HDuELSZx4d56 NhBbSOAdo8S2nVD2NkaJT+fBbDYBB4nmD+uZQWwRAXWJmTtB6jk4hAV0JV79jIYIG0mc2j6T GSQsIqAncWZfKkiYRUBV4s7LWWBbeQUcJR7dWQi2lVFAVmLao/tMIDazgLjErSfzmSCuEZBY suc8M4QtKvHy8T+oi5UkfszZygZRryOxYPcnKFtbYtnC18wQ8wUlTs58wgJRLylxcMUNlgmM IrOQrJiFpH0WkvZZSNoXMLKsYlRIzivOyCrOzcwzMNZLzElOLEnN0S1OSs3J0UvOz9VLztvE CIyENRKTpu9gfNvjfIhRgINRiYd3x/OJoUKsiWXFlbmHGCU4mJVEeOskJ4UK8aYkVlalFuXH F5XmpBYfYpTmYFES55W6LBMqJJAONDs7NbUgtQgmy8TBKdXA6P/LauG7HcfzVl6/+LCtbmXp U9Xj21TUzWJPfvq4fOHi1yud+twKJgQobLnZbxV56GBdm2uH5revpyoWsZx1PnX/y4aG6dy8 By2an27b9b1d8mzKt5gOGYeKeqb3S7VdzyVaZ0y+o8WbJdG84vzHHQZqqkWnZ8oKmX6tru0q 317k9l7+0weLBiWW4oxEQy3mouJEAAel+EOAAgAA
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/uRkkoHtTiEe0AwyqPeTJJI6VywE>
Subject: [netmod] three color meters in diffserv model
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 04:32:55 -0000

Hello

I think I see how container meter-cfg is intended to allow configuration of=
 RFC 2697 and 2698 style meters (by linking two meters in the meter-list vi=
a the pointer next-meter-id). But it seems to me that a way to indicate ove=
rflow from one bucket to another during token update is needed. In RFC 2697=
, bucket E is incremented only if bucket C is full, i.e. C overflows into E=
. In RFC 2698, buckets C and P are updated independently.

The Metro Ethernet Forum's Bandwidth Profile Algorithm explicitly supports =
configuring this type of coupling, via parameter CF, "coupling flag".

It's not clear to me how RFC 2697 can be supported by concatenating the met=
ers in the YANG model, unless there is a way to indicate overflow between t=
hem.

Ferdi Pienaar
Alcatel Shanghai-Bell


From nobody Mon Jun 29 22:52:14 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 71DB11B365B for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 22:52:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 RRe_gKDhKHeh for <netmod@ietfa.amsl.com>; Mon, 29 Jun 2015 22:52:11 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E21C11B365A for <netmod@ietf.org>; Mon, 29 Jun 2015 22:52:10 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 72927145A; Tue, 30 Jun 2015 07:52:08 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id US6oF8wnmudx; Tue, 30 Jun 2015 07:52:08 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 30 Jun 2015 07:52:07 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id A74BF2002C; Tue, 30 Jun 2015 07:52:08 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id f2bqrxlDNc-Y; Tue, 30 Jun 2015 07:52:07 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id E272120013; Tue, 30 Jun 2015 07:52:03 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 80C3534E5316; Tue, 30 Jun 2015 07:52:03 +0200 (CEST)
Date: Tue, 30 Jun 2015 07:52:03 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Phil Shafer <phil@juniper.net>
Message-ID: <20150630055203.GB4083@elstar.local>
Mail-Followup-To: Phil Shafer <phil@juniper.net>, Martin Bjorklund <mbj@tail-f.com>, netmod@ietf.org
References: <20150628141617.GA31380@elstar.local> <201506292140.t5TLeMOp048833@idle.juniper.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <201506292140.t5TLeMOp048833@idle.juniper.net>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/yvKUptcItbroAKPZn3-MTP4KHYc>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 05:52:12 -0000

On Mon, Jun 29, 2015 at 05:40:22PM -0400, Phil Shafer wrote:
> Juergen Schoenwaelder writes:
> >And my understanding is that the list foo defined above will never
> >have an instance, correct? I assume decent compilers will continue to
> >create warnings when they can decide that a list will never have any
> >instances. (And yes, there are other ways to construct such lists, so
> >I am OK with removing a constraint preventing a specific case of such
> >useless lists.)
> 
> Doesn't removing the prohibition require us to accept such nonsense?
>

I am not afraid of nonsense in data models since nonsense will not be
implemented. I would leave it to compiler writers to warn about
nonsense constructions a compiler can detect without requiring a
statement in the language definition trying to prohibit nonsense.
There are many ways to define degenerated lists in YANG; ruling out
one of them does not help that much and it creates inconsistencies -
why is one way to define a degenerated list forbidden but the others
are legal?

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 30 01:08:13 2015
Return-Path: <lhotka@nic.cz>
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 71C121A1A6C for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 01:08:12 -0700 (PDT)
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] 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 Qogm0Ej8T0ud for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 01:08:10 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id E11EB1A1A60 for <netmod@ietf.org>; Tue, 30 Jun 2015 01:08:08 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 8D8591CC0450; Tue, 30 Jun 2015 10:08:11 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: "Alexander Clemm \(alex\)" <alex@cisco.com>, Kent Watsen <kwatsen@juniper.net>, "netmod\@ietf.org" <netmod@ietf.org>
In-Reply-To: <DBC595ED2346914F9F81D17DD5C32B571DBCF548@xmb-rcd-x05.cisco.com>
References: <D1B6BB50.B48A3%kwatsen@juniper.net> <DBC595ED2346914F9F81D17DD5C32B571DBCF548@xmb-rcd-x05.cisco.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 30 Jun 2015 10:08:07 +0200
Message-ID: <m26165ehzs.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/ZtLhFAB1mjygOdwvlH4jpWBk9yg>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 08:08:12 -0000

Hi Alex,

"Alexander Clemm (alex)" <alex@cisco.com> writes:

> Hi Lada,
>
> FWIW, I have a few general question/comment on the draft, for which it might be useful to add clarification:
>
>
> -          The general approach appears to be that metadata generally
> needs to be defined as part of the module, and when it is, must be
> supported.  How about augmenting an existing model with metadata

Unfortunately, no. Annotations are defined via YANG extensions that may
be certainly ignored by the client, and perhaps even by the server - see my
earlier mail

https://mailarchive.ietf.org/arch/msg/netmod/TyObJv62iwRvfXgb1Lm-YGIwfP4

It would help somewhat to have "annotation" as a built-in statement
though not completely.

> "after" the fact (i.e. after the original definition)?  This appears
> to be potentially a more common usage in practice.  It would be useful
> to comment on expected usage, and perhaps add an example in which an
> existing model is augmented with metadata (or at least allude to the
> fact that this is a possibility).

Annotations are orthogonal to the "normal" YANG stuff. If they are
defined, and their use negotiated between the server and client, then
they can be used anywhere. In practice, an annotation may be designed,
e.g., for certain type(s) of data nodes, but from the YANG point of view
they aren't a new data node type, as attributes in XML. That's why
annotations are always defined at the top level of a module.

So, by design, annotations are not intended to augment a specific target
node.

>
> -          How does metadata show up in regular operations - how is it
> modified and retrieved; how is it being populated?  I think it would

The server or client can simply add them to NETCONF or RESTCONF payload,
using the encoding specified in the draft.

> also be helpful to add a section that illustrates usage of metadata. I
> was surprised to e.g. not see "default" as a substatement; is this
> something that should be added?

Given that annotations are not defined for specific locations in the
schema, defaults are not needed.

Lada

>
> --- Alex
>
> From: netmod [mailto:netmod-bounces@ietf.org] On Behalf Of Kent Watsen
> Sent: Monday, June 29, 2015 6:14 AM
> To: netmod@ietf.org
> Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
>
>
> All,
>
> Today is the cutoff date for the Last Call for this draft, but the author indicated that comments received today or tomorrow can be incorporated into the draft-update being worked on.  So, if you have any lingering reviews, please send them before as soon as possible.
>
> Thanks!
> Kent
>
>
>
> From: Kent Watsen <kwatsen@juniper.net<mailto:kwatsen@juniper.net>>
> Date: Monday, June 15, 2015 at 6:49 PM
> To: "netmod@ietf.org<mailto:netmod@ietf.org>" <netmod@ietf.org<mailto:netmod@ietf.org>>
> Subject: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
>
>
> This is a notice to start a NETMOD WG last call for the document "Defining and Using Metadata with YANG":
>
> https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01
>
> Please indicate your support by Monday June 29, 2015 at 9PM EST.
> We are not only interested in receiving defect reports, we are equally
> interested in statements of the form:
>
>   "I have reviewed I-D XYZ and I found no issues"
>   "I have implemented the data model in I-D XYZ"
>   "I am implementing the data model in I-D XYZ"
>   "I am considering to implement the data model in I-D XYZ"
>
> This is the first Last Call for this document.
>
> Kent, as NETMOD co-chair
>

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun 30 01:35:23 2015
Return-Path: <lhotka@nic.cz>
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 DD31A1A1B59 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 01:35:21 -0700 (PDT)
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] 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 SCosSbS4nIo2 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 01:35:20 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id DC29C1A1B53 for <netmod@ietf.org>; Tue, 30 Jun 2015 01:35:19 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 9E92A1CC0450; Tue, 30 Jun 2015 10:35:23 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Benoit Claise <bclaise@cisco.com>, Kent Watsen <kwatsen@juniper.net>, "netmod\@ietf.org" <netmod@ietf.org>
In-Reply-To: <5591D162.4010100@cisco.com>
References: <D1B6BB50.B48A3%kwatsen@juniper.net> <5591D162.4010100@cisco.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 30 Jun 2015 10:35:20 +0200
Message-ID: <m23819egqf.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/gOj8lNYOdYk_v3Rd3fchB3RjEE0>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 08:35:22 -0000

Hi Benoit,

Benoit Claise <bclaise@cisco.com> writes:

> Dear all,
>
> As a contributor, I browsed through draft-ietf-netmod-yang-metadata

Thanks.

>ay
> -
>         The set of annotations must be extensible in a distributed manner
>         so as to allow for defining new annotations without running into
>         the risk of collisions with annotations defined and used by
>         others.
>
> What does "in a distributed manner" mean?

It means that different parties needn't coordinate the names and use of
annotations, as long as they don't choose conflicting YANG module names
or namespace URIs.

>
>
>
> - In the introduction, you mention:
>     Typical use cases are:
>
>     o  Deactivating a subtree in a configuration datastore while keeping
>        the data in place.
>
>     o  Complementing data model information with instance-specific data.
>
>     o  RPC operations may use metadata annotations for various purposes
>        in both requests and responses.  For example, the <edit-config>
>        operation in the NETCONF protocol (seesection 7.2 of [RFC6241] <https://tools.ietf.org/html/rfc6241#section-7.2>)
>        uses annotations in the form of XML attributes for identifying the
>        point in the configuration and type of the operation.
>
>
> Don't you have any other examples than those 3?
> What about showing these examples with the spec. in this document?
> Note: I see that the first one is documented with module
> example-inactive

Well, the backlash I received with
draft-lhotka-netmod-yang-annotations-00 (expired) show that whilst there
is consensus about general utility of annotations, practical definitions
may be controversial. I could add the annotations from the above draft
as examples here but I fear they could still make for unnecessary
discussions.

Martin already pointed out in his review that it may be wiser to replace
the "inactive" annotation with something less controversial.

>
>
> - Please correct the IANA considerations as in RFC7277, in particular the Registrant Contact:
>     This document registers a URI in the "IETF XML Registry" [RFC3688 <https://tools.ietf.org/html/rfc3688>].
>     Following the format inRFC 3688 <https://tools.ietf.org/html/rfc3688>, the following registration has been
>     made.
>
>         URI: urn:ietf:params:xml:ns:yang:ietf-ip
>
>         Registrant Contact: The NETMOD WG of the IETF.
>
>         XML: N/A; the requested URI is an XML namespace.

OK, will do.

Thanks, Lada

>
> Regards, Benoit
>>
>> All,
>>
>> Today is the cutoff date for the Last Call for this draft, but the 
>> author indicated that comments received today or tomorrow can be 
>> incorporated into the draft-update being worked on.  So, if you have 
>> any lingering reviews, please send them before as soon as possible.
>>
>> Thanks!
>> Kent
>>
>>
>>
>> From: Kent Watsen <kwatsen@juniper.net <mailto:kwatsen@juniper.net>>
>> Date: Monday, June 15, 2015 at 6:49 PM
>> To: "netmod@ietf.org <mailto:netmod@ietf.org>" <netmod@ietf.org 
>> <mailto:netmod@ietf.org>>
>> Subject: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 
>> (until 2015-06-29)
>>
>>
>> This is a notice to start a NETMOD WG last call for the document 
>> "Defining and Using Metadata with YANG":
>>
>> https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01
>>
>> Please indicate your support by Monday June 29, 2015 at 9PM EST.
>> We are not only interested in receiving defect reports, we are equally
>> interested in statements of the form:
>>
>>   "I have reviewed I-D XYZ and I found no issues"
>>   "I have implemented the data model in I-D XYZ"
>>   "I am implementing the data model in I-D XYZ"
>>   "I am considering to implement the data model in I-D XYZ"
>>
>> This is the first Last Call for this document.
>>
>> Kent, as NETMOD co-chair
>>
>>
>>
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun 30 01:44:54 2015
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 C0F561A1BC3; Tue, 30 Jun 2015 01:44:52 -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 WouuKbSkvpO6; Tue, 30 Jun 2015 01:44:51 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 4B9301A1BDD; Tue, 30 Jun 2015 01:44:51 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id BBE2E1AE047F; Tue, 30 Jun 2015 10:44:49 +0200 (CEST)
Date: Tue, 30 Jun 2015 10:44:49 +0200 (CEST)
Message-Id: <20150630.104449.916352783153186338.mbj@tail-f.com>
To: netconf@ietf.org, netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <20150628.101115.524154870753102418.mbj@tail-f.com>
References: <20150627.101927.980507351929498326.mbj@tail-f.com> <CABCOCHR2Z8z+x-EcRDfqQj+tMmhh8j63bkAD9HQfNvdVJM9=6Q@mail.gmail.com> <20150628.101115.524154870753102418.mbj@tail-f.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/e51a2SDJLb1anw8cNGXSBFYzegw>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 08:44:52 -0000

Hi,

Here's a short summary, and then some questions for the WG.

The ietf-yang-library module is designed to serve two purposes:

  1.  A protocol-independent advertisement mechanism for YANG 1.1
      modules.

  2.  A list of the YANG modules stored in a server.


Q1.  Do you agree with these goals?


Q2.  Should this module be designed to work with both YANG 1.0 and
     YANG 1.1 servers - i.e., should it have yang-version 1.1 or not?

     If it should not be defined using YANG 1.1, why is this module
     special?


Q3.  Should the /modules/module list be designed to store both YANG
     1.0 and YANG 1.1 modules?


Q4.  Consider these modules, which both import foo without revision:

       module a { ... import foo; ... }
       module b { ... import foo; ... }

     Do we require a server that implements both a and b to use the
     same revision of foo?

     If the answer is yes, we need to indicate the default revision
     that the server uses in the model:

       container modules {
         ...
         list module {
           ...
           leaf default-revision {
             type boolean;
             default false;
             description
               "Indicates that this revision is used by the server if
                this module is imported without a specific revision
                date.";
           }
         }
       }

     If the answer is no, note that this puts an implementation burden
     on the client.  A client cannot simply download all listed
     modules, and load/compile/process them as one set.

     If the anwser is no, I propose that we extend the module as such:

       container modules {
         ...
         list module {
           ...
           list imported-without-revision {
             key "name revision";
             ...
           }
         }
       }

     A server could then list:

      <module>
        <name>a</name>
        <revision>2015-01-01</revision>
        <imported-without-revision>
          <name>foo</name>
          <revision>2002-02-02</revision>
        </imported-without-revision>
      </module>
      <module>
        <name>b</name>
        <revision>2015-01-01</revision>
        <imported-without-revision>
          <name>foo</name>
          <revision>2001-01-01</revision>
        </imported-without-revision>
      </module>

       

/martin


From nobody Tue Jun 30 01:53:01 2015
Return-Path: <lhotka@nic.cz>
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 4C3C91A1BBE for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 01:53:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.661
X-Spam-Level: 
X-Spam-Status: No, score=-5.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, RCVD_IN_DNSWL_HI=-5, 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 VFd8bpT-r8LL for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 01:52:58 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [217.31.204.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A37871A1BAC for <netmod@ietf.org>; Tue, 30 Jun 2015 01:52:58 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 3B85F1814AC for <netmod@ietf.org>; Tue, 30 Jun 2015 10:52:57 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1435654377; bh=2ZWbGsLk/EobSm4fdQXwlyRoaM5Ms1585TNyCN9B7Rk=; h=From:Date:To; b=N2xZsboC8srf4SRT6vRafZfEqkoVml8uie/wVV6LdPJUgCr0UB1TxNsuNkZJfkMCV lh+V5LfkmmYwaAW+q/F0IzN7nUcKBEmWh2nZRsEwIXH+5kebd4MpvGZ5d6c1dS7cfW IoFxHVpqa4R9dAO/2Z6faF7vkBKbqyRl/4oxv/og=
From: Ladislav Lhotka <lhotka@nic.cz>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Message-Id: <4A6BBA96-3A42-4E17-A4D0-EF8DFCD22BE7@nic.cz>
Date: Tue, 30 Jun 2015 10:52:59 +0200
To: NETMOD Working Group <netmod@ietf.org>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/gh9NBWD3UAzzOyxEDQ3LGE-TrSo>
Subject: [netmod] IANA Consideration
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 08:53:00 -0000

Hi,

is it OK that 6020bis again defines =E2=80=9CYANG Module Names=E2=80=9D =
registry? It was already defined in RFC 6020 so I=E2=80=99d say it =
shouldn=E2=80=99t be repeated.

Also, the two registered namespace URIs should IMO be

     URI: urn:ietf:params:xml:ns:yang:yin:1.1
     URI: urn:ietf:params:xml:ns:yang:1.1

Lada

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Tue Jun 30 02:06:08 2015
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 9FFE81A1EED for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 02:06:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=unavailable
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 slBxrQ8SsIN8 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 02:06:03 -0700 (PDT)
Received: from mail-la0-f46.google.com (mail-la0-f46.google.com [209.85.215.46]) (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 3FEA81A21A4 for <netmod@ietf.org>; Tue, 30 Jun 2015 02:05:49 -0700 (PDT)
Received: by laar3 with SMTP id r3so5054529laa.0 for <netmod@ietf.org>; Tue, 30 Jun 2015 02:05:47 -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=9cmj1Obu6dQhh5xQ2GAkto9Sa1ILVcnJcxJDQC7P+QM=; b=dJzKGxRqQlSesthViYAs9b+9sCXoAYZw5W58EKITLoN7+H2B4g8PYZSOMJr2ARHSfi TzryiGBFOq5rNsvUdlgC5A+2eq1IS6yb/LYVItuyHYVTm6s0ueN5umCBzR46gK8O/MPY R1JCg+pPU9YUtQw+XM+eGKGZrXjZxK8CTGQ+eqhu6gOJJU0oeyTpPe6ErOl5a+aT6pGt tGBdtpJSlThS1Eu7okbmJRfx0PfltQ3zzkgWKo+Re6bDOC2agwCLn4/QBTjHgb2qpdg+ HXIS6+UDNVCJyrrpSG0m9aQgTH0un8FhSVMtjH7CsWhTuTMPkT73H8DN+a/MWrVrkROj Mljw==
X-Gm-Message-State: ALoCoQmOwGp2CYwlFuMKpH0B1ZZqDG1tFCyfdkApc1N/uxgAex0nIGuLT0w7gKcMq5LAnlWeiHIQ
MIME-Version: 1.0
X-Received: by 10.112.164.66 with SMTP id yo2mr694972lbb.33.1435655147722; Tue, 30 Jun 2015 02:05:47 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 30 Jun 2015 02:05:47 -0700 (PDT)
In-Reply-To: <20150630.104449.916352783153186338.mbj@tail-f.com>
References: <20150627.101927.980507351929498326.mbj@tail-f.com> <CABCOCHR2Z8z+x-EcRDfqQj+tMmhh8j63bkAD9HQfNvdVJM9=6Q@mail.gmail.com> <20150628.101115.524154870753102418.mbj@tail-f.com> <20150630.104449.916352783153186338.mbj@tail-f.com>
Date: Tue, 30 Jun 2015 02:05:47 -0700
Message-ID: <CABCOCHQh4sUbgHM5513q0Fa4mr439VQr+XhU3nMcLnfa2LLsJA@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a11c32d5c19b6620519b883cb
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/jFR8UbCPA0TxTdLnBat6Ya2hoeI>
Cc: Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 09:06:05 -0000

--001a11c32d5c19b6620519b883cb
Content-Type: text/plain; charset=UTF-8

On Tue, Jun 30, 2015 at 1:44 AM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Hi,
>
> Here's a short summary, and then some questions for the WG.
>
> The ietf-yang-library module is designed to serve two purposes:
>
>   1.  A protocol-independent advertisement mechanism for YANG 1.1
>       modules.
>
>   2.  A list of the YANG modules stored in a server.
>
>
> Q1.  Do you agree with these goals?
>
>
> Q2.  Should this module be designed to work with both YANG 1.0 and
>      YANG 1.1 servers - i.e., should it have yang-version 1.1 or not?
>
>      If it should not be defined using YANG 1.1, why is this module
>      special?
>
>

What does 'special' mean here?
Can you identify a YANG 1.1 statement that this module needs?


>
> Q3.  Should the /modules/module list be designed to store both YANG
>      1.0 and YANG 1.1 modules?
>
>
Do you have some reason why YANG 1.0 files should be excluded?


>
> Q4.  Consider these modules, which both import foo without revision:
>
>        module a { ... import foo; ... }
>        module b { ... import foo; ... }
>
>      Do we require a server that implements both a and b to use the
>      same revision of foo?
>
>      If the answer is yes, we need to indicate the default revision
>      that the server uses in the model:
>
>        container modules {
>          ...
>          list module {
>            ...
>            leaf default-revision {
>              type boolean;
>              default false;
>              description
>                "Indicates that this revision is used by the server if
>                 this module is imported without a specific revision
>                 date.";
>            }
>          }
>        }
>
>      If the answer is no, note that this puts an implementation burden
>      on the client.  A client cannot simply download all listed
>      modules, and load/compile/process them as one set.
>
>      If the anwser is no, I propose that we extend the module as such:
>
>        container modules {
>          ...
>          list module {
>            ...
>            list imported-without-revision {
>              key "name revision";
>              ...
>            }
>          }
>        }
>
>
I do not think this change is needed


>      A server could then list:
>
>       <module>
>         <name>a</name>
>         <revision>2015-01-01</revision>
>         <imported-without-revision>
>           <name>foo</name>
>           <revision>2002-02-02</revision>
>         </imported-without-revision>
>       </module>
>       <module>
>         <name>b</name>
>         <revision>2015-01-01</revision>
>         <imported-without-revision>
>           <name>foo</name>
>           <revision>2001-01-01</revision>
>         </imported-without-revision>
>       </module>
>
>
>
YANG 1.0 and current 1.1 says that if no revision-date is used,
then the client does not know the version and the
server is not required to pick any specific version.

Your proposal seems to be that the library will fill in all the
revision-dates
and reproduce the import-tree.  It makes more sense to make
import-by-revision mandatory.  But IMO this is not a real
problem so there is no point in this solution.




>
> /martin
>
>

Andy


> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a11c32d5c19b6620519b883cb
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Tue, Jun 30, 2015 at 1:44 AM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Here&#39;s a short summary, and then some questions for the WG.<br>
<br>
The ietf-yang-library module is designed to serve two purposes:<br>
<br>
=C2=A0 1.=C2=A0 A protocol-independent advertisement mechanism for YANG 1.1=
<br>
=C2=A0 =C2=A0 =C2=A0 modules.<br>
<br>
=C2=A0 2.=C2=A0 A list of the YANG modules stored in a server.<br>
<br>
<br>
Q1.=C2=A0 Do you agree with these goals?<br>
<br>
<br>
Q2.=C2=A0 Should this module be designed to work with both YANG 1.0 and<br>
=C2=A0 =C2=A0 =C2=A0YANG 1.1 servers - i.e., should it have yang-version 1.=
1 or not?<br>
<br>
=C2=A0 =C2=A0 =C2=A0If it should not be defined using YANG 1.1, why is this=
 module<br>
=C2=A0 =C2=A0 =C2=A0special?<br>
<br></blockquote><div><br></div><div><br></div><div>What does &#39;special&=
#39; mean here?</div><div>Can you identify a YANG 1.1 statement that this m=
odule needs?</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Q3.=C2=A0 Should the /modules/module list be designed to store both YANG<br=
>
=C2=A0 =C2=A0 =C2=A01.0 and YANG 1.1 modules?<br>
<br></blockquote><div><br></div><div>Do you have some reason why YANG 1.0 f=
iles should be excluded?</div><div>=C2=A0</div><blockquote class=3D"gmail_q=
uote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1e=
x">
<br>
Q4.=C2=A0 Consider these modules, which both import foo without revision:<b=
r>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0module a { ... import foo; ... }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0module b { ... import foo; ... }<br>
<br>
=C2=A0 =C2=A0 =C2=A0Do we require a server that implements both a and b to =
use the<br>
=C2=A0 =C2=A0 =C2=A0same revision of foo?<br>
<br>
=C2=A0 =C2=A0 =C2=A0If the answer is yes, we need to indicate the default r=
evision<br>
=C2=A0 =C2=A0 =C2=A0that the server uses in the model:<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0container modules {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0...<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0list module {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0...<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0leaf default-revision {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0type boolean;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0default false;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0description<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;Indicates that=
 this revision is used by the server if<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 this module is impo=
rted without a specific revision<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 date.&quot;;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
<br>
=C2=A0 =C2=A0 =C2=A0If the answer is no, note that this puts an implementat=
ion burden<br>
=C2=A0 =C2=A0 =C2=A0on the client.=C2=A0 A client cannot simply download al=
l listed<br>
=C2=A0 =C2=A0 =C2=A0modules, and load/compile/process them as one set.<br>
<br>
=C2=A0 =C2=A0 =C2=A0If the anwser is no, I propose that we extend the modul=
e as such:<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0container modules {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0...<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0list module {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0...<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0list imported-without-revision {<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0key &quot;name revision&quo=
t;;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0...<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
<br></blockquote><div><br></div><div>I do not think this change is needed</=
div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 =
0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
=C2=A0 =C2=A0 =C2=A0A server could then list:<br>
<br>
=C2=A0 =C2=A0 =C2=A0 &lt;module&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;name&gt;a&lt;/name&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;revision&gt;2015-01-01&lt;/revision&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;imported-without-revision&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;name&gt;foo&lt;/name&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;revision&gt;2002-02-02&lt;/revision&=
gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;/imported-without-revision&gt;<br>
=C2=A0 =C2=A0 =C2=A0 &lt;/module&gt;<br>
=C2=A0 =C2=A0 =C2=A0 &lt;module&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;name&gt;b&lt;/name&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;revision&gt;2015-01-01&lt;/revision&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;imported-without-revision&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;name&gt;foo&lt;/name&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;revision&gt;2001-01-01&lt;/revision&=
gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;/imported-without-revision&gt;<br>
=C2=A0 =C2=A0 =C2=A0 &lt;/module&gt;<br>
<br>
<br></blockquote><div><br></div><div>YANG 1.0 and current 1.1 says that if =
no revision-date is used,</div><div>then the client does not know the versi=
on and the</div><div>server is not required to pick any specific version.</=
div><div><br></div><div>Your proposal seems to be that the library will fil=
l in all the revision-dates</div><div>and reproduce the import-tree.=C2=A0 =
It makes more sense to make</div><div>import-by-revision mandatory.=C2=A0 B=
ut IMO this is not a real</div><div>problem so there is no point in this so=
lution.</div><div><br></div><div><br></div><div>=C2=A0</div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pa=
dding-left:1ex">
<br>
/martin<br>
<br></blockquote><div><br></div><div><br></div><div>Andy</div><div>=C2=A0</=
div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-lef=
t:1px #ccc solid;padding-left:1ex">
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div></div>

--001a11c32d5c19b6620519b883cb--


From nobody Tue Jun 30 02:09:25 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 E49251A1E0F for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 02:09:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 aGCZl6ZThLWe for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 02:09:21 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1FE4F1A1EEE for <netmod@ietf.org>; Tue, 30 Jun 2015 02:09:20 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 869DB71A; Tue, 30 Jun 2015 11:09:17 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 9sW-6gQuQ_9P; Tue, 30 Jun 2015 11:09:16 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 30 Jun 2015 11:09:15 +0200 (CEST)
Received: from localhost (demetrius3.jacobs-university.de [212.201.44.48]) by hermes.jacobs-university.de (Postfix) with ESMTP id B426D2002B; Tue, 30 Jun 2015 11:09:16 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius3.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id xmLVUdQzAZA5; Tue, 30 Jun 2015 11:09:10 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 85FD220013; Tue, 30 Jun 2015 11:09:14 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 9C61D34E5659; Tue, 30 Jun 2015 11:09:12 +0200 (CEST)
Date: Tue, 30 Jun 2015 11:09:11 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150630090909.GA4638@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150626143327.GA43292@elstar.local> <m2ioa67iog.fsf@birdie.labs.nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <m2ioa67iog.fsf@birdie.labs.nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/pT4Wxd9s5GyXD7fJQMyq-UuNF6Y>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 09:09:24 -0000

On Mon, Jun 29, 2015 at 03:22:55PM +0200, Ladislav Lhotka wrote:
> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
> 
> > On Mon, Jun 15, 2015 at 10:49:32PM +0000, Kent Watsen wrote:
> >> 
> >> This is a notice to start a NETMOD WG last call for the document "Defining and Using Metadata with YANG":
> >> 
> >> https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01
> >> 
> >> Please indicate your support by Monday June 29, 2015 at 9PM EST.
> >
> > Hi,
> >
> > I have reviewed draft-ietf-netmod-yang-metadata-01 and I have a couple
> > of comments.
> 
> Thanks, my replies are inline.
> 
> >
> > - I would prefer if the terminology would be streamlined. Currently,
> >   the I-D sometimes uses "metadata", sometimes "annotation", sometimes
> >   "metadata annotation". If these terms all mean the same, then I
> >   suggest we settle on a single term. Furthermore, the YANG statement
> >   'annotation' is defined in the module 'ietf-metadata'. I am not sure
> >   whether there is a specific reasoning behind this.
> 
> In my interpretation, metadata is a more general term, i.e. metadata of an
> instance document may consist of multiple (different) annotations.

This is one possible explanation. I am fine if this is spelled out
clearly so that readers understand how the words are used.

> That said, it should be possible to get rid of the "metadata" term, and
> change the module name e.g. to "ietf-annotation-extension"
> 
> >
> > - In order to group YANG modules together that define YANG extensions
> >   and nothing else, does it make sense to call them 'ietf-yang-<xxx>'?
> 
> Such a convention, if it is agreed upon, IMO belongs to 6087bis. Moreover, ietf-yang-types
> doesn't fit this pattern. 

Yes, not an extension in the strict sense but still a rather standard
extension of basic types. I would find ietf-yang-* nice to list all
"basic" yang modules but then I am not religious about it either
(ietf-yang-annotation would be a concrete proposal).

> >   <edit-config> is more a protocol specification detail. Do you
> >   suggest that annotations would be used to define them? If so, how?
> 
> I haven't thought about this particular use, although it probably won't
> be any worse than "get-filter-element-attributes" extension in the
> "ietf-netconf" module.

Again, I prefer to pick a less controversial example. One can of
course debate whether 'type' and 'select' (this is what
get-filter-element-attributes defines) are generic annotations.
I would not think so.

> >   I think there needs to be text in section 1 that distinsuishes
> >   between annotations that are harmless (because they can be ignored)
> >   and annotations that require annotation negotiation in order to be
> >   used.
> 
> I am not sure there is a good and absolute definition of "harmless", it
> depends on the context. For example, if DSDL mapping ignores the
> extension, then no instance document containing *any* XML attributes (no
> matter how benign) can ever be successfully validated with the generated
> RELAX NG schema.
> 
> I agree it is a problem but IMO it comes down to the (wrong) assumption
> that a client is free to cherry-pick arbitrary parts of the data model
> advertised by the server, without even telling the server which parts were
> chosen/omitted.

I do not understand the last paragraph. Anyway, for me, the fact that
it is difficult to define "harmless" seems to underpin the need for
discussion. It is not even clear to me whether a generic NETCONF
client is required to preserve any attributes it receives. For
annotations that are purely maintained by the NC server (e.g. the
timestamp of the last modification), this is not an issue. For
anything that is client provided, this is not at all clear and if an
annotation changes server behaviour or the interpretation of the data,
this clearly requires some sort of agreement that both endpoints know
what they are doing.

> >   Furthermore, if a module M defines annotation A and it contains also
> >   other definitions, then I can't implement M without implementing A
> >   system wide? That is, it is advisable to define annotations in their
> >   own separate modules in order to preserve flexibility, no?
> 
> Not sure, it depends on what this text in 6020(bis) really means:
> 
>    If a YANG compiler does not support a particular extension, which
>    appears in a YANG module as an unknown-statement (see Section 13),
>    the entire unknown-statement MAY be ignored by the compiler.
> 
> I would assume that servers also use a "YANG compiler", so the above
> wording may also mean that the server can ignore extensions even in
> modules it advertises.

If so, there needs to be a way to reliably obtain the information
which annotations are actually supported.
 
> > - Does the presence of an annotation impact the JSON encoding rules
> >   that control when a module name prefix is needed or not? I assume
> >   the answer is 'no' but it is not clear from the text.
> 
> Bullet #1 in sec. 4.2 says this.

I did not find the two bullets clear enough. The second bullet says:

   2.  Namespaces of metadata annotations are encoded in the same way as
       namespaces of YANG data node instances, see
       [I-D.ietf-netmod-yang-json].

This leaves it up for interpretation whether this means just the
syntax or whether this also refers to the rules when namespaces must
be included. The first bullet did not help me to understand this
either, hence I asked the question. I love to have more explicit text,
perhaps even an example (if I have two annotations 'a' and 'b' defined
in one module and another annotation 'c' defined in a second module
together with a leaf 'd', what are the possible namespace combinations
I will get if I reorder the annotations?).

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 30 02:16:56 2015
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 D7C1F1A21BF; Tue, 30 Jun 2015 02:16:51 -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 x0p3l_mXhtNY; Tue, 30 Jun 2015 02:16:50 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 230A91A1EF4; Tue, 30 Jun 2015 02:16:50 -0700 (PDT)
Received: from localhost (h-85-24-195-9.na.cust.bahnhof.se [85.24.195.9]) by mail.tail-f.com (Postfix) with ESMTPSA id 6E25D1AE047F; Tue, 30 Jun 2015 11:16:48 +0200 (CEST)
Date: Tue, 30 Jun 2015 11:16:48 +0200 (CEST)
Message-Id: <20150630.111648.1303614349753408672.mbj@tail-f.com>
To: andy@yumaworks.com
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHQh4sUbgHM5513q0Fa4mr439VQr+XhU3nMcLnfa2LLsJA@mail.gmail.com>
References: <20150628.101115.524154870753102418.mbj@tail-f.com> <20150630.104449.916352783153186338.mbj@tail-f.com> <CABCOCHQh4sUbgHM5513q0Fa4mr439VQr+XhU3nMcLnfa2LLsJA@mail.gmail.com>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/Yn8vzTP_0hwlNdY7eTXrdHal21k>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 09:16:52 -0000

Andy Bierman <andy@yumaworks.com> wrote:
> On Tue, Jun 30, 2015 at 1:44 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
> 
> > Hi,
> >
> > Here's a short summary, and then some questions for the WG.
> >
> > The ietf-yang-library module is designed to serve two purposes:
> >
> >   1.  A protocol-independent advertisement mechanism for YANG 1.1
> >       modules.
> >
> >   2.  A list of the YANG modules stored in a server.
> >
> >
> > Q1.  Do you agree with these goals?
> >
> >
> > Q2.  Should this module be designed to work with both YANG 1.0 and
> >      YANG 1.1 servers - i.e., should it have yang-version 1.1 or not?
> >
> >      If it should not be defined using YANG 1.1, why is this module
> >      special?
> >
> >
> 
> What does 'special' mean here?

Special in the sense that going forward, I assume all modules
published by the IETF will be YANG 1.1.

> Can you identify a YANG 1.1 statement that this module needs?

No.

> > Q3.  Should the /modules/module list be designed to store both YANG
> >      1.0 and YANG 1.1 modules?
> >
> >
> Do you have some reason why YANG 1.0 files should be excluded?

No, but if this module is supposed to be used for advertising 1.1
modules, why store 1.0 modules here?  Also, the description statements
will have to reflect the fact that some things don't apply to 1.0
modules (like conformance).


> > Q4.  Consider these modules, which both import foo without revision:
> >
> >        module a { ... import foo; ... }
> >        module b { ... import foo; ... }
> >
> >      Do we require a server that implements both a and b to use the
> >      same revision of foo?
> >
> >      If the answer is yes, we need to indicate the default revision
> >      that the server uses in the model:
> >
> >        container modules {
> >          ...
> >          list module {
> >            ...
> >            leaf default-revision {
> >              type boolean;
> >              default false;
> >              description
> >                "Indicates that this revision is used by the server if
> >                 this module is imported without a specific revision
> >                 date.";
> >            }
> >          }
> >        }
> >
> >      If the answer is no, note that this puts an implementation burden
> >      on the client.  A client cannot simply download all listed
> >      modules, and load/compile/process them as one set.
> >
> >      If the anwser is no, I propose that we extend the module as such:
> >
> >        container modules {
> >          ...
> >          list module {
> >            ...
> >            list imported-without-revision {
> >              key "name revision";
> >              ...
> >            }
> >          }
> >        }
> >
> >
> I do not think this change is needed
> 
> 
> >      A server could then list:
> >
> >       <module>
> >         <name>a</name>
> >         <revision>2015-01-01</revision>
> >         <imported-without-revision>
> >           <name>foo</name>
> >           <revision>2002-02-02</revision>
> >         </imported-without-revision>
> >       </module>
> >       <module>
> >         <name>b</name>
> >         <revision>2015-01-01</revision>
> >         <imported-without-revision>
> >           <name>foo</name>
> >           <revision>2001-01-01</revision>
> >         </imported-without-revision>
> >       </module>
> >
> >
> >
> YANG 1.0 and current 1.1 says that if no revision-date is used,
> then the client does not know the version and the
> server is not required to pick any specific version.
> 
> Your proposal seems to be that the library will fill in all the
> revision-dates
> and reproduce the import-tree.

Yes.


/martin


> It makes more sense to make
> import-by-revision mandatory.  But IMO this is not a real
> problem so there is no point in this solution.
> 
> 
> 
> 
> >
> > /martin
> >
> >
> 
> Andy
> 
> 
> > _______________________________________________
> > netmod mailing list
> > netmod@ietf.org
> > https://www.ietf.org/mailman/listinfo/netmod
> >


From nobody Tue Jun 30 02:56:08 2015
Return-Path: <lhotka@nic.cz>
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 A0D7B1A8718; Tue, 30 Jun 2015 02:56:05 -0700 (PDT)
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] 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 K7U0QmAr9Gb9; Tue, 30 Jun 2015 02:56:03 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 294E81A8714; Tue, 30 Jun 2015 02:56:03 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 40F851CC0450; Tue, 30 Jun 2015 11:56:05 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>, netconf@ietf.org, netmod@ietf.org
In-Reply-To: <20150630.104449.916352783153186338.mbj@tail-f.com>
References: <20150627.101927.980507351929498326.mbj@tail-f.com> <CABCOCHR2Z8z+x-EcRDfqQj+tMmhh8j63bkAD9HQfNvdVJM9=6Q@mail.gmail.com> <20150628.101115.524154870753102418.mbj@tail-f.com> <20150630.104449.916352783153186338.mbj@tail-f.com>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 30 Jun 2015 11:56:02 +0200
Message-ID: <m2si99cyfh.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/AzEu2X70yjDIiQKX4wyTkNUeb3U>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 09:56:05 -0000

Martin Bjorklund <mbj@tail-f.com> writes:

> Hi,
>
> Here's a short summary, and then some questions for the WG.
>
> The ietf-yang-library module is designed to serve two purposes:
>
>   1.  A protocol-independent advertisement mechanism for YANG 1.1
>       modules.
>
>   2.  A list of the YANG modules stored in a server.

Is this used by "get-schema" or for something else?

>
>
> Q1.  Do you agree with these goals?

I think it should be only #1, if it is going to be the only way for
advertising YANG modules. A server may just implement the modules
without storing them. (But maybe I misunderstood the purpose of #2.)

>
>
> Q2.  Should this module be designed to work with both YANG 1.0 and
>      YANG 1.1 servers - i.e., should it have yang-version 1.1 or not?
>
>      If it should not be defined using YANG 1.1, why is this module
>      special?
>

Hmm, it depends on what a 1.0 client is expected to do when encountering
1.1 modules. This is probably not specified in 6020bis. (?)


>
> Q3.  Should the /modules/module list be designed to store both YANG
>      1.0 and YANG 1.1 modules?
>

Yes.

>
> Q4.  Consider these modules, which both import foo without revision:
>
>        module a { ... import foo; ... }
>        module b { ... import foo; ... }
>
>      Do we require a server that implements both a and b to use the
>      same revision of foo?
>
>      If the answer is yes, we need to indicate the default revision
>      that the server uses in the model:
>
>        container modules {
>          ...
>          list module {
>            ...
>            leaf default-revision {
>              type boolean;
>              default false;
>              description
>                "Indicates that this revision is used by the server if
>                 this module is imported without a specific revision
>                 date.";
>            }
>          }
>        }
>
>      If the answer is no, note that this puts an implementation burden
>      on the client.  A client cannot simply download all listed
>      modules, and load/compile/process them as one set.
>
>      If the anwser is no, I propose that we extend the module as such:

I'd vote for this option. A server implementor might need to use an old
revision of a grouping/typedef in one subsystem and a new revision in
another.

Lada

>
>        container modules {
>          ...
>          list module {
>            ...
>            list imported-without-revision {
>              key "name revision";
>              ...
>            }
>          }
>        }
>
>      A server could then list:
>
>       <module>
>         <name>a</name>
>         <revision>2015-01-01</revision>
>         <imported-without-revision>
>           <name>foo</name>
>           <revision>2002-02-02</revision>
>         </imported-without-revision>
>       </module>
>       <module>
>         <name>b</name>
>         <revision>2015-01-01</revision>
>         <imported-without-revision>
>           <name>foo</name>
>           <revision>2001-01-01</revision>
>         </imported-without-revision>
>       </module>
>
>        
>
> /martin
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun 30 02:56:17 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 415351A8735 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 02:56:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.86
X-Spam-Level: 
X-Spam-Status: No, score=-5.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, GB_I_LETTER=-2, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 Og-02IB9TIgh for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 02:56:06 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 90B651A8714 for <netmod@ietf.org>; Tue, 30 Jun 2015 02:56:06 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id EE0251528; Tue, 30 Jun 2015 11:56:03 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id XASdQivRyc-F; Tue, 30 Jun 2015 11:56:02 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 30 Jun 2015 11:56:01 +0200 (CEST)
Received: from localhost (demetrius3.jacobs-university.de [212.201.44.48]) by hermes.jacobs-university.de (Postfix) with ESMTP id 1436520044; Tue, 30 Jun 2015 11:56:03 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius3.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id TwqqJVzrydvF; Tue, 30 Jun 2015 11:55:56 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 6E11C20043; Tue, 30 Jun 2015 11:56:00 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 5ACFD34E584E; Tue, 30 Jun 2015 11:56:00 +0200 (CEST)
Date: Tue, 30 Jun 2015 11:56:00 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150630095600.GA4836@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D1A4CEB7.B22F7%kwatsen@juniper.net> <20150624145325.GB38016@elstar.local> <m2lhf27sko.fsf@birdie.labs.nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <m2lhf27sko.fsf@birdie.labs.nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/K16X3NoLjALbKyeKTywuDXC31DA>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 09:56:09 -0000

On Mon, Jun 29, 2015 at 11:49:11AM +0200, Ladislav Lhotka wrote:
> Hi Juergen,
> 
> thank you for the review.
> 
> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
> 
> > On Mon, Jun 15, 2015 at 10:49:28PM +0000, Kent Watsen wrote:
> >> 
> >> This is a notice to start a NETMOD WG last call for the document "JSON Encoding of Data Modeled with YANG":
> >> 
> >> https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04
> >> 
> >> Please indicate your support by Monday June 29, 2015 at 9PM EST.
> >
> > Hi,
> >
> > I have reviewed draft-ietf-netmod-yang-json-04.
> >
> > - I am not sure I agree with the wording in section 3. Why is section
> >   8.3.3 only applicable to XML encoded data? Validation applies to
> >   datastores. While constraints are defined using XML-based notations
> 
> You are right that this section shouldn't talk about XML-encoded data,
> i.e. serialized form. On the other hand, XPath 1.0 spec says: "XPath
> operates on the abstract, logical structure of an XML document, â€¦".
> 
> So I think a datastore needs to be represented, at least conceptually,
> as XML infoset.
> 
> >   such as XPATH, how the validation is carried out is not defined in
> >   the YANG specifications. I guess I actually disagree with the
> 
> I don't think this is true. YANG spec doesn't say how "must" and "when"
> statements are evaluated, and relies on XPath.

RFC 6020:

   When a datastore is validated, all "must" constraints are
   conceptually evaluated once for each data node in the data tree, and
   for all leafs with default values in use (see Section 7.6.1).  If a
   data node does not exist in the data tree, and it does not have a
   default value, its "must" statements are not evaluated.

   [...]

   Also note that the XPath expression is conceptually evaluated.  This
   means that an implementation does not have to use an XPath evaluator
   on the device.  How the evaluation is done in practice is an
   implementation decision.
 
> >   wording in section 3 of the JSON encoding I-D.
> 
> What specifically? Do you have any suggestions for changes?

The problem is that RFC 6020 talks about datastore validation, not
about validation of a specific serialization. Hence, it does not
matter whether the data was XML or JSON (or CBOR or whatnext) encoded
- once the data is in the datastore, datastore validation takes
place. One way to implement this is to serialize everything to XML and
then to use XML gear to do the validation. But this implementation
strategy is not required.

> > - It is unclear whether the 'if and only if' on page 4 means that an
> >   implementation that generates namespace prefixes that are not
> >   strictly needed is violating this I-D. I see the need for a MUST to
> 
> Yes, that's the intention. Why is it unclear?
> 
> >   include the module name if the parent node belongs to a different
> >   module. I am not sure why it is necessary to mandate minimal
> >   encodings (if that is the idea here). Whatever the answer is, it
> >   would be good to use RFC 2119 language.
> 
> Revision -02 used 2119 terms but there were objections against it:
> 
> https://mailarchive.ietf.org/arch/msg/netmod/xXS0uSKKu83qBQVCJ_CYmdsavUc
> 
> In fact, YANG spec also states syntax rules without using 2119 keywords,
> for example "Each identifier starts with an uppercase or lowercase ASCII
> letter or an underscore character, â€¦", it doesn't say that it MUST NOT
> start with anything else.

If the goal is to define a strict implementation requirement, then I
think using RFC 2119 language is the preferred choice in the IETF. I
think the debate back then was whether it is reasonable to declare an
implementation that fails to produce minimal encodings as violating
the spec. How does it break a receiver if I send a redundant module
name? Your change of the MUST to 'if and only if' did cosmetics but it
did not address the concern raised.

> > - The reason for the requirement that list keys are encoded first in
> >   RFC 6020 is to make it easier to process data in a stream-oriented
> >   fashion. If keys can appear anywhere, they might appear at the very
> >   end and thus buffering is required in order to process data
> >   properly. Is this concern not relevant for the JSON encoding?
> 
> This cannot be required as long as our aim is interoperability of
> implementations based on off-the-shelf JSON parsers, hence I_JSON. RFC
> 7493 states it clearly: "The order of object members in an I-JSON
> message does not change the meaning of an I-JSON message."
> 
> >   Perhaps this is not relevant, but then we might also state this
> >   explicitly:
> >
> >       As a consequence, implementations must be cable to buffer JSON
> >       encoded instances in order to locate keys that may appear at the
> >       end of a JSON encoded instance.
> 
> I think it is clear that an implementation needs to be able to handle
> keys appearing anywhere in a list-entry-object. How it is handled is IMO
> implementation-specific - I guess it also depends on where and how the
> stream-oriented data processing is used.

I still prefer to have this explicitly stated. If the keys happen to
appear at the end, how can you process the data without some form of
buffering? Perhaps this wording is better (since it is less specific
how data is buffered):

      As a consequence, implementations must be cable to buffer data
      in order to locate keys that may appear at the end of a JSON
      encoded instance.

> > - I think that section 5.5 should say:
> >
> >       If the data model for the data in an anydata instance is known,
> >       then the data must be encoded following the rules defined in
> >       this I-D.
> 
> Something like this should then probably appear in 6020bis, yet it doesn't.
> 
> I am unclear how one can determine that the data model is known because
> anydata nodes don't provide this information. Perhaps it can be
> specified in the description but then is it known including the
> revisions of YANG modules involved? Moreover, the data model needn't be
> known at all.

Yes, this is why the sentence starts with "If the data model ... is
known,"

> Therefore, I tend to think about anydata as kind of ad hoc data
> that's just piggybacked inside YANG-modelled data. There may be rules
> that this data have to conform to (expressed in YANG or not) but they
> are out of scope from the perspective of the data model that's specified
> in hello or yang-library.
> 
> That's why sec. 5.5 only states syntactic constraints to make sure that
> the data "can be modelled with YANG".
> 
> BTW, I have a growing concern that anydata creates more problems than it
> solves.

I fail to see that but this is not relevant here as long as the JSON
document provides a means to encode anydata in an interoperable way.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 30 04:44:16 2015
Return-Path: <lhotka@nic.cz>
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 C330F1A89A0 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 04:44:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.3
X-Spam-Level: 
X-Spam-Status: No, score=-1.3 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_210=0.6] 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 lZ9e5tuI6pYv for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 04:44:12 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 13ACB1A89A8 for <netmod@ietf.org>; Tue, 30 Jun 2015 04:44:12 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id D32E71CC0450; Tue, 30 Jun 2015 13:44:14 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
In-Reply-To: <20150630090909.GA4638@elstar.local>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150626143327.GA43292@elstar.local> <m2ioa67iog.fsf@birdie.labs.nic.cz> <20150630090909.GA4638@elstar.local>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 30 Jun 2015 13:44:11 +0200
Message-ID: <m2pp4dctf8.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/tWHuW2rGcfRh4qY-4XPby9kiwxI>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 11:44:15 -0000

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:

> On Mon, Jun 29, 2015 at 03:22:55PM +0200, Ladislav Lhotka wrote:
>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
>> 
>> > On Mon, Jun 15, 2015 at 10:49:32PM +0000, Kent Watsen wrote:
>> >> 
>> >> This is a notice to start a NETMOD WG last call for the document "Defining and Using Metadata with YANG":
>> >> 
>> >> https://tools.ietf.org/html/draft-ietf-netmod-yang-metadata-01
>> >> 
>> >> Please indicate your support by Monday June 29, 2015 at 9PM EST.
>> >
>> > Hi,
>> >
>> > I have reviewed draft-ietf-netmod-yang-metadata-01 and I have a couple
>> > of comments.
>> 
>> Thanks, my replies are inline.
>> 
>> >
>> > - I would prefer if the terminology would be streamlined. Currently,
>> >   the I-D sometimes uses "metadata", sometimes "annotation", sometimes
>> >   "metadata annotation". If these terms all mean the same, then I
>> >   suggest we settle on a single term. Furthermore, the YANG statement
>> >   'annotation' is defined in the module 'ietf-metadata'. I am not sure
>> >   whether there is a specific reasoning behind this.
>> 
>> In my interpretation, metadata is a more general term, i.e. metadata of an
>> instance document may consist of multiple (different) annotations.
>
> This is one possible explanation. I am fine if this is spelled out
> clearly so that readers understand how the words are used.

OK, I will try to figure out what's better.

>
>> That said, it should be possible to get rid of the "metadata" term, and
>> change the module name e.g. to "ietf-annotation-extension"
>> 
>> >
>> > - In order to group YANG modules together that define YANG extensions
>> >   and nothing else, does it make sense to call them 'ietf-yang-<xxx>'?
>> 
>> Such a convention, if it is agreed upon, IMO belongs to 6087bis. Moreover, ietf-yang-types
>> doesn't fit this pattern. 
>
> Yes, not an extension in the strict sense but still a rather standard
> extension of basic types. I would find ietf-yang-* nice to list all
> "basic" yang modules but then I am not religious about it either
> (ietf-yang-annotation would be a concrete proposal).

Fine with me.

>
>> >   <edit-config> is more a protocol specification detail. Do you
>> >   suggest that annotations would be used to define them? If so, how?
>> 
>> I haven't thought about this particular use, although it probably won't
>> be any worse than "get-filter-element-attributes" extension in the
>> "ietf-netconf" module.
>
> Again, I prefer to pick a less controversial example. One can of
> course debate whether 'type' and 'select' (this is what
> get-filter-element-attributes defines) are generic annotations.
> I would not think so.

I'd love to hear about use cases and examples that are less
controversial but still not completely useless. Having none begs the
question of why annotations are needed at all.

>
>> >   I think there needs to be text in section 1 that distinsuishes
>> >   between annotations that are harmless (because they can be ignored)
>> >   and annotations that require annotation negotiation in order to be
>> >   used.
>> 
>> I am not sure there is a good and absolute definition of "harmless", it
>> depends on the context. For example, if DSDL mapping ignores the
>> extension, then no instance document containing *any* XML attributes (no
>> matter how benign) can ever be successfully validated with the generated
>> RELAX NG schema.
>> 
>> I agree it is a problem but IMO it comes down to the (wrong) assumption
>> that a client is free to cherry-pick arbitrary parts of the data model
>> advertised by the server, without even telling the server which parts were
>> chosen/omitted.
>
> I do not understand the last paragraph. Anyway, for me, the fact that

The last paragraph means that there should be a mechanism for *both*
server and client to tell the other side the exact data model it is
using. The idea that a client (old or whatever) just silently picks a
subset of the server's model is IMO terribly broken.

> it is difficult to define "harmless" seems to underpin the need for
> discussion. It is not even clear to me whether a generic NETCONF
> client is required to preserve any attributes it receives. For
> annotations that are purely maintained by the NC server (e.g. the
> timestamp of the last modification), this is not an issue. For
> anything that is client provided, this is not at all clear and if an
> annotation changes server behaviour or the interpretation of the data,
> this clearly requires some sort of agreement that both endpoints know
> what they are doing.

Yes.

>
>> >   Furthermore, if a module M defines annotation A and it contains also
>> >   other definitions, then I can't implement M without implementing A
>> >   system wide? That is, it is advisable to define annotations in their
>> >   own separate modules in order to preserve flexibility, no?
>> 
>> Not sure, it depends on what this text in 6020(bis) really means:
>> 
>>    If a YANG compiler does not support a particular extension, which
>>    appears in a YANG module as an unknown-statement (see Section 13),
>>    the entire unknown-statement MAY be ignored by the compiler.
>> 
>> I would assume that servers also use a "YANG compiler", so the above
>> wording may also mean that the server can ignore extensions even in
>> modules it advertises.
>
> If so, there needs to be a way to reliably obtain the information
> which annotations are actually supported.

Absolutely, although it might suffice to clarify the "YANG compiler" thing.

>  
>> > - Does the presence of an annotation impact the JSON encoding rules
>> >   that control when a module name prefix is needed or not? I assume
>> >   the answer is 'no' but it is not clear from the text.
>> 
>> Bullet #1 in sec. 4.2 says this.
>
> I did not find the two bullets clear enough. The second bullet says:
>
>    2.  Namespaces of metadata annotations are encoded in the same way as
>        namespaces of YANG data node instances, see
>        [I-D.ietf-netmod-yang-json].
>
> This leaves it up for interpretation whether this means just the
> syntax or whether this also refers to the rules when namespaces must
> be included. The first bullet did not help me to understand this

For annotations in JSON, the namespace ID (module name) must always be
included in their name, and annotations are essentially leaves so they
cannot participate in any "namespace switching". And bullet #1 says
encoding of other nodes is unaffected by the presence of annotations.

> either, hence I asked the question. I love to have more explicit text,
> perhaps even an example (if I have two annotations 'a' and 'b' defined
> in one module and another annotation 'c' defined in a second module
> together with a leaf 'd', what are the possible namespace combinations
> I will get if I reorder the annotations?).

I don't understand. Do you mean reordering within a single "metadata object"?
The order of its members is irrelevant, and all members must have an
explicit namespace.

With a data model consisting of these two modules,

module foo {
  ...
  md:annotation a;
  md:annotation b;
}

module bar {
  ...
  md:annotation c;
  leaf d { type uint8; }
}

the correct JSON encoding is

{
  "bar:d": 42,
  "@bar:d": {
    "foo:a": "xxx",
    "foo:b": "yyy",
    "bar:c": "zzz"
  }
}

modulo member reordering, but the namespaces need to be as shown.

Lada

>
> /js
>
> -- 
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun 30 05:12:26 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 A897F1A8A94 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 05:12:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 avqZepE-dhZi for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 05:12:22 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 26CFC1A8A8D for <netmod@ietf.org>; Tue, 30 Jun 2015 05:12:22 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 4941C1518; Tue, 30 Jun 2015 14:12:19 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 0oRo5fQ0UL9k; Tue, 30 Jun 2015 14:12:19 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 30 Jun 2015 14:12:18 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id 8FF052002B; Tue, 30 Jun 2015 14:12:19 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id fTnr4TfXDcjX; Tue, 30 Jun 2015 14:12:18 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 380CC20013; Tue, 30 Jun 2015 14:12:18 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 538E734E615C; Tue, 30 Jun 2015 14:12:16 +0200 (CEST)
Date: Tue, 30 Jun 2015 14:12:15 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150630121215.GA5319@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D1A4CEBA.B22F8%kwatsen@juniper.net> <20150626143327.GA43292@elstar.local> <m2ioa67iog.fsf@birdie.labs.nic.cz> <20150630090909.GA4638@elstar.local> <m2pp4dctf8.fsf@birdie.labs.nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <m2pp4dctf8.fsf@birdie.labs.nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/bc4EEebrl335WGo25-oPtGh2up8>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 12:12:24 -0000

On Tue, Jun 30, 2015 at 01:44:11PM +0200, Ladislav Lhotka wrote:

> >> > - Does the presence of an annotation impact the JSON encoding rules
> >> >   that control when a module name prefix is needed or not? I assume
> >> >   the answer is 'no' but it is not clear from the text.
> >> 
> >> Bullet #1 in sec. 4.2 says this.
> >
> > I did not find the two bullets clear enough. The second bullet says:
> >
> >    2.  Namespaces of metadata annotations are encoded in the same way as
> >        namespaces of YANG data node instances, see
> >        [I-D.ietf-netmod-yang-json].
> >
> > This leaves it up for interpretation whether this means just the
> > syntax or whether this also refers to the rules when namespaces must
> > be included. The first bullet did not help me to understand this
> 
> For annotations in JSON, the namespace ID (module name) must always be
> included in their name, and annotations are essentially leaves so they
> cannot participate in any "namespace switching". And bullet #1 says
> encoding of other nodes is unaffected by the presence of annotations.
> 
> > either, hence I asked the question. I love to have more explicit text,
> > perhaps even an example (if I have two annotations 'a' and 'b' defined
> > in one module and another annotation 'c' defined in a second module
> > together with a leaf 'd', what are the possible namespace combinations
> > I will get if I reorder the annotations?).
> 
> I don't understand. Do you mean reordering within a single "metadata object"?
> The order of its members is irrelevant, and all members must have an
> explicit namespace.

OK.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 30 05:45:11 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 299E61A8F3B; Tue, 30 Jun 2015 05:45:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 W6QCOEA6SddI; Tue, 30 Jun 2015 05:45:08 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 492561A8F34; Tue, 30 Jun 2015 05:45:08 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 8D1C313DB; Tue, 30 Jun 2015 14:45:05 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id WHL7b1_nDmE6; Tue, 30 Jun 2015 14:45:05 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 30 Jun 2015 14:45:04 +0200 (CEST)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id 1F4E220013; Tue, 30 Jun 2015 14:45:06 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id HsYJrwq72NKj; Tue, 30 Jun 2015 14:45:04 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id EA9F22002C; Tue, 30 Jun 2015 14:45:03 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id C5FBC34E62EC; Tue, 30 Jun 2015 14:45:03 +0200 (CEST)
Date: Tue, 30 Jun 2015 14:45:03 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Martin Bjorklund <mbj@tail-f.com>
Message-ID: <20150630124503.GA5406@elstar.local>
Mail-Followup-To: Martin Bjorklund <mbj@tail-f.com>, netconf@ietf.org, netmod@ietf.org
References: <20150627.101927.980507351929498326.mbj@tail-f.com> <CABCOCHR2Z8z+x-EcRDfqQj+tMmhh8j63bkAD9HQfNvdVJM9=6Q@mail.gmail.com> <20150628.101115.524154870753102418.mbj@tail-f.com> <20150630.104449.916352783153186338.mbj@tail-f.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20150630.104449.916352783153186338.mbj@tail-f.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/bKETQXNa1zN_itbls6Bluz1-YSE>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 12:45:11 -0000

Writing as technical contributor...

On Tue, Jun 30, 2015 at 10:44:49AM +0200, Martin Bjorklund wrote:
> Hi,
> 
> Here's a short summary, and then some questions for the WG.
> 
> The ietf-yang-library module is designed to serve two purposes:
> 
>   1.  A protocol-independent advertisement mechanism for YANG 1.1
>       modules.
> 
>   2.  A list of the YANG modules stored in a server.
> 
> 
> Q1.  Do you agree with these goals?

I primarily care about goal 1.
 
> Q2.  Should this module be designed to work with both YANG 1.0 and
>      YANG 1.1 servers - i.e., should it have yang-version 1.1 or not?
> 
>      If it should not be defined using YANG 1.1, why is this module
>      special?

I assume this module will sooner or later be YANG 1.1 anyway.
 
> Q3.  Should the /modules/module list be designed to store both YANG
>      1.0 and YANG 1.1 modules?

Yes. Even if YANG 1.1 hits the street tomorrow, we will not have
revised all published YANG data models that were written using YANG
1.0. So a server needs to be able to announce both YANG 1.0 and YANG
1.1 modules.

> Q4.  Consider these modules, which both import foo without revision:
> 
>        module a { ... import foo; ... }
>        module b { ... import foo; ... }
> 
>      Do we require a server that implements both a and b to use the
>      same revision of foo?
> 
>      If the answer is yes, we need to indicate the default revision
>      that the server uses in the model:
> 
>        container modules {
>          ...
>          list module {
>            ...
>            leaf default-revision {
>              type boolean;
>              default false;
>              description
>                "Indicates that this revision is used by the server if
>                 this module is imported without a specific revision
>                 date.";
>            }
>          }
>        }
> 
>      If the answer is no, note that this puts an implementation burden
>      on the client.  A client cannot simply download all listed
>      modules, and load/compile/process them as one set.
> 
>      If the anwser is no, I propose that we extend the module as such:
> 
>        container modules {
>          ...
>          list module {
>            ...
>            list imported-without-revision {
>              key "name revision";
>              ...
>            }
>          }
>        }
> 
>      A server could then list:
> 
>       <module>
>         <name>a</name>
>         <revision>2015-01-01</revision>
>         <imported-without-revision>
>           <name>foo</name>
>           <revision>2002-02-02</revision>
>         </imported-without-revision>
>       </module>
>       <module>
>         <name>b</name>
>         <revision>2015-01-01</revision>
>         <imported-without-revision>
>           <name>foo</name>
>           <revision>2001-01-01</revision>
>         </imported-without-revision>
>       </module>

I believe truth is advertisement is a good thing. In the SNMP world,
not all pieces of the instrumentation were moving at the same pace and
I would be somewhat surprised if this would be the case for all
implementations in the NETCONF world. Hence, I rather accept that an
import of foo without revision may resolve to different versions of
foo for different imports.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 30 05:45:36 2015
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 9968C1A8BBD; Tue, 30 Jun 2015 05:45:34 -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 UPfUJjfAEoCV; Tue, 30 Jun 2015 05:45:31 -0700 (PDT)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 467051A8F40; Tue, 30 Jun 2015 05:45:28 -0700 (PDT)
Received: from localhost (unknown [213.136.39.104]) by mail.tail-f.com (Postfix) with ESMTPSA id 812321AE047F; Tue, 30 Jun 2015 14:45:26 +0200 (CEST)
Date: Tue, 30 Jun 2015 14:46:13 +0200 (CEST)
Message-Id: <20150630.144613.434177163718632086.mbj@tail-f.com>
To: lhotka@nic.cz
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <m2si99cyfh.fsf@birdie.labs.nic.cz>
References: <20150628.101115.524154870753102418.mbj@tail-f.com> <20150630.104449.916352783153186338.mbj@tail-f.com> <m2si99cyfh.fsf@birdie.labs.nic.cz>
X-Mailer: Mew version 6.5 on Emacs 24.3 / 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/63v9tIuVy0RFpljjY55XZo4NwZc>
Cc: netconf@ietf.org, netmod@ietf.org
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 12:45:35 -0000

Ladislav Lhotka <lhotka@nic.cz> wrote:
> Martin Bjorklund <mbj@tail-f.com> writes:
> 
> > Hi,
> >
> > Here's a short summary, and then some questions for the WG.
> >
> > The ietf-yang-library module is designed to serve two purposes:
> >
> >   1.  A protocol-independent advertisement mechanism for YANG 1.1
> >       modules.
> >
> >   2.  A list of the YANG modules stored in a server.
> 
> Is this used by "get-schema" or for something else?

Andy might be able to explain this requirement.

My personal view is that ietf-yang-library should do #1 only.



/martin


> > Q1.  Do you agree with these goals?
> 
> I think it should be only #1, if it is going to be the only way for
> advertising YANG modules. A server may just implement the modules
> without storing them. (But maybe I misunderstood the purpose of #2.)
> 
> >
> >
> > Q2.  Should this module be designed to work with both YANG 1.0 and
> >      YANG 1.1 servers - i.e., should it have yang-version 1.1 or not?
> >
> >      If it should not be defined using YANG 1.1, why is this module
> >      special?
> >
> 
> Hmm, it depends on what a 1.0 client is expected to do when encountering
> 1.1 modules. This is probably not specified in 6020bis. (?)
> 
> 
> >
> > Q3.  Should the /modules/module list be designed to store both YANG
> >      1.0 and YANG 1.1 modules?
> >
> 
> Yes.
> 
> >
> > Q4.  Consider these modules, which both import foo without revision:
> >
> >        module a { ... import foo; ... }
> >        module b { ... import foo; ... }
> >
> >      Do we require a server that implements both a and b to use the
> >      same revision of foo?
> >
> >      If the answer is yes, we need to indicate the default revision
> >      that the server uses in the model:
> >
> >        container modules {
> >          ...
> >          list module {
> >            ...
> >            leaf default-revision {
> >              type boolean;
> >              default false;
> >              description
> >                "Indicates that this revision is used by the server if
> >                 this module is imported without a specific revision
> >                 date.";
> >            }
> >          }
> >        }
> >
> >      If the answer is no, note that this puts an implementation burden
> >      on the client.  A client cannot simply download all listed
> >      modules, and load/compile/process them as one set.
> >
> >      If the anwser is no, I propose that we extend the module as such:
> 
> I'd vote for this option. A server implementor might need to use an old
> revision of a grouping/typedef in one subsystem and a new revision in
> another.
> 
> Lada
> 
> >
> >        container modules {
> >          ...
> >          list module {
> >            ...
> >            list imported-without-revision {
> >              key "name revision";
> >              ...
> >            }
> >          }
> >        }
> >
> >      A server could then list:
> >
> >       <module>
> >         <name>a</name>
> >         <revision>2015-01-01</revision>
> >         <imported-without-revision>
> >           <name>foo</name>
> >           <revision>2002-02-02</revision>
> >         </imported-without-revision>
> >       </module>
> >       <module>
> >         <name>b</name>
> >         <revision>2015-01-01</revision>
> >         <imported-without-revision>
> >           <name>foo</name>
> >           <revision>2001-01-01</revision>
> >         </imported-without-revision>
> >       </module>
> >
> >        
> >
> > /martin
> >
> > _______________________________________________
> > netmod mailing list
> > netmod@ietf.org
> > https://www.ietf.org/mailman/listinfo/netmod
> 
> -- 
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: E74E8C0C
> 


From nobody Tue Jun 30 05:56:35 2015
Return-Path: <lhotka@nic.cz>
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 AC9871A1A60 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 05:56:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.9
X-Spam-Level: 
X-Spam-Status: No, score=-3.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, GB_I_LETTER=-2] 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 FzGvtcI5XDF9 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 05:56:30 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 400BD1A8AA6 for <netmod@ietf.org>; Tue, 30 Jun 2015 05:56:30 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 5FB701CC0450; Tue, 30 Jun 2015 14:56:33 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
In-Reply-To: <20150630095600.GA4836@elstar.local>
References: <D1A4CEB7.B22F7%kwatsen@juniper.net> <20150624145325.GB38016@elstar.local> <m2lhf27sko.fsf@birdie.labs.nic.cz> <20150630095600.GA4836@elstar.local>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Tue, 30 Jun 2015 14:56:30 +0200
Message-ID: <m2mvzhcq2p.fsf@birdie.labs.nic.cz>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/4kPz531sUO-_u7XW13R651YuUsY>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 12:56:33 -0000

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:

> On Mon, Jun 29, 2015 at 11:49:11AM +0200, Ladislav Lhotka wrote:
>> Hi Juergen,
>>=20
>> thank you for the review.
>>=20
>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
>>=20
>> > On Mon, Jun 15, 2015 at 10:49:28PM +0000, Kent Watsen wrote:
>> >>=20
>> >> This is a notice to start a NETMOD WG last call for the document "JSO=
N Encoding of Data Modeled with YANG":
>> >>=20
>> >> https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04
>> >>=20
>> >> Please indicate your support by Monday June 29, 2015 at 9PM EST.
>> >
>> > Hi,
>> >
>> > I have reviewed draft-ietf-netmod-yang-json-04.
>> >
>> > - I am not sure I agree with the wording in section 3. Why is section
>> >   8.3.3 only applicable to XML encoded data? Validation applies to
>> >   datastores. While constraints are defined using XML-based notations
>>=20
>> You are right that this section shouldn't talk about XML-encoded data,
>> i.e. serialized form. On the other hand, XPath 1.0 spec says: "XPath
>> operates on the abstract, logical structure of an XML document, =E2=80=
=A6".
>>=20
>> So I think a datastore needs to be represented, at least conceptually,
>> as XML infoset.
>>=20
>> >   such as XPATH, how the validation is carried out is not defined in
>> >   the YANG specifications. I guess I actually disagree with the
>>=20
>> I don't think this is true. YANG spec doesn't say how "must" and "when"
>> statements are evaluated, and relies on XPath.
>
> RFC 6020:
>
>    When a datastore is validated, all "must" constraints are
>    conceptually evaluated once for each data node in the data tree, and
>    for all leafs with default values in use (see Section 7.6.1).  If a
>    data node does not exist in the data tree, and it does not have a
>    default value, its "must" statements are not evaluated.
>
>    [...]
>
>    Also note that the XPath expression is conceptually evaluated.  This
>    means that an implementation does not have to use an XPath evaluator
>    on the device.  How the evaluation is done in practice is an
>    implementation decision.

Yes, but the result must be guaranteed to be the same as if an XPath 1.0
processor is used, otherwise it makes really no sense.

>=20=20
>> >   wording in section 3 of the JSON encoding I-D.
>>=20
>> What specifically? Do you have any suggestions for changes?
>
> The problem is that RFC 6020 talks about datastore validation, not
> about validation of a specific serialization. Hence, it does not
> matter whether the data was XML or JSON (or CBOR or whatnext) encoded
> - once the data is in the datastore, datastore validation takes
> place. One way to implement this is to serialize everything to XML and
> then to use XML gear to do the validation. But this implementation
> strategy is not required.

We have no explicit concept of a metamodel for datastores but IMO the
fact that we evaluate XPath expressions on top of it implies that the
datastore must be (congruent to) restricted XML infoset. Section 5 (Data
Model) is a crucial part of XPath spec, and it is XML.

>
>> > - It is unclear whether the 'if and only if' on page 4 means that an
>> >   implementation that generates namespace prefixes that are not
>> >   strictly needed is violating this I-D. I see the need for a MUST to
>>=20
>> Yes, that's the intention. Why is it unclear?
>>=20
>> >   include the module name if the parent node belongs to a different
>> >   module. I am not sure why it is necessary to mandate minimal
>> >   encodings (if that is the idea here). Whatever the answer is, it
>> >   would be good to use RFC 2119 language.
>>=20
>> Revision -02 used 2119 terms but there were objections against it:
>>=20
>> https://mailarchive.ietf.org/arch/msg/netmod/xXS0uSKKu83qBQVCJ_CYmdsavUc
>>=20
>> In fact, YANG spec also states syntax rules without using 2119 keywords,
>> for example "Each identifier starts with an uppercase or lowercase ASCII
>> letter or an underscore character, =E2=80=A6", it doesn't say that it MU=
ST NOT
>> start with anything else.
>
> If the goal is to define a strict implementation requirement, then I
> think using RFC 2119 language is the preferred choice in the IETF. I

I guess identifier syntax is a strict implementation requirement,
too. What the I-D defines is an unambiguous encoding of data.

> think the debate back then was whether it is reasonable to declare an
> implementation that fails to produce minimal encodings as violating
> the spec. How does it break a receiver if I send a redundant module
> name? Your change of the MUST to 'if and only if' did cosmetics but it
> did not address the concern raised.

Yes, but these are two different things:

1. In my view, in any syntax or encoding specification 2119 keywords are
   not needed, in fact they are inappropriate.

2. There are strong technical reasons for *not* relaxing the namespace
   rules - it would again render of-the-shelf JSON parsers pretty much
   useless, as Martin correctly pointed out:

   https://mailarchive.ietf.org/arch/msg/netmod/mCtvup_YnL3gvr95EIe4sSFcKfs

>
>> > - The reason for the requirement that list keys are encoded first in
>> >   RFC 6020 is to make it easier to process data in a stream-oriented
>> >   fashion. If keys can appear anywhere, they might appear at the very
>> >   end and thus buffering is required in order to process data
>> >   properly. Is this concern not relevant for the JSON encoding?
>>=20
>> This cannot be required as long as our aim is interoperability of
>> implementations based on off-the-shelf JSON parsers, hence I_JSON. RFC
>> 7493 states it clearly: "The order of object members in an I-JSON
>> message does not change the meaning of an I-JSON message."
>>=20
>> >   Perhaps this is not relevant, but then we might also state this
>> >   explicitly:
>> >
>> >       As a consequence, implementations must be cable to buffer JSON
>> >       encoded instances in order to locate keys that may appear at the
>> >       end of a JSON encoded instance.
>>=20
>> I think it is clear that an implementation needs to be able to handle
>> keys appearing anywhere in a list-entry-object. How it is handled is IMO
>> implementation-specific - I guess it also depends on where and how the
>> stream-oriented data processing is used.
>
> I still prefer to have this explicitly stated. If the keys happen to
> appear at the end, how can you process the data without some form of
> buffering? Perhaps this wording is better (since it is less specific
> how data is buffered):

Maybe the keys are just irrelevant for the given purpose, e.g. when
streaming state data.

As a matter of fact, with JSON encoding the receiving side will mostly
buffer the whole payload anyway.

I can add that sentence, if you insist, but I see it as superfluous.

>
>       As a consequence, implementations must be cable to buffer data
>       in order to locate keys that may appear at the end of a JSON
>       encoded instance.
>
>> > - I think that section 5.5 should say:
>> >
>> >       If the data model for the data in an anydata instance is known,
>> >       then the data must be encoded following the rules defined in
>> >       this I-D.
>>=20
>> Something like this should then probably appear in 6020bis, yet it doesn=
't.
>>=20
>> I am unclear how one can determine that the data model is known because
>> anydata nodes don't provide this information. Perhaps it can be
>> specified in the description but then is it known including the
>> revisions of YANG modules involved? Moreover, the data model needn't be
>> known at all.
>
> Yes, this is why the sentence starts with "If the data model ... is
> known,"
>
>> Therefore, I tend to think about anydata as kind of ad hoc data
>> that's just piggybacked inside YANG-modelled data. There may be rules
>> that this data have to conform to (expressed in YANG or not) but they
>> are out of scope from the perspective of the data model that's specified
>> in hello or yang-library.
>>=20
>> That's why sec. 5.5 only states syntactic constraints to make sure that
>> the data "can be modelled with YANG".
>>=20
>> BTW, I have a growing concern that anydata creates more problems than it
>> solves.
>
> I fail to see that but this is not relevant here as long as the JSON
> document provides a means to encode anydata in an interoperable way.

It depends on what you call "interoperability", but if there is no
(precise) data model available for anydata content, then the round-trip
JSON client -> server -> XML client (or the other way around) may not be
possible.

So I don't get how "anydata" fixes "anyxml" problems (I personally
only have problem with the name).

Lada

>
> /js
>
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

--=20
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C


From nobody Tue Jun 30 06:21:13 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 6B0F41A1AB1 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 06:21:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.86
X-Spam-Level: 
X-Spam-Status: No, score=-5.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, GB_I_LETTER=-2, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 TygPUkidepq9 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 06:21:07 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 895ED1ACECF for <netmod@ietf.org>; Tue, 30 Jun 2015 06:21:07 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id C8A911263; Tue, 30 Jun 2015 15:21:04 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id mAOPUqBzPHVt; Tue, 30 Jun 2015 15:21:03 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 30 Jun 2015 15:21:02 +0200 (CEST)
Received: from localhost (demetrius4.jacobs-university.de [212.201.44.49]) by hermes.jacobs-university.de (Postfix) with ESMTP id EAE9E2002B; Tue, 30 Jun 2015 15:21:03 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius4.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id Hq0t4KmoTKAi; Tue, 30 Jun 2015 15:21:22 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 7570020013; Tue, 30 Jun 2015 15:21:01 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id 7A60034E6449; Tue, 30 Jun 2015 15:21:00 +0200 (CEST)
Date: Tue, 30 Jun 2015 15:20:59 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150630132059.GC5406@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <D1A4CEB7.B22F7%kwatsen@juniper.net> <20150624145325.GB38016@elstar.local> <m2lhf27sko.fsf@birdie.labs.nic.cz> <20150630095600.GA4836@elstar.local> <m2mvzhcq2p.fsf@birdie.labs.nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <m2mvzhcq2p.fsf@birdie.labs.nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/vIn_kFYsV7J56MeWdL-8EjA75G0>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 13:21:10 -0000

On Tue, Jun 30, 2015 at 02:56:30PM +0200, Ladislav Lhotka wrote:
> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
> 
> > On Mon, Jun 29, 2015 at 11:49:11AM +0200, Ladislav Lhotka wrote:
> >> Hi Juergen,
> >> 
> >> thank you for the review.
> >> 
> >> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
> >> 
> >> > On Mon, Jun 15, 2015 at 10:49:28PM +0000, Kent Watsen wrote:
> >> >> 
> >> >> This is a notice to start a NETMOD WG last call for the document "JSON Encoding of Data Modeled with YANG":
> >> >> 
> >> >> https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04
> >> >> 
> >> >> Please indicate your support by Monday June 29, 2015 at 9PM EST.
> >> >
> >> > Hi,
> >> >
> >> > I have reviewed draft-ietf-netmod-yang-json-04.
> >> >
> >> > - I am not sure I agree with the wording in section 3. Why is section
> >> >   8.3.3 only applicable to XML encoded data? Validation applies to
> >> >   datastores. While constraints are defined using XML-based notations
> >> 
> >> You are right that this section shouldn't talk about XML-encoded data,
> >> i.e. serialized form. On the other hand, XPath 1.0 spec says: "XPath
> >> operates on the abstract, logical structure of an XML document, â€¦".
> >> 
> >> So I think a datastore needs to be represented, at least conceptually,
> >> as XML infoset.
> >> 
> >> >   such as XPATH, how the validation is carried out is not defined in
> >> >   the YANG specifications. I guess I actually disagree with the
> >> 
> >> I don't think this is true. YANG spec doesn't say how "must" and "when"
> >> statements are evaluated, and relies on XPath.
> >
> > RFC 6020:
> >
> >    When a datastore is validated, all "must" constraints are
> >    conceptually evaluated once for each data node in the data tree, and
> >    for all leafs with default values in use (see Section 7.6.1).  If a
> >    data node does not exist in the data tree, and it does not have a
> >    default value, its "must" statements are not evaluated.
> >
> >    [...]
> >
> >    Also note that the XPath expression is conceptually evaluated.  This
> >    means that an implementation does not have to use an XPath evaluator
> >    on the device.  How the evaluation is done in practice is an
> >    implementation decision.
> 
> Yes, but the result must be guaranteed to be the same as if an XPath 1.0
> processor is used, otherwise it makes really no sense.
> 
> >  
> >> >   wording in section 3 of the JSON encoding I-D.
> >> 
> >> What specifically? Do you have any suggestions for changes?
> >
> > The problem is that RFC 6020 talks about datastore validation, not
> > about validation of a specific serialization. Hence, it does not
> > matter whether the data was XML or JSON (or CBOR or whatnext) encoded
> > - once the data is in the datastore, datastore validation takes
> > place. One way to implement this is to serialize everything to XML and
> > then to use XML gear to do the validation. But this implementation
> > strategy is not required.
> 
> We have no explicit concept of a metamodel for datastores but IMO the
> fact that we evaluate XPath expressions on top of it implies that the
> datastore must be (congruent to) restricted XML infoset. Section 5 (Data
> Model) is a crucial part of XPath spec, and it is XML.

The YANG language does not require that XPath is used. It says that
XPath is conceptually evaluated. Should the text in an encoding
document not be consistent with that?

> >
> >> > - It is unclear whether the 'if and only if' on page 4 means that an
> >> >   implementation that generates namespace prefixes that are not
> >> >   strictly needed is violating this I-D. I see the need for a MUST to
> >> 
> >> Yes, that's the intention. Why is it unclear?
> >> 
> >> >   include the module name if the parent node belongs to a different
> >> >   module. I am not sure why it is necessary to mandate minimal
> >> >   encodings (if that is the idea here). Whatever the answer is, it
> >> >   would be good to use RFC 2119 language.
> >> 
> >> Revision -02 used 2119 terms but there were objections against it:
> >> 
> >> https://mailarchive.ietf.org/arch/msg/netmod/xXS0uSKKu83qBQVCJ_CYmdsavUc
> >> 
> >> In fact, YANG spec also states syntax rules without using 2119 keywords,
> >> for example "Each identifier starts with an uppercase or lowercase ASCII
> >> letter or an underscore character, â€¦", it doesn't say that it MUST NOT
> >> start with anything else.
> >
> > If the goal is to define a strict implementation requirement, then I
> > think using RFC 2119 language is the preferred choice in the IETF. I
> 
> I guess identifier syntax is a strict implementation requirement,
> too. What the I-D defines is an unambiguous encoding of data.
> 
> > think the debate back then was whether it is reasonable to declare an
> > implementation that fails to produce minimal encodings as violating
> > the spec. How does it break a receiver if I send a redundant module
> > name? Your change of the MUST to 'if and only if' did cosmetics but it
> > did not address the concern raised.
> 
> Yes, but these are two different things:
> 
> 1. In my view, in any syntax or encoding specification 2119 keywords are
>    not needed, in fact they are inappropriate.
>
> 2. There are strong technical reasons for *not* relaxing the namespace
>    rules - it would again render of-the-shelf JSON parsers pretty much
>    useless, as Martin correctly pointed out:
> 
>    https://mailarchive.ietf.org/arch/msg/netmod/mCtvup_YnL3gvr95EIe4sSFcKfs

OK

> >> > - The reason for the requirement that list keys are encoded first in
> >> >   RFC 6020 is to make it easier to process data in a stream-oriented
> >> >   fashion. If keys can appear anywhere, they might appear at the very
> >> >   end and thus buffering is required in order to process data
> >> >   properly. Is this concern not relevant for the JSON encoding?
> >> 
> >> This cannot be required as long as our aim is interoperability of
> >> implementations based on off-the-shelf JSON parsers, hence I_JSON. RFC
> >> 7493 states it clearly: "The order of object members in an I-JSON
> >> message does not change the meaning of an I-JSON message."
> >> 
> >> >   Perhaps this is not relevant, but then we might also state this
> >> >   explicitly:
> >> >
> >> >       As a consequence, implementations must be cable to buffer JSON
> >> >       encoded instances in order to locate keys that may appear at the
> >> >       end of a JSON encoded instance.
> >> 
> >> I think it is clear that an implementation needs to be able to handle
> >> keys appearing anywhere in a list-entry-object. How it is handled is IMO
> >> implementation-specific - I guess it also depends on where and how the
> >> stream-oriented data processing is used.
> >
> > I still prefer to have this explicitly stated. If the keys happen to
> > appear at the end, how can you process the data without some form of
> > buffering? Perhaps this wording is better (since it is less specific
> > how data is buffered):
> 
> Maybe the keys are just irrelevant for the given purpose, e.g. when
> streaming state data.
> 
> As a matter of fact, with JSON encoding the receiving side will mostly
> buffer the whole payload anyway.
> 
> I can add that sentence, if you insist, but I see it as superfluous.

Thanks.

> >       As a consequence, implementations must be cable to buffer data
> >       in order to locate keys that may appear at the end of a JSON
> >       encoded instance.

> > I fail to see that but this is not relevant here as long as the JSON
> > document provides a means to encode anydata in an interoperable way.
> 
> It depends on what you call "interoperability", but if there is no
> (precise) data model available for anydata content, then the round-trip
> JSON client -> server -> XML client (or the other way around) may not be
> possible.
>
> So I don't get how "anydata" fixes "anyxml" problems (I personally
> only have problem with the name).

We are not discussing this anymore.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 30 06:53:44 2015
Return-Path: <phil@juniper.net>
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 D6BEF1B2AFC for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 06:53:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 pP0C9qFkga-X for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 06:53:39 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0132.outbound.protection.outlook.com [65.55.169.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6CC801B2B50 for <netmod@ietf.org>; Tue, 30 Jun 2015 06:53:39 -0700 (PDT)
Received: from SN1PR0501CA0023.namprd05.prod.outlook.com (10.163.126.161) by DM2PR05MB781.namprd05.prod.outlook.com (10.141.179.139) with Microsoft SMTP Server (TLS) id 15.1.201.16; Tue, 30 Jun 2015 13:53:38 +0000
Received: from BN1BFFO11FD032.protection.gbl (2a01:111:f400:7c10::1:105) by SN1PR0501CA0023.outlook.office365.com (2a01:111:e400:52fe::33) with Microsoft SMTP Server (TLS) id 15.1.201.16 via Frontend Transport; Tue, 30 Jun 2015 13:53:37 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.18) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.18 as permitted sender)
Received: from p-emfe01b-sac.jnpr.net (66.129.239.18) by BN1BFFO11FD032.mail.protection.outlook.com (10.58.144.95) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Tue, 30 Jun 2015 13:53:36 +0000
Received: from magenta.juniper.net (172.17.27.123) by p-emfe01b-sac.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.123.3; Tue, 30 Jun 2015 06:53:35 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5UDrYD09217;	Tue, 30 Jun 2015 06:53:34 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5UDpo5R054761; Tue, 30 Jun 2015 09:51:51 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506301351.t5UDpo5R054761@idle.juniper.net>
To: Andy Bierman <andy@yumaworks.com>
In-Reply-To: <CABCOCHRCyDp5dArYp9OKRgfxwRNO=tmb=oiys4v_PC0969FboQ@mail.gmail.com>
Date: Tue, 30 Jun 2015 09:51:50 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD032; 1:nXEg1/HVwUaajMXoWQST2halzqHNWZqlptW540DDpxUhYR761Gvr2638EOQb58X10EHGvjdnMZcO4XKJdQW+rbw7w8nBJpIQ5dWpSPkDsGYeZwI8noc24GxIVyWfsLjfqEH1pIvqt5HAdLuOoeztg6iOO0bRf9Ftku16sr367iZlH4z4Y3VG+7lKzkTDw6Ds9ueNAbQXerQ06ptFrXDITVW8hVbjfRMfxXpEp9ykdtFgqhRsQXV7TwrBf7xDeKZMRUZOwx56pz6eMjokxJhkbUvwpgm7HikCh0b6R2rBi948qbeDFNIBlI8OT1q9jp+N
X-Forefront-Antispam-Report: CIP:66.129.239.18; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(199003)(164054003)(189002)(110136002)(5001960100002)(5003600100002)(92566002)(189998001)(2950100001)(50466002)(77096005)(48376002)(62966003)(77156002)(106466001)(54356999)(50986999)(87936001)(558084003)(46102003)(53416004)(76506005)(86362001)(6806004)(105596002)(47776003); DIR:OUT; SFP:1102; SCL:1; SRVR:DM2PR05MB781; H:p-emfe01b-sac.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB781; 2:qLvwSVv2R75/udDDrugrEo6+bS+Dc7323SqCf3QBABGjVnew5LqkSh4ywYTcLZMR; 3:EBAG3aGq649AC6ml/p8Q29TMRnJeSQIqDym2N4CsOpDIALum6fq3y4Lvx4RRg4PdR5Yb6430UVeOeRmeTOsV/JyhF9kz74RoaNJRgTeLt8A6TIty6x3wYdq6SHeya3wz1pEUpJBNzoAdEpHeQT8MGThtQJQZSK4jGxJR5ECA5eGlhn7kS+b7qW4Io1PTHHvAibX85CMIFffIiBMFnpQVYvs73P9k75Ivu3Idwj591Oc=; 25:m0LAF+D1OLGudijUYtnaniU9cY5CQ/7RBa2RC/9m4VglAQI6mddD5Ktx00c1dsbsfwNt4zP4YP21k9Cb5OZBZtV/fF2P89UlAuK01WwRvH0qG9xtPwBIBUDeuxFxGp20aiCv841dB7h2qn3MOayl2NFLxhIUdjoqemYO7zPcEd1Zzu1dE/mzO85y6A5zWGSd53VPIxr41JUgbypBnwQINwgdeZA8TNWNOOtSdbZRqBRpL4ZbWPyrV3CyUBl/26llujRvJfA1xe33UPZUs7sQpg==
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR05MB781;
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB781; 20:aEc2kHsAGpkm4pz2Ri7tH0RI1otZPkznJrknTY7blw/CQyYQswBYcCci4kauAqpyDVer7RkrvfuI2B1NTo1sSZpCGrNzZ4/d0RDDAF7JYrXs17w2oOwOncy6Metr2e80CnYlC1ZtfbDJNSCiS24BI44KNOPNYiMyKGCn4gRkUHN3DJ330uzRz66FGHpr1dwv7jZo48+UWk8+1le+uvJZN2QGrLV3oCR07Rie2VBgoU6GGCXWzcA3LL2sMBNw5mLoEIxiUvF4N2rAJDqT/ggM0flct59whHUWqgxoZH32czqNXH6aFihV4PHdRYOX35ryJUkOanAga7R7hlAtxuE7xhZLa5ahLEdc2f1bnONml3JAfeVSPMRFeqqJ3G8nPtDT0TavrSUn5OXVBesChUCRvfy1fiytmO7711k2GMBYrvkiyPelMa0f3pFIevY8fYvmlbsZPfmT2j+J9gR/SJZKg5RjmJV5QKBLPb2F5tCkegeaHjo9H0bKDygdU2/bLEqO; 4:UO39y1SkKMsoQnxzzwPoMd7yYbPuOePOV4W+4yVyALE2ilZpu93T78PUDx1dn2myAx6HpVdcEtY0jM2pc20nTPSaaULLOvzCc/q4fKOD/qubfrf2sz5vVKi4WBFfGKGmxbQameT5QGf7TijtXJXXCd1r16P4HCb7PoG0F8ok4KDVLkAsA1t3QFnNe9Z+GqtLIsF+oddS4m9MO8dX4bd7Pe9p2bHRUGwUuoX2RCY0AoBIJb0Art3ojQHjUs41nDVZeE2rAonVTBHwe4hwzGoV7M1x+UvoMhRwqCQO2lOFrCE=
X-Microsoft-Antispam-PRVS: <DM2PR05MB7810D22D84D5BCB2024DD5DC9A90@DM2PR05MB781.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:DM2PR05MB781; BCL:0; PCL:0; RULEID:; SRVR:DM2PR05MB781; 
X-Forefront-PRVS: 06237E4555
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB781; 23:eHRJxd88mxZilQTiuqyQ/4qqu7kwKzk61GkO5A+0T3LPg4DHxo/ZkuZpsewG4FdSBVEhYAzaK5rK70yrMVB+gyeYIiuXtTmwrqRbMPndON/QKCuzETcLStlU/R0UFNZyPd1Fkntq/6HSkNTB1TgZ2737nSp6mZhPy6wrLR1oaMMK9rloWNg/ujR/PZFUrdGvbCrkLVlWvArxMHIzGW68Lqn3FSb8SSh28fvrsqb1iy6+hVLbJdQvV8IoFt94ob2FIgioNUKlrJbUTIWjPneXNkxpTTktzaAWrHCf9mPmfI/nbV6lkLN97uti6xL7qpUNqE2EUPIij2OmhAobCJRVsAPKEP/L7/Spzx6+j1c/+MyK7cdEepLf/fe09Wca0KYz94JU5XTAzVQkHcaVfehT5qmvVCHCKf6LwLMg2xn+l9BcwsIiFkyu1u+RXnhTf7w1qTcIMIitiF6n7MRu0/5CEEEBUxvtEfRQ1llUNCU3lviwjlbTcurciWsMJMBsgMTJegXfVQa39TNX97PSaiOs7HEwJ9prpOxCe7gc3fk/a0KFAVrjtcTRXrjS/HtIJnqESbzGZ+XHcdHjtW6z919ZnzK0lJK6i1322bTHRzmverMiAzeY7VS0+W4LRIEEHHGAQZDINwn/XZ+2ldBEw+7j+me0pk7vrhaFbPuNGJi4Nl7dIFg7VHs/oLgV0dGmDfyLwd8QWEXMDlKJhmKNsKKLUzL5C7cVq+WzvpXfa68EAgiAHyk+fvVpELAB9x0sgdq7qb0nCibbnLsc4MU263YihQ==; 5:4nTj258wUB0pACj0Vvv3EEiO91/knGDM+C7KD7rp2/Kf8izD/fievIOtdCvzoD8s5aeKnIV0RsK1trs+YeYfZiOQWulfh+penTGQmQW/LlSSqa0zwynw9U+ra8Vo+4VFYK4DY9KBhyczoAln3VZgnQ==
X-Microsoft-Exchange-Diagnostics: 1; DM2PR05MB781; 24:m8W6pFKwdX2UrDozAHKXyCIxfYUK2QofbbT9WqW7SjHH+BIj7KfmjAy0GwH1TZUgp9w6kdeaNy8EqFXYfc6TTkbiW01iN22wnZ81RV7jIjI=; 20:Brnsw583b+HbuBqzoVQC4unfDK71Eq3bDZboP0ERHZNSBISr8FeV9dsrknM5UBM/e+BVP42piASL2TKwebsWQw==
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2015 13:53:36.9992 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.18];  Helo=[p-emfe01b-sac.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR05MB781
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/wMDJqhEZZ886N3tvlWJ3id6zJvU>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 13:53:44 -0000

Andy Bierman writes:
>No - using 'empty' as a key allows 1 instance, same as a container.
>It may be pointless bug not harmful.

Requiring implementation of pointless features is, well, pointless.
It's an expense that can be safely removed.

Thanks,
 Phil


From nobody Tue Jun 30 07:02:19 2015
Return-Path: <phil@juniper.net>
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 6B9E51A0358 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:02:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 bZ5kCDfysuPf for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:02:17 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0728.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::1:728]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D6A6E1A016C for <netmod@ietf.org>; Tue, 30 Jun 2015 07:02:16 -0700 (PDT)
Received: from CO2PR05CA037.namprd05.prod.outlook.com (10.141.241.165) by BLUPR05MB706.namprd05.prod.outlook.com (10.141.207.13) with Microsoft SMTP Server (TLS) id 15.1.195.15; Tue, 30 Jun 2015 14:01:59 +0000
Received: from BY2FFO11FD039.protection.gbl (2a01:111:f400:7c0c::126) by CO2PR05CA037.outlook.office365.com (2a01:111:e400:1429::37) with Microsoft SMTP Server (TLS) id 15.1.201.16 via Frontend Transport; Tue, 30 Jun 2015 14:01:59 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.18) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.18 as permitted sender)
Received: from p-emfe01b-sac.jnpr.net (66.129.239.18) by BY2FFO11FD039.mail.protection.outlook.com (10.1.14.224) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Tue, 30 Jun 2015 14:01:58 +0000
Received: from magenta.juniper.net (172.17.27.123) by p-emfe01b-sac.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.123.3; Tue, 30 Jun 2015 07:01:57 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5UE1tD12724;	Tue, 30 Jun 2015 07:01:55 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5UE0CSh054852; Tue, 30 Jun 2015 10:00:12 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506301400.t5UE0CSh054852@idle.juniper.net>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
In-Reply-To: <20150630055203.GB4083@elstar.local>
Date: Tue, 30 Jun 2015 10:00:11 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD039; 1:gsI8poPS5WQh1sCsFtYuXLXLIFDi1f4h//DbBuCyhaRXQfjLrqC2xBJlHTp5OVRY95EVfDeqOwXWyIxU07LCNtNTbzv83YdbbTVaGVrtVSDyQK2hhOchus14B5k6XyL9AYb/EK39ZbiQAH+j2tPVyR8aSRTyzd0Hdjdu2hJhTTST6yH4wSwsuZ/63zSt2cS+ZqEK3N/d9BJfikajU6GUdyytYZySDPlmMT1da6Z5SxUDiCohSFo9FeFbCi3DKLbBqE7EGK3CeD2UMwQmXF+rAUCARl3F0X0nukfP8LigHNyJei5OuJpMY/SBZdD3G1Wf
X-Forefront-Antispam-Report: CIP:66.129.239.18; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(164054003)(199003)(189002)(76506005)(5003600100002)(2950100001)(110136002)(5001960100002)(77156002)(62966003)(47776003)(50986999)(54356999)(92566002)(6806004)(50466002)(106466001)(105596002)(86362001)(46102003)(48376002)(189998001)(77096005)(53416004)(87936001); DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR05MB706; H:p-emfe01b-sac.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB706; 2:PH0DRbkqfmhnFRX4fNQtU23sZLJr/Hd5KhkZAp9aFjf394isVwRxpAIEEimJuHRo; 3:TPCKQ/9PsKDgFOwcKIieMJPDnPmgyU0ljpkInx8g7ypd+D4YgDOd5R5ri4qmeyuOG7Kbxf9kro8irPSmyQTif9yiTOVDURVxiufXfV9MwAYWBebx+ECNGOqOFMOzcD00dQpZ81REz0wCSezy/erYWs/+0sGRXG0Si0v8pnrdm2h/T1/HRUX1Ix/psesm7Z2QihwUnqBL9l6x9FRGHRGPSP7iUbk5zxqTvukx103B/Eg=; 20:gfej/jt7TMEnMtmGqqg2PB6fVxxJkwwMA8slFP2wlV5otdg1WV0HVAitm9qEzAm78T9YUc7wfpngSLhGr/Dx2A6loE/7QLdnds6zaunO716syOlpi+y8FlTN3FddME67K0Vfkl5O9d6OTNAap5zyZIrvIr9OKlCKbNraQj5fRtHLYyhlY0lsfqymvpi6gbIpIiRBQA1GN7lV8TMbOoYaSSCbuVq/BzeTwZxtbPu4LWAbJZ8z+aVSHAbDSOJmrYJc+elaSfNKVfT+4VoXWi+uJZPileTn83fD9WibgvXouiPKy6ISu06ifsXYv8kNStOtSfQHzJu1UgKqBVDBVpos4eTil/gQu6vFwFOIPCEG3u6/RnMoLSdcpvvIogjxqLEqKRekFMDnPtsU/YVr0tFD8oIDoJBgFMIxyYf5qvkhTSQBta1gJcCnTisv5CQBDpXbqB0dwGRyIrfeK9fiPkJlXEdzxj+V/Fg6bW6xEyYvovYGxYDNXLRUSgDATXWbme3B
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR05MB706;
X-Microsoft-Antispam-PRVS: <BLUPR05MB706C822F373AEAE579EC797C9A90@BLUPR05MB706.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BLUPR05MB706; BCL:0; PCL:0; RULEID:; SRVR:BLUPR05MB706; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB706; 4:ZwqyFelzqGexLNqDQCehbdbyw8z4LU/f6hGkj2sUNUkidXG+Q/ZMA4XSsZ8ak3IJf5Kfz1z8TW5h8+TRnHk3xxN4LgTChK2bSgUfB+JpxBQ8Np8NgCnDevme5huxfW92lLBR3BLWl8INVX7EjkqPCoD73ZBhP1Xyi63WaciGoJd4qb1ts8v0+VKngm3Gr68kT+iN7H/oKnHSHrAUz4LOqYq7AqgPe+L7WHW2obvfsx3FY8ta/LVQd089e9byWj+bySc4WIZb2NUk0VYv1ktWhLWNiM36dtspQ3yEEwhfBmA=
X-Forefront-PRVS: 06237E4555
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB706; 23:etet1D0eTB7jicGZOSsqIRE1UqEJ5w3lafAWAgUBgKP1L23r+B5tAB/xPekmfNpI2+Vw5mHTgIrngNVFaJhvXOqxuNfb1eitO1VG5Ar1H2dOyuI836rm2Rcah2mV+bN3HXAL55/Qs+DbzI4+5sOEMQHMg2RYyZTdbYbSK1vmhirnDWzCt+OTQ93S3m6vBtEXBEsIVHcxi0DHa1A6MxNa1KKbdzQ/o68B8/+JxDLaHFNvFuv/NHdZZaAoIr5cJ4vGQ3JbxlZ2Mqu/v/pUYNHOiRYCdGfelQa3ZRglhc+XXt0zh265jyFIG0OMvjMttuy3eCTjvSf8ugAR1bWgLJXPfRUCN9IkwmHppCTAtjKHrfJRBfhebVC1SSqb5efyiMZmSpaGBDUvt7noTOcvp6Kwiz+B28vfjNcl/8R5BFEWl07TBCl++9Yu+AxiCCgQR5JsjrGou8ihRQvDu0VASpJPhjmcyd3swgYiJ3a4JV9mTi5Sg8VnhBtQBqR8/OVSM6v8gyGkDK2P0PH0QaWcddG7aaLDs8afm2nM3AP/AkJbbIa+IS/GbTgB/Dn1vr1aDVHY4PLwLgpgHSGmzKXdnAiYHZoI1T9q9nZISNrLviJZ7NTuQLsb1D/wmm85y6v4D+ZXb8uvBZQmi9AY7oB04w3SoaEpGay1A7eKX0Mldw8akAb69fP5cSL4hbXf5zBCfmWBxa91GAKKPA2JVlteKAzYhLS/u4k+iL3H1cjm+RHj1EQsS+vHd9XTs7ylszGVpSa2; 5:I5dMBAAUkAzPbmuwuy39vSR94vdqsqPiRhnZCDBf1/LyoWpSxdM7T4iDlQAvDjAIv61aUBHI3LpHFoL/Odbw94eLORoX3kF3BIgptXFs45n7P5nqR2dagUGFZWnM0WBTcztP7A1sv1zlinS+ZASznw==
X-Microsoft-Exchange-Diagnostics: 1; BLUPR05MB706; 24:xgsRcVDbdlGdkD6gTDGZdwHnntram7T/ZuEWJfNkmUqlAOod6BSsI+Q20rKFCMFir5yxiJEfNCSF1RjdA2olfGOJLl4FfER+x8KvXYzCS4c=; 20:6rs6e+yd/wvlJCa72SWd3OPilxg9zpn16dJFjGcJCgs1uBf4lvkA3Wdb/5JpyDMwyAwvIutQ0E47kWKg2xhcpA==
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2015 14:01:58.3191 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.18];  Helo=[p-emfe01b-sac.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR05MB706
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/PwGh6F8TiZwjXfi8k_FTtn5QO5A>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 14:02:18 -0000

Juergen Schoenwaelder writes:
>I am not afraid of nonsense in data models since nonsense will not be
>implemented. I would leave it to compiler writers to warn about
>nonsense constructions a compiler can detect without requiring a
>statement in the language definition trying to prohibit nonsense.
>There are many ways to define degenerated lists in YANG; ruling out
>one of them does not help that much and it creates inconsistencies -
>why is one way to define a degenerated list forbidden but the others
>are legal?

This really isn't the way standards work, right?  "gcc" can warn when
I do something like "int foo(){ return 0; return 1;}" but it can't
decide that it's invalid or refuse to generate a .o file for it.
I can choose to tighten gcc's restrictions with -W flags, but when
code compiles under gcc and doesn't under clang, when one or the
other isn't implementing the C standard.

Past that, allowing pointless constructs like this allows users
to make mistakes that might not be warned by their tool chain,
and the earlier an error is caught, the lower it's cost.

Worse, allowing pointless constructs like this means that the
probability of some nitwit using it quickly approaches 1, at
which point tool chains that barf on it will need to start
supporting it.

I'm not asking us to make pointless constructs like "leaf foo {must foo==0;}"
but empty keys it truly pointless.  Making it illegal is a benefit
to the enitre YANG world and not doing so it a pointless expense.

Thanks,
 Phil


From nobody Tue Jun 30 07:07:13 2015
Return-Path: <lhotka@nic.cz>
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 84B641A7028 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:07:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.661
X-Spam-Level: 
X-Spam-Status: No, score=-0.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, T_RP_MATCHES_RCVD=-0.01] 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 XUsYEoe_uvlr for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:07:10 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 46B291A1BF1 for <netmod@ietf.org>; Tue, 30 Jun 2015 07:07:10 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 9BC0A181437 for <netmod@ietf.org>; Tue, 30 Jun 2015 16:07:08 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1435673228; bh=GZ/NzM9qBB2IESHJaJbETG3pqPGErbaX+wxNE0vqfuA=; h=From:Date:To; b=YJ3hZhWSzTXhTxFinZXLLjssnFV35VNJrJ+nJDVzRBWLqzHwGjjJqM/Wz7qDl2udx 02gZJ6GIs78/1lP78R6syCFwVR1VFTuzV8rvJFETaNC8CHgPLfI8BYd4YTAxAqOdLv rhO7rprFjlvl4ChMn22Fr1piFDEZGda49dcpPWD4=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <20150630133908.GC5604@elstar.local>
Date: Tue, 30 Jun 2015 16:07:10 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <969A179E-2EB4-4E08-A55F-A4A8B0B0C0A1@nic.cz>
References: <D1A4CEB7.B22F7%kwatsen@juniper.net> <20150624145325.GB38016@elstar.local> <m2lhf27sko.fsf@birdie.labs.nic.cz> <20150630095600.GA4836@elstar.local> <m2mvzhcq2p.fsf@birdie.labs.nic.cz> <20150630132059.GC5406@elstar.local> <90672C21-8E4C-4B9B-81DD-BBCB5F529D20@nic.cz> <20150630133908.GC5604@elstar.local>
To: NETMOD Working Group <netmod@ietf.org>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/xZRdLKA1fyaByT6fn8-WVUZzo3g>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 14:07:12 -0000

> On 30 Jun 2015, at 15:39, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>=20
> On Tue, Jun 30, 2015 at 03:32:13PM +0200, Ladislav Lhotka wrote:
>>=20
>>> On 30 Jun 2015, at 15:20, Juergen Schoenwaelder =
<j.schoenwaelder@jacobs-university.de> wrote:
>>>=20
>>> On Tue, Jun 30, 2015 at 02:56:30PM +0200, Ladislav Lhotka wrote:
>>>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> =
writes:
>>>>=20
>>>>> On Mon, Jun 29, 2015 at 11:49:11AM +0200, Ladislav Lhotka wrote:
>>>>>> Hi Juergen,
>>>>>>=20
>>>>>> thank you for the review.
>>>>>>=20
>>>>>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> =
writes:
>>>>>>=20
>>>>>>> On Mon, Jun 15, 2015 at 10:49:28PM +0000, Kent Watsen wrote:
>>>>>>>>=20
>>>>>>>> This is a notice to start a NETMOD WG last call for the =
document "JSON Encoding of Data Modeled with YANG":
>>>>>>>>=20
>>>>>>>> https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04
>>>>>>>>=20
>>>>>>>> Please indicate your support by Monday June 29, 2015 at 9PM =
EST.
>>>>>>>=20
>>>>>>> Hi,
>>>>>>>=20
>>>>>>> I have reviewed draft-ietf-netmod-yang-json-04.
>>>>>>>=20
>>>>>>> - I am not sure I agree with the wording in section 3. Why is =
section
>>>>>>> 8.3.3 only applicable to XML encoded data? Validation applies to
>>>>>>> datastores. While constraints are defined using XML-based =
notations
>>>>>>=20
>>>>>> You are right that this section shouldn't talk about XML-encoded =
data,
>>>>>> i.e. serialized form. On the other hand, XPath 1.0 spec says: =
"XPath
>>>>>> operates on the abstract, logical structure of an XML document, =
=E2=80=A6".
>>>>>>=20
>>>>>> So I think a datastore needs to be represented, at least =
conceptually,
>>>>>> as XML infoset.
>>>>>>=20
>>>>>>> such as XPATH, how the validation is carried out is not defined =
in
>>>>>>> the YANG specifications. I guess I actually disagree with the
>>>>>>=20
>>>>>> I don't think this is true. YANG spec doesn't say how "must" and =
"when"
>>>>>> statements are evaluated, and relies on XPath.
>>>>>=20
>>>>> RFC 6020:
>>>>>=20
>>>>> When a datastore is validated, all "must" constraints are
>>>>> conceptually evaluated once for each data node in the data tree, =
and
>>>>> for all leafs with default values in use (see Section 7.6.1).  If =
a
>>>>> data node does not exist in the data tree, and it does not have a
>>>>> default value, its "must" statements are not evaluated.
>>>>>=20
>>>>> [...]
>>>>>=20
>>>>> Also note that the XPath expression is conceptually evaluated.  =
This
>>>>> means that an implementation does not have to use an XPath =
evaluator
>>>>> on the device.  How the evaluation is done in practice is an
>>>>> implementation decision.
>>>>=20
>>>> Yes, but the result must be guaranteed to be the same as if an =
XPath 1.0
>>>> processor is used, otherwise it makes really no sense.
>>>>=20
>>>>>=20
>>>>>>> wording in section 3 of the JSON encoding I-D.
>>>>>>=20
>>>>>> What specifically? Do you have any suggestions for changes?
>>>>>=20
>>>>> The problem is that RFC 6020 talks about datastore validation, not
>>>>> about validation of a specific serialization. Hence, it does not
>>>>> matter whether the data was XML or JSON (or CBOR or whatnext) =
encoded
>>>>> - once the data is in the datastore, datastore validation takes
>>>>> place. One way to implement this is to serialize everything to XML =
and
>>>>> then to use XML gear to do the validation. But this implementation
>>>>> strategy is not required.
>>>>=20
>>>> We have no explicit concept of a metamodel for datastores but IMO =
the
>>>> fact that we evaluate XPath expressions on top of it implies that =
the
>>>> datastore must be (congruent to) restricted XML infoset. Section 5 =
(Data
>>>> Model) is a crucial part of XPath spec, and it is XML.
>>>=20
>>> The YANG language does not require that XPath is used. It says that
>>=20
>> YANG *does* use XPath 1.0. Whether it is evaluated conceptually or =
otherwise is irrelevant, the results must always be the same. And =
evaluation of XPath requires a specific context and data model as =
defined in its spec.
>>=20
>=20
> The YANG language definition is rather clear that (i) datastore
> content is validated and (ii) that XPath expressions are conceptually
> evaluated. I think the JSON encoding should not say anything
> different.


RFC 6020(bis) says in sec. 6.4:

   The data model used in the XPath expressions is the same as that used =
in XPath 1.0 [
   XPATH], =E2=80=A6

JSON's data model is different.

Therefore, I believe the yang-json document has to specify how =
(YANG-specific) JSON data map on the XPath 1.0 data model. The way how =
it is currently done is that JSON-encoded instances are (conceptually) =
mapped to XML-encoded instances, and it is assumed that the mapping of =
the latter to the XPath data model and XPath context is fully defined in =
YANG spec.

Maybe there is a better way how to achieve the same but I am not aware =
of it, and the current way is IMO better than hand-waving.

Lada =20

>=20
> /js
>=20
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Tue Jun 30 07:11:32 2015
Return-Path: <acee@cisco.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 A97601A1BB9 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:11:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level: 
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 v3ikbim1tw_a for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:11:29 -0700 (PDT)
Received: from alln-iport-8.cisco.com (alln-iport-8.cisco.com [173.37.142.95]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 89F631A1B5D for <netmod@ietf.org>; Tue, 30 Jun 2015 07:11:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=1180; q=dns/txt; s=iport; t=1435673489; x=1436883089; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=cioqWC2HE/8RUyQFGdWsGBbcxO8Qw5ZOx/IwZ2QI29M=; b=IybBbuXhk57zvYsS5mXO41XtUGvr6auWNYARczkz2vjFFj0omDSiISuB c6AXKRqxOimzn9D8xcI8OuWqeHd+3wZ4+WKnL/rc65WcqrVCoDb6JJqB3 TqD8TQmaRDLfpg4bKTMvJ7onco6QjDo0Qd8hSoYKrF+YEKP4xNvpQu/3l 4=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0DFAwCSopJV/4cNJK1cgxFUXwaDGLojCYFdCoUuSgIcgS04FAEBAQEBAQGBCoQjAQEEAQEBIBE6GwIBCBoCJgICAiULFRACBAESiC8NsCuWcQEBAQEBAQEBAQEBAQEBAQEBAQEVBIEhiimEUzqCaIFDBZQHAYtWmD0mY4MXb4FGgQIBAQE
X-IronPort-AV: E=Sophos;i="5.15,378,1432598400"; d="scan'208";a="164174972"
Received: from alln-core-2.cisco.com ([173.36.13.135]) by alln-iport-8.cisco.com with ESMTP; 30 Jun 2015 14:11:28 +0000
Received: from xhc-aln-x07.cisco.com (xhc-aln-x07.cisco.com [173.36.12.81]) by alln-core-2.cisco.com (8.14.5/8.14.5) with ESMTP id t5UEBSot003977 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Tue, 30 Jun 2015 14:11:28 GMT
Received: from xmb-aln-x06.cisco.com ([169.254.1.208]) by xhc-aln-x07.cisco.com ([173.36.12.81]) with mapi id 14.03.0195.001; Tue, 30 Jun 2015 09:11:28 -0500
From: "Acee Lindem (acee)" <acee@cisco.com>
To: Ladislav Lhotka <lhotka@nic.cz>, NETMOD Working Group <netmod@ietf.org>
Thread-Topic: [netmod] IANA Consideration
Thread-Index: AQHQsxIxhf2LMjNogEu6poFZZejIUZ3FKAYA
Date: Tue, 30 Jun 2015 14:11:27 +0000
Message-ID: <D1B81B37.25783%acee@cisco.com>
References: <4A6BBA96-3A42-4E17-A4D0-EF8DFCD22BE7@nic.cz>
In-Reply-To: <4A6BBA96-3A42-4E17-A4D0-EF8DFCD22BE7@nic.cz>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.116.152.198]
Content-Type: text/plain; charset="utf-8"
Content-ID: <47C69E403B45D445A0A45910C9F10AF4@emea.cisco.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/5JmLWu6LHnEflWqw1YAvhCMajYU>
Subject: Re: [netmod] IANA Consideration
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 14:11:31 -0000

SGkgTGFkYSwgDQoNCk9uIDYvMzAvMTUsIDQ6NTIgQU0sICJMYWRpc2xhdiBMaG90a2EiIDxsaG90
a2FAbmljLmN6PiB3cm90ZToNCg0KPkhpLA0KPg0KPmlzIGl0IE9LIHRoYXQgNjAyMGJpcyBhZ2Fp
biBkZWZpbmVzIOKAnFlBTkcgTW9kdWxlIE5hbWVz4oCdIHJlZ2lzdHJ5PyBJdCB3YXMNCj5hbHJl
YWR5IGRlZmluZWQgaW4gUkZDIDYwMjAgc28gSeKAmWQgc2F5IGl0IHNob3VsZG7igJl0IGJlIHJl
cGVhdGVkLg0KDQpOb3JtYWxseSB3aGVuIGFuIFJGQyBpcyBvYnNvbGV0ZWQgYnkgYSBiaXMgdmVy
c2lvbiwgdGhlIG9yaWdpbmFsIElBTkENCmNvbnNpZGVyYXRpb25zIGFyZSByZXRhaW5lZC4gQXQg
bGVhc3QgdGhhdCBoYXMgYmVlbiBteSBleHBlcmllbmNlIGJvdGggZm9yDQpiaXMgdmVyc2lvbnMg
dGhhdCBJIGhhdmUgYXV0aG9yZWQgYW5kIGJpcyB2ZXJzaW9uIHRoYXQgSSBoYXZlIHJldmlld2Vk
Lg0KDQpUaGFua3MsDQpBY2VlIA0KDQoNCg0KPg0KPkFsc28sIHRoZSB0d28gcmVnaXN0ZXJlZCBu
YW1lc3BhY2UgVVJJcyBzaG91bGQgSU1PIGJlDQo+DQo+ICAgICBVUkk6IHVybjppZXRmOnBhcmFt
czp4bWw6bnM6eWFuZzp5aW46MS4xDQo+ICAgICBVUkk6IHVybjppZXRmOnBhcmFtczp4bWw6bnM6
eWFuZzoxLjENCj4NCj5MYWRhDQo+DQo+LS0NCj5MYWRpc2xhdiBMaG90a2EsIENaLk5JQyBMYWJz
DQo+UEdQIEtleSBJRDogRTc0RThDMEMNCj4NCj4NCj4NCj4NCj5fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPm5ldG1vZCBtYWlsaW5nIGxpc3QNCj5uZXRt
b2RAaWV0Zi5vcmcNCj5odHRwczovL3d3dy5pZXRmLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25ldG1v
ZA0KDQo=


From nobody Tue Jun 30 07:14:45 2015
Return-Path: <lhotka@nic.cz>
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 364941A8961 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:14:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.661
X-Spam-Level: 
X-Spam-Status: No, score=-5.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, RCVD_IN_DNSWL_HI=-5, 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 WyyMHvLq9eog for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:14:41 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [217.31.204.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 61DC21A1BC2 for <netmod@ietf.org>; Tue, 30 Jun 2015 07:14:41 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id 6F18518146B; Tue, 30 Jun 2015 16:14:39 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1435673679; bh=fFO7ZjcBITSFs+Jk9R3M0CnzNh6b+uHANXgXifrtFgU=; h=From:Date:To; b=MYiwKDsL29xTS/CNyWPPNVwpbW2kC6Zv442wQakQppw57e+OVTGWR5e+ePOqm+PcR jwtUhMOf9B7XPIJUGPEYDWDCn1iDhOdZ7zAJWqM/B/ZuySHJTJFNGTVDNjOv9242+j GQ+J9ajjmTrgYC8lccG/WEEoazJ+DhvdwQJGlRHo=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <201506301351.t5UDpo5R054761@idle.juniper.net>
Date: Tue, 30 Jun 2015 16:14:41 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <834BC991-1856-4ADF-8166-2FB8B51ACFE5@nic.cz>
References: <201506301351.t5UDpo5R054761@idle.juniper.net>
To: Phil Shafer <phil@juniper.net>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Zd6z9YxH9Hm3yVtPSHtcuk-Dx5o>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 14:14:43 -0000

> On 30 Jun 2015, at 15:51, Phil Shafer <phil@juniper.net> wrote:
>=20
> Andy Bierman writes:
>> No - using 'empty' as a key allows 1 instance, same as a container.
>> It may be pointless bug not harmful.
>=20
> Requiring implementation of pointless features is, well, pointless.
> It's an expense that can be safely removed.

Requiring implementation of pointless CLRs is, well, pointless.
It=E2=80=99s an expense that can be safely removed.

Lada

>=20
> Thanks,
> Phil
>=20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Tue Jun 30 07:16:59 2015
Return-Path: <lhotka@nic.cz>
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 CF6761A901F for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:16:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.661
X-Spam-Level: 
X-Spam-Status: No, score=-5.661 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, RCVD_IN_DNSWL_HI=-5, 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 4Xe-NXjfvZ4A for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:16:57 -0700 (PDT)
Received: from mail.nic.cz (mail.nic.cz [217.31.204.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 100F01A901D for <netmod@ietf.org>; Tue, 30 Jun 2015 07:16:26 -0700 (PDT)
Received: from birdie.labs.nic.cz (unknown [195.113.220.110]) by mail.nic.cz (Postfix) with ESMTPSA id B6564181630; Tue, 30 Jun 2015 16:16:24 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nic.cz; s=default; t=1435673784; bh=nTVn0oebpuZO0A/dmKZjSZuQy8HJT2zXTQVAlngU17A=; h=From:Date:To; b=Gg8yTyyIp2NgbD8yLXhPCzF0KGyBTlGXbH8uog6+gqEgMVBzJE8i0hLKQ6xvMctKs VvWGSJs+wzNCaso6YByEQRiUrw3JxDkbIlScbHc68hTEtMWFPIxY/FFIzJtWhc3DJv sLmRTJZRaIsV2gyXARSYuYfp45HVJz7ACBnArd90=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Ladislav Lhotka <lhotka@nic.cz>
In-Reply-To: <D1B81B37.25783%acee@cisco.com>
Date: Tue, 30 Jun 2015 16:16:26 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <67D6D0D5-B1E2-4CF8-ADFC-A02C6BF808ED@nic.cz>
References: <4A6BBA96-3A42-4E17-A4D0-EF8DFCD22BE7@nic.cz> <D1B81B37.25783%acee@cisco.com>
To: "Acee Lindem (acee)" <acee@cisco.com>
X-Mailer: Apple Mail (2.2098)
X-Virus-Scanned: clamav-milter 0.98.7 at mail
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/A1eMT-jGe62wVTOXhUjDEva1e4M>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] IANA Consideration
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 14:16:59 -0000

> On 30 Jun 2015, at 16:11, Acee Lindem (acee) <acee@cisco.com> wrote:
>=20
> Hi Lada,=20
>=20
> On 6/30/15, 4:52 AM, "Ladislav Lhotka" <lhotka@nic.cz> wrote:
>=20
>> Hi,
>>=20
>> is it OK that 6020bis again defines =E2=80=9CYANG Module Names=E2=80=9D=
 registry? It was
>> already defined in RFC 6020 so I=E2=80=99d say it shouldn=E2=80=99t =
be repeated.
>=20
> Normally when an RFC is obsoleted by a bis version, the original IANA
> considerations are retained. At least that has been my experience both =
for
> bis versions that I have authored and bis version that I have =
reviewed.

OK, thanks. Lada

>=20
> Thanks,
> Acee=20
>=20
>=20
>=20
>>=20
>> Also, the two registered namespace URIs should IMO be
>>=20
>>    URI: urn:ietf:params:xml:ns:yang:yin:1.1
>>    URI: urn:ietf:params:xml:ns:yang:1.1
>>=20
>> Lada
>>=20
>> --
>> Ladislav Lhotka, CZ.NIC Labs
>> PGP Key ID: E74E8C0C
>>=20
>>=20
>>=20
>>=20
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
>=20

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C





From nobody Tue Jun 30 07:17:10 2015
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 380091A9008 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:17:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=unavailable
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 hXYECqatzTF8 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:17:07 -0700 (PDT)
Received: from mail-la0-f54.google.com (mail-la0-f54.google.com [209.85.215.54]) (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 A6CA61A9025 for <netmod@ietf.org>; Tue, 30 Jun 2015 07:16:31 -0700 (PDT)
Received: by laar3 with SMTP id r3so15499180laa.0 for <netmod@ietf.org>; Tue, 30 Jun 2015 07:16:30 -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=+E+Fk5O26dbYS8fClizu/ILE09I2XG3YMkui7q9n44g=; b=O3ZgdUKBi/eL+LFaO+pteCt6gyWUJ45bptYUjSlEH6gcb8QkJxTJjiRCGWUsnO0kby 7Ik0HP5gaHDo1HXZFW5L4Y1Iz5sWqjtUBIz0FDYVGjfSNjTZTxAQOE9jaYy6NH6q5USI sm3EEJZ15DVYZVfc1ZVGjJMC8AnPZOWa2dbRx7YPqfyQ7oVEwhfjfEBuESliqLkv7x/i rVOPDFgvPhWWKHqs0TxPAJw0+UkFri5BAcrURb+odCPBvDAH1SYcFVQtnzQtEopeUhhX fEra0LuBDVViLYsa7EDur+ZhRnmGUMiqT7KvjooLT+faWQoAEuprc6wpKNZU+f5VrYSQ JhEg==
X-Gm-Message-State: ALoCoQmEOL7t4UVH179WQ6f1pyUowFy3p59U3M2ytU5bI5XdFSpeRHPAZE7A/xvy5aryeB7Z9Nrd
MIME-Version: 1.0
X-Received: by 10.112.55.207 with SMTP id u15mr19943965lbp.88.1435673789889; Tue, 30 Jun 2015 07:16:29 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 30 Jun 2015 07:16:29 -0700 (PDT)
In-Reply-To: <20150630.144613.434177163718632086.mbj@tail-f.com>
References: <20150628.101115.524154870753102418.mbj@tail-f.com> <20150630.104449.916352783153186338.mbj@tail-f.com> <m2si99cyfh.fsf@birdie.labs.nic.cz> <20150630.144613.434177163718632086.mbj@tail-f.com>
Date: Tue, 30 Jun 2015 07:16:29 -0700
Message-ID: <CABCOCHT9bsReqn81w7BxRD7P+98fJmtTxRFKVPe-C13xUOaaxQ@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Martin Bjorklund <mbj@tail-f.com>
Content-Type: multipart/alternative; boundary=001a113403d842972a0519bcdae8
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/-_dHiaFPvU38umHXAXHFUn2j3QA>
Cc: "netmod@ietf.org" <netmod@ietf.org>, Netconf <netconf@ietf.org>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 14:17:09 -0000

--001a113403d842972a0519bcdae8
Content-Type: text/plain; charset=UTF-8

On Tue, Jun 30, 2015 at 5:46 AM, Martin Bjorklund <mbj@tail-f.com> wrote:

> Ladislav Lhotka <lhotka@nic.cz> wrote:
> > Martin Bjorklund <mbj@tail-f.com> writes:
> >
> > > Hi,
> > >
> > > Here's a short summary, and then some questions for the WG.
> > >
> > > The ietf-yang-library module is designed to serve two purposes:
> > >
> > >   1.  A protocol-independent advertisement mechanism for YANG 1.1
> > >       modules.
> > >
> > >   2.  A list of the YANG modules stored in a server.
> >
> > Is this used by "get-schema" or for something else?
>
> Andy might be able to explain this requirement.
>
> My personal view is that ietf-yang-library should do #1 only.
>
>
#2 is to support easy retrieval of all types of YANG files.
The types of YANG files can be identified (unlike the schema list)
so a subset of files can be retrieved if needed.  The 'schema'
list does not support submodules or deviation files.
No YANG file types can be identified with the 'schema' list.

It is useful to be able to retrieve the YANG files without having to parse
them
first.  This allows modular implementation.

The "schema" list is optional to implement so a client cannot
rely on it .  Only the YANG library is
mandatory to implement for RESTCONF and CoMI.

Since storage of the YANG files is expensive for constrained
devices, it is very useful to support a <get-schema> server
which contains all the YANG files for lots of device types.
(the conformance=none enumeration supports this mode)

There is no harm whatsoever in allowing multiple revisions from
appearing in the library.  I don't really understand why this
is a problem.



>
> /martin
>


Andy


>
>
> > > Q1.  Do you agree with these goals?
> >
> > I think it should be only #1, if it is going to be the only way for
> > advertising YANG modules. A server may just implement the modules
> > without storing them. (But maybe I misunderstood the purpose of #2.)
> >
> > >
> > >
> > > Q2.  Should this module be designed to work with both YANG 1.0 and
> > >      YANG 1.1 servers - i.e., should it have yang-version 1.1 or not?
> > >
> > >      If it should not be defined using YANG 1.1, why is this module
> > >      special?
> > >
> >
> > Hmm, it depends on what a 1.0 client is expected to do when encountering
> > 1.1 modules. This is probably not specified in 6020bis. (?)
> >
> >
> > >
> > > Q3.  Should the /modules/module list be designed to store both YANG
> > >      1.0 and YANG 1.1 modules?
> > >
> >
> > Yes.
> >
> > >
> > > Q4.  Consider these modules, which both import foo without revision:
> > >
> > >        module a { ... import foo; ... }
> > >        module b { ... import foo; ... }
> > >
> > >      Do we require a server that implements both a and b to use the
> > >      same revision of foo?
> > >
> > >      If the answer is yes, we need to indicate the default revision
> > >      that the server uses in the model:
> > >
> > >        container modules {
> > >          ...
> > >          list module {
> > >            ...
> > >            leaf default-revision {
> > >              type boolean;
> > >              default false;
> > >              description
> > >                "Indicates that this revision is used by the server if
> > >                 this module is imported without a specific revision
> > >                 date.";
> > >            }
> > >          }
> > >        }
> > >
> > >      If the answer is no, note that this puts an implementation burden
> > >      on the client.  A client cannot simply download all listed
> > >      modules, and load/compile/process them as one set.
> > >
> > >      If the anwser is no, I propose that we extend the module as such:
> >
> > I'd vote for this option. A server implementor might need to use an old
> > revision of a grouping/typedef in one subsystem and a new revision in
> > another.
> >
> > Lada
> >
> > >
> > >        container modules {
> > >          ...
> > >          list module {
> > >            ...
> > >            list imported-without-revision {
> > >              key "name revision";
> > >              ...
> > >            }
> > >          }
> > >        }
> > >
> > >      A server could then list:
> > >
> > >       <module>
> > >         <name>a</name>
> > >         <revision>2015-01-01</revision>
> > >         <imported-without-revision>
> > >           <name>foo</name>
> > >           <revision>2002-02-02</revision>
> > >         </imported-without-revision>
> > >       </module>
> > >       <module>
> > >         <name>b</name>
> > >         <revision>2015-01-01</revision>
> > >         <imported-without-revision>
> > >           <name>foo</name>
> > >           <revision>2001-01-01</revision>
> > >         </imported-without-revision>
> > >       </module>
> > >
> > >
> > >
> > > /martin
> > >
> > > _______________________________________________
> > > netmod mailing list
> > > netmod@ietf.org
> > > https://www.ietf.org/mailman/listinfo/netmod
> >
> > --
> > Ladislav Lhotka, CZ.NIC Labs
> > PGP Key ID: E74E8C0C
> >
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a113403d842972a0519bcdae8
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Tue, Jun 30, 2015 at 5:46 AM, Martin Bjorklund <span dir=3D"ltr">&lt=
;<a href=3D"mailto:mbj@tail-f.com" target=3D"_blank">mbj@tail-f.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">Ladislav Lhotka &lt;<a hre=
f=3D"mailto:lhotka@nic.cz">lhotka@nic.cz</a>&gt; wrote:<br>
&gt; Martin Bjorklund &lt;<a href=3D"mailto:mbj@tail-f.com">mbj@tail-f.com<=
/a>&gt; writes:<br>
&gt;<br>
&gt; &gt; Hi,<br>
&gt; &gt;<br>
&gt; &gt; Here&#39;s a short summary, and then some questions for the WG.<b=
r>
&gt; &gt;<br>
&gt; &gt; The ietf-yang-library module is designed to serve two purposes:<b=
r>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A01.=C2=A0 A protocol-independent advertisement mechani=
sm for YANG 1.1<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0modules.<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A02.=C2=A0 A list of the YANG modules stored in a serve=
r.<br>
&gt;<br>
&gt; Is this used by &quot;get-schema&quot; or for something else?<br>
<br>
Andy might be able to explain this requirement.<br>
<br>
My personal view is that ietf-yang-library should do #1 only.<br>
<br></blockquote><div><br></div><div>#2 is to support easy retrieval of all=
 types of YANG files.</div><div>The types of YANG files can be identified (=
unlike the schema list)</div><div>so a subset of files can be retrieved if =
needed.=C2=A0 The &#39;schema&#39;</div><div>list does not support submodul=
es or deviation files.</div><div>No YANG file types can be identified with =
the &#39;schema&#39; list.</div><div><br></div><div>It is useful to be able=
 to retrieve the YANG files without having to parse them</div><div>first.=
=C2=A0 This allows modular implementation.</div><div><br></div><div>The &qu=
ot;schema&quot; list is optional to implement so a client cannot</div><div>=
rely on it .=C2=A0 Only the YANG library is</div><div>mandatory to implemen=
t for RESTCONF and CoMI.</div><div><br></div><div>Since storage of the YANG=
 files is expensive for constrained</div><div>devices, it is very useful to=
 support a &lt;get-schema&gt; server</div><div>which contains all the YANG =
files for lots of device types.</div><div>(the conformance=3Dnone enumerati=
on supports this mode)</div><div><br></div><div>There is no harm whatsoever=
 in allowing multiple revisions from</div><div>appearing in the library.=C2=
=A0 I don&#39;t really understand why this</div><div>is a problem.</div><di=
v><br></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
/martin<br></blockquote><div><br></div><div><br></div><div>Andy</div><div>=
=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bo=
rder-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
&gt; &gt; Q1.=C2=A0 Do you agree with these goals?<br>
&gt;<br>
&gt; I think it should be only #1, if it is going to be the only way for<br=
>
&gt; advertising YANG modules. A server may just implement the modules<br>
&gt; without storing them. (But maybe I misunderstood the purpose of #2.)<b=
r>
&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; Q2.=C2=A0 Should this module be designed to work with both YANG 1=
.0 and<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 YANG 1.1 servers - i.e., should it have yang-=
version 1.1 or not?<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 If it should not be defined using YANG 1.1, w=
hy is this module<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 special?<br>
&gt; &gt;<br>
&gt;<br>
&gt; Hmm, it depends on what a 1.0 client is expected to do when encounteri=
ng<br>
&gt; 1.1 modules. This is probably not specified in 6020bis. (?)<br>
&gt;<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; Q3.=C2=A0 Should the /modules/module list be designed to store bo=
th YANG<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 1.0 and YANG 1.1 modules?<br>
&gt; &gt;<br>
&gt;<br>
&gt; Yes.<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; Q4.=C2=A0 Consider these modules, which both import foo without r=
evision:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 module a { ... import foo; ... }<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 module b { ... import foo; ... }<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 Do we require a server that implements both a=
 and b to use the<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 same revision of foo?<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 If the answer is yes, we need to indicate the=
 default revision<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 that the server uses in the model:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 container modules {<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 list module {<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 leaf default-revision {<=
br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 type boolean;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 default false;<br=
>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 description<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;Indi=
cates that this revision is used by the server if<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0this=
 module is imported without a specific revision<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0date=
.&quot;;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 If the answer is no, note that this puts an i=
mplementation burden<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 on the client.=C2=A0 A client cannot simply d=
ownload all listed<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 modules, and load/compile/process them as one=
 set.<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 If the anwser is no, I propose that we extend=
 the module as such:<br>
&gt;<br>
&gt; I&#39;d vote for this option. A server implementor might need to use a=
n old<br>
&gt; revision of a grouping/typedef in one subsystem and a new revision in<=
br>
&gt; another.<br>
&gt;<br>
&gt; Lada<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 container modules {<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 list module {<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 list imported-without-re=
vision {<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 key &quot;name re=
vision&quot;;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 A server could then list:<br>
&gt; &gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;module&gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;name&gt;a&lt;/name&gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;revision&gt;2015-01-01&lt;/r=
evision&gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;imported-without-revision&gt=
;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;name&gt;foo&lt;/name&=
gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;revision&gt;2002-02-0=
2&lt;/revision&gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;/imported-without-revision&g=
t;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;/module&gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;module&gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;name&gt;b&lt;/name&gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;revision&gt;2015-01-01&lt;/r=
evision&gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;imported-without-revision&gt=
;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;name&gt;foo&lt;/name&=
gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;revision&gt;2001-01-0=
1&lt;/revision&gt;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;/imported-without-revision&g=
t;<br>
&gt; &gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;/module&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; /martin<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; netmod mailing list<br>
&gt; &gt; <a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
&gt; &gt; <a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"n=
oreferrer" target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</=
a><br>
&gt;<br>
&gt; --<br>
&gt; Ladislav Lhotka, CZ.NIC Labs<br>
&gt; PGP Key ID: E74E8C0C<br>
&gt;<br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div></div>

--001a113403d842972a0519bcdae8--


From nobody Tue Jun 30 07:38:31 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 EA0061A902C for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:38:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 h2EnRzOqv5OX for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:38:25 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C64431A9124 for <netmod@ietf.org>; Tue, 30 Jun 2015 07:37:09 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 016411617; Tue, 30 Jun 2015 16:37:07 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id vo7nAelzD3Wd; Tue, 30 Jun 2015 16:37:07 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 30 Jun 2015 16:37:06 +0200 (CEST)
Received: from localhost (demetrius3.jacobs-university.de [212.201.44.48]) by hermes.jacobs-university.de (Postfix) with ESMTP id BD24120035; Tue, 30 Jun 2015 16:37:07 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius3.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id 41hAPgGqyIUp; Tue, 30 Jun 2015 16:37:01 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 8670C20013; Tue, 30 Jun 2015 16:37:06 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id D20E234E65E9; Tue, 30 Jun 2015 16:37:05 +0200 (CEST)
Date: Tue, 30 Jun 2015 16:37:05 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Phil Shafer <phil@juniper.net>
Message-ID: <20150630143705.GA5803@elstar.local>
Mail-Followup-To: Phil Shafer <phil@juniper.net>, Martin Bjorklund <mbj@tail-f.com>, netmod@ietf.org
References: <20150630055203.GB4083@elstar.local> <201506301400.t5UE0CSh054852@idle.juniper.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <201506301400.t5UE0CSh054852@idle.juniper.net>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/JskxoDFJIk0oEF3zCJUJBE9fnyc>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 14:38:30 -0000

On Tue, Jun 30, 2015 at 10:00:11AM -0400, Phil Shafer wrote:
> Juergen Schoenwaelder writes:
> >I am not afraid of nonsense in data models since nonsense will not be
> >implemented. I would leave it to compiler writers to warn about
> >nonsense constructions a compiler can detect without requiring a
> >statement in the language definition trying to prohibit nonsense.
> >There are many ways to define degenerated lists in YANG; ruling out
> >one of them does not help that much and it creates inconsistencies -
> >why is one way to define a degenerated list forbidden but the others
> >are legal?
> 
> This really isn't the way standards work, right?  "gcc" can warn when
> I do something like "int foo(){ return 0; return 1;}" but it can't
> decide that it's invalid or refuse to generate a .o file for it.
> I can choose to tighten gcc's restrictions with -W flags, but when
> code compiles under gcc and doesn't under clang, when one or the
> other isn't implementing the C standard.

I don't get it. I do not think the C standard says the example above
is invalid C. It is perhaps pointless C or likely a coding error but
as long as the semantics are clear, things are well defined.

> Past that, allowing pointless constructs like this allows users
> to make mistakes that might not be warned by their tool chain,
> and the earlier an error is caught, the lower it's cost.
> 
> Worse, allowing pointless constructs like this means that the
> probability of some nitwit using it quickly approaches 1, at
> which point tool chains that barf on it will need to start
> supporting it.

You can achieve the same pointless construct in many other ways.
Trying to enumerate all of them is tricky and it is very easy to make
mistakes.

> I'm not asking us to make pointless constructs like "leaf foo {must foo==0;}"
> but empty keys it truly pointless.  Making it illegal is a benefit
> to the enitre YANG world and not doing so it a pointless expense.

I guess it is subjective where to draw the line. Disallowing empty in
a key but at the same time allowing the example Martin presented shows
that the line is really somewhat arbitrary.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 30 07:41:54 2015
Return-Path: <j.schoenwaelder@jacobs-university.de>
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 A42301A0636 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:41:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.86
X-Spam-Level: 
X-Spam-Status: No, score=-3.86 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, 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 j5Ie0ZPn5Ale for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 07:41:50 -0700 (PDT)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9D38E1A90F4 for <netmod@ietf.org>; Tue, 30 Jun 2015 07:40:04 -0700 (PDT)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id CD28B715; Tue, 30 Jun 2015 16:40:01 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id BVFioAuo0n2m; Tue, 30 Jun 2015 16:40:01 +0200 (CEST)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 30 Jun 2015 16:40:00 +0200 (CEST)
Received: from localhost (demetrius4.jacobs-university.de [212.201.44.49]) by hermes.jacobs-university.de (Postfix) with ESMTP id F37C82002B; Tue, 30 Jun 2015 16:40:01 +0200 (CEST)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius4.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id 4KVDXudVTt8w; Tue, 30 Jun 2015 16:40:21 +0200 (CEST)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 1344920013; Tue, 30 Jun 2015 16:40:00 +0200 (CEST)
Received: by elstar.local (Postfix, from userid 501) id F162534E662F; Tue, 30 Jun 2015 16:39:59 +0200 (CEST)
Date: Tue, 30 Jun 2015 16:39:59 +0200
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20150630143959.GB5803@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, NETMOD Working Group <netmod@ietf.org>
References: <D1A4CEB7.B22F7%kwatsen@juniper.net> <20150624145325.GB38016@elstar.local> <m2lhf27sko.fsf@birdie.labs.nic.cz> <20150630095600.GA4836@elstar.local> <m2mvzhcq2p.fsf@birdie.labs.nic.cz> <20150630132059.GC5406@elstar.local> <90672C21-8E4C-4B9B-81DD-BBCB5F529D20@nic.cz> <20150630133908.GC5604@elstar.local> <969A179E-2EB4-4E08-A55F-A4A8B0B0C0A1@nic.cz>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <969A179E-2EB4-4E08-A55F-A4A8B0B0C0A1@nic.cz>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/fJls791RE2Wu0NOovxekpKcA5Jg>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 14:41:53 -0000

On Tue, Jun 30, 2015 at 04:07:10PM +0200, Ladislav Lhotka wrote:
> 
> > On 30 Jun 2015, at 15:39, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> > 
> > On Tue, Jun 30, 2015 at 03:32:13PM +0200, Ladislav Lhotka wrote:
> >> 
> >>> On 30 Jun 2015, at 15:20, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> >>> 
> >>> On Tue, Jun 30, 2015 at 02:56:30PM +0200, Ladislav Lhotka wrote:
> >>>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
> >>>> 
> >>>>> On Mon, Jun 29, 2015 at 11:49:11AM +0200, Ladislav Lhotka wrote:
> >>>>>> Hi Juergen,
> >>>>>> 
> >>>>>> thank you for the review.
> >>>>>> 
> >>>>>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
> >>>>>> 
> >>>>>>> On Mon, Jun 15, 2015 at 10:49:28PM +0000, Kent Watsen wrote:
> >>>>>>>> 
> >>>>>>>> This is a notice to start a NETMOD WG last call for the document "JSON Encoding of Data Modeled with YANG":
> >>>>>>>> 
> >>>>>>>> https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04
> >>>>>>>> 
> >>>>>>>> Please indicate your support by Monday June 29, 2015 at 9PM EST.
> >>>>>>> 
> >>>>>>> Hi,
> >>>>>>> 
> >>>>>>> I have reviewed draft-ietf-netmod-yang-json-04.
> >>>>>>> 
> >>>>>>> - I am not sure I agree with the wording in section 3. Why is section
> >>>>>>> 8.3.3 only applicable to XML encoded data? Validation applies to
> >>>>>>> datastores. While constraints are defined using XML-based notations
> >>>>>> 
> >>>>>> You are right that this section shouldn't talk about XML-encoded data,
> >>>>>> i.e. serialized form. On the other hand, XPath 1.0 spec says: "XPath
> >>>>>> operates on the abstract, logical structure of an XML document, â€¦".
> >>>>>> 
> >>>>>> So I think a datastore needs to be represented, at least conceptually,
> >>>>>> as XML infoset.
> >>>>>> 
> >>>>>>> such as XPATH, how the validation is carried out is not defined in
> >>>>>>> the YANG specifications. I guess I actually disagree with the
> >>>>>> 
> >>>>>> I don't think this is true. YANG spec doesn't say how "must" and "when"
> >>>>>> statements are evaluated, and relies on XPath.
> >>>>> 
> >>>>> RFC 6020:
> >>>>> 
> >>>>> When a datastore is validated, all "must" constraints are
> >>>>> conceptually evaluated once for each data node in the data tree, and
> >>>>> for all leafs with default values in use (see Section 7.6.1).  If a
> >>>>> data node does not exist in the data tree, and it does not have a
> >>>>> default value, its "must" statements are not evaluated.
> >>>>> 
> >>>>> [...]
> >>>>> 
> >>>>> Also note that the XPath expression is conceptually evaluated.  This
> >>>>> means that an implementation does not have to use an XPath evaluator
> >>>>> on the device.  How the evaluation is done in practice is an
> >>>>> implementation decision.
> >>>> 
> >>>> Yes, but the result must be guaranteed to be the same as if an XPath 1.0
> >>>> processor is used, otherwise it makes really no sense.
> >>>> 
> >>>>> 
> >>>>>>> wording in section 3 of the JSON encoding I-D.
> >>>>>> 
> >>>>>> What specifically? Do you have any suggestions for changes?
> >>>>> 
> >>>>> The problem is that RFC 6020 talks about datastore validation, not
> >>>>> about validation of a specific serialization. Hence, it does not
> >>>>> matter whether the data was XML or JSON (or CBOR or whatnext) encoded
> >>>>> - once the data is in the datastore, datastore validation takes
> >>>>> place. One way to implement this is to serialize everything to XML and
> >>>>> then to use XML gear to do the validation. But this implementation
> >>>>> strategy is not required.
> >>>> 
> >>>> We have no explicit concept of a metamodel for datastores but IMO the
> >>>> fact that we evaluate XPath expressions on top of it implies that the
> >>>> datastore must be (congruent to) restricted XML infoset. Section 5 (Data
> >>>> Model) is a crucial part of XPath spec, and it is XML.
> >>> 
> >>> The YANG language does not require that XPath is used. It says that
> >> 
> >> YANG *does* use XPath 1.0. Whether it is evaluated conceptually or otherwise is irrelevant, the results must always be the same. And evaluation of XPath requires a specific context and data model as defined in its spec.
> >> 
> > 
> > The YANG language definition is rather clear that (i) datastore
> > content is validated and (ii) that XPath expressions are conceptually
> > evaluated. I think the JSON encoding should not say anything
> > different.
> 
> 
> RFC 6020(bis) says in sec. 6.4:
> 
>    The data model used in the XPath expressions is the same as that used in XPath 1.0 [
>    XPATH], â€¦
> 
> JSON's data model is different.
> 
> Therefore, I believe the yang-json document has to specify how (YANG-specific) JSON data map on the XPath 1.0 data model. The way how it is currently done is that JSON-encoded instances are (conceptually) mapped to XML-encoded instances, and it is assumed that the mapping of the latter to the XPath data model and XPath context is fully defined in YANG spec.
> 
> Maybe there is a better way how to achieve the same but I am not aware of it, and the current way is IMO better than hand-waving.
>

The data once decoded goes into a datastore. It is the datastore that
is validated. I quote the relevant text again:

   When a datastore is validated, all "must" constraints are
   conceptually evaluated once for each data node in the data tree, and
   for all leafs with default values in use (see Section 7.6.1).

   [...]

   Also note that the XPath expression is conceptually evaluated.  This
   means that an implementation does not have to use an XPath evaluator
   on the device.  How the evaluation is done in practice is an
   implementation decision.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>


From nobody Tue Jun 30 08:30:47 2015
Return-Path: <phil@juniper.net>
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 063801A902F for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 08:30:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Level: 
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 ixwx6bJdImAz for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 08:30:43 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0776.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::776]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4FD4A1A006F for <netmod@ietf.org>; Tue, 30 Jun 2015 08:30:38 -0700 (PDT)
Received: from BY2PR05MB712.namprd05.prod.outlook.com (10.141.222.155) by BY2PR05MB583.namprd05.prod.outlook.com (10.141.219.152) with Microsoft SMTP Server (TLS) id 15.1.201.16; Tue, 30 Jun 2015 15:30:21 +0000
Received: from BY2PR05CA025.namprd05.prod.outlook.com (10.141.250.15) by BY2PR05MB712.namprd05.prod.outlook.com (10.141.222.155) with Microsoft SMTP Server (TLS) id 15.1.201.16; Tue, 30 Jun 2015 15:30:09 +0000
Received: from BY2FFO11FD032.protection.gbl (2a01:111:f400:7c0c::140) by BY2PR05CA025.outlook.office365.com (2a01:111:e400:2c5f::15) with Microsoft SMTP Server (TLS) id 15.1.201.16 via Frontend Transport; Tue, 30 Jun 2015 15:30:09 +0000
Authentication-Results: spf=softfail (sender IP is 66.129.239.18) smtp.mailfrom=juniper.net; ietf.org; dkim=none (message not signed) header.d=none;
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.18 as permitted sender)
Received: from p-emfe01b-sac.jnpr.net (66.129.239.18) by BY2FFO11FD032.mail.protection.outlook.com (10.1.14.210) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Tue, 30 Jun 2015 15:30:08 +0000
Received: from magenta.juniper.net (172.17.27.123) by p-emfe01b-sac.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.123.3; Tue, 30 Jun 2015 08:27:37 -0700
Received: from idle.juniper.net (idleski.juniper.net [172.25.4.26])	by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id t5UFRZD50736;	Tue, 30 Jun 2015 08:27:36 -0700 (PDT)	(envelope-from phil@juniper.net)
Received: from idle.juniper.net (localhost [127.0.0.1])	by idle.juniper.net (8.14.4/8.14.3) with ESMTP id t5UFPqhi055445; Tue, 30 Jun 2015 11:25:52 -0400 (EDT)	(envelope-from phil@idle.juniper.net)
Message-ID: <201506301525.t5UFPqhi055445@idle.juniper.net>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
In-Reply-To: <20150630143705.GA5803@elstar.local>
Date: Tue, 30 Jun 2015 11:25:52 -0400
From: Phil Shafer <phil@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD032; 1:NKjbWa/HGuV/IPrRbwjBrwwrUDA1QxyJZOM8EL6bbeIZ3tVFyQAzdZbFy1U1+6MoHJ9ECILoyWdGUc70qrqYfCXJvvzCws9GKJqUcQfDe56Awnk255yQcGkyEA6lQXzG0rlSbuynwae2hMq0RU+DguX12rZdsYOXUb3OFqfPrmv0Y6ciPKrrtSlXuvNdBOsOgynDpDcF7sUc3K2dwxSDH3oxwYni2Szv993BnHb4iUe3fuI2t2jooOPs1sT07+UbqdZaBETa0R5d7EoRNU7HEqG1FyZz62/OzLRLRyFuEua4spaZuZEW0MNdbE1zXiF7
X-Forefront-Antispam-Report: CIP:66.129.239.18; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(51704005)(24454002)(199003)(189002)(164054003)(77156002)(6806004)(105596002)(76506005)(189998001)(110136002)(5001960100002)(106466001)(50986999)(62966003)(5003600100002)(46102003)(87936001)(53416004)(54356999)(92566002)(47776003)(77096005)(2950100001)(50466002)(48376002)(86362001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR05MB712; H:p-emfe01b-sac.jnpr.net; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB712; 2:mkpIVgUPhvS2ZvVYa5oIdBrPW+KICjX7p+WxBHQDB6aYyPH0LxsI/UwQQsBi9EX8; 3:JOtAp76FlPJHO+XEUzQfJdtJIkrkJ0Ke5qr9KNt4u2gBcF9AtRgVnutiVz5GfEtBP01BX6uZf2XnrH/w4dnFoYecdlQUM5SBPmGxSsMNKp3il8t0FSaSZqp4kftd2b5tagtykt5P7jRC1RkRI4Hf87C2L6Ly1a9+1/xfSy8hPu2Z4DC1bhH4Fi2oGWbyTraujcXRJgd/H+MVHJZ5g/zzz2v42nEIbWYgXBOvTkk9+GI=; 25:mSMmvB21mjOAdShl8WMKzdFZhFqQ0EGEzv1P3eyHI8AYevXESRCWQY1ZEfb3w7xtDBT/8dOnQPOND1KwK6K671210DgEzDtQnQshUmUOulDpUk9ZshQepq7dwt1y9m32aBPHZqLYnVnSE4HN+ap3EK9yjFRWqf1gyCWIgTAwiHhvDxTLNguj/0iyEGIidyLm9d30iSve+YY99kw0bDBXAODULIvkxCArQRsng7WURbCzCtJtXUjisN5rMDYr2Y4McLj6BAhNyZTklGoslTUfUA==
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BY2PR05MB712; UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BY2PR05MB583; 
X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB712; 20:p/GpI9ItduxeuqD6nS93+tbRV8Eds9RRWs3CZtPY2HGaK5LW92bGcIpFVZKDuaBZ9gm9EJSPCbpkBEF+NQoCYmESba7E6DuMi3GDif5moiPjuOFHKr5yxmAAfvIYOnl2A0eoIdXP10duB0dPdE18P3i+Y0hTLQQLjTvZMSgT81lojfzUTZ3epUI88lGniTaFIqkEUfqK8VtsTdeLRChffmsQ9QRle8tIwbd/eEGnPOI4gHIhMI0/BouXhA3EONd7+CZpRHX83mIE7TXpdJQ3Wyzn2CJMMXliPnt3ODLsFutySV1Kg9GdfW5HSDvtpdgIcbIHSsn3eawqDwwDMoB7oYIDZpPDP+5A6jgDeRXSqDJG2MvmXd6D1l4Mg83L371DHwoDSsmuhtWBGIG8I2XxjxnyucJXa2SGQsgQBnpaOD++WCBL2rDsmjPCbS+Y3Mr+Q4vz6UofypwAc9UUHDA8zQJrLQ+sKon+KudBdyp5j/uVfrKyy8T+dsFKkP4nDp46; 4:Z5dMiP55sy6i2vg27lEQX7+rpVkdRrzMjpBltV6pRrDKqDxevrt7qyVKxW6cELWbIz4WlhWl3+3R4UP7TrOKlUvsaqdiMG8avr6IjTUQImGoJb9SPB8sAA4W6tBQilASEoL61rkUrW8AknsvZizKj29B8kFk4UHKropttYH9JRqzxZtsC/7USBbFHcBdUonkD92bDLahrpwwAN7e6wePrkA2NUZqgA8Nmt4Hsvh3QOsmbloj6qai5rubhFq9q/L/AHuK9nODEgxF7eA2pSKRfCpHz7+c8hWRSuUR7chQaww=
X-Microsoft-Antispam-PRVS: <BY2PR05MB712B029714274B0167FABDBC9A90@BY2PR05MB712.namprd05.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BY2PR05MB712; BCL:0; PCL:0; RULEID:; SRVR:BY2PR05MB712; 
X-Forefront-PRVS: 06237E4555
X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB712; 23:WxcW1LXsSnC7SjtuCD0CQRo3h4SMxVbkpZB3d1dt2gp6zWM16Hl8iup61Ne3RtdHSqH3bAa/Rqnz7rdZmdDBRhR+b6LlKwkL68OnNNwa9kNfkEHDR2iVsvtwGMPK9VrsHIwd3MdZdPMG+Qo8OrpQbckR5yd0MyfdfTow/ZB+De5BlT8AjL1GrgTTrMXSlp7Tf6Wicg86tVSMkZ9UdxDnqfYAAEFV/wfC1J3cgO362LHQD587KHAN7FVgJ0EmaYJzr7cTeDhWlMt0/tNfXDRgrYi9T7+8LfUBI9hQ5oGfricAnfCfPbrCphkzGXVBQjgshk7TTNGrl/kosakGj55uHTWwjoJCbA60dM4GasNhy2s8MMP5TcVVWnegb+y2ZY845oIKn3RxtDLXEUbPT3FsZmW+e+qnqjEC/1vIxXLtRuQRy/4fiARMsTbIcm0f6DJtCKhUNxc05HFk5Cn/aJa3rqaEw8n12Xnngy88WGSPKZXLVvrnQ7X21bONPNaR08NkwBYalK0wAJm+yzRHo5HvhBy0Sw8Hl+0d4A+/1Pe9gN4P1MdeSP09EhP0QZI12t7fsrQ6aavNlc7M8b4pdmNC3OBV/T23y0eLJMociGYlQFB5Aku9a06Vx8gjnPVpdhXfETrlFLsIh/PQSgtZN501eEbSgT5h7zETv0LYd+dTV/Koe8wrwCs0N9k4SccsD4yt6wEOPhQ4xof2o1ZqN1YQpAVbppwRYPeIcC8Hi+jPtTZSbhzS8x/0xPr0dyRwKCNAvJACF/MDWWs2rKnsgoAYMAksg4fKGCxe7s2Mdgjz0Pg=; 5:z4opna0WAzWCSbD/GmIysrpY3vW0Er3cUA8IuHWweewgw1Uxmb6uHVPp1jsnIzlxNHlZRG8eUfZcGWO6XaHHKnrJlPxhvupVBtlcW7h4tW3A76dVaYBghzoBMC5ZliqETJHWNf6m29/kit/ZCADR/Q==
X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB712; 24:FWeUdcOOhb6leV1ieP5LaUM3GR3Br9wtG0qEP+oYeyTjGpLHVkoGuYv3wTZeTfTAsQ+tD8TYuWp/+iqG26JaIekJAYqZTuJ5I/Cs6jOGkeU=; 20:N2bIpNft3M6djwTf8d5uwf64psJ6TC821Fq63mpZvc2tXvyWx2jLkyJfMPCcd+tiNJ0R2MnpyiLgmVl3XkoYMQ==
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2015 15:30:08.8718 (UTC)
X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4; Ip=[66.129.239.18];  Helo=[p-emfe01b-sac.jnpr.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR05MB712
X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB583; 2:bVXcJcQ5Vd6l+7sceTJ8/wYpx8REbXTknPdcNAp+5XiyDeifVuEH+I6OYZkjCipZ; 3:Cz0R3Ec01Qi/g1Q+pfLE8kHUYbnG7dO5YjWsU0x/IINw6x/iRCpV2Nr+5D5L1iG+ZDUZ5XS49riclaVoitinKZW9U8uHGGQNea6yYHyp4fYnBXJuU5NvEMKEob4iWY8riN1gzjU/ffIHlE1BdeymYvKPf6H0/4JOnLFmqekznT1YU3+vChlwja1QFBPZnCbbMuYx7IMTkUcxkaiDGYQ6kWwZCpoVTElwFihI7/tdb1g=; 25:0BHtURAREQKM1d7Llw9UTube4OuAjT9scPiMwV33HmNkfTlsZ6cVOccrRcw9RVsdMNmwcmEcQzuqKTs1IE7ywO2nzJTv0w4PfGI9q1hyXB4WmENWGAUVD7pGiJQ2M8v92OnCoCzB67i+SZGLuPoRXrZ24QU0yXvGxfh3YqecHqIH7ktfumd8Bxu2o+8+6mFtk/gbD4Mr3pwv1F7ugHx50ta59X6+FKD7FfdcAa5LkM3nz119MpPwZ4MuhA992dsf9IKFFixBuTup6a0FwK8J0Q==; 23:WRAz715nmsxspQg5OQhUEwVdt+o7yucBy2kLxLSQ0buAjtpTQp2eRNs73Ptxk0aV/eyC59WM/wSggvePR5FDtRC6TNc9+vzCRqZLBaWQnAf4cTMtUEIiFdv8FV62Cc9H+ZL5ppzw2Az95pmAlxtRhAcP+wRbIvWTlDe25hX11LkeVj92iw9pEOmS9iDQJvcCiqXN3psWkxaZqvTG2LaY6Oj51j/7VHJFWZpfcii3D+iW+nNAp+tInyHrqhb0HtWv
X-OriginatorOrg: juniper.net
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/jmkASCJZIVe7bnGh3hG7bL41p8o>
Cc: netmod@ietf.org
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 15:30:45 -0000

Juergen Schoenwaelder writes:
>On Tue, Jun 30, 2015 at 10:00:11AM -0400, Phil Shafer wrote:
>> Juergen Schoenwaelder writes:
>> >I am not afraid of nonsense in data models since nonsense will not be
>> >implemented. I would leave it to compiler writers to warn about
>> >nonsense constructions a compiler can detect without requiring a
>> >statement in the language definition trying to prohibit nonsense.
>> >There are many ways to define degenerated lists in YANG; ruling out
>> >one of them does not help that much and it creates inconsistencies -
>> >why is one way to define a degenerated list forbidden but the others
>> >are legal?
>> 
>> This really isn't the way standards work, right?  "gcc" can warn when
>> I do something like "int foo(){ return 0; return 1;}" but it can't
>> decide that it's invalid or refuse to generate a .o file for it.
>> I can choose to tighten gcc's restrictions with -W flags, but when
>> code compiles under gcc and doesn't under clang, when one or the
>> other isn't implementing the C standard.
>
>I don't get it. I do not think the C standard says the example above
>is invalid C. It is perhaps pointless C or likely a coding error but
>as long as the semantics are clear, things are well defined.

Your comment was "nonsense will not be implemented"; my point was
that tool chains will still need to implement it regardless of
whether we think it will see use.  If it's legal nonsense, a tool
chain that doesn't support it is broken.

Thanks,
 Phil


From nobody Tue Jun 30 08:58:51 2015
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 D54391ACD36 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 08:58:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] 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 hkpbB1FwnsKT for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 08:58:48 -0700 (PDT)
Received: from mail-la0-f45.google.com (mail-la0-f45.google.com [209.85.215.45]) (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 B41191ACD3E for <netmod@ietf.org>; Tue, 30 Jun 2015 08:58:47 -0700 (PDT)
Received: by laar3 with SMTP id r3so19576790laa.0 for <netmod@ietf.org>; Tue, 30 Jun 2015 08:58:46 -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=t3FFRW1EVfDuo5TV7vNSayasEyfrSGJEN7KWB1L+2NQ=; b=ZWGAVeOEC09TAE1HMz56+9GxdLkyPSbA3sxF2000admidcnCgWPJwkT4VQEcGRinco HijulmO2FiV35M3aqtkbKpm/lDFgqA3mWVZZZ1aVC29xnXCYxrYeXsxfZltfYsYvm+Gv 9p/nBk3Qpelar3TGAryZD4+7j6mPcWsRgP/dPT9UeHiIXXtsBnT+hQi8fBnlB86q5xWz 10TAF1XdkJXS440sGS3+1gbFgdN6BLj64ZPklQIw2XKtoL0x1bOtP5nBWKmHKMtjyZ0L NUQGTIAx1Iyb2Q81gJ33W3WS4DUcdg07asExA6a9q2aPOEqpOJ4cLL1B5Ov/gF4Wjtnv hMhA==
X-Gm-Message-State: ALoCoQncVLBWn3U1r+rY6JU0hEWnQwJzbA5+BGM+Qsmsiy8kX8O54qwYqvEuwaDzTTPiGanfhXmL
MIME-Version: 1.0
X-Received: by 10.112.164.66 with SMTP id yo2mr2599303lbb.33.1435679926026; Tue, 30 Jun 2015 08:58:46 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 30 Jun 2015 08:58:45 -0700 (PDT)
In-Reply-To: <201506301525.t5UFPqhi055445@idle.juniper.net>
References: <20150630143705.GA5803@elstar.local> <201506301525.t5UFPqhi055445@idle.juniper.net>
Date: Tue, 30 Jun 2015 08:58:45 -0700
Message-ID: <CABCOCHTqNMzx8hSwaFredWqV7nAsiGgKub4JZ3vQpJ_w9MRT3w@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Phil Shafer <phil@juniper.net>
Content-Type: multipart/alternative; boundary=001a11c32d5c00a2450519be4888
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/HgrKU3_sDzpMW7wc6pWi6vgGQPA>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] Y35: allow empty in union
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 15:58:50 -0000

--001a11c32d5c00a2450519be4888
Content-Type: text/plain; charset=UTF-8

Hi,

The server already has to support a list if the key
is an enum with 1 value or a string with "length 0".

The only advantage is that it let's a union with an empty in it
be used as a key.


Andy



On Tue, Jun 30, 2015 at 8:25 AM, Phil Shafer <phil@juniper.net> wrote:

> Juergen Schoenwaelder writes:
> >On Tue, Jun 30, 2015 at 10:00:11AM -0400, Phil Shafer wrote:
> >> Juergen Schoenwaelder writes:
> >> >I am not afraid of nonsense in data models since nonsense will not be
> >> >implemented. I would leave it to compiler writers to warn about
> >> >nonsense constructions a compiler can detect without requiring a
> >> >statement in the language definition trying to prohibit nonsense.
> >> >There are many ways to define degenerated lists in YANG; ruling out
> >> >one of them does not help that much and it creates inconsistencies -
> >> >why is one way to define a degenerated list forbidden but the others
> >> >are legal?
> >>
> >> This really isn't the way standards work, right?  "gcc" can warn when
> >> I do something like "int foo(){ return 0; return 1;}" but it can't
> >> decide that it's invalid or refuse to generate a .o file for it.
> >> I can choose to tighten gcc's restrictions with -W flags, but when
> >> code compiles under gcc and doesn't under clang, when one or the
> >> other isn't implementing the C standard.
> >
> >I don't get it. I do not think the C standard says the example above
> >is invalid C. It is perhaps pointless C or likely a coding error but
> >as long as the semantics are clear, things are well defined.
>
> Your comment was "nonsense will not be implemented"; my point was
> that tool chains will still need to implement it regardless of
> whether we think it will see use.  If it's legal nonsense, a tool
> chain that doesn't support it is broken.
>
> Thanks,
>  Phil
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--001a11c32d5c00a2450519be4888
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<div><br></div><div>The server already has to support a=
 list if the key</div><div>is an enum with 1 value or a string with &quot;l=
ength 0&quot;.</div><div><br></div><div>The only advantage is that it let&#=
39;s a union with an empty in it</div><div>be used as a key.</div><div><br>=
</div><div><br></div><div>Andy</div><div><br></div><div><br></div></div><di=
v class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Tue, Jun 30, 2015=
 at 8:25 AM, Phil Shafer <span dir=3D"ltr">&lt;<a href=3D"mailto:phil@junip=
er.net" target=3D"_blank">phil@juniper.net</a>&gt;</span> wrote:<br><blockq=
uote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc =
solid;padding-left:1ex">Juergen Schoenwaelder writes:<br>
&gt;On Tue, Jun 30, 2015 at 10:00:11AM -0400, Phil Shafer wrote:<br>
&gt;&gt; Juergen Schoenwaelder writes:<br>
&gt;&gt; &gt;I am not afraid of nonsense in data models since nonsense will=
 not be<br>
&gt;&gt; &gt;implemented. I would leave it to compiler writers to warn abou=
t<br>
&gt;&gt; &gt;nonsense constructions a compiler can detect without requiring=
 a<br>
&gt;&gt; &gt;statement in the language definition trying to prohibit nonsen=
se.<br>
&gt;&gt; &gt;There are many ways to define degenerated lists in YANG; rulin=
g out<br>
&gt;&gt; &gt;one of them does not help that much and it creates inconsisten=
cies -<br>
&gt;&gt; &gt;why is one way to define a degenerated list forbidden but the =
others<br>
&gt;&gt; &gt;are legal?<br>
&gt;&gt;<br>
&gt;&gt; This really isn&#39;t the way standards work, right?=C2=A0 &quot;g=
cc&quot; can warn when<br>
&gt;&gt; I do something like &quot;int foo(){ return 0; return 1;}&quot; bu=
t it can&#39;t<br>
&gt;&gt; decide that it&#39;s invalid or refuse to generate a .o file for i=
t.<br>
&gt;&gt; I can choose to tighten gcc&#39;s restrictions with -W flags, but =
when<br>
&gt;&gt; code compiles under gcc and doesn&#39;t under clang, when one or t=
he<br>
&gt;&gt; other isn&#39;t implementing the C standard.<br>
&gt;<br>
&gt;I don&#39;t get it. I do not think the C standard says the example abov=
e<br>
&gt;is invalid C. It is perhaps pointless C or likely a coding error but<br=
>
&gt;as long as the semantics are clear, things are well defined.<br>
<br>
Your comment was &quot;nonsense will not be implemented&quot;; my point was=
<br>
that tool chains will still need to implement it regardless of<br>
whether we think it will see use.=C2=A0 If it&#39;s legal nonsense, a tool<=
br>
chain that doesn&#39;t support it is broken.<br>
<br>
Thanks,<br>
=C2=A0Phil<br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</blockquote></div><br></div>

--001a11c32d5c00a2450519be4888--


From nobody Tue Jun 30 11:10:54 2015
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 A11A41B2A9F for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 11:10:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No, score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=unavailable
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 hRltoz-IEEWX for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 11:10:40 -0700 (PDT)
Received: from mail-la0-f47.google.com (mail-la0-f47.google.com [209.85.215.47]) (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 531E91B2AA5 for <netmod@ietf.org>; Tue, 30 Jun 2015 11:10:37 -0700 (PDT)
Received: by laar3 with SMTP id r3so24069842laa.0 for <netmod@ietf.org>; Tue, 30 Jun 2015 11:10:36 -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:content-type; bh=vC4YAiGNti6zPOmFRzcEdvfwjo+G7mo1VbyCSmjMwPI=; b=KDQMHdHoQf38ymol/XgOxncfK5Dh7/9D7VBR763W+ddr3xYWtncyFmnd/h6L49poP8 AszZQOLXsDY4Ly8Bhj0131leev4PrstvCh3jpwuTFwRb9fu+TNOgd8TXOkCsWVFjorZp 7xrvPtspN9ciEarwquH6uXGbM88VlrPnbRCLlGMbmKtuE9dow5afZlG5l9/HzI1yyo15 Ymc21Guen2LMmvokNmhtOK00Iz8xJaWRAuG/s1v3XP99zhYnIScCTimS4iisVXe5SsY2 jMyII9RddF0Ol1ICUF5Ez1gyGAVyYdtr6deB9oEzM3EMlAGiaYAv4RaxC/dTiUtBvK0a TBbA==
X-Gm-Message-State: ALoCoQmgYCQ2lbers7Tmh7OmnUuhz1WcqCx5gsjOxlW9hdP9kwazK+p3SG3UVswYXCGSzn4ihQMH
MIME-Version: 1.0
X-Received: by 10.112.147.233 with SMTP id tn9mr20813341lbb.119.1435687835799;  Tue, 30 Jun 2015 11:10:35 -0700 (PDT)
Received: by 10.112.200.102 with HTTP; Tue, 30 Jun 2015 11:10:35 -0700 (PDT)
In-Reply-To: <20150630124503.GA5406@elstar.local>
References: <20150627.101927.980507351929498326.mbj@tail-f.com> <CABCOCHR2Z8z+x-EcRDfqQj+tMmhh8j63bkAD9HQfNvdVJM9=6Q@mail.gmail.com> <20150628.101115.524154870753102418.mbj@tail-f.com> <20150630.104449.916352783153186338.mbj@tail-f.com> <20150630124503.GA5406@elstar.local>
Date: Tue, 30 Jun 2015 11:10:35 -0700
Message-ID: <CABCOCHQcZbhVGyJ35At=kzbAZQ2yiDK-mJ=9SoQsr6YPxBubcw@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Martin Bjorklund <mbj@tail-f.com>,  Netconf <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Content-Type: multipart/alternative; boundary=047d7b3a89787634220519c01f3e
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/3RAIYjM6SfpX-8Vw02wOLUxqNV8>
Subject: Re: [netmod] Y45-04 and ietf-yang-library
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 18:10:42 -0000

--047d7b3a89787634220519c01f3e
Content-Type: text/plain; charset=UTF-8

On Tue, Jun 30, 2015 at 5:45 AM, Juergen Schoenwaelder <
j.schoenwaelder@jacobs-university.de> wrote:

> Writing as technical contributor...
>
> On Tue, Jun 30, 2015 at 10:44:49AM +0200, Martin Bjorklund wrote:
> > Hi,
> >
> > Here's a short summary, and then some questions for the WG.
> >
> > The ietf-yang-library module is designed to serve two purposes:
> >
> >   1.  A protocol-independent advertisement mechanism for YANG 1.1
> >       modules.
> >
> >   2.  A list of the YANG modules stored in a server.
> >
> >
> > Q1.  Do you agree with these goals?
>
> I primarily care about goal 1.
>
> > Q2.  Should this module be designed to work with both YANG 1.0 and
> >      YANG 1.1 servers - i.e., should it have yang-version 1.1 or not?
> >
> >      If it should not be defined using YANG 1.1, why is this module
> >      special?
>
> I assume this module will sooner or later be YANG 1.1 anyway.
>
> > Q3.  Should the /modules/module list be designed to store both YANG
> >      1.0 and YANG 1.1 modules?
>
> Yes. Even if YANG 1.1 hits the street tomorrow, we will not have
> revised all published YANG data models that were written using YANG
> 1.0. So a server needs to be able to announce both YANG 1.0 and YANG
> 1.1 modules.
>


Yes -- We also agreed that we would not be republishing modules
just to change the yang-version to 1.1.

There are lots of YANG modules in progress at this time.
Perhaps 3 out of 100 are relying on YANG 1.1 statements.
It seems rather disruptive to declare all module must be YANG 1.1
since it has not even made it through WGLC yat, let alone
be published as an RFC, let alone be implemented
in real tool-chains.

I suspect if people find out the only think YANG 1.1 in their module
(preventing their existing tools from working) is a yang-version-stmt,
they might not be too happy.


Andy


>
> > Q4.  Consider these modules, which both import foo without revision:
> >
> >        module a { ... import foo; ... }
> >        module b { ... import foo; ... }
> >
> >      Do we require a server that implements both a and b to use the
> >      same revision of foo?
> >
> >      If the answer is yes, we need to indicate the default revision
> >      that the server uses in the model:
> >
> >        container modules {
> >          ...
> >          list module {
> >            ...
> >            leaf default-revision {
> >              type boolean;
> >              default false;
> >              description
> >                "Indicates that this revision is used by the server if
> >                 this module is imported without a specific revision
> >                 date.";
> >            }
> >          }
> >        }
> >
> >      If the answer is no, note that this puts an implementation burden
> >      on the client.  A client cannot simply download all listed
> >      modules, and load/compile/process them as one set.
> >
> >      If the anwser is no, I propose that we extend the module as such:
> >
> >        container modules {
> >          ...
> >          list module {
> >            ...
> >            list imported-without-revision {
> >              key "name revision";
> >              ...
> >            }
> >          }
> >        }
> >
> >      A server could then list:
> >
> >       <module>
> >         <name>a</name>
> >         <revision>2015-01-01</revision>
> >         <imported-without-revision>
> >           <name>foo</name>
> >           <revision>2002-02-02</revision>
> >         </imported-without-revision>
> >       </module>
> >       <module>
> >         <name>b</name>
> >         <revision>2015-01-01</revision>
> >         <imported-without-revision>
> >           <name>foo</name>
> >           <revision>2001-01-01</revision>
> >         </imported-without-revision>
> >       </module>
>
> I believe truth is advertisement is a good thing. In the SNMP world,
> not all pieces of the instrumentation were moving at the same pace and
> I would be somewhat surprised if this would be the case for all
> implementations in the NETCONF world. Hence, I rather accept that an
> import of foo without revision may resolve to different versions of
> foo for different imports.
>
> /js
>
> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>

--047d7b3a89787634220519c01f3e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Tue, Jun 30, 2015 at 5:45 AM, Juergen Schoenwaelder <span dir=3D"ltr=
">&lt;<a href=3D"mailto:j.schoenwaelder@jacobs-university.de" target=3D"_bl=
ank">j.schoenwaelder@jacobs-university.de</a>&gt;</span> wrote:<br><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc s=
olid;padding-left:1ex">Writing as technical contributor...<br>
<br>
On Tue, Jun 30, 2015 at 10:44:49AM +0200, Martin Bjorklund wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; Here&#39;s a short summary, and then some questions for the WG.<br>
&gt;<br>
&gt; The ietf-yang-library module is designed to serve two purposes:<br>
&gt;<br>
&gt;=C2=A0 =C2=A01.=C2=A0 A protocol-independent advertisement mechanism fo=
r YANG 1.1<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0modules.<br>
&gt;<br>
&gt;=C2=A0 =C2=A02.=C2=A0 A list of the YANG modules stored in a server.<br=
>
&gt;<br>
&gt;<br>
&gt; Q1.=C2=A0 Do you agree with these goals?<br>
<br>
I primarily care about goal 1.<br>
<br>
&gt; Q2.=C2=A0 Should this module be designed to work with both YANG 1.0 an=
d<br>
&gt;=C2=A0 =C2=A0 =C2=A0 YANG 1.1 servers - i.e., should it have yang-versi=
on 1.1 or not?<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 If it should not be defined using YANG 1.1, why is=
 this module<br>
&gt;=C2=A0 =C2=A0 =C2=A0 special?<br>
<br>
I assume this module will sooner or later be YANG 1.1 anyway.<br>
<br>
&gt; Q3.=C2=A0 Should the /modules/module list be designed to store both YA=
NG<br>
&gt;=C2=A0 =C2=A0 =C2=A0 1.0 and YANG 1.1 modules?<br>
<br>
Yes. Even if YANG 1.1 hits the street tomorrow, we will not have<br>
revised all published YANG data models that were written using YANG<br>
1.0. So a server needs to be able to announce both YANG 1.0 and YANG<br>
1.1 modules.<br></blockquote><div><br></div><div><br></div><div>Yes -- We a=
lso agreed that we would not be republishing modules</div><div>just to chan=
ge the yang-version to 1.1.</div><div><br></div><div>There are lots of YANG=
 modules in progress at this time.</div><div>Perhaps 3 out of 100 are relyi=
ng on YANG 1.1 statements.</div><div>It seems rather disruptive to declare =
all module must be YANG 1.1</div><div>since it has not even made it through=
 WGLC yat, let alone</div><div>be published as an RFC, let alone be impleme=
nted</div><div>in real tool-chains.</div><div><br></div><div>I suspect if p=
eople find out the only think YANG 1.1 in their module</div><div>(preventin=
g their existing tools from working) is a yang-version-stmt,</div><div>they=
 might not be too happy.</div><div><br></div><div><br></div><div>Andy</div>=
<div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
&gt; Q4.=C2=A0 Consider these modules, which both import foo without revisi=
on:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 module a { ... import foo; ... }<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 module b { ... import foo; ... }<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 Do we require a server that implements both a and =
b to use the<br>
&gt;=C2=A0 =C2=A0 =C2=A0 same revision of foo?<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 If the answer is yes, we need to indicate the defa=
ult revision<br>
&gt;=C2=A0 =C2=A0 =C2=A0 that the server uses in the model:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 container modules {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 list module {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 leaf default-revision {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 type boolean;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 default false;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 description<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &quot;Indicates=
 that this revision is used by the server if<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0this modu=
le is imported without a specific revision<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0date.&quo=
t;;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 If the answer is no, note that this puts an implem=
entation burden<br>
&gt;=C2=A0 =C2=A0 =C2=A0 on the client.=C2=A0 A client cannot simply downlo=
ad all listed<br>
&gt;=C2=A0 =C2=A0 =C2=A0 modules, and load/compile/process them as one set.=
<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 If the anwser is no, I propose that we extend the =
module as such:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 container modules {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 list module {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 list imported-without-revisio=
n {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 key &quot;name revisio=
n&quot;;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ...<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 A server could then list:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;module&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;name&gt;a&lt;/name&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;revision&gt;2015-01-01&lt;/revisi=
on&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;imported-without-revision&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;name&gt;foo&lt;/name&gt;<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;revision&gt;2002-02-02&lt;=
/revision&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;/imported-without-revision&gt;<br=
>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;/module&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;module&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;name&gt;b&lt;/name&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;revision&gt;2015-01-01&lt;/revisi=
on&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;imported-without-revision&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;name&gt;foo&lt;/name&gt;<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;revision&gt;2001-01-01&lt;=
/revision&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;/imported-without-revision&gt;<br=
>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;/module&gt;<br>
<br>
I believe truth is advertisement is a good thing. In the SNMP world,<br>
not all pieces of the instrumentation were moving at the same pace and<br>
I would be somewhat surprised if this would be the case for all<br>
implementations in the NETCONF world. Hence, I rather accept that an<br>
import of foo without revision may resolve to different versions of<br>
foo for different imports.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
/js<br>
<br>
--<br>
Juergen Schoenwaelder=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Jacobs Univer=
sity Bremen gGmbH<br>
Phone: +49 421 200 3587=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Campus Ring 1 | 28=
759 Bremen | Germany<br>
Fax:=C2=A0 =C2=A0+49 421 200 3103=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;<a h=
ref=3D"http://www.jacobs-university.de/" rel=3D"noreferrer" target=3D"_blan=
k">http://www.jacobs-university.de/</a>&gt;<br>
<br>
_______________________________________________<br>
netmod mailing list<br>
<a href=3D"mailto:netmod@ietf.org">netmod@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/netmod" rel=3D"noreferrer"=
 target=3D"_blank">https://www.ietf.org/mailman/listinfo/netmod</a><br>
</font></span></blockquote></div><br></div></div>

--047d7b3a89787634220519c01f3e--


From nobody Tue Jun 30 13:46:48 2015
Return-Path: <asechoud@cisco.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 42B981B2F04 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 13:46:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level: 
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 sH4U7wo6u7wx for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 13:46:45 -0700 (PDT)
Received: from alln-iport-5.cisco.com (alln-iport-5.cisco.com [173.37.142.92]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 89CBB1B2EFD for <netmod@ietf.org>; Tue, 30 Jun 2015 13:46:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=1524; q=dns/txt; s=iport; t=1435697205; x=1436906805; h=from:to:subject:date:message-id:in-reply-to:content-id: content-transfer-encoding:mime-version; bh=h4sd5C7pYxtjNNtwl2Ecea2FqkGYzHz9N0mTLBktSJI=; b=m91JeD1GCQccpOLrxUShtycau9Y9mc/cXoecfEXWNqn9IpjlsDxLY+RJ a1m0nTlvM4/nqTYgV7ACGExDwJkkOA8205ZVqLD2gXmeW0ZTUTNe37jXQ mjNSGhhWW9bJttMOrf9MYo6ZTEEQGgIKiAE3Y6iPSdUqTRaihzlJTqiQn w=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CnAwAi/5JV/4QNJK1bgxFUXwa9PgmBYQqFLkoCgVU4FAEBAQEBAQGBCoQjAQEEAQEBax0BCG0LJQIEARKILw3JSQEBAQEBAQQBAQEBAQEBAQEVBItKhFM6hCsFjEuEXoJeAYtWgTqPAIQmg10mg3pvgUaBAgEBAQ
X-IronPort-AV: E=Sophos;i="5.15,380,1432598400"; d="scan'208";a="164372380"
Received: from alln-core-10.cisco.com ([173.36.13.132]) by alln-iport-5.cisco.com with ESMTP; 30 Jun 2015 20:46:45 +0000
Received: from xhc-rcd-x12.cisco.com (xhc-rcd-x12.cisco.com [173.37.183.86]) by alln-core-10.cisco.com (8.14.5/8.14.5) with ESMTP id t5UKki9i021733 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Tue, 30 Jun 2015 20:46:44 GMT
Received: from xmb-rcd-x07.cisco.com ([169.254.7.32]) by xhc-rcd-x12.cisco.com ([173.37.183.86]) with mapi id 14.03.0195.001; Tue, 30 Jun 2015 15:46:44 -0500
From: "Aseem Choudhary (asechoud)" <asechoud@cisco.com>
To: FERDINAND Pienaar <Pienaar.Ferdinand@alcatel-sbell.com.cn>, "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [netmod] three color meters in diffserv model
Thread-Index: AQHQs3Xf5mkNP76zHECMzce/OmM2Bg==
Date: Tue, 30 Jun 2015 20:46:44 +0000
Message-ID: <D1B841E8.D9A9E%asechoud@cisco.com>
In-Reply-To: <7579CCA174A41243ACCA0BD307F639F147A4D7C4@cnshjmbx04>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.2.3.120616
x-originating-ip: [10.154.208.156]
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <5EB49031730C0549B69760C70E7748CC@emea.cisco.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/eniI68F9y0D2pXGARot3Hexna8A>
Subject: Re: [netmod] three color meters in diffserv model
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 20:46:47 -0000

Hello Ferdi,

Thanks for your question!

Single Rate Three Color Marking can be supported by configuring two
meters, one with rate and burst, second with just burst.

=B3Coupling flag=B2 functionality, which is more effective in color aware
mode, is not defined by any of diffserv RFC=B9s, and hence not included in
the current model.

This functionality can be added as separate augmentation =B3mef=B2 module t=
o
base diffserv module.

Regards,
Aseem

On 6/29/15, 9:30 PM, "FERDINAND Pienaar"
<Pienaar.Ferdinand@alcatel-sbell.com.cn> wrote:

>Hello
>
>I think I see how container meter-cfg is intended to allow configuration
>of RFC 2697 and 2698 style meters (by linking two meters in the
>meter-list via the pointer next-meter-id). But it seems to me that a way
>to indicate overflow from one bucket to another during token update is
>needed. In RFC 2697, bucket E is incremented only if bucket C is full,
>i.e. C overflows into E. In RFC 2698, buckets C and P are updated
>independently.
>
>The Metro Ethernet Forum's Bandwidth Profile Algorithm explicitly
>supports configuring this type of coupling, via parameter CF, "coupling
>flag".
>
>It's not clear to me how RFC 2697 can be supported by concatenating the
>meters in the YANG model, unless there is a way to indicate overflow
>between them.
>
>Ferdi Pienaar
>Alcatel Shanghai-Bell
>
>_______________________________________________
>netmod mailing list
>netmod@ietf.org
>https://www.ietf.org/mailman/listinfo/netmod


From nobody Tue Jun 30 13:51:27 2015
Return-Path: <kwatsen@juniper.net>
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 AC89F1B2EDA for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 13:51:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.302
X-Spam-Level: 
X-Spam-Status: No, score=-1.302 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_210=0.6, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, 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 y2h9bMTeIR2W for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 13:51:24 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0136.outbound.protection.outlook.com [65.55.169.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0C09E1B322C for <netmod@ietf.org>; Tue, 30 Jun 2015 13:51:23 -0700 (PDT)
Received: from BN1PR05MB454.namprd05.prod.outlook.com (10.141.59.17) by BN1PR05MB219.namprd05.prod.outlook.com (10.255.206.16) with Microsoft SMTP Server (TLS) id 15.1.195.15; Tue, 30 Jun 2015 20:51:22 +0000
Received: from BN1PR05MB456.namprd05.prod.outlook.com (10.141.59.26) by BN1PR05MB454.namprd05.prod.outlook.com (10.141.59.17) with Microsoft SMTP Server (TLS) id 15.1.195.15; Tue, 30 Jun 2015 20:51:21 +0000
Received: from BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.85]) by BN1PR05MB456.namprd05.prod.outlook.com ([169.254.3.85]) with mapi id 15.01.0195.005; Tue, 30 Jun 2015 20:51:21 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
Thread-Index: AQHQs3aEh3sCPrCqSkegq1SWU9kekQ==
Date: Tue, 30 Jun 2015 20:51:21 +0000
Message-ID: <D1B84C1C.B56E9%kwatsen@juniper.net>
References: <D1B6BB50.B48A3%kwatsen@juniper.net>
In-Reply-To: <D1B6BB50.B48A3%kwatsen@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.10]
x-microsoft-exchange-diagnostics: 1; BN1PR05MB454; 5:e7UEbcL3h7zTz45noNBlbtS+lUeMrN/myrGWkpwjxMEEudcRDMk2hoUOpP/IhtjAM+3035OGhyKSCHUF3dN0Ik0UG/pq/bN3oFGs245n7z1pWAj1o+bnvSqx9zI6nVtK+PXGQnRNutdw2IWFdheV8g==; 24:SiIzHomTEkC+4H24YHSM1HK3wgMab8vC7HVfKOVkLHTpFqDypKkBo3P7Js191eBQVIjLieYu48na7SA3d30/5xOptlykpoHp/gJpbIUcpBg=; 20:C28GJzfe3acedA7QaLt3i0osiXVdQm18PgcKzgPGzBYlAXFMzPlGgUo4dF6JEvMJ0Xe35mA6x6kkDykmYkZx3A==
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB454; UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB219; 
x-microsoft-antispam-prvs: <BN1PR05MB4548E1F17DC8E47B402AC97A5A90@BN1PR05MB454.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BN1PR05MB454; BCL:0; PCL:0; RULEID:; SRVR:BN1PR05MB454; 
x-forefront-prvs: 06237E4555
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(5423002)(164054003)(46102003)(2900100001)(50986999)(2351001)(76176999)(106116001)(2950100001)(87936001)(2656002)(92566002)(54356999)(19580395003)(230783001)(99286002)(102836002)(15975445007)(83506001)(15395725005)(86362001)(77156002)(450100001)(189998001)(107886002)(5890100001)(2501003)(62966003)(5002640100001)(4001350100001)(110136002)(5001960100002)(66066001)(36756003)(122556002); DIR:OUT; SFP:1102; SCL:1; SRVR:BN1PR05MB454; H:BN1PR05MB456.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: text/plain; charset="us-ascii"
Content-ID: <0549387DBED01449A60A4F9B29B2B8E8@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jun 2015 20:51:21.3009 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR05MB454
X-Microsoft-Exchange-Diagnostics: 1; BN1PR05MB219; 2:bjWukRU0fAkUPQfOeVA7Tj58J4yAPa+GEeaRs74EKGPA8rp031mBdNXCR8wyZtTq; 3:yCAmnevk25hRpgZ/Wxy15/FqgIKoArirSLZbPjnL9H2eq+LH7TbzofBpjmnO1yhFXCapZT+hhH+eZX0Dw1csQakybrviAkSJzR7+9itOThrZzDW3T2PgbqctxcQkcxfheXtm5OQAJ7y5zeXdyagjeA==; 23:cOk/3RRPbV3V/k/joorENGy6j8gSsDD9zMrhh9ThHrTMHKdltUOf8cObsxWeNIs/f12dDjU+aBnOLYW21ZHNnT1A4Wnys2wHa170p9N/mtFrbGt3PNgVOUe5zSEofu5bujdQpmNOrIxzheJEcfG3sdd8luw11VMSa3XaXLBYA8Hdn9DVJxUFk88ZWkBF2lk/+2yoiZ99RbXwhZZ1j5TL7gBq6SgSCaJX6TJJPxlV6X50k7cLEJeYpqF8ZSU4Y5KP
X-OriginatorOrg: juniper.net
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/w-rJkIIYyUHdpz-_z_MHCiEO7K0>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-metadata-01 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 20:51:25 -0000

[As an individual contributor]

Already many comments have been made, hopefully he below comments are new:


1. In Section 3, it says:

  "By advertising a YANG module in which metadata annotation A is
   defined using the "md:annotation" statement, a server specifies
   support for the syntax of annotation A.  This means that
   configuration or state data, RPC messages and notifications will be
   considered syntactically valid if annotation A is attached to any
   data node instance, provided that all rules stated in this document
   are observed."


  Does this mean that the annotation A can be used by *any* module
  the server advertises, or just the modules that define/import
  annotation A?
=20
  For example, could a YANG module be defined like this:

   module example-color-text {
     namespace "http://example.org/example-color-text";
     prefix "rgb";
     import ietf-yang-metadata { prefix "md"; }
     description
       "Text is black, unless colored otherwise";
     md:annotation color {
       type enumeration {
         enum red;
         enum green;
         enum blue;
       }
       description
         "This annotation only makes sense within this module.
          Application of this annotation to any data node
          Recursively applies to all its descendent nodes.";
     }
     container document {
       list paragraph {
         list sentence {
           leaf-list word {
             type string;
           }
         }
       }
     }
   }



  I assume that the intent is for the annotation to apply to
  the server as a whole, not any specific module.  It might
  help enforce this if annotations can only be defined in
  modules that don't define any data-nodes and it is required
  that the server advertises this module explicitly (not via
  an import)...



2. Also in Section 3, s/conditional:/conditional;/




3. In Section 4.2.2, adding metadata to the first entry in a list doesn't
seem elegant.  Can we instead create a special list element like the
following?

   "seq": [
     {
       "@": {
           "example-inactive:inactive": true

       }
     },
     {
       "name": "two",
       ...
     }
   ]

  I don't think that '@' is a valid identifier string, so it's
  syntactically OK, right?



4. Also in Section 4.2.2, an anydata example would complete this section...



5. In Section 4.2.3, an anyxml example would complete this section...


Thanks,
Kent




From nobody Tue Jun 30 14:06:50 2015
Return-Path: <mjethanandani@gmail.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 A9DBA1A1AE3; Tue, 30 Jun 2015 14:06:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level: 
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_PASS=-0.001] 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 3Eymkubt07Yu; Tue, 30 Jun 2015 14:06:42 -0700 (PDT)
Received: from mail-pd0-x22c.google.com (mail-pd0-x22c.google.com [IPv6:2607:f8b0:400e:c02::22c]) (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 C08A91A1ADB; Tue, 30 Jun 2015 14:06:40 -0700 (PDT)
Received: by pdbci14 with SMTP id ci14so12309793pdb.2; Tue, 30 Jun 2015 14:06:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;  h=content-type:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to; bh=YK+LYEiwGkO5fsdhE8iG7NdlYogXfBaxteSzLretNCQ=; b=eHBLUCwedxc5ywrLGi8/9vI4LWW5OXRA2dMcSlEC11ob4jalWRhsoZSK2CGsMI8IU7 T3o7CXkiEBHfB5JISZZL/HV1BKSObQV2FKSag9aRba44ZQrv80Dy61efio2zWoFWMC0j S++ocdISd2OVcwZJE8rrIAvSjRQ9l/SVMvjG32vQJhZJTie4P5HpeHW7T6QhJjsJF5QY e7EgOZR/Ix6jiIbgZYkm3c9EBWsg6f79QVqO3+llaQknySe6MPaHNRfyDXKizp5b/11T hTKKV8UdbhBYdnlp95Bt2bj/eMZwKWfM1rJqbIoHWyHp9BuVRmG4ExhQY8MBF30RMJnm Bkcg==
X-Received: by 10.66.249.1 with SMTP id yq1mr46365173pac.3.1435698399851; Tue, 30 Jun 2015 14:06:39 -0700 (PDT)
Received: from ?IPv6:2001:420:290:1266:8188:3b9c:b5d1:be1b? ([2001:420:290:1266:8188:3b9c:b5d1:be1b]) by mx.google.com with ESMTPSA id vl1sm46770397pab.21.2015.06.30.14.06.37 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 30 Jun 2015 14:06:38 -0700 (PDT)
Content-Type: multipart/alternative; boundary="Apple-Mail=_D4B66922-6925-4751-AD43-941A1D78CBE5"
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Mahesh Jethanandani <mjethanandani@gmail.com>
In-Reply-To: <00d901d0ade1$194280e0$4bc782a0$@ndzh.com>
Date: Tue, 30 Jun 2015 12:43:31 -0700
Message-Id: <D8FF75B2-4BB4-4A98-989B-10A2E480EBEF@gmail.com>
References: <00d901d0ade1$194280e0$4bc782a0$@ndzh.com>
To: Susan Hares <shares@ndzh.com>
X-Mailer: Apple Mail (2.2098)
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/P1y2WaehJWjbU5IvSIuLAUJE43w>
Cc: Rtg-yang-coord@ietf.org, i2rs@ietf.org, "BRUNGARD, DEBORAH A" <db3546@att.com>, Netconf <netconf@ietf.org>, NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Requirements for I2RS protocol and I2RS interim (6/24/2015 at 10:00 - 11:30am ET)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 21:06:46 -0000

--Apple-Mail=_D4B66922-6925-4751-AD43-941A1D78CBE5
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Susan,

The NETCONF WG acknowledges the receipt of the requirements.

These requirements need to be discussed in front of the NETCONF WG. =
Would suggest that i2rs WG present these requirements in front of the =
NETCONF WG during IETF 93 in Prague to kick start discussion within the =
WG. Please let us know how much time you (or someone from i2rs) would =
need to present the requirements.

Thanks.

> On Jun 23, 2015, at 11:19 AM, Susan Hares <shares@ndzh.com> wrote:
>=20
> Netconf Working Group:=20
> =20
> The I2RS WG would like to pass you a set of requirements for the I2RS =
protocol, and asks that you provide an analysis by IETF 93 on whether =
NETCONF or RESTCONF can meet these requirements.   We expect that these =
requirements may require changes to the either NETCONF or RESTCONF. =20
> =20
> The I2RS architecture document (draft-ietf-i2rs-architecture-09 =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-architecture/>) =
provides a high-level overview of the I2RS  protocol.  The I2RS has =
compiled the following documents to provide the additional details on =
the requirements for the protocols.=20
> =20
> 1)      draft-ietf-i2rs-ephemeral-state-00 =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-ephemeral-state/>=20
> 2)      draft-ietf-i2rs-pub-sub-requirements-02 =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub-requirements/>=20=

> 3)      draft-ietf-i2rs-traceability-03 =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-traceability/> =20
> =20
> The draft-ietf-i2rs-ephemeral-state-00 contains the results of the =
discussion from the 6/10 interim and the top 10 requirements for I2RS.  =
In addition, the draft-ietf-i2rs-ephemeral-state-00 contains an set of =
detailed requirements on how the I2RS WG sees the I2RS protocol =
operating.  These detailed requirements are to be seen as suggestions on =
what type of solution the I2RS WG would like to see, but I2RS WG is =
asking the NETCONF WG to provide its best designed protocol.  Please =
note as part of these detailed requirement the =
draft-ietf-i2rs-ephemeral-states-00 contains the idea of using metadata =
to record secondary identity.  =20
> =20
> The I2RS protocol is driven by data-models.  The approved data models =
for protocol independent services are:
> -          draft-ietf-i2rs-rib-data-model-00 =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-rib-data-model/>
> -          Filter-Based RIBS:  draft-kini-i2rs-fb-rib-data-model.00 =
(released later this week)
> -          Topology model which is a composite of:
> o   Generic topology model: draft-ietf-i2rs-yang-network-topo-01 =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-network-topo/>=20
> o   L3 topology model: draft-ietf-i2rs-yang-l3-topology-00 =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l3-topology/>=20
> o   L2 topology model: draft-ietf-i2rs-yang-l2-network-topology-00 =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l2-network-topology=
/>=20
> o   L1 Topology model: draft-zhang-i2rs-l1-topo-yang-model-01 (-02 =
released later this week).=20
> o   Service topology model: =
draft-hares-i2rs-service-topo-yang-model-00 (released on Wednesday)
> =20
> At this time, none of the Topology models utilize Traffic engineering. =
 It is anticipated that these models will support traffic engineering.  =
Estimated rates of transfer and timing requirements for these modules =
are at: http://trac.tools.ietf.org/wg/i2rs/trac/wiki =
<http://trac.tools.ietf.org/wg/i2rs/trac/wiki> - under the protocol =
requirements table.=20
> =20
> We hope that NETCONF WG can provide some initial feedback on these =
requirements by IETF 93 at the Tuesday I2RS session.   I2RS will use the =
6/24 interim at 10:00-11:30am ET  to provide a time for any participate =
in the I2RS, netconf, or netmod group to ask additional questions on =
these requirements.=20
> =20
> Sue Hares=20
> =20
> Interim time: 10:00-11:30am ET
> Date 6/24/2015
> Webex:=20
> =
https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7be61cb17b0008a3c52069d0f=
 =
<https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7be61cb17b0008a3c52069d0=
f>
> =20
> agenda:=20
> =20
> 10:00 =E2=80=93 10:05 =E2=80=93 Bash Agenda
> 10:05 =E2=80=93 10:20- -  review of requirements from
> draft-ietf-i2rs-ephemeral-state-00
> draft-ietf-i2rs-pub-sub-requirements-02
> draft-ietf-i2rs-traceability-03
> Timing requirements=20
> =20
> 10:20 =E2=80=93 10:30    Review of requirements for mutual =
authentication,
> and transaction in  draft-hares-auth-trans-01 requirements=20
> =20
> 10:30- 11:30     Open discussion for I2RS Requirements=20
> =20
> Proceedings and slides can be found at:=20
> =
http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceedings.html =
<http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceedings.html>=

> =20
> Sue Hares=20
> =20
> =20
> _______________________________________________
> netmod mailing list
> netmod@ietf.org <mailto:netmod@ietf.org>
> https://www.ietf.org/mailman/listinfo/netmod =
<https://www.ietf.org/mailman/listinfo/netmod>
Mahesh Jethanandani
mjethanandani@gmail.com




--Apple-Mail=_D4B66922-6925-4751-AD43-941A1D78CBE5
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D"">Susan,<div class=3D""><br class=3D""></div><div class=3D"">The =
NETCONF WG acknowledges the receipt of the requirements.</div><div =
class=3D""><br class=3D""></div><div class=3D"">These requirements need =
to be discussed in front of the NETCONF WG. Would suggest that i2rs WG =
present these requirements in front of the NETCONF WG during IETF 93 in =
Prague to kick start discussion within the WG. Please let us know how =
much time you (or someone from i2rs) would need to present the =
requirements.</div><div class=3D""><br class=3D""></div><div =
class=3D"">Thanks.</div><div class=3D""><br class=3D""><div><blockquote =
type=3D"cite" class=3D""><div class=3D"">On Jun 23, 2015, at 11:19 AM, =
Susan Hares &lt;<a href=3D"mailto:shares@ndzh.com" =
class=3D"">shares@ndzh.com</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><div =
class=3D"WordSection1" style=3D"page: WordSection1; font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: auto; text-align: start; text-indent: 0px; text-transform: =
none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-stroke-width: 0px;"><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">Netconf =
Working Group:<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">The I2RS =
WG would like to pass you a set of requirements for the I2RS protocol, =
and asks that you provide an analysis by IETF 93 on whether NETCONF or =
RESTCONF can meet these requirements.&nbsp;&nbsp; We expect that these =
requirements may require changes to the either NETCONF or =
RESTCONF.&nbsp;<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">The I2RS =
architecture document (<a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-architecture/" =
style=3D"color: purple; text-decoration: underline;" class=3D""><span =
style=3D"font-size: 11.5pt; color: rgb(61, 34, 179); background-color: =
white; text-decoration: none; background-position: initial initial; =
background-repeat: initial initial;" =
class=3D"">draft-ietf-i2rs-architecture-09</span></a><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: white; background-position: initial =
initial; background-repeat: initial initial;" class=3D"">)<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span>provides a =
high-level overview of the I2RS &nbsp;protocol.&nbsp; The I2RS has =
compiled the following documents to provide the additional details on =
the requirements for the protocols.<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt =
0.5in; font-size: 11pt; font-family: Calibri, sans-serif; text-indent: =
-0.25in;" class=3D""><span class=3D"apple-converted-space"><span =
class=3D"">1)<span style=3D"font-style: normal; font-variant: normal; =
font-weight: normal; font-size: 7pt; line-height: normal; font-family: =
'Times New Roman';" class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-ephemeral-state/"=
 style=3D"color: purple; text-decoration: underline;" class=3D""><span =
style=3D"font-size: 11.5pt; color: rgb(61, 34, 179); background-color: =
rgb(249, 249, 249); text-decoration: none; background-position: initial =
initial; background-repeat: initial initial;" =
class=3D"">draft-ietf-i2rs-ephemeral-state-00</span></a><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: rgb(249, 249, 249); =
background-position: initial initial; background-repeat: initial =
initial;" class=3D"">&nbsp;</span><o:p class=3D""></o:p></span></div><div =
style=3D"margin: 0in 0in 0.0001pt 0.5in; font-size: 11pt; font-family: =
Calibri, sans-serif; text-indent: -0.25in;" class=3D""><span =
class=3D"apple-converted-space"><span class=3D"">2)<span =
style=3D"font-style: normal; font-variant: normal; font-weight: normal; =
font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub-requireme=
nts/" style=3D"color: purple; text-decoration: underline;" =
class=3D""><span style=3D"font-size: 11.5pt; color: rgb(61, 34, 179); =
background-color: rgb(249, 249, 249); text-decoration: none; =
background-position: initial initial; background-repeat: initial =
initial;" =
class=3D"">draft-ietf-i2rs-pub-sub-requirements-02</span></a><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: rgb(249, 249, 249); =
background-position: initial initial; background-repeat: initial =
initial;" class=3D"">&nbsp;</span><o:p class=3D""></o:p></span></div><div =
style=3D"margin: 0in 0in 0.0001pt 0.5in; font-size: 11pt; font-family: =
Calibri, sans-serif; text-indent: -0.25in;" class=3D""><span =
class=3D"apple-converted-space"><span class=3D"">3)<span =
style=3D"font-style: normal; font-variant: normal; font-weight: normal; =
font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-traceability/" =
style=3D"color: purple; text-decoration: underline;" class=3D""><span =
style=3D"font-size: 11.5pt; color: rgb(61, 34, 179); background-color: =
white; text-decoration: none; background-position: initial initial; =
background-repeat: initial initial;" =
class=3D"">draft-ietf-i2rs-traceability-03</span></a><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: white; background-position: initial =
initial; background-repeat: initial initial;" class=3D"">&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span><o:p =
class=3D""></o:p></span></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">The =
draft-ietf-i2rs-ephemeral-state-00 contains the results of the =
discussion from the 6/10 interim and the top 10 requirements for =
I2RS.&nbsp; In addition, the draft-ietf-i2rs-ephemeral-state-00 contains =
an set of detailed requirements on how the I2RS WG sees the I2RS =
protocol operating.&nbsp; These detailed requirements are to be seen as =
suggestions on what type of solution the I2RS WG would like to see, but =
I2RS WG is asking the NETCONF WG to provide its best designed =
protocol.&nbsp; Please note as part of these detailed requirement the =
draft-ietf-i2rs-ephemeral-states-00 contains the idea of using metadata =
to record secondary identity. &nbsp;&nbsp;<o:p class=3D""></o:p></div><div=
 style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: =
Calibri, sans-serif;" class=3D""><o:p class=3D"">&nbsp;</o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: =
Calibri, sans-serif;" class=3D"">The I2RS protocol is driven by =
data-models.&nbsp; The approved data models for protocol independent =
services are:<o:p class=3D""></o:p></div><div style=3D"margin: 0in 0in =
0.0001pt 0.5in; font-size: 11pt; font-family: Calibri, sans-serif; =
text-indent: -0.25in;" class=3D""><span class=3D"">-<span =
style=3D"font-style: normal; font-variant: normal; font-weight: normal; =
font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-rib-data-model/" =
style=3D"color: purple; text-decoration: underline;" class=3D""><span =
style=3D"font-size: 11.5pt; color: rgb(61, 34, 179); background-color: =
white; text-decoration: none; background-position: initial initial; =
background-repeat: initial initial;" =
class=3D"">draft-ietf-i2rs-rib-data-model-00</span></a><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt 0.5in; =
font-size: 11pt; font-family: Calibri, sans-serif; text-indent: =
-0.25in;" class=3D""><span class=3D"apple-converted-space"><span =
class=3D"">-<span style=3D"font-style: normal; font-variant: normal; =
font-weight: normal; font-size: 7pt; line-height: normal; font-family: =
'Times New Roman';" =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span>Filter-B=
ased RIBS:&nbsp;<span class=3D"Apple-converted-space">&nbsp;</span><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: white; background-position: initial =
initial; background-repeat: initial initial;" =
class=3D"">draft-kini-i2rs-fb-rib-data-model.00 (released later this =
week)</span><o:p class=3D""></o:p></span></div><div style=3D"margin: 0in =
0in 0.0001pt 0.5in; font-size: 11pt; font-family: Calibri, sans-serif; =
text-indent: -0.25in;" class=3D""><span =
class=3D"apple-converted-space"><span class=3D"">-<span =
style=3D"font-style: normal; font-variant: normal; font-weight: normal; =
font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: white; background-position: initial =
initial; background-repeat: initial initial;" class=3D"">Topology model =
which is a composite of:</span><o:p class=3D""></o:p></span></div><div =
style=3D"margin: 0in 0in 0.0001pt 1in; font-size: 11pt; font-family: =
Calibri, sans-serif; text-indent: -0.25in;" class=3D""><span =
class=3D"apple-converted-space"><span style=3D"font-family: 'Courier =
New';" class=3D""><span class=3D"">o<span style=3D"font-style: normal; =
font-variant: normal; font-weight: normal; font-size: 7pt; line-height: =
normal; font-family: 'Times New Roman';" class=3D"">&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span></span><=
span class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; =
color: rgb(34, 34, 34); background-color: white; background-position: =
initial initial; background-repeat: initial initial;" class=3D"">Generic =
topology model:<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-network-topo=
/" style=3D"color: purple; text-decoration: underline;" class=3D""><span =
style=3D"font-size: 11.5pt; color: rgb(61, 34, 179); background-color: =
white; text-decoration: none; background-position: initial initial; =
background-repeat: initial initial;" =
class=3D"">draft-ietf-i2rs-yang-network-topo-01</span></a><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: white; background-position: initial =
initial; background-repeat: initial initial;" class=3D"">&nbsp;</span><o:p=
 class=3D""></o:p></span></div><div style=3D"margin: 0in 0in 0.0001pt =
1in; font-size: 11pt; font-family: Calibri, sans-serif; text-indent: =
-0.25in;" class=3D""><span class=3D"apple-converted-space"><span =
style=3D"font-family: 'Courier New';" class=3D""><span class=3D"">o<span =
style=3D"font-style: normal; font-variant: normal; font-weight: normal; =
font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" =
class=3D"">&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span></span><=
span class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; =
color: rgb(34, 34, 34); background-color: white; background-position: =
initial initial; background-repeat: initial initial;" class=3D"">L3 =
topology model:</span></span><span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l3-topology/=
" style=3D"color: purple; text-decoration: underline;" class=3D""><span =
style=3D"font-size: 11.5pt; color: rgb(61, 34, 179); background-color: =
rgb(249, 249, 249); text-decoration: none; background-position: initial =
initial; background-repeat: initial initial;" =
class=3D"">draft-ietf-i2rs-yang-l3-topology-00</span></a><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: rgb(249, 249, 249); =
background-position: initial initial; background-repeat: initial =
initial;" class=3D"">&nbsp;</span><o:p class=3D""></o:p></span></div><div =
style=3D"margin: 0in 0in 0.0001pt 1in; font-size: 11pt; font-family: =
Calibri, sans-serif; text-indent: -0.25in;" class=3D""><span =
class=3D"apple-converted-space"><span style=3D"font-family: 'Courier =
New';" class=3D""><span class=3D"">o<span style=3D"font-style: normal; =
font-variant: normal; font-weight: normal; font-size: 7pt; line-height: =
normal; font-family: 'Times New Roman';" class=3D"">&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span></span><=
span class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; =
color: rgb(34, 34, 34); background-color: white; background-position: =
initial initial; background-repeat: initial initial;" class=3D"">L2 =
topology model:<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l2-network-t=
opology/" style=3D"color: purple; text-decoration: underline;" =
class=3D""><span style=3D"font-size: 11.5pt; color: rgb(61, 34, 179); =
background-color: white; text-decoration: none; background-position: =
initial initial; background-repeat: initial initial;" =
class=3D"">draft-ietf-i2rs-yang-l2-network-topology-00</span></a><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: white; background-position: initial =
initial; background-repeat: initial initial;" class=3D"">&nbsp;</span><o:p=
 class=3D""></o:p></span></div><div style=3D"margin: 0in 0in 0.0001pt =
1in; font-size: 11pt; font-family: Calibri, sans-serif; text-indent: =
-0.25in;" class=3D""><span style=3D"font-family: 'Courier New';" =
class=3D""><span class=3D"">o<span style=3D"font-style: normal; =
font-variant: normal; font-weight: normal; font-size: 7pt; line-height: =
normal; font-family: 'Times New Roman';" class=3D"">&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: white; background-position: initial =
initial; background-repeat: initial initial;" class=3D"">L1 Topology =
model:</span></span><span =
class=3D"Apple-converted-space">&nbsp;</span>draft-zhang-i2rs-l1-topo-yang=
-model-01 (-02 released later this week).<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt 1in; =
font-size: 11pt; font-family: Calibri, sans-serif; text-indent: =
-0.25in;" class=3D""><span style=3D"font-family: 'Courier New';" =
class=3D""><span class=3D"">o<span style=3D"font-style: normal; =
font-variant: normal; font-weight: normal; font-size: 7pt; line-height: =
normal; font-family: 'Times New Roman';" class=3D"">&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span></span></span><span =
class=3D"apple-converted-space"><span style=3D"font-size: 11.5pt; color: =
rgb(34, 34, 34); background-color: white; background-position: initial =
initial; background-repeat: initial initial;" class=3D"">Service =
topology model:</span></span><span =
class=3D"Apple-converted-space">&nbsp;</span>draft-hares-i2rs-service-topo=
-yang-model-00 (released on Wednesday)<o:p class=3D""></o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: =
Calibri, sans-serif;" class=3D""><o:p class=3D"">&nbsp;</o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: =
Calibri, sans-serif;" class=3D"">At this time, none of the Topology =
models utilize Traffic engineering.&nbsp; It is anticipated that these =
models will support traffic engineering. &nbsp;Estimated rates of =
transfer and timing requirements for these modules are at:<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"http://trac.tools.ietf.org/wg/i2rs/trac/wiki" style=3D"color: =
purple; text-decoration: underline;" =
class=3D"">http://trac.tools.ietf.org/wg/i2rs/trac/wiki</a><span =
class=3D"Apple-converted-space">&nbsp;</span>- under the protocol =
requirements table.<span class=3D"Apple-converted-space">&nbsp;</span><o:p=
 class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">We hope =
that NETCONF WG can provide some initial feedback on these requirements =
by IETF 93 at the Tuesday I2RS session.&nbsp;&nbsp; I2RS will use the =
6/24 interim at 10:00-11:30am ET &nbsp;to provide a time for any =
participate in the I2RS, netconf, or netmod group to ask additional =
questions on these requirements.<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">Sue =
Hares<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">Interim =
time: 10:00-11:30am ET<o:p class=3D""></o:p></div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">Date 6/24/2015<o:p class=3D""></o:p></div><div style=3D"margin:=
 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">Webex:<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><a =
href=3D"https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7be61cb17b0008a3c=
52069d0f" style=3D"color: purple; text-decoration: underline;" =
class=3D"">https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7be61cb17b0008=
a3c52069d0f</a><o:p class=3D""></o:p></div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><o:p class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">agenda:<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">10:00 =E2=80=
=93 10:05 =E2=80=93 Bash Agenda<o:p class=3D""></o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: =
Calibri, sans-serif;" class=3D"">10:05 =E2=80=93 10:20- -&nbsp; review =
of requirements from<o:p class=3D""></o:p></div><div style=3D"margin: =
0in 0in 0.0001pt 0.5in; font-size: 11pt; font-family: Calibri, =
sans-serif; text-indent: 0.5in;" =
class=3D"">draft-ietf-i2rs-ephemeral-state-00<o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt 0.5in; =
font-size: 11pt; font-family: Calibri, sans-serif; text-indent: 0.5in;" =
class=3D"">draft-ietf-i2rs-pub-sub-requirements-02<o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt 0.5in; =
font-size: 11pt; font-family: Calibri, sans-serif; text-indent: 0.5in;" =
class=3D"">draft-ietf-i2rs-traceability-03<o:p class=3D""></o:p></div><div=
 style=3D"margin: 0in 0in 0.0001pt 0.5in; font-size: 11pt; font-family: =
Calibri, sans-serif; text-indent: 0.5in;" class=3D"">Timing =
requirements<span class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt 0.5in; =
font-size: 11pt; font-family: Calibri, sans-serif; text-indent: 0.5in;" =
class=3D""><o:p class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">10:20 =E2=80=93 10:30&nbsp;&nbsp;&nbsp; Review of =
requirements for mutual authentication,<o:p class=3D""></o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt 0.5in; font-size: 11pt; font-family: =
Calibri, sans-serif; text-indent: 0.5in;" class=3D"">and transaction in =
&nbsp;draft-hares-auth-trans-01 requirements<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">10:30- =
11:30 &nbsp;&nbsp;&nbsp;&nbsp;Open discussion for I2RS Requirements<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">Proceedings=
 and slides can be found at:<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><a =
href=3D"http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceeding=
s.html" style=3D"color: purple; text-decoration: underline;" =
class=3D"">http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceed=
ings.html</a><o:p class=3D""></o:p></div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D""><o:p class=3D"">&nbsp;</o:p></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" =
class=3D"">Sue Hares<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D"">&nbsp;<o:p =
class=3D""></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 11pt; font-family: Calibri, sans-serif;" class=3D""><o:p =
class=3D"">&nbsp;</o:p></div></div><span style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: auto; text-align: start; text-indent: 0px; text-transform: =
none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; float: none; display: inline =
!important;" =
class=3D"">_______________________________________________</span><br =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px; float: none; display: inline =
!important;" class=3D"">netmod mailing list</span><br =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px;" class=3D""><a =
href=3D"mailto:netmod@ietf.org" style=3D"color: purple; text-decoration: =
underline; font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px;" class=3D"">netmod@ietf.org</a><br =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: auto; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px;" class=3D""><a =
href=3D"https://www.ietf.org/mailman/listinfo/netmod" style=3D"color: =
purple; text-decoration: underline; font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant: normal; font-weight: normal; =
letter-spacing: normal; line-height: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; =
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" =
class=3D"">https://www.ietf.org/mailman/listinfo/netmod</a></div></blockqu=
ote></div><br class=3D""><div apple-content-edited=3D"true" class=3D"">
<div class=3D"">Mahesh Jethanandani</div><div class=3D""><a =
href=3D"mailto:mjethanandani@gmail.com" =
class=3D"">mjethanandani@gmail.com</a></div><div class=3D""><br =
class=3D""></div><br class=3D"Apple-interchange-newline">

</div>
<br class=3D""></div></body></html>=

--Apple-Mail=_D4B66922-6925-4751-AD43-941A1D78CBE5--


From nobody Tue Jun 30 14:16:34 2015
Return-Path: <shares@ndzh.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 DA59F1B2E69; Tue, 30 Jun 2015 14:16:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -99.054
X-Spam-Level: 
X-Spam-Status: No, score=-99.054 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DOS_OUTLOOK_TO_MX=2.845, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100] 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 eoEyHFXdm96z; Tue, 30 Jun 2015 14:16:26 -0700 (PDT)
Received: from hickoryhill-consulting.com (hhc-web3.hickoryhill-consulting.com [64.9.205.143]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5A0441B32B1; Tue, 30 Jun 2015 14:16:18 -0700 (PDT)
X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=174.124.185.134; 
From: "Susan Hares" <shares@ndzh.com>
To: "'Mahesh Jethanandani'" <mjethanandani@gmail.com>
References: <00d901d0ade1$194280e0$4bc782a0$@ndzh.com> <D8FF75B2-4BB4-4A98-989B-10A2E480EBEF@gmail.com>
In-Reply-To: <D8FF75B2-4BB4-4A98-989B-10A2E480EBEF@gmail.com>
Date: Tue, 30 Jun 2015 17:16:20 -0400
Message-ID: <007501d0b37a$02d6fbd0$0884f370$@ndzh.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0076_01D0B358.7BC9EFB0"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQISFdXuYb8FEw5zRd6nzKGMwfXW3QKbN0DLnS3sq9A=
Content-Language: en-us
X-Authenticated-User: skh@ndzh.com 
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/Lymi69KBPbxASAETiw1wYWx-ezc>
Cc: Rtg-yang-coord@ietf.org, i2rs@ietf.org, 'NETMOD Working Group' <netmod@ietf.org>, 'Netconf' <netconf@ietf.org>, "'BRUNGARD, DEBORAH A'" <db3546@att.com>
Subject: Re: [netmod] [Rtg-yang-coord] Requirements for I2RS protocol and I2RS interim (6/24/2015 at 10:00 - 11:30am ET)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 21:16:29 -0000

This is a multipart message in MIME format.

------=_NextPart_000_0076_01D0B358.7BC9EFB0
Content-Type: text/plain;
	charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Mahesh:=20

=20

Ok.  I thought you were going to review the requirement documents and =
give I2RS an initial guess.  We have present these at 3 I2RS interims, =
and the slides are online.  I will send the minutes to the netconf =
working group for their review.=20

=20

The presentation of the requirements will need the following time:=20

=20

1)      10 top requirements =E2=80=93 5-10 minutes [Sue Hares]=20

2)      Ephemeral state =E2=80=93 15 minutes [Jeff Haas]=20

3)      Pub/sub requirements =E2=80=93 10-15 minutes [Eric Voit]

4)      Traceability [ 10-15 minutes]=20

5)      Security [10 minutes] [Sue Hares and Joel Halpern]

6)      Review of I2RS models [5 minutes]=20

7)      =20

If you have heard pub/sub and traceability requirements, you may delete =
this from timeline.=20

=20

Sue Hares=20

=20

From: Rtg-yang-coord [mailto:rtg-yang-coord-bounces@ietf.org] On Behalf =
Of Mahesh Jethanandani
Sent: Tuesday, June 30, 2015 3:44 PM
To: Susan Hares
Cc: Rtg-yang-coord@ietf.org; i2rs@ietf.org; BRUNGARD, DEBORAH A; =
Netconf; NETMOD Working Group
Subject: Re: [Rtg-yang-coord] [netmod] Requirements for I2RS protocol =
and I2RS interim (6/24/2015 at 10:00 - 11:30am ET)

=20

Susan,

=20

The NETCONF WG acknowledges the receipt of the requirements.

=20

These requirements need to be discussed in front of the NETCONF WG. =
Would suggest that i2rs WG present these requirements in front of the =
NETCONF WG during IETF 93 in Prague to kick start discussion within the =
WG. Please let us know how much time you (or someone from i2rs) would =
need to present the requirements.

=20

Thanks.

=20

On Jun 23, 2015, at 11:19 AM, Susan Hares <shares@ndzh.com> wrote:

=20

Netconf Working Group:=20

=20

The I2RS WG would like to pass you a set of requirements for the I2RS =
protocol, and asks that you provide an analysis by IETF 93 on whether =
NETCONF or RESTCONF can meet these requirements.   We expect that these =
requirements may require changes to the either NETCONF or RESTCONF. =20

=20

The I2RS architecture document ( =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-architecture/> =
draft-ietf-i2rs-architecture-09) provides a high-level overview of the =
I2RS  protocol.  The I2RS has compiled the following documents to =
provide the additional details on the requirements for the protocols.=20

=20

1)       =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-ephemeral-state/> =
draft-ietf-i2rs-ephemeral-state-00=20

2)       =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub-requirements/> =
draft-ietf-i2rs-pub-sub-requirements-02=20

3)       =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-traceability/> =
draft-ietf-i2rs-traceability-03 =20

=20

The draft-ietf-i2rs-ephemeral-state-00 contains the results of the =
discussion from the 6/10 interim and the top 10 requirements for I2RS.  =
In addition, the draft-ietf-i2rs-ephemeral-state-00 contains an set of =
detailed requirements on how the I2RS WG sees the I2RS protocol =
operating.  These detailed requirements are to be seen as suggestions on =
what type of solution the I2RS WG would like to see, but I2RS WG is =
asking the NETCONF WG to provide its best designed protocol.  Please =
note as part of these detailed requirement the =
draft-ietf-i2rs-ephemeral-states-00 contains the idea of using metadata =
to record secondary identity.  =20

=20

The I2RS protocol is driven by data-models.  The approved data models =
for protocol independent services are:

-           =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-rib-data-model/> =
draft-ietf-i2rs-rib-data-model-00

-          Filter-Based RIBS:  draft-kini-i2rs-fb-rib-data-model.00 =
(released later this week)

-          Topology model which is a composite of:

o   Generic topology model:  =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-network-topo/> =
draft-ietf-i2rs-yang-network-topo-01=20

o   L3 topology model:  =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l3-topology/> =
draft-ietf-i2rs-yang-l3-topology-00=20

o   L2 topology model:  =
<https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l2-network-topolog=
y/> draft-ietf-i2rs-yang-l2-network-topology-00=20

o   L1 Topology model: draft-zhang-i2rs-l1-topo-yang-model-01 (-02 =
released later this week).=20

o   Service topology model: draft-hares-i2rs-service-topo-yang-model-00 =
(released on Wednesday)

=20

At this time, none of the Topology models utilize Traffic engineering.  =
It is anticipated that these models will support traffic engineering.  =
Estimated rates of transfer and timing requirements for these modules =
are at:  <http://trac.tools.ietf.org/wg/i2rs/trac/wiki> =
http://trac.tools.ietf.org/wg/i2rs/trac/wiki - under the protocol =
requirements table.=20

=20

We hope that NETCONF WG can provide some initial feedback on these =
requirements by IETF 93 at the Tuesday I2RS session.   I2RS will use the =
6/24 interim at 10:00-11:30am ET  to provide a time for any participate =
in the I2RS, netconf, or netmod group to ask additional questions on =
these requirements.=20

=20

Sue Hares=20

=20

Interim time: 10:00-11:30am ET

Date 6/24/2015

Webex:=20

 =
<https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7be61cb17b0008a3c52069d=
0f> =
https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7be61cb17b0008a3c52069d0=
f

=20

agenda:=20

=20

10:00 =E2=80=93 10:05 =E2=80=93 Bash Agenda

10:05 =E2=80=93 10:20- -  review of requirements from

draft-ietf-i2rs-ephemeral-state-00

draft-ietf-i2rs-pub-sub-requirements-02

draft-ietf-i2rs-traceability-03

Timing requirements=20

=20

10:20 =E2=80=93 10:30    Review of requirements for mutual =
authentication,

and transaction in  draft-hares-auth-trans-01 requirements=20

=20

10:30- 11:30     Open discussion for I2RS Requirements=20

=20

Proceedings and slides can be found at:=20

 =
<http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceedings.html=
> =
http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceedings.html

=20

Sue Hares=20

=20

=20

_______________________________________________
netmod mailing list
 <mailto:netmod@ietf.org> netmod@ietf.org
 <https://www.ietf.org/mailman/listinfo/netmod> =
https://www.ietf.org/mailman/listinfo/netmod

=20

Mahesh Jethanandani

mjethanandani@gmail.com

=20

=20

=20


------=_NextPart_000_0076_01D0B358.7BC9EFB0
Content-Type: text/html;
	charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; charset=3Dutf-8"><meta =
name=3DGenerator content=3D"Microsoft Word 14 (filtered =
medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:Helvetica;
	panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";}
span.apple-converted-space
	{mso-style-name:apple-converted-space;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:1892302555;
	mso-list-type:hybrid;
	mso-list-template-ids:-1324427872 67698705 67698713 67698715 67698703 =
67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
	{mso-level-text:"%1\)";
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level2
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level3
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l0:level4
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level5
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level6
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l0:level7
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level8
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level9
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Mahesh: <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Ok. =C2=A0I thought you were going to review the requirement =
documents and give I2RS an initial guess.=C2=A0 We have present these at =
3 I2RS interims, and the slides are online.=C2=A0 I will send the =
minutes to the netconf working group for their review. =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>The presentation of the requirements will need the following time: =
<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p>&nbsp;</o:p></span></p><p class=3DMsoListParagraph =
style=3D'text-indent:-.25in;mso-list:l0 level1 lfo1'><![if =
!supportLists]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><span style=3D'mso-list:Ignore'>1)<span style=3D'font:7.0pt "Times =
New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>10 top requirements =E2=80=93 5-10 minutes [Sue Hares] =
<o:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'text-indent:-.25in;mso-list:l0 level1 lfo1'><![if =
!supportLists]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><span style=3D'mso-list:Ignore'>2)<span style=3D'font:7.0pt "Times =
New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Ephemeral state =E2=80=93 15 minutes [Jeff Haas] =
<o:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'text-indent:-.25in;mso-list:l0 level1 lfo1'><![if =
!supportLists]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><span style=3D'mso-list:Ignore'>3)<span style=3D'font:7.0pt "Times =
New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Pub/sub requirements =E2=80=93 10-15 minutes [Eric =
Voit]<o:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'text-indent:-.25in;mso-list:l0 level1 lfo1'><![if =
!supportLists]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><span style=3D'mso-list:Ignore'>4)<span style=3D'font:7.0pt "Times =
New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Traceability [ 10-15 minutes] <o:p></o:p></span></p><p =
class=3DMsoListParagraph style=3D'text-indent:-.25in;mso-list:l0 level1 =
lfo1'><![if !supportLists]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><span style=3D'mso-list:Ignore'>5)<span style=3D'font:7.0pt "Times =
New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Security [10 minutes] [Sue Hares and Joel =
Halpern]<o:p></o:p></span></p><p class=3DMsoListParagraph =
style=3D'text-indent:-.25in;mso-list:l0 level1 lfo1'><![if =
!supportLists]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><span style=3D'mso-list:Ignore'>6)<span style=3D'font:7.0pt "Times =
New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Review of I2RS models [5 minutes] <o:p></o:p></span></p><p =
class=3DMsoListParagraph style=3D'text-indent:-.25in;mso-list:l0 level1 =
lfo1'><![if !supportLists]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><span style=3D'mso-list:Ignore'>7)<span style=3D'font:7.0pt "Times =
New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>If you have heard pub/sub and traceability requirements, you may =
delete this from timeline. <o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'>Sue Hares <o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497=
D'><o:p>&nbsp;</o:p></span></p><div><div =
style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in'><p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span>=
</b><span style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'> =
Rtg-yang-coord [mailto:rtg-yang-coord-bounces@ietf.org] <b>On Behalf Of =
</b>Mahesh Jethanandani<br><b>Sent:</b> Tuesday, June 30, 2015 3:44 =
PM<br><b>To:</b> Susan Hares<br><b>Cc:</b> Rtg-yang-coord@ietf.org; =
i2rs@ietf.org; BRUNGARD, DEBORAH A; Netconf; NETMOD Working =
Group<br><b>Subject:</b> Re: [Rtg-yang-coord] [netmod] Requirements for =
I2RS protocol and I2RS interim (6/24/2015 at 10:00 - 11:30am =
ET)<o:p></o:p></span></p></div></div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><p =
class=3DMsoNormal>Susan,<o:p></o:p></p><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p =
class=3DMsoNormal>The NETCONF WG acknowledges the receipt of the =
requirements.<o:p></o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p =
class=3DMsoNormal>These requirements need to be discussed in front of =
the NETCONF WG. Would suggest that i2rs WG present these requirements in =
front of the NETCONF WG during IETF 93 in Prague to kick start =
discussion within the WG. Please let us know how much time you (or =
someone from i2rs) would need to present the =
requirements.<o:p></o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p =
class=3DMsoNormal>Thanks.<o:p></o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><div><blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><div><p =
class=3DMsoNormal>On Jun 23, 2015, at 11:19 AM, Susan Hares &lt;<a =
href=3D"mailto:shares@ndzh.com">shares@ndzh.com</a>&gt; =
wrote:<o:p></o:p></p></div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><div><div><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Netconf =
Working Group:<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>The I2RS =
WG would like to pass you a set of requirements for the I2RS protocol, =
and asks that you provide an analysis by IETF 93 on whether NETCONF or =
RESTCONF can meet these requirements.&nbsp;&nbsp; We expect that these =
requirements may require changes to the either NETCONF or =
RESTCONF.&nbsp;<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>The I2RS =
architecture document (<a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-architecture/"><=
span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-architecture-09</span></a></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>)&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>provides a =
high-level overview of the I2RS &nbsp;protocol.&nbsp; The I2RS has =
compiled the following documents to provide the additional details on =
the requirements for the protocols.<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div style=3D'margin-left:.5in'><p =
class=3DMsoNormal style=3D'text-indent:-.25in'><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>1)</span></=
span><span class=3Dapple-converted-space><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></sp=
an><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-ephemeral-state/=
"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:#F9F9F9;text-decoratio=
n:none'>draft-ietf-i2rs-ephemeral-state-00</span></a></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:#F9F9F9'>&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p></o:p>=
</span></p></div><div style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>2)</span></=
span><span class=3Dapple-converted-space><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></sp=
an><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-pub-sub-requirem=
ents/"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:#F9F9F9;text-decoratio=
n:none'>draft-ietf-i2rs-pub-sub-requirements-02</span></a></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:#F9F9F9'>&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p></o:p>=
</span></p></div><div style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>3)</span></=
span><span class=3Dapple-converted-space><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></sp=
an><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-traceability/"><=
span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-traceability-03</span></a></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>&nbsp;&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p></o:p>=
</span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>The =
draft-ietf-i2rs-ephemeral-state-00 contains the results of the =
discussion from the 6/10 interim and the top 10 requirements for =
I2RS.&nbsp; In addition, the draft-ietf-i2rs-ephemeral-state-00 contains =
an set of detailed requirements on how the I2RS WG sees the I2RS =
protocol operating.&nbsp; These detailed requirements are to be seen as =
suggestions on what type of solution the I2RS WG would like to see, but =
I2RS WG is asking the NETCONF WG to provide its best designed =
protocol.&nbsp; Please note as part of these detailed requirement the =
draft-ietf-i2rs-ephemeral-states-00 contains the idea of using metadata =
to record secondary identity. =
&nbsp;&nbsp;<o:p></o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>The I2RS =
protocol is driven by data-models.&nbsp; The approved data models for =
protocol independent services are:<o:p></o:p></span></p></div><div =
style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>-</span><sp=
an =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;<span class=3Dapple-converted-space>&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-rib-data-model/"=
><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-rib-data-model-00</span></a><o:p></o:p></span></p><=
/div><div style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>-</span></s=
pan><span class=3Dapple-converted-space><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Filter-Base=
d RIBS:&nbsp;<span =
class=3Dapple-converted-space>&nbsp;</span></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>draft-kini-i2rs-fb-rib-data-model.00 (released later =
this week)</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p></o:p>=
</span></p></div><div style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>-</span></s=
pan><span class=3Dapple-converted-space><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;</span></span><span class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>Topology model which is a composite =
of:</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p></o:p>=
</span></p></div><div style=3D'margin-left:1.0in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Courier =
New"'>o</span></span><span class=3Dapple-converted-space><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;&nbsp;</span></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>Generic topology model:&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-network-top=
o/"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-yang-network-topo-01</span></a></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p></o:p>=
</span></p></div><div style=3D'margin-left:1.0in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Courier =
New"'>o</span></span><span class=3Dapple-converted-space><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;&nbsp;</span></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>L3 topology model:</span></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;</spa=
n></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l3-topology=
/"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:#F9F9F9;text-decoratio=
n:none'>draft-ietf-i2rs-yang-l3-topology-00</span></a></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:#F9F9F9'>&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p></o:p>=
</span></p></div><div style=3D'margin-left:1.0in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Courier =
New"'>o</span></span><span class=3Dapple-converted-space><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;&nbsp;</span></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>L2 topology model:&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><a =
href=3D"https://datatracker.ietf.org/doc/draft-ietf-i2rs-yang-l2-network-=
topology/"><span =
style=3D'font-size:11.5pt;color:#3D22B3;background:white;text-decoration:=
none'>draft-ietf-i2rs-yang-l2-network-topology-00</span></a></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>&nbsp;</span></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p></o:p>=
</span></p></div><div style=3D'margin-left:1.0in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span =
style=3D'font-size:11.0pt;font-family:"Courier New"'>o</span><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;<span =
class=3Dapple-converted-space>&nbsp;</span></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>L1 Topology model:</span></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;</spa=
n></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>draft-zhang=
-i2rs-l1-topo-yang-model-01 (-02 released later this week).<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv style=3D'margin-left:1.0in'><p class=3DMsoNormal =
style=3D'text-indent:-.25in'><span =
style=3D'font-size:11.0pt;font-family:"Courier New"'>o</span><span =
style=3D'font-size:7.0pt'>&nbsp;&nbsp;<span =
class=3Dapple-converted-space>&nbsp;</span></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.5pt;font-family:"Calibri","sans-serif";color:#22222=
2;background:white'>Service topology model:</span></span><span =
class=3Dapple-converted-space><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;</spa=
n></span><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>draft-hares=
-i2rs-service-topo-yang-model-00 (released on =
Wednesday)<o:p></o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>At this =
time, none of the Topology models utilize Traffic engineering.&nbsp; It =
is anticipated that these models will support traffic engineering. =
&nbsp;Estimated rates of transfer and timing requirements for these =
modules are at:<span class=3Dapple-converted-space>&nbsp;</span><a =
href=3D"http://trac.tools.ietf.org/wg/i2rs/trac/wiki"><span =
style=3D'color:purple'>http://trac.tools.ietf.org/wg/i2rs/trac/wiki</span=
></a><span class=3Dapple-converted-space>&nbsp;</span>- under the =
protocol requirements table.<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>We hope =
that NETCONF WG can provide some initial feedback on these requirements =
by IETF 93 at the Tuesday I2RS session.&nbsp;&nbsp; I2RS will use the =
6/24 interim at 10:00-11:30am ET &nbsp;to provide a time for any =
participate in the I2RS, netconf, or netmod group to ask additional =
questions on these requirements.<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Sue =
Hares<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Interim =
time: 10:00-11:30am ET<o:p></o:p></span></p></div><div><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Date =
6/24/2015<o:p></o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Webex:<span=
 =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><a =
href=3D"https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7be61cb17b0008a3=
c52069d0f"><span =
style=3D'color:purple'>https://ietf.webex.com/ietf/j.php?MTID=3Dm4260bee7=
be61cb17b0008a3c52069d0f</span></a><o:p></o:p></span></p></div><div><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>agenda:<spa=
n =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>10:00 =
=E2=80=93 10:05 =E2=80=93 Bash Agenda<o:p></o:p></span></p></div><div><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>10:05 =
=E2=80=93 10:20- -&nbsp; review of requirements =
from<o:p></o:p></span></p></div><div style=3D'margin-left:.5in'><p =
class=3DMsoNormal style=3D'text-indent:.5in'><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>draft-ietf-=
i2rs-ephemeral-state-00<o:p></o:p></span></p></div><div =
style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:.5in'><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>draft-ietf-=
i2rs-pub-sub-requirements-02<o:p></o:p></span></p></div><div =
style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:.5in'><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>draft-ietf-=
i2rs-traceability-03<o:p></o:p></span></p></div><div =
style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:.5in'><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Timing =
requirements<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:.5in'><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>10:20 =
=E2=80=93 10:30&nbsp;&nbsp;&nbsp; Review of requirements for mutual =
authentication,<o:p></o:p></span></p></div><div =
style=3D'margin-left:.5in'><p class=3DMsoNormal =
style=3D'text-indent:.5in'><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>and =
transaction in &nbsp;draft-hares-auth-trans-01 requirements<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>10:30- =
11:30 &nbsp;&nbsp;&nbsp;&nbsp;Open discussion for I2RS Requirements<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Proceedings=
 and slides can be found at:<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'><a =
href=3D"http://www.ietf.org/proceedings/interim/2015/06/24/i2rs/proceedin=
gs.html"><span =
style=3D'color:purple'>http://www.ietf.org/proceedings/interim/2015/06/24=
/i2rs/proceedings.html</span></a><o:p></o:p></span></p></div><div><p =
class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Sue =
Hares<span =
class=3Dapple-converted-space>&nbsp;</span><o:p></o:p></span></p></div><d=
iv><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>&nbsp;<o:p>=
</o:p></span></p></div><p class=3DMsoNormal><span =
style=3D'font-size:9.0pt;font-family:"Helvetica","sans-serif"'>__________=
_____________________________________<br>netmod mailing =
list<br></span><a href=3D"mailto:netmod@ietf.org"><span =
style=3D'font-size:9.0pt;font-family:"Helvetica","sans-serif";color:purpl=
e'>netmod@ietf.org</span></a><span =
style=3D'font-size:9.0pt;font-family:"Helvetica","sans-serif"'><br></span=
><a href=3D"https://www.ietf.org/mailman/listinfo/netmod"><span =
style=3D'font-size:9.0pt;font-family:"Helvetica","sans-serif";color:purpl=
e'>https://www.ietf.org/mailman/listinfo/netmod</span></a><o:p></o:p></p>=
</div></blockquote></div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><div><div><p =
class=3DMsoNormal>Mahesh Jethanandani<o:p></o:p></p></div><div><p =
class=3DMsoNormal><a =
href=3D"mailto:mjethanandani@gmail.com">mjethanandani@gmail.com</a><o:p><=
/o:p></p></div><div><p class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div></div></body></html>
------=_NextPart_000_0076_01D0B358.7BC9EFB0--



From nobody Tue Jun 30 14:18:33 2015
Return-Path: <akolchinsky@juniper.net>
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 BCDA51B32B3 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 14:14:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.799
X-Spam-Level: 
X-Spam-Status: No, score=0.799 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 gzCMbYJ-ArG2 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 14:14:44 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0723.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::1:723]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AE59C1B32B2 for <netmod@ietf.org>; Tue, 30 Jun 2015 14:14:43 -0700 (PDT)
Received: from BLUPR05MB659.namprd05.prod.outlook.com (10.141.205.144) by BLUPR05MB450.namprd05.prod.outlook.com (10.141.28.19) with Microsoft SMTP Server (TLS) id 15.1.201.16; Tue, 30 Jun 2015 21:14:39 +0000
Received: from BLUPR05MB659.namprd05.prod.outlook.com ([10.141.205.144]) by BLUPR05MB659.namprd05.prod.outlook.com ([10.141.205.144]) with mapi id 15.01.0201.000; Tue, 30 Jun 2015 21:14:38 +0000
From: Alexander Kolchinsky <akolchinsky@juniper.net>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: YANG-JSON Encoding review comments
Thread-Index: AQHQs3nFLOnsNOaoQUWJx6BmMPSoEA==
Date: Tue, 30 Jun 2015 21:14:38 +0000
Message-ID: <D1B85498.12B65%akolchinsky@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/14.4.9.150325
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.10]
x-microsoft-exchange-diagnostics: 1; BLUPR05MB450; 5:1NhdYOyOU08hZ3+ywrOM6bH+WK8uQdp1LsslyiEEgG6E9wnVTxXTUryzTvcK3HhjPPr2dX/N+cT2B9S1XjsOWb9XssqfKvrToOyO2q7S999y3dCb5uHn5Ta6rCDlyPmZUb4Sw6cntTRxMc8kUynrMA==; 24:viUag018ZlmKQxtBgaU+2R8bQa7gtHfqir4rwEgFU+N37pamLyxQvuhcv/0gp2RuiHEa4gtxbNRq1kSBIG3tRP9mGnwD3F9PB+nIoilx5AI=; 20:VvOQldp8BaPQmTs6BrCMOlxc0l++jK9YfmTWSpZSDTuaVvbdD8RAkit/ZFNpsYkfNYxCOuYvTDpMd44wUKTDpw==
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR05MB450;
x-microsoft-antispam-prvs: <BLUPR05MB450E41A72550C47DE58FEF6B0A90@BLUPR05MB450.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BLUPR05MB450; BCL:0; PCL:0; RULEID:; SRVR:BLUPR05MB450; 
x-forefront-prvs: 06237E4555
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(5002640100001)(86362001)(99286002)(19617315012)(106116001)(189998001)(229853001)(2351001)(16236675004)(19580395003)(2656002)(87936001)(110136002)(92566002)(83506001)(450100001)(62966003)(77156002)(36756003)(122556002)(54356999)(50986999)(2501003)(2900100001)(102836002)(15975445007)(77096005)(5001920100001)(46102003)(107886002)(4001350100001)(5001960100002)(66066001)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR05MB450; H:BLUPR05MB659.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; 
Content-Type: multipart/alternative; boundary="_000_D1B8549812B65akolchinskyjunipernet_"
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jun 2015 21:14:38.7484 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR05MB450
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/SEKJ5dIZ1q2HoNUFlMoY0gbn9Sk>
X-Mailman-Approved-At: Tue, 30 Jun 2015 14:18:31 -0700
Subject: [netmod] YANG-JSON Encoding review comments
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 21:14:46 -0000

--_000_D1B8549812B65akolchinskyjunipernet_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

My comments for reviewing:

https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04


Comment #1:

Question for section 4.

Can I also use:


   {
     "barmod:top": {
       "foo": 54,
       "bar": true
     }
   }

If barmod extends foobar:top, then barmod:top should also be valid, no?


Comment #2:

Example: For the anyxml definition

   anyxml bar;

   the following is a valid JSON-encoded instance:

   "bar": [true, null, true]




I would rather have:




"bar": "<? xml version=3D\"1.0\" ?><data><link></link></data>";


My personal experience shows that it depends on what the client wants, and =
it should be controlled by the client.  For example, it could be a union of=
 different types:


<actual-type>  (this will be encoded to whatever format is being used xml/j=
son)

anyxml  (always embed xml with CDATA)

anyjson (always embed json)

anyxml-escaped (always embed xml escaped - no CDATA)



Comment #3:


It would be better to provide examples for sections 6.2-6.7


Comment #4:


For section 6.8, it should be:


"type": "ietf-interfaces:ethernetCsmacd"


Not:


   "type": "iana-if-type:ethernetCsmacd"


Because, the prefix is if, not ianaift.

Comment #5:

For section 6.10:

What if we have:


leaf bar {
     type union {
       type uint64;
       type string;
     }
   }


Then how can we determine which union this string refers to?

Seems like it would be more reliable to have a union selector:


"bar" {

   "union-selector": "uint64",

   "value": "99999999.99999"

}





--_000_D1B8549812B65akolchinskyjunipernet_
Content-Type: text/html; charset="iso-8859-1"
Content-ID: <8D4814E31600104697C9BC804B56200D@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
</head>
<body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space;">
<pre style=3D"font-family: Calibri, sans-serif; widows: 1; margin-top: 0px;=
 margin-bottom: 0px;"><font><div style=3D"font-size: 13.32px; color: rgb(0,=
 0, 0);">My comments for reviewing:</div><div style=3D"font-size: 13.32px; =
color: rgb(0, 0, 0);"><br></div><div style=3D"font-size: 13.32px; color: rg=
b(0, 0, 0);"><a href=3D"https://tools.ietf.org/html/draft-ietf-netmod-yang-=
json-04">https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04</a></di=
v><div style=3D"font-size: 13.32px; color: rgb(0, 0, 0);"><br></div><div st=
yle=3D"font-size: 13.32px; color: rgb(0, 0, 0);"><br></div><div><b>Comment =
#1:</b></div></font></pre>
<pre style=3D"font-family: Calibri, sans-serif; widows: 1; margin-top: 0px;=
 margin-bottom: 0px;"><div style=3D"font-family: Calibri, Arial, Helvetica,=
 sans-serif; white-space: normal; margin-top: 0px; margin-bottom: 0px;">Que=
stion for section 4.</div><div style=3D"font-size: 16px; color: rgb(0, 0, 0=
); font-family: Calibri, Arial, Helvetica, sans-serif; white-space: normal;=
 margin-top: 0px; margin-bottom: 0px;"><br></div><div style=3D"font-size: 1=
6px; color: rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-seri=
f; white-space: normal; margin-top: 0px; margin-bottom: 0px;">Can I also us=
e:</div><div style=3D"font-size: 16px; color: rgb(0, 0, 0); font-family: Ca=
libri, Arial, Helvetica, sans-serif; white-space: normal; margin-top: 0px; =
margin-bottom: 0px;"><br></div><pre style=3D"font-size: 16px; color: rgb(0,=
 0, 0); margin-top: 0px; margin-bottom: 0px;"><font size=3D"1"><span style=
=3D"font-size: 13.32px;">   {
     &quot;barmod:top&quot;: {
       &quot;foo&quot;: 54,
       &quot;bar&quot;: true
     }
   }</span></font></pre><br style=3D"font-family: Calibri, Arial, Helvetica=
, sans-serif; white-space: normal;"><span style=3D"font-size: 16px; color: =
rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-serif; white-spa=
ce: normal; background-color: rgb(255, 255, 255);">If barmod extends foobar=
:top, then barmod:top should also be valid, no?</span></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><span style=3D"=
font-family: Calibri, Arial, Helvetica, sans-serif; white-space: normal; ba=
ckground-color: rgb(255, 255, 255);"><br></span></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;"><b>Comment #2:</b></span></font></pre=
>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;">Example: For the anyxml definition

   anyxml bar;

   the following is a valid JSON-encoded instance:

   &quot;bar&quot;: [true, null, true]</span></font></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;">
</span></font></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;">I would rather have:</span></font></p=
re>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;">
</span></font></pre>
<pre style=3D"widows: 1; margin-top: 0px; margin-bottom: 0px;"><font><font =
face=3D"Calibri,sans-serif" size=3D"3">&quot;bar&quot;: &quot;</font><font =
face=3D"Arial,sans-serif"><font face=3D"Calibri,sans-serif"><span style=3D"=
font-size: 13.65px;">&lt;? xml version=3D\&quot;1.0\&quot; ?&gt;&lt;data&gt=
;&lt;link&gt;&lt;/link&gt;&lt;/data&gt;</span></font>&#8221;<font face=3D"C=
alibri,sans-serif"><span style=3D"font-size: 13.65px;">;</span></font></fon=
t></font></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><span style=3D"=
font-size: 13.65px; font-family: Arial, sans-serif;"><br></span></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><p style=3D"mar=
gin-top: 0px; margin-bottom: 0px; font-family: Calibri, Arial, Helvetica, s=
ans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', NotoColorEmoji, 'Segoe UI=
 Symbol', 'Android Emoji', EmojiSymbols; white-space: normal;">My personal =
experience shows that it depends on what the client wants, and it should be=
 controlled by the client. &nbsp;For example, it could be a union of differ=
ent types:</p><p style=3D"margin-top: 0px; margin-bottom: 0px; font-family:=
 Calibri, Arial, Helvetica, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoj=
i', NotoColorEmoji, 'Segoe UI Symbol', 'Android Emoji', EmojiSymbols; white=
-space: normal;"><br></p><p style=3D"margin-top: 0px; margin-bottom: 0px; f=
ont-family: Calibri, Arial, Helvetica, sans-serif, 'Apple Color Emoji', 'Se=
goe UI Emoji', NotoColorEmoji, 'Segoe UI Symbol', 'Android Emoji', EmojiSym=
bols; white-space: normal;">&lt;actual-type&gt; &nbsp;(this will be&nbsp;en=
coded&nbsp;to whatever format is being used xml/json)</p><p style=3D"margin=
-top: 0px; margin-bottom: 0px; font-family: Calibri, Arial, Helvetica, sans=
-serif, 'Apple Color Emoji', 'Segoe UI Emoji', NotoColorEmoji, 'Segoe UI Sy=
mbol', 'Android Emoji', EmojiSymbols; white-space: normal;">anyxml &nbsp;(a=
lways embed xml with CDATA)</p><p style=3D"margin-top: 0px; margin-bottom: =
0px; font-family: Calibri, Arial, Helvetica, sans-serif, 'Apple Color Emoji=
', 'Segoe UI Emoji', NotoColorEmoji, 'Segoe UI Symbol', 'Android Emoji', Em=
ojiSymbols; white-space: normal;">anyjson (always embed json)</p><p style=
=3D"margin-top: 0px; margin-bottom: 0px; font-family: Calibri, Arial, Helve=
tica, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', NotoColorEmoji, 'S=
egoe UI Symbol', 'Android Emoji', EmojiSymbols; white-space: normal;">anyxm=
l-escaped (always embed xml escaped - no CDATA)</p><div><br></div><div><br>=
</div></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><span style=3D"=
font-size: 13.65px; font-family: Arial, sans-serif;"><b>Comment #3:</b></sp=
an></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;"><font face=3D"Arial,sans-serif" size=
=3D"2"><span style=3D"font-size: 13.65px;"><br></span></font></span></font>=
</pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;"><font face=3D"Arial,sans-serif" size=
=3D"2"><span style=3D"font-size: 13.65px;">It would be better to provide ex=
amples for sections 6.2-6.7</span></font></span></font></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;"><font face=3D"Arial,sans-serif" size=
=3D"2"><span style=3D"font-size: 13.65px;"><br></span></font></span></font>=
</pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;"><font face=3D"Arial,sans-serif" size=
=3D"2"><span style=3D"font-size: 13.65px;"><b>Comment #4:</b></span></font>=
</span></font></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;"><font face=3D"Arial,sans-serif" size=
=3D"2"><span style=3D"font-size: 13.65px;"><br></span></font></span></font>=
</pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;"><font face=3D"Arial,sans-serif" size=
=3D"2"><span style=3D"font-size: 13.65px;">For section 6.8, it should be:</=
span></font></span></font></pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><font size=3D"1=
"><span style=3D"font-size: 13.32px;"><font face=3D"Arial,sans-serif" size=
=3D"2"><span style=3D"font-size: 13.65px;"><br></span></font></span></font>=
</pre>
<pre style=3D"color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-s=
ize: 16px; widows: 1; margin-top: 0px; margin-bottom: 0px;"><pre class=3D"n=
ewpage" style=3D"font-size: 13.3333330154419px; margin-top: 0px; margin-bot=
tom: 0px; page-break-before: always;">&quot;type&quot;: &#8220;ietf-interfa=
ces:ethernetCsmacd&#8221;</pre><pre class=3D"newpage" style=3D"font-size: 1=
3.3333330154419px; margin-top: 0px; margin-bottom: 0px; page-break-before: =
always;"><br></pre><pre class=3D"newpage" style=3D"font-size: 13.3333330154=
419px; margin-top: 0px; margin-bottom: 0px; page-break-before: always;">Not=
:</pre><pre class=3D"newpage" style=3D"font-size: 13.3333330154419px; margi=
n-top: 0px; margin-bottom: 0px; page-break-before: always;"><br></pre><pre =
class=3D"newpage" style=3D"font-size: 13.3333330154419px; margin-top: 0px; =
margin-bottom: 0px; page-break-before: always;">   &quot;type&quot;: &quot;=
iana-if-type:ethernetCsmacd&quot;
</pre><div><br></div><div>Because, the prefix is if, not ianaift.</div><div=
><br></div><div><b>Comment #5:</b></div><div><br></div><div>For section 6.1=
0:</div><div><br></div><div>What if we have:</div><div><br></div><div><pre =
class=3D"newpage" style=3D"font-size: 13.3333330154419px; margin-top: 0px; =
margin-bottom: 0px; page-break-before: always;">leaf bar {
     type union {
       type uint64;
       type string;
     }
   }</pre></div><pre class=3D"newpage" style=3D"font-size: 13.3333330154419=
px; margin-top: 0px; margin-bottom: 0px; page-break-before: always;"><br></=
pre><pre class=3D"newpage" style=3D"font-size: 13.3333330154419px; margin-t=
op: 0px; margin-bottom: 0px; page-break-before: always;">Then how can we de=
termine which union this string refers to?</pre><pre class=3D"newpage" styl=
e=3D"font-size: 13.3333330154419px; margin-top: 0px; margin-bottom: 0px; pa=
ge-break-before: always;">Seems like it would be more reliable to have a un=
ion selector:</pre><pre class=3D"newpage" style=3D"font-size: 13.3333330154=
419px; margin-top: 0px; margin-bottom: 0px; page-break-before: always;"><br=
></pre><pre class=3D"newpage" style=3D"font-size: 13.3333330154419px; margi=
n-top: 0px; margin-bottom: 0px; page-break-before: always;">&#8220;bar&#822=
1; {</pre><pre class=3D"newpage" style=3D"font-size: 13.3333330154419px; ma=
rgin-top: 0px; margin-bottom: 0px; page-break-before: always;">   &#8220;un=
ion-selector&#8221;: &#8220;uint64&#8221;,</pre><pre class=3D"newpage" styl=
e=3D"font-size: 13.3333330154419px; margin-top: 0px; margin-bottom: 0px; pa=
ge-break-before: always;">   &#8220;value&#8221;: &#8220;99999999.99999&#82=
21;</pre><pre class=3D"newpage" style=3D"font-size: 13.3333330154419px; mar=
gin-top: 0px; margin-bottom: 0px; page-break-before: always;">}</pre><pre c=
lass=3D"newpage" style=3D"font-size: 13.3333330154419px; margin-top: 0px; m=
argin-bottom: 0px; page-break-before: always;"><br></pre><pre class=3D"newp=
age" style=3D"font-size: 13.3333330154419px; margin-top: 0px; margin-bottom=
: 0px; page-break-before: always;"><br></pre><pre class=3D"newpage" style=
=3D"font-size: 13.3333330154419px; margin-top: 0px; margin-bottom: 0px; pag=
e-break-before: always;"><br></pre><pre class=3D"newpage" style=3D"font-siz=
e: 13.3333330154419px; margin-top: 0px; margin-bottom: 0px; page-break-befo=
re: always;"><br></pre></pre>
</body>
</html>

--_000_D1B8549812B65akolchinskyjunipernet_--


From nobody Tue Jun 30 15:13:50 2015
Return-Path: <evoit@cisco.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 73E861B3317; Tue, 30 Jun 2015 15:13:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.51
X-Spam-Level: 
X-Spam-Status: No, score=-14.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 ulGayuEvAWcB; Tue, 30 Jun 2015 15:13:45 -0700 (PDT)
Received: from alln-iport-1.cisco.com (alln-iport-1.cisco.com [173.37.142.88]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 25E9B1B3313; Tue, 30 Jun 2015 15:13:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=61472; q=dns/txt; s=iport; t=1435702425; x=1436912025; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=tjhHoEQRxgW3RYGGcDYhd1sTUgeHWTSMXCa73+bIz7M=; b=kjKFZLfSzzDGGAzeqkl+V2xpq7M7IIVO2Goh/iV8UGa+T1zs2f8rQ4qI XTqg13Lo6W95nYuJE5uH1+2ckzVUvZPptW0AlVmwNSUW64Gx7ytDvgMA9 DHXYmul0vi4FRDuG3S7iyTIIeZeyCW3wMyT2ydMap2sH9sbRCE5xW5DO3 w=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0A0BQByFJNV/5JdJa1BEQmCRUxUXwaDGLoAKgmBSBkBC4UsSgIcgTo4FAEBAQEBAQGBCoQiAQEBBAEBASAKQQsQAgEIDgMBAwEBCxYBAgQDAgICHwYLFAMGCAIEAQkEBQgBEod/AxINOrImkQcNhXMBAQEBAQEBAQEBAQEBAQEBAQEBAQEXi0qCTYFdKy0EBgGCaC+BFAWRKYJeAYRZhRqBZIE5RINOi1eHGhEVggwcFYE9bwGBRYECAQEB
X-IronPort-AV: E=Sophos;i="5.15,380,1432598400";  d="scan'208,217";a="164434195"
Received: from rcdn-core-10.cisco.com ([173.37.93.146]) by alln-iport-1.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 30 Jun 2015 22:13:29 +0000
Received: from xhc-aln-x13.cisco.com (xhc-aln-x13.cisco.com [173.36.12.87]) by rcdn-core-10.cisco.com (8.14.5/8.14.5) with ESMTP id t5UMDSCg026310 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Tue, 30 Jun 2015 22:13:28 GMT
Received: from xmb-aln-x11.cisco.com ([169.254.6.147]) by xhc-aln-x13.cisco.com ([173.36.12.87]) with mapi id 14.03.0195.001; Tue, 30 Jun 2015 17:13:21 -0500
From: "Eric Voit (evoit)" <evoit@cisco.com>
To: Susan Hares <shares@ndzh.com>, "'Mahesh Jethanandani'" <mjethanandani@gmail.com>
Thread-Topic: [Rtg-yang-coord] [netmod] Requirements for I2RS protocol and I2RS interim (6/24/2015 at 10:00 - 11:30am ET)
Thread-Index: AQISFdXuYb8FEw5zRd6nzKGMwfXW3QKbN0DLnS3sq9CAAAbrEA==
Date: Tue, 30 Jun 2015 22:13:21 +0000
Message-ID: <EF64FF31F4C4384DBCE5D513A791C2B121B00EE1@xmb-aln-x11.cisco.com>
References: <00d901d0ade1$194280e0$4bc782a0$@ndzh.com> <D8FF75B2-4BB4-4A98-989B-10A2E480EBEF@gmail.com> <007501d0b37a$02d6fbd0$0884f370$@ndzh.com>
In-Reply-To: <007501d0b37a$02d6fbd0$0884f370$@ndzh.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.118.56.228]
Content-Type: multipart/alternative; boundary="_000_EF64FF31F4C4384DBCE5D513A791C2B121B00EE1xmbalnx11ciscoc_"
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/7MzLcr7PaGjq-i-v7V7O5nwKVa4>
Cc: "Rtg-yang-coord@ietf.org" <Rtg-yang-coord@ietf.org>, "i2rs@ietf.org" <i2rs@ietf.org>, 'NETMOD Working Group' <netmod@ietf.org>, "'BRUNGARD, DEBORAH A'" <db3546@att.com>, 'Netconf' <netconf@ietf.org>
Subject: Re: [netmod] [Rtg-yang-coord] Requirements for I2RS protocol and I2RS interim (6/24/2015 at 10:00 - 11:30am ET)
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 30 Jun 2015 22:13:48 -0000

--_000_EF64FF31F4C4384DBCE5D513A791C2B121B00EE1xmbalnx11ciscoc_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

SSBwcmVzZW50ZWQgUHViU3ViIOKAmC0wMeKAmSByZXF1aXJlbWVudHMgaW4gTkVUQ09ORiBhdCBJ
RVRGIDkyLiAgICBDaGFuZ2VzIGluIOKAmC0wMuKAmSBhcmUgbGlrZWx5IG5vdCBlbm91Z2ggZm9y
IGEgc3BlYWtpbmcgc2xvdC4NCg0KV2hhdCBtaWdodCBiZSBpbnRlcmVzdGluZyBmb3IgYSBORVRD
T05GIHNwZWFraW5nIHNsb3QgaXMgYW4gYW5hbHlzaXMgb2Ygd2hhdCByZXF1aXJlbWVudHMgZnJv
bSDigJxkcmFmdC1pZXRmLWkycnMtcHViLXN1Yi1yZXF1aXJlbWVudHPigJ0gYXJlIG1ldCBieSDi
gJxkcmFmdC1jbGVtbS1uZXRjb25mLXlhbmctcHVzaOKAnS4gICAoRHVyaW5nIElFVEYgOTIsIE5F
VENPTkYgcmV2aWV3ZWQgZHJhZnQtY2xlbW0uIFRoZXJlIHdhcyBhIHN0cmF3bWFuIHBvbGwgKDEy
IHllcywgMCBubykgd2hlcmUgdGhlIFdHIGluZGljYXRlZCBpbnRlcmVzdC4pDQoNCldvdWxkIE5F
VENPTkYgd2FudCBBbGV4IG9yIEkgdG8gc3BlYWsgb24gYSByZXF1aXJlbWVudHMtdG8tdGVjaG5v
bG9neSBjb21wYXJpc29uIGluIFByYWd1ZT8NCg0KRXJpYw0KDQpGcm9tOiBSdGcteWFuZy1jb29y
ZCBbbWFpbHRvOnJ0Zy15YW5nLWNvb3JkLWJvdW5jZXNAaWV0Zi5vcmddIE9uIEJlaGFsZiBPZiBT
dXNhbiBIYXJlcw0KU2VudDogVHVlc2RheSwgSnVuZSAzMCwgMjAxNSA1OjE2IFBNDQpUbzogJ01h
aGVzaCBKZXRoYW5hbmRhbmknDQpDYzogUnRnLXlhbmctY29vcmRAaWV0Zi5vcmc7IGkycnNAaWV0
Zi5vcmc7ICdORVRNT0QgV29ya2luZyBHcm91cCc7ICdOZXRjb25mJzsgJ0JSVU5HQVJELCBERUJP
UkFIIEEnDQpTdWJqZWN0OiBSZTogW1J0Zy15YW5nLWNvb3JkXSBbbmV0bW9kXSBSZXF1aXJlbWVu
dHMgZm9yIEkyUlMgcHJvdG9jb2wgYW5kIEkyUlMgaW50ZXJpbSAoNi8yNC8yMDE1IGF0IDEwOjAw
IC0gMTE6MzBhbSBFVCkNCg0KTWFoZXNoOg0KDQpPay4gIEkgdGhvdWdodCB5b3Ugd2VyZSBnb2lu
ZyB0byByZXZpZXcgdGhlIHJlcXVpcmVtZW50IGRvY3VtZW50cyBhbmQgZ2l2ZSBJMlJTIGFuIGlu
aXRpYWwgZ3Vlc3MuICBXZSBoYXZlIHByZXNlbnQgdGhlc2UgYXQgMyBJMlJTIGludGVyaW1zLCBh
bmQgdGhlIHNsaWRlcyBhcmUgb25saW5lLiAgSSB3aWxsIHNlbmQgdGhlIG1pbnV0ZXMgdG8gdGhl
IG5ldGNvbmYgd29ya2luZyBncm91cCBmb3IgdGhlaXIgcmV2aWV3Lg0KDQpUaGUgcHJlc2VudGF0
aW9uIG9mIHRoZSByZXF1aXJlbWVudHMgd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmcgdGltZToNCg0K
DQoxKSAgICAgIDEwIHRvcCByZXF1aXJlbWVudHMg4oCTIDUtMTAgbWludXRlcyBbU3VlIEhhcmVz
XQ0KDQoyKSAgICAgIEVwaGVtZXJhbCBzdGF0ZSDigJMgMTUgbWludXRlcyBbSmVmZiBIYWFzXQ0K
DQozKSAgICAgIFB1Yi9zdWIgcmVxdWlyZW1lbnRzIOKAkyAxMC0xNSBtaW51dGVzIFtFcmljIFZv
aXRdDQoNCjQpICAgICAgVHJhY2VhYmlsaXR5IFsgMTAtMTUgbWludXRlc10NCg0KNSkgICAgICBT
ZWN1cml0eSBbMTAgbWludXRlc10gW1N1ZSBIYXJlcyBhbmQgSm9lbCBIYWxwZXJuXQ0KDQo2KSAg
ICAgIFJldmlldyBvZiBJMlJTIG1vZGVscyBbNSBtaW51dGVzXQ0KDQo3KQ0KSWYgeW91IGhhdmUg
aGVhcmQgcHViL3N1YiBhbmQgdHJhY2VhYmlsaXR5IHJlcXVpcmVtZW50cywgeW91IG1heSBkZWxl
dGUgdGhpcyBmcm9tIHRpbWVsaW5lLg0KDQpTdWUgSGFyZXMNCg0KRnJvbTogUnRnLXlhbmctY29v
cmQgW21haWx0bzpydGcteWFuZy1jb29yZC1ib3VuY2VzQGlldGYub3JnXSBPbiBCZWhhbGYgT2Yg
TWFoZXNoIEpldGhhbmFuZGFuaQ0KU2VudDogVHVlc2RheSwgSnVuZSAzMCwgMjAxNSAzOjQ0IFBN
DQpUbzogU3VzYW4gSGFyZXMNCkNjOiBSdGcteWFuZy1jb29yZEBpZXRmLm9yZzxtYWlsdG86UnRn
LXlhbmctY29vcmRAaWV0Zi5vcmc+OyBpMnJzQGlldGYub3JnPG1haWx0bzppMnJzQGlldGYub3Jn
PjsgQlJVTkdBUkQsIERFQk9SQUggQTsgTmV0Y29uZjsgTkVUTU9EIFdvcmtpbmcgR3JvdXANClN1
YmplY3Q6IFJlOiBbUnRnLXlhbmctY29vcmRdIFtuZXRtb2RdIFJlcXVpcmVtZW50cyBmb3IgSTJS
UyBwcm90b2NvbCBhbmQgSTJSUyBpbnRlcmltICg2LzI0LzIwMTUgYXQgMTA6MDAgLSAxMTozMGFt
IEVUKQ0KDQpTdXNhbiwNCg0KVGhlIE5FVENPTkYgV0cgYWNrbm93bGVkZ2VzIHRoZSByZWNlaXB0
IG9mIHRoZSByZXF1aXJlbWVudHMuDQoNClRoZXNlIHJlcXVpcmVtZW50cyBuZWVkIHRvIGJlIGRp
c2N1c3NlZCBpbiBmcm9udCBvZiB0aGUgTkVUQ09ORiBXRy4gV291bGQgc3VnZ2VzdCB0aGF0IGky
cnMgV0cgcHJlc2VudCB0aGVzZSByZXF1aXJlbWVudHMgaW4gZnJvbnQgb2YgdGhlIE5FVENPTkYg
V0cgZHVyaW5nIElFVEYgOTMgaW4gUHJhZ3VlIHRvIGtpY2sgc3RhcnQgZGlzY3Vzc2lvbiB3aXRo
aW4gdGhlIFdHLiBQbGVhc2UgbGV0IHVzIGtub3cgaG93IG11Y2ggdGltZSB5b3UgKG9yIHNvbWVv
bmUgZnJvbSBpMnJzKSB3b3VsZCBuZWVkIHRvIHByZXNlbnQgdGhlIHJlcXVpcmVtZW50cy4NCg0K
VGhhbmtzLg0KDQpPbiBKdW4gMjMsIDIwMTUsIGF0IDExOjE5IEFNLCBTdXNhbiBIYXJlcyA8c2hh
cmVzQG5kemguY29tPG1haWx0bzpzaGFyZXNAbmR6aC5jb20+PiB3cm90ZToNCg0KTmV0Y29uZiBX
b3JraW5nIEdyb3VwOg0KDQpUaGUgSTJSUyBXRyB3b3VsZCBsaWtlIHRvIHBhc3MgeW91IGEgc2V0
IG9mIHJlcXVpcmVtZW50cyBmb3IgdGhlIEkyUlMgcHJvdG9jb2wsIGFuZCBhc2tzIHRoYXQgeW91
IHByb3ZpZGUgYW4gYW5hbHlzaXMgYnkgSUVURiA5MyBvbiB3aGV0aGVyIE5FVENPTkYgb3IgUkVT
VENPTkYgY2FuIG1lZXQgdGhlc2UgcmVxdWlyZW1lbnRzLiAgIFdlIGV4cGVjdCB0aGF0IHRoZXNl
IHJlcXVpcmVtZW50cyBtYXkgcmVxdWlyZSBjaGFuZ2VzIHRvIHRoZSBlaXRoZXIgTkVUQ09ORiBv
ciBSRVNUQ09ORi4NCg0KVGhlIEkyUlMgYXJjaGl0ZWN0dXJlIGRvY3VtZW50IChkcmFmdC1pZXRm
LWkycnMtYXJjaGl0ZWN0dXJlLTA5PGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2Ry
YWZ0LWlldGYtaTJycy1hcmNoaXRlY3R1cmUvPikgcHJvdmlkZXMgYSBoaWdoLWxldmVsIG92ZXJ2
aWV3IG9mIHRoZSBJMlJTICBwcm90b2NvbC4gIFRoZSBJMlJTIGhhcyBjb21waWxlZCB0aGUgZm9s
bG93aW5nIGRvY3VtZW50cyB0byBwcm92aWRlIHRoZSBhZGRpdGlvbmFsIGRldGFpbHMgb24gdGhl
IHJlcXVpcmVtZW50cyBmb3IgdGhlIHByb3RvY29scy4NCg0KMSkgICAgICBkcmFmdC1pZXRmLWky
cnMtZXBoZW1lcmFsLXN0YXRlLTAwPGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2Ry
YWZ0LWlldGYtaTJycy1lcGhlbWVyYWwtc3RhdGUvPg0KMikgICAgICBkcmFmdC1pZXRmLWkycnMt
cHViLXN1Yi1yZXF1aXJlbWVudHMtMDI8aHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2Mv
ZHJhZnQtaWV0Zi1pMnJzLXB1Yi1zdWItcmVxdWlyZW1lbnRzLz4NCjMpICAgICAgZHJhZnQtaWV0
Zi1pMnJzLXRyYWNlYWJpbGl0eS0wMzxodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9k
cmFmdC1pZXRmLWkycnMtdHJhY2VhYmlsaXR5Lz4NCg0KVGhlIGRyYWZ0LWlldGYtaTJycy1lcGhl
bWVyYWwtc3RhdGUtMDAgY29udGFpbnMgdGhlIHJlc3VsdHMgb2YgdGhlIGRpc2N1c3Npb24gZnJv
bSB0aGUgNi8xMCBpbnRlcmltIGFuZCB0aGUgdG9wIDEwIHJlcXVpcmVtZW50cyBmb3IgSTJSUy4g
IEluIGFkZGl0aW9uLCB0aGUgZHJhZnQtaWV0Zi1pMnJzLWVwaGVtZXJhbC1zdGF0ZS0wMCBjb250
YWlucyBhbiBzZXQgb2YgZGV0YWlsZWQgcmVxdWlyZW1lbnRzIG9uIGhvdyB0aGUgSTJSUyBXRyBz
ZWVzIHRoZSBJMlJTIHByb3RvY29sIG9wZXJhdGluZy4gIFRoZXNlIGRldGFpbGVkIHJlcXVpcmVt
ZW50cyBhcmUgdG8gYmUgc2VlbiBhcyBzdWdnZXN0aW9ucyBvbiB3aGF0IHR5cGUgb2Ygc29sdXRp
b24gdGhlIEkyUlMgV0cgd291bGQgbGlrZSB0byBzZWUsIGJ1dCBJMlJTIFdHIGlzIGFza2luZyB0
aGUgTkVUQ09ORiBXRyB0byBwcm92aWRlIGl0cyBiZXN0IGRlc2lnbmVkIHByb3RvY29sLiAgUGxl
YXNlIG5vdGUgYXMgcGFydCBvZiB0aGVzZSBkZXRhaWxlZCByZXF1aXJlbWVudCB0aGUgZHJhZnQt
aWV0Zi1pMnJzLWVwaGVtZXJhbC1zdGF0ZXMtMDAgY29udGFpbnMgdGhlIGlkZWEgb2YgdXNpbmcg
bWV0YWRhdGEgdG8gcmVjb3JkIHNlY29uZGFyeSBpZGVudGl0eS4NCg0KVGhlIEkyUlMgcHJvdG9j
b2wgaXMgZHJpdmVuIGJ5IGRhdGEtbW9kZWxzLiAgVGhlIGFwcHJvdmVkIGRhdGEgbW9kZWxzIGZv
ciBwcm90b2NvbCBpbmRlcGVuZGVudCBzZXJ2aWNlcyBhcmU6DQotICAgICAgICAgIGRyYWZ0LWll
dGYtaTJycy1yaWItZGF0YS1tb2RlbC0wMDxodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2Rv
Yy9kcmFmdC1pZXRmLWkycnMtcmliLWRhdGEtbW9kZWwvPg0KLSAgICAgICAgICBGaWx0ZXItQmFz
ZWQgUklCUzogIGRyYWZ0LWtpbmktaTJycy1mYi1yaWItZGF0YS1tb2RlbC4wMCAocmVsZWFzZWQg
bGF0ZXIgdGhpcyB3ZWVrKQ0KLSAgICAgICAgICBUb3BvbG9neSBtb2RlbCB3aGljaCBpcyBhIGNv
bXBvc2l0ZSBvZjoNCm8gICBHZW5lcmljIHRvcG9sb2d5IG1vZGVsOiBkcmFmdC1pZXRmLWkycnMt
eWFuZy1uZXR3b3JrLXRvcG8tMDE8aHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvZHJh
ZnQtaWV0Zi1pMnJzLXlhbmctbmV0d29yay10b3BvLz4NCm8gICBMMyB0b3BvbG9neSBtb2RlbDog
ZHJhZnQtaWV0Zi1pMnJzLXlhbmctbDMtdG9wb2xvZ3ktMDA8aHR0cHM6Ly9kYXRhdHJhY2tlci5p
ZXRmLm9yZy9kb2MvZHJhZnQtaWV0Zi1pMnJzLXlhbmctbDMtdG9wb2xvZ3kvPg0KbyAgIEwyIHRv
cG9sb2d5IG1vZGVsOiBkcmFmdC1pZXRmLWkycnMteWFuZy1sMi1uZXR3b3JrLXRvcG9sb2d5LTAw
PGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2RyYWZ0LWlldGYtaTJycy15YW5nLWwy
LW5ldHdvcmstdG9wb2xvZ3kvPg0KbyAgIEwxIFRvcG9sb2d5IG1vZGVsOiBkcmFmdC16aGFuZy1p
MnJzLWwxLXRvcG8teWFuZy1tb2RlbC0wMSAoLTAyIHJlbGVhc2VkIGxhdGVyIHRoaXMgd2Vlayku
DQpvICAgU2VydmljZSB0b3BvbG9neSBtb2RlbDogZHJhZnQtaGFyZXMtaTJycy1zZXJ2aWNlLXRv
cG8teWFuZy1tb2RlbC0wMCAocmVsZWFzZWQgb24gV2VkbmVzZGF5KQ0KDQpBdCB0aGlzIHRpbWUs
IG5vbmUgb2YgdGhlIFRvcG9sb2d5IG1vZGVscyB1dGlsaXplIFRyYWZmaWMgZW5naW5lZXJpbmcu
ICBJdCBpcyBhbnRpY2lwYXRlZCB0aGF0IHRoZXNlIG1vZGVscyB3aWxsIHN1cHBvcnQgdHJhZmZp
YyBlbmdpbmVlcmluZy4gIEVzdGltYXRlZCByYXRlcyBvZiB0cmFuc2ZlciBhbmQgdGltaW5nIHJl
cXVpcmVtZW50cyBmb3IgdGhlc2UgbW9kdWxlcyBhcmUgYXQ6IGh0dHA6Ly90cmFjLnRvb2xzLmll
dGYub3JnL3dnL2kycnMvdHJhYy93aWtpIC0gdW5kZXIgdGhlIHByb3RvY29sIHJlcXVpcmVtZW50
cyB0YWJsZS4NCg0KV2UgaG9wZSB0aGF0IE5FVENPTkYgV0cgY2FuIHByb3ZpZGUgc29tZSBpbml0
aWFsIGZlZWRiYWNrIG9uIHRoZXNlIHJlcXVpcmVtZW50cyBieSBJRVRGIDkzIGF0IHRoZSBUdWVz
ZGF5IEkyUlMgc2Vzc2lvbi4gICBJMlJTIHdpbGwgdXNlIHRoZSA2LzI0IGludGVyaW0gYXQgMTA6
MDAtMTE6MzBhbSBFVCAgdG8gcHJvdmlkZSBhIHRpbWUgZm9yIGFueSBwYXJ0aWNpcGF0ZSBpbiB0
aGUgSTJSUywgbmV0Y29uZiwgb3IgbmV0bW9kIGdyb3VwIHRvIGFzayBhZGRpdGlvbmFsIHF1ZXN0
aW9ucyBvbiB0aGVzZSByZXF1aXJlbWVudHMuDQoNClN1ZSBIYXJlcw0KDQpJbnRlcmltIHRpbWU6
IDEwOjAwLTExOjMwYW0gRVQNCkRhdGUgNi8yNC8yMDE1DQpXZWJleDoNCmh0dHBzOi8vaWV0Zi53
ZWJleC5jb20vaWV0Zi9qLnBocD9NVElEPW00MjYwYmVlN2JlNjFjYjE3YjAwMDhhM2M1MjA2OWQw
Zg0KDQphZ2VuZGE6DQoNCjEwOjAwIOKAkyAxMDowNSDigJMgQmFzaCBBZ2VuZGENCjEwOjA1IOKA
kyAxMDoyMC0gLSAgcmV2aWV3IG9mIHJlcXVpcmVtZW50cyBmcm9tDQpkcmFmdC1pZXRmLWkycnMt
ZXBoZW1lcmFsLXN0YXRlLTAwDQpkcmFmdC1pZXRmLWkycnMtcHViLXN1Yi1yZXF1aXJlbWVudHMt
MDINCmRyYWZ0LWlldGYtaTJycy10cmFjZWFiaWxpdHktMDMNClRpbWluZyByZXF1aXJlbWVudHMN
Cg0KMTA6MjAg4oCTIDEwOjMwICAgIFJldmlldyBvZiByZXF1aXJlbWVudHMgZm9yIG11dHVhbCBh
dXRoZW50aWNhdGlvbiwNCmFuZCB0cmFuc2FjdGlvbiBpbiAgZHJhZnQtaGFyZXMtYXV0aC10cmFu
cy0wMSByZXF1aXJlbWVudHMNCg0KMTA6MzAtIDExOjMwICAgICBPcGVuIGRpc2N1c3Npb24gZm9y
IEkyUlMgUmVxdWlyZW1lbnRzDQoNClByb2NlZWRpbmdzIGFuZCBzbGlkZXMgY2FuIGJlIGZvdW5k
IGF0Og0KaHR0cDovL3d3dy5pZXRmLm9yZy9wcm9jZWVkaW5ncy9pbnRlcmltLzIwMTUvMDYvMjQv
aTJycy9wcm9jZWVkaW5ncy5odG1sDQoNClN1ZSBIYXJlcw0KDQoNCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQpuZXRtb2QgbWFpbGluZyBsaXN0DQpuZXRt
b2RAaWV0Zi5vcmc8bWFpbHRvOm5ldG1vZEBpZXRmLm9yZz4NCmh0dHBzOi8vd3d3LmlldGYub3Jn
L21haWxtYW4vbGlzdGluZm8vbmV0bW9kDQoNCk1haGVzaCBKZXRoYW5hbmRhbmkNCm1qZXRoYW5h
bmRhbmlAZ21haWwuY29tPG1haWx0bzptamV0aGFuYW5kYW5pQGdtYWlsLmNvbT4NCg0KDQoNCg==

--_000_EF64FF31F4C4384DBCE5D513A791C2B121B00EE1xmbalnx11ciscoc_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy
bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt
YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv
ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTQgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl
PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6
SGVsdmV0aWNhOw0KCXBhbm9zZS0xOjIgMTEgNiA0IDIgMiAyIDIgMiA0O30NCkBmb250LWZhY2UN
Cgl7Zm9udC1mYW1pbHk6SGVsdmV0aWNhOw0KCXBhbm9zZS0xOjIgMTEgNiA0IDIgMiAyIDIgMiA0
O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToyIDE1IDUg
MiAyIDIgNCAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OlRhaG9tYTsNCglwYW5v
c2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDt9DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5N
c29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttYXJnaW46MGluOw0KCW1h
cmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJU
aW1lcyBOZXcgUm9tYW4iLCJzZXJpZiI7fQ0KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGluaw0KCXtt
c28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6Ymx1ZTsNCgl0ZXh0LWRlY29yYXRpb246dW5k
ZXJsaW5lO30NCmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZA0KCXttc28tc3R5
bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6cHVycGxlOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxp
bmU7fQ0KcC5Nc29BY2V0YXRlLCBsaS5Nc29BY2V0YXRlLCBkaXYuTXNvQWNldGF0ZQ0KCXttc28t
c3R5bGUtcHJpb3JpdHk6OTk7DQoJbXNvLXN0eWxlLWxpbms6IkJhbGxvb24gVGV4dCBDaGFyIjsN
CgltYXJnaW46MGluOw0KCW1hcmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250LXNpemU6OC4wcHQ7
DQoJZm9udC1mYW1pbHk6IlRhaG9tYSIsInNhbnMtc2VyaWYiO30NCnAuTXNvTGlzdFBhcmFncmFw
aCwgbGkuTXNvTGlzdFBhcmFncmFwaCwgZGl2Lk1zb0xpc3RQYXJhZ3JhcGgNCgl7bXNvLXN0eWxl
LXByaW9yaXR5OjM0Ow0KCW1hcmdpbi10b3A6MGluOw0KCW1hcmdpbi1yaWdodDowaW47DQoJbWFy
Z2luLWJvdHRvbTowaW47DQoJbWFyZ2luLWxlZnQ6LjVpbjsNCgltYXJnaW4tYm90dG9tOi4wMDAx
cHQ7DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIiwi
c2VyaWYiO30NCnNwYW4uYXBwbGUtY29udmVydGVkLXNwYWNlDQoJe21zby1zdHlsZS1uYW1lOmFw
cGxlLWNvbnZlcnRlZC1zcGFjZTt9DQpzcGFuLkVtYWlsU3R5bGUxOQ0KCXttc28tc3R5bGUtdHlw
ZTpwZXJzb25hbDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsInNhbnMtc2VyaWYiOw0KCWNvbG9y
OiMxRjQ5N0Q7fQ0Kc3Bhbi5FbWFpbFN0eWxlMjANCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwt
cmVwbHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLCJzYW5zLXNlcmlmIjsNCgljb2xvcjojMUY0
OTdEO30NCnNwYW4uQmFsbG9vblRleHRDaGFyDQoJe21zby1zdHlsZS1uYW1lOiJCYWxsb29uIFRl
eHQgQ2hhciI7DQoJbXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCW1zby1zdHlsZS1saW5rOiJCYWxs
b29uIFRleHQiOw0KCWZvbnQtZmFtaWx5OiJUYWhvbWEiLCJzYW5zLXNlcmlmIjt9DQouTXNvQ2hw
RGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsNCglmb250LXNpemU6MTAuMHB0
O30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjguNWluIDExLjBpbjsNCgltYXJnaW46MS4w
aW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRTZWN0aW9uMQ0KCXtwYWdlOldvcmRTZWN0
aW9uMTt9DQovKiBMaXN0IERlZmluaXRpb25zICovDQpAbGlzdCBsMA0KCXttc28tbGlzdC1pZDox
ODkyMzAyNTU1Ow0KCW1zby1saXN0LXR5cGU6aHlicmlkOw0KCW1zby1saXN0LXRlbXBsYXRlLWlk
czotMTMyNDQyNzg3MiA2NzY5ODcwNSA2NzY5ODcxMyA2NzY5ODcxNSA2NzY5ODcwMyA2NzY5ODcx
MyA2NzY5ODcxNSA2NzY5ODcwMyA2NzY5ODcxMyA2NzY5ODcxNTt9DQpAbGlzdCBsMDpsZXZlbDEN
Cgl7bXNvLWxldmVsLXRleHQ6IiUxXCkiOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1z
by1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47fQ0KQGxp
c3QgbDA6bGV2ZWwyDQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmFscGhhLWxvd2VyOw0KCW1z
by1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsN
Cgl0ZXh0LWluZGVudDotLjI1aW47fQ0KQGxpc3QgbDA6bGV2ZWwzDQoJe21zby1sZXZlbC1udW1i
ZXItZm9ybWF0OnJvbWFuLWxvd2VyOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1s
ZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7DQoJdGV4dC1pbmRlbnQ6LTkuMHB0O30NCkBsaXN0
IGwwOmxldmVsNA0KCXttc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVy
LXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluO30NCkBsaXN0IGwwOmxldmVsNQ0K
CXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDphbHBoYS1sb3dlcjsNCgltc28tbGV2ZWwtdGFiLXN0
b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6
LS4yNWluO30NCkBsaXN0IGwwOmxldmVsNg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpyb21h
bi1sb3dlcjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBv
c2l0aW9uOnJpZ2h0Ow0KCXRleHQtaW5kZW50Oi05LjBwdDt9DQpAbGlzdCBsMDpsZXZlbDcNCgl7
bXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0
Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjt9DQpAbGlzdCBsMDpsZXZlbDgNCgl7bXNvLWxldmVsLW51
bWJlci1mb3JtYXQ6YWxwaGEtbG93ZXI7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNv
LWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjt9DQpAbGlz
dCBsMDpsZXZlbDkNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6cm9tYW4tbG93ZXI7DQoJbXNv
LWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpyaWdodDsN
Cgl0ZXh0LWluZGVudDotOS4wcHQ7fQ0Kb2wNCgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KdWwNCgl7
bWFyZ2luLWJvdHRvbTowaW47fQ0KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4N
CjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjEwMjYiIC8+DQo8L3htbD48
IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlbGF5b3V0IHY6ZXh0
PSJlZGl0Ij4NCjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAvPg0KPC9vOnNoYXBlbGF5
b3V0PjwveG1sPjwhW2VuZGlmXS0tPg0KPC9oZWFkPg0KPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9
ImJsdWUiIHZsaW5rPSJwdXJwbGUiPg0KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5
OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdE
Ij5JIHByZXNlbnRlZCBQdWJTdWIg4oCYLTAx4oCZIHJlcXVpcmVtZW50cyBpbiBORVRDT05GIGF0
IElFVEYgOTIuJm5ic3A7Jm5ic3A7ICZuYnNwO0NoYW5nZXMgaW4g4oCYLTAy4oCZIGFyZSBsaWtl
bHkgbm90IGVub3VnaCBmb3IgYSBzcGVha2luZyBzbG90LiZuYnNwOyZuYnNwOw0KPG86cD48L286
cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlm
JnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5
OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdE
Ij5XaGF0IG1pZ2h0IGJlIGludGVyZXN0aW5nIGZvciBhIE5FVENPTkYgc3BlYWtpbmcgc2xvdCBp
cyBhbiBhbmFseXNpcyBvZiB3aGF0IHJlcXVpcmVtZW50cyBmcm9tIOKAnGRyYWZ0LWlldGYtaTJy
cy1wdWItc3ViLXJlcXVpcmVtZW50c+KAnSBhcmUgbWV0IGJ5IOKAnGRyYWZ0LWNsZW1tLW5ldGNv
bmYteWFuZy1wdXNo4oCdLiZuYnNwOyZuYnNwOw0KIChEdXJpbmcgSUVURiA5MiwgTkVUQ09ORiBy
ZXZpZXdlZCBkcmFmdC1jbGVtbS4gVGhlcmUgd2FzIGEgc3RyYXdtYW4gcG9sbCAoMTIgeWVzLCAw
IG5vKSB3aGVyZSB0aGUgV0cgaW5kaWNhdGVkIGludGVyZXN0Lik8bzpwPjwvbzpwPjwvc3Bhbj48
L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm
b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29s
b3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2Fs
aWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPldvdWxkIE5F
VENPTkYgd2FudCBBbGV4IG9yIEkgdG8gc3BlYWsgb24gYSByZXF1aXJlbWVudHMtdG8tdGVjaG5v
bG9neSBjb21wYXJpc29uIGluIFByYWd1ZT88bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTom
cXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+
PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g
c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oywm
cXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPkVyaWM8bzpwPjwvbzpwPjwvc3Bh
bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBw
dDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7
Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPGRpdj4NCjxkaXYg
c3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0I1QzRERiAxLjBwdDtwYWRkaW5n
OjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4t
bGVmdDouNWluIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTom
cXVvdDtUYWhvbWEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+RnJvbTo8L3NwYW4+PC9i
PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1RhaG9tYSZx
dW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4gUnRnLXlhbmctY29vcmQgW21haWx0bzpydGct
eWFuZy1jb29yZC1ib3VuY2VzQGlldGYub3JnXQ0KPGI+T24gQmVoYWxmIE9mIDwvYj5TdXNhbiBI
YXJlczxicj4NCjxiPlNlbnQ6PC9iPiBUdWVzZGF5LCBKdW5lIDMwLCAyMDE1IDU6MTYgUE08YnI+
DQo8Yj5Ubzo8L2I+ICdNYWhlc2ggSmV0aGFuYW5kYW5pJzxicj4NCjxiPkNjOjwvYj4gUnRnLXlh
bmctY29vcmRAaWV0Zi5vcmc7IGkycnNAaWV0Zi5vcmc7ICdORVRNT0QgV29ya2luZyBHcm91cCc7
ICdOZXRjb25mJzsgJ0JSVU5HQVJELCBERUJPUkFIIEEnPGJyPg0KPGI+U3ViamVjdDo8L2I+IFJl
OiBbUnRnLXlhbmctY29vcmRdIFtuZXRtb2RdIFJlcXVpcmVtZW50cyBmb3IgSTJSUyBwcm90b2Nv
bCBhbmQgSTJSUyBpbnRlcmltICg2LzI0LzIwMTUgYXQgMTA6MDAgLSAxMTozMGFtIEVUKTxvOnA+
PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz
dHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlm
JnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPk1haGVzaDoNCjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0i
Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3Nh
bnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0
eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1
b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5Pay4gJm5ic3A7SSB0aG91Z2h0IHlv
dSB3ZXJlIGdvaW5nIHRvIHJldmlldyB0aGUgcmVxdWlyZW1lbnQgZG9jdW1lbnRzIGFuZCBnaXZl
IEkyUlMgYW4gaW5pdGlhbCBndWVzcy4mbmJzcDsgV2UgaGF2ZSBwcmVzZW50IHRoZXNlIGF0IDMg
STJSUw0KIGludGVyaW1zLCBhbmQgdGhlIHNsaWRlcyBhcmUgb25saW5lLiZuYnNwOyBJIHdpbGwg
c2VuZCB0aGUgbWludXRlcyB0byB0aGUgbmV0Y29uZiB3b3JraW5nIGdyb3VwIGZvciB0aGVpciBy
ZXZpZXcuDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls
ZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m
YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMx
RjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
IHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm
b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29s
b3I6IzFGNDk3RCI+VGhlIHByZXNlbnRhdGlvbiBvZiB0aGUgcmVxdWlyZW1lbnRzIHdpbGwgbmVl
ZCB0aGUgZm9sbG93aW5nIHRpbWU6DQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlm
JnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW47dGV4dC1pbmRl
bnQ6LS4yNWluO21zby1saXN0OmwwIGxldmVsMSBsZm8yIj4NCjwhW2lmICFzdXBwb3J0TGlzdHNd
PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm
cXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48c3BhbiBzdHlsZT0i
bXNvLWxpc3Q6SWdub3JlIj4xKTxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90O1RpbWVzIE5l
dyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQo8L3NwYW4+PC9z
cGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m
YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMx
RjQ5N0QiPjEwIHRvcCByZXF1aXJlbWVudHMg4oCTIDUtMTAgbWludXRlcyBbU3VlIEhhcmVzXQ0K
PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxl
PSJtYXJnaW4tbGVmdDoxLjBpbjt0ZXh0LWluZGVudDotLjI1aW47bXNvLWxpc3Q6bDAgbGV2ZWwx
IGxmbzIiPg0KPCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4w
cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7
O2NvbG9yOiMxRjQ5N0QiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPjIpPHNwYW4gc3R5
bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsNCjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBz
dHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZx
dW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+RXBoZW1lcmFsIHN0YXRlIOKAkyAx
NSBtaW51dGVzIFtKZWZmIEhhYXNdDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluO3RleHQtaW5kZW50Oi0u
MjVpbjttc28tbGlzdDpsMCBsZXZlbDEgbGZvMiI+DQo8IVtpZiAhc3VwcG9ydExpc3RzXT48c3Bh
biBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7
LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PHNwYW4gc3R5bGU9Im1zby1s
aXN0Oklnbm9yZSI+Myk8c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9t
YW4mcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KPC9zcGFuPjwvc3Bhbj48
L3NwYW4+PCFbZW5kaWZdPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5
OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdE
Ij5QdWIvc3ViIHJlcXVpcmVtZW50cyDigJMgMTAtMTUgbWludXRlcyBbRXJpYyBWb2l0XTxvOnA+
PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFy
Z2luLWxlZnQ6MS4waW47dGV4dC1pbmRlbnQ6LS4yNWluO21zby1saXN0OmwwIGxldmVsMSBsZm8y
Ij4NCjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv
bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xv
cjojMUY0OTdEIj48c3BhbiBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj40KTxzcGFuIHN0eWxlPSJm
b250OjcuMHB0ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7DQo8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtz
YW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPlRyYWNlYWJpbGl0eSBbIDEwLTE1IG1pbnV0
ZXNdDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIg
c3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluO3RleHQtaW5kZW50Oi0uMjVpbjttc28tbGlzdDpsMCBs
ZXZlbDEgbGZvMiI+DQo8IVtpZiAhc3VwcG9ydExpc3RzXT48c3BhbiBzdHlsZT0iZm9udC1zaXpl
OjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYm
cXVvdDs7Y29sb3I6IzFGNDk3RCI+PHNwYW4gc3R5bGU9Im1zby1saXN0Oklnbm9yZSI+NSk8c3Bh
biBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KPC9zcGFuPjwvc3Bhbj48L3NwYW4+PCFbZW5kaWZdPjxz
cGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVv
dDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5TZWN1cml0eSBbMTAgbWlu
dXRlc10gW1N1ZSBIYXJlcyBhbmQgSm9lbCBIYWxwZXJuXTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4N
CjxwIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW47dGV4
dC1pbmRlbnQ6LS4yNWluO21zby1saXN0OmwwIGxldmVsMSBsZm8yIj4NCjwhW2lmICFzdXBwb3J0
TGlzdHNdPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Nh
bGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj48c3BhbiBz
dHlsZT0ibXNvLWxpc3Q6SWdub3JlIj42KTxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90O1Rp
bWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQo8L3Nw
YW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7
Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2Nv
bG9yOiMxRjQ5N0QiPlJldmlldyBvZiBJMlJTIG1vZGVscyBbNSBtaW51dGVzXQ0KPG86cD48L286
cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4t
bGVmdDoxLjBpbjt0ZXh0LWluZGVudDotLjI1aW47bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzIiPg0K
PCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m
YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMx
RjQ5N0QiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPjcpPHNwYW4gc3R5bGU9ImZvbnQ6
Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsNCjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBzdHlsZT0iZm9u
dC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMt
c2VyaWYmcXVvdDs7Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxl
PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7
c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMUY0OTdEIj5JZiB5b3UgaGF2ZSBoZWFyZCBwdWIvc3Vi
IGFuZCB0cmFjZWFiaWxpdHkgcmVxdWlyZW1lbnRzLCB5b3UgbWF5IGRlbGV0ZSB0aGlzIGZyb20g
dGltZWxpbmUuDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz
dHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9y
OiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBw
dDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7
Y29sb3I6IzFGNDk3RCI+U3VlIEhhcmVzDQo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQt
c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNl
cmlmJnF1b3Q7O2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxk
aXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNCNUM0REYgMS4w
cHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls
ZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7VGFob21hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPkZyb206
PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVv
dDtUYWhvbWEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+IFJ0Zy15YW5nLWNvb3JkIFs8
YSBocmVmPSJtYWlsdG86cnRnLXlhbmctY29vcmQtYm91bmNlc0BpZXRmLm9yZyI+bWFpbHRvOnJ0
Zy15YW5nLWNvb3JkLWJvdW5jZXNAaWV0Zi5vcmc8L2E+XQ0KPGI+T24gQmVoYWxmIE9mIDwvYj5N
YWhlc2ggSmV0aGFuYW5kYW5pPGJyPg0KPGI+U2VudDo8L2I+IFR1ZXNkYXksIEp1bmUgMzAsIDIw
MTUgMzo0NCBQTTxicj4NCjxiPlRvOjwvYj4gU3VzYW4gSGFyZXM8YnI+DQo8Yj5DYzo8L2I+IDxh
IGhyZWY9Im1haWx0bzpSdGcteWFuZy1jb29yZEBpZXRmLm9yZyI+UnRnLXlhbmctY29vcmRAaWV0
Zi5vcmc8L2E+OyA8YSBocmVmPSJtYWlsdG86aTJyc0BpZXRmLm9yZyI+DQppMnJzQGlldGYub3Jn
PC9hPjsgQlJVTkdBUkQsIERFQk9SQUggQTsgTmV0Y29uZjsgTkVUTU9EIFdvcmtpbmcgR3JvdXA8
YnI+DQo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtSdGcteWFuZy1jb29yZF0gW25ldG1vZF0gUmVxdWly
ZW1lbnRzIGZvciBJMlJTIHByb3RvY29sIGFuZCBJMlJTIGludGVyaW0gKDYvMjQvMjAxNSBhdCAx
MDowMCAtIDExOjMwYW0gRVQpPG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8L2Rpdj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48bzpwPiZuYnNw
OzwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWlu
Ij5TdXNhbiw8bzpwPjwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls
ZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+VGhlIE5FVENP
TkYgV0cgYWNrbm93bGVkZ2VzIHRoZSByZWNlaXB0IG9mIHRoZSByZXF1aXJlbWVudHMuPG86cD48
L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy
Z2luLWxlZnQ6LjVpbiI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+VGhlc2UgcmVxdWlyZW1l
bnRzIG5lZWQgdG8gYmUgZGlzY3Vzc2VkIGluIGZyb250IG9mIHRoZSBORVRDT05GIFdHLiBXb3Vs
ZCBzdWdnZXN0IHRoYXQgaTJycyBXRyBwcmVzZW50IHRoZXNlIHJlcXVpcmVtZW50cyBpbiBmcm9u
dCBvZiB0aGUgTkVUQ09ORiBXRyBkdXJpbmcgSUVURiA5MyBpbiBQcmFndWUgdG8ga2ljayBzdGFy
dCBkaXNjdXNzaW9uIHdpdGhpbiB0aGUgV0cuDQogUGxlYXNlIGxldCB1cyBrbm93IGhvdyBtdWNo
IHRpbWUgeW91IChvciBzb21lb25lIGZyb20gaTJycykgd291bGQgbmVlZCB0byBwcmVzZW50IHRo
ZSByZXF1aXJlbWVudHMuPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PG86cD4mbmJzcDs8L286cD48L3A+
DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6
LjVpbiI+VGhhbmtzLjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0K
PGRpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJtYXJnaW4tdG9wOjUuMHB0O21hcmdpbi1ib3R0b206
NS4wcHQiPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDou
NWluIj5PbiBKdW4gMjMsIDIwMTUsIGF0IDExOjE5IEFNLCBTdXNhbiBIYXJlcyAmbHQ7PGEgaHJl
Zj0ibWFpbHRvOnNoYXJlc0BuZHpoLmNvbSI+c2hhcmVzQG5kemguY29tPC9hPiZndDsgd3JvdGU6
PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJn
aW4tbGVmdDouNWluIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250
LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1z
ZXJpZiZxdW90OyI+TmV0Y29uZiBXb3JraW5nIEdyb3VwOjxzcGFuIGNsYXNzPSJhcHBsZS1jb252
ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4N
CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNw
YW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90
OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVp
biI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy
aSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5UaGUgSTJSUyBXRyB3b3VsZCBsaWtlIHRv
IHBhc3MgeW91IGEgc2V0IG9mIHJlcXVpcmVtZW50cyBmb3IgdGhlIEkyUlMgcHJvdG9jb2wsIGFu
ZCBhc2tzIHRoYXQgeW91IHByb3ZpZGUgYW4gYW5hbHlzaXMgYnkgSUVURiA5MyBvbiB3aGV0aGVy
IE5FVENPTkYNCiBvciBSRVNUQ09ORiBjYW4gbWVldCB0aGVzZSByZXF1aXJlbWVudHMuJm5ic3A7
Jm5ic3A7IFdlIGV4cGVjdCB0aGF0IHRoZXNlIHJlcXVpcmVtZW50cyBtYXkgcmVxdWlyZSBjaGFu
Z2VzIHRvIHRoZSBlaXRoZXIgTkVUQ09ORiBvciBSRVNUQ09ORi4mbmJzcDs8c3BhbiBjbGFzcz0i
YXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0
Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Nh
bGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+Jm5ic3A7PG86cD48L286cD48L3Nw
YW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp
bi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx
dW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+VGhlIEkyUlMgYXJjaGl0
ZWN0dXJlIGRvY3VtZW50ICg8YSBocmVmPSJodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2Rv
Yy9kcmFmdC1pZXRmLWkycnMtYXJjaGl0ZWN0dXJlLyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox
MS41cHQ7Y29sb3I6IzNEMjJCMztiYWNrZ3JvdW5kOndoaXRlO3RleHQtZGVjb3JhdGlvbjpub25l
Ij5kcmFmdC1pZXRmLWkycnMtYXJjaGl0ZWN0dXJlLTA5PC9zcGFuPjwvYT48L3NwYW4+PHNwYW4g
Y2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS41
cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7
O2NvbG9yOiMyMjIyMjI7YmFja2dyb3VuZDp3aGl0ZSI+KSZuYnNwOzwvc3Bhbj48L3NwYW4+PHNw
YW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90
OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5wcm92aWRlcw0KIGEgaGlnaC1sZXZlbCBvdmVydmll
dyBvZiB0aGUgSTJSUyAmbmJzcDtwcm90b2NvbC4mbmJzcDsgVGhlIEkyUlMgaGFzIGNvbXBpbGVk
IHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIHRvIHByb3ZpZGUgdGhlIGFkZGl0aW9uYWwgZGV0YWls
cyBvbiB0aGUgcmVxdWlyZW1lbnRzIGZvciB0aGUgcHJvdG9jb2xzLjxzcGFuIGNsYXNzPSJhcHBs
ZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVp
biI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy
aSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48
L3A+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW47dGV4dC1pbmRlbnQ6LS4yNWluIj48c3Bh
biBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx
LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVv
dDsiPjEpPC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj48
c3BhbiBzdHlsZT0iZm9udC1zaXplOjcuMHB0Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDs8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQt
ZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+PGEgaHJl
Zj0iaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvZHJhZnQtaWV0Zi1pMnJzLWVwaGVt
ZXJhbC1zdGF0ZS8iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuNXB0O2NvbG9yOiMzRDIyQjM7
YmFja2dyb3VuZDojRjlGOUY5O3RleHQtZGVjb3JhdGlvbjpub25lIj5kcmFmdC1pZXRmLWkycnMt
ZXBoZW1lcmFsLXN0YXRlLTAwPC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9ImFwcGxlLWNv
bnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS41cHQ7Zm9udC1mYW1pbHk6
JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMyMjIyMjI7
YmFja2dyb3VuZDojRjlGOUY5Ij4mbmJzcDs8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250
LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1z
ZXJpZiZxdW90OyI+PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJt
YXJnaW4tbGVmdDouNWluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVm
dDouNWluO3RleHQtaW5kZW50Oi0uMjVpbiI+PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1z
cGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2Fs
aWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4yKTwvc3Bhbj48L3NwYW4+PHNwYW4g
Y2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo3LjBw
dCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvc3Bhbj48c3Bh
biBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7
LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0
Zi5vcmcvZG9jL2RyYWZ0LWlldGYtaTJycy1wdWItc3ViLXJlcXVpcmVtZW50cy8iPjxzcGFuIHN0
eWxlPSJmb250LXNpemU6MTEuNXB0O2NvbG9yOiMzRDIyQjM7YmFja2dyb3VuZDojRjlGOUY5O3Rl
eHQtZGVjb3JhdGlvbjpub25lIj5kcmFmdC1pZXRmLWkycnMtcHViLXN1Yi1yZXF1aXJlbWVudHMt
MDI8L3NwYW4+PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj48
c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjVwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1
b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzIyMjIyMjtiYWNrZ3JvdW5kOiNGOUY5
RjkiPiZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij48bzpw
PjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4i
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW47dGV4dC1pbmRl
bnQ6LS4yNWluIj48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj48c3BhbiBzdHls
ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90
O3NhbnMtc2VyaWYmcXVvdDsiPjMpPC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGUtY29u
dmVydGVkLXNwYWNlIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjcuMHB0Ij4mbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNp
emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJp
ZiZxdW90OyI+PGEgaHJlZj0iaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvZHJhZnQt
aWV0Zi1pMnJzLXRyYWNlYWJpbGl0eS8iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuNXB0O2Nv
bG9yOiMzRDIyQjM7YmFja2dyb3VuZDp3aGl0ZTt0ZXh0LWRlY29yYXRpb246bm9uZSI+ZHJhZnQt
aWV0Zi1pMnJzLXRyYWNlYWJpbGl0eS0wMzwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJh
cHBsZS1jb252ZXJ0ZWQtc3BhY2UiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuNXB0O2ZvbnQt
ZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjoj
MjIyMjIyO2JhY2tncm91bmQ6d2hpdGUiPiZuYnNwOyZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4g
c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oywm
cXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4g
c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oywm
cXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rp
dj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+
PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZx
dW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5UaGUgZHJhZnQtaWV0Zi1pMnJzLWVwaGVtZXJh
bC1zdGF0ZS0wMCBjb250YWlucyB0aGUgcmVzdWx0cyBvZiB0aGUgZGlzY3Vzc2lvbiBmcm9tIHRo
ZSA2LzEwIGludGVyaW0gYW5kIHRoZSB0b3AgMTAgcmVxdWlyZW1lbnRzIGZvciBJMlJTLiZuYnNw
OyBJbiBhZGRpdGlvbiwNCiB0aGUgZHJhZnQtaWV0Zi1pMnJzLWVwaGVtZXJhbC1zdGF0ZS0wMCBj
b250YWlucyBhbiBzZXQgb2YgZGV0YWlsZWQgcmVxdWlyZW1lbnRzIG9uIGhvdyB0aGUgSTJSUyBX
RyBzZWVzIHRoZSBJMlJTIHByb3RvY29sIG9wZXJhdGluZy4mbmJzcDsgVGhlc2UgZGV0YWlsZWQg
cmVxdWlyZW1lbnRzIGFyZSB0byBiZSBzZWVuIGFzIHN1Z2dlc3Rpb25zIG9uIHdoYXQgdHlwZSBv
ZiBzb2x1dGlvbiB0aGUgSTJSUyBXRyB3b3VsZCBsaWtlIHRvIHNlZSwgYnV0IEkyUlMNCiBXRyBp
cyBhc2tpbmcgdGhlIE5FVENPTkYgV0cgdG8gcHJvdmlkZSBpdHMgYmVzdCBkZXNpZ25lZCBwcm90
b2NvbC4mbmJzcDsgUGxlYXNlIG5vdGUgYXMgcGFydCBvZiB0aGVzZSBkZXRhaWxlZCByZXF1aXJl
bWVudCB0aGUgZHJhZnQtaWV0Zi1pMnJzLWVwaGVtZXJhbC1zdGF0ZXMtMDAgY29udGFpbnMgdGhl
IGlkZWEgb2YgdXNpbmcgbWV0YWRhdGEgdG8gcmVjb3JkIHNlY29uZGFyeSBpZGVudGl0eS4gJm5i
c3A7Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNp
emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJp
ZiZxdW90OyI+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fu
cy1zZXJpZiZxdW90OyI+VGhlIEkyUlMgcHJvdG9jb2wgaXMgZHJpdmVuIGJ5IGRhdGEtbW9kZWxz
LiZuYnNwOyBUaGUgYXBwcm92ZWQgZGF0YSBtb2RlbHMgZm9yIHByb3RvY29sIGluZGVwZW5kZW50
IHNlcnZpY2VzIGFyZTo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9
Im1hcmdpbi1sZWZ0Oi41aW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1s
ZWZ0Oi41aW47dGV4dC1pbmRlbnQ6LS4yNWluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBw
dDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsi
Pi08L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo3LjBwdCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImFwcGxlLWNv
bnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXpl
OjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYm
cXVvdDsiPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2RyYWZ0LWll
dGYtaTJycy1yaWItZGF0YS1tb2RlbC8iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuNXB0O2Nv
bG9yOiMzRDIyQjM7YmFja2dyb3VuZDp3aGl0ZTt0ZXh0LWRlY29yYXRpb246bm9uZSI+ZHJhZnQt
aWV0Zi1pMnJzLXJpYi1kYXRhLW1vZGVsLTAwPC9zcGFuPjwvYT48bzpwPjwvbzpwPjwvc3Bhbj48
L3A+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW47dGV4dC1pbmRlbnQ6LS4yNWluIj48c3Bh
biBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx
LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVv
dDsiPi08L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPjxz
cGFuIHN0eWxlPSJmb250LXNpemU6Ny4wcHQiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtz
YW5zLXNlcmlmJnF1b3Q7Ij5GaWx0ZXItQmFzZWQNCiBSSUJTOiZuYnNwOzxzcGFuIGNsYXNzPSJh
cHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9ImFw
cGxlLWNvbnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS41cHQ7Zm9udC1m
YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMy
MjIyMjI7YmFja2dyb3VuZDp3aGl0ZSI+ZHJhZnQta2luaS1pMnJzLWZiLXJpYi1kYXRhLW1vZGVs
LjAwIChyZWxlYXNlZCBsYXRlciB0aGlzIHdlZWspPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0i
Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3Nh
bnMtc2VyaWYmcXVvdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPGRpdiBzdHls
ZT0ibWFyZ2luLWxlZnQ6LjVpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2lu
LWxlZnQ6LjVpbjt0ZXh0LWluZGVudDotLjI1aW4iPjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0
ZWQtc3BhY2UiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90
O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+LTwvc3Bhbj48L3NwYW4+PHNw
YW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo3
LjBwdCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNl
Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjVwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJp
JnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzIyMjIyMjtiYWNrZ3JvdW5kOndo
aXRlIj5Ub3BvbG9neQ0KIG1vZGVsIHdoaWNoIGlzIGEgY29tcG9zaXRlIG9mOjwvc3Bhbj48L3Nw
YW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy
aSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8
L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtaW5kZW50Oi0uMjVpbiI+PHNwYW4gY2xh
c3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7
Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPm88L3NwYW4+PC9zcGFuPjxzcGFu
IGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6Ny4w
cHQiPiZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9ImFwcGxlLWNv
bnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS41cHQ7Zm9udC1mYW1pbHk6
JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMyMjIyMjI7
YmFja2dyb3VuZDp3aGl0ZSI+R2VuZXJpYw0KIHRvcG9sb2d5IG1vZGVsOiZuYnNwOzwvc3Bhbj48
L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2Fs
aWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij48YSBocmVmPSJodHRwczovL2RhdGF0
cmFja2VyLmlldGYub3JnL2RvYy9kcmFmdC1pZXRmLWkycnMteWFuZy1uZXR3b3JrLXRvcG8vIj48
c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjVwdDtjb2xvcjojM0QyMkIzO2JhY2tncm91bmQ6d2hp
dGU7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPmRyYWZ0LWlldGYtaTJycy15YW5nLW5ldHdvcmstdG9w
by0wMTwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2Ui
PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm
cXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMjIyMjIyO2JhY2tncm91bmQ6d2hp
dGUiPiZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij48bzpw
PjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGlu
Ij4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtaW5k
ZW50Oi0uMjVpbiI+PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5
bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsi
Pm88L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPjxzcGFu
IHN0eWxlPSJmb250LXNpemU6Ny4wcHQiPiZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj48L3NwYW4+
PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZToxMS41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlm
JnF1b3Q7O2NvbG9yOiMyMjIyMjI7YmFja2dyb3VuZDp3aGl0ZSI+TDMNCiB0b3BvbG9neSBtb2Rl
bDo8L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPjxzcGFu
IHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss
JnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+Jm5ic3A7PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0i
Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3Nh
bnMtc2VyaWYmcXVvdDsiPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9j
L2RyYWZ0LWlldGYtaTJycy15YW5nLWwzLXRvcG9sb2d5LyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZToxMS41cHQ7Y29sb3I6IzNEMjJCMztiYWNrZ3JvdW5kOiNGOUY5Rjk7dGV4dC1kZWNvcmF0aW9u
Om5vbmUiPmRyYWZ0LWlldGYtaTJycy15YW5nLWwzLXRvcG9sb2d5LTAwPC9zcGFuPjwvYT48L3Nw
YW4+PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQt
c2l6ZToxMS41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNl
cmlmJnF1b3Q7O2NvbG9yOiMyMjIyMjI7YmFja2dyb3VuZDojRjlGOUY5Ij4mbmJzcDs8L3NwYW4+
PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Nh
bGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+PG86cD48L286cD48L3NwYW4+PC9w
Pg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+DQo8cCBjbGFzcz0iTXNv
Tm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbjt0ZXh0LWluZGVudDotLjI1aW4iPjxzcGFu
IGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEu
MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij5vPC9zcGFuPjwvc3Bhbj48
c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl
OjcuMHB0Ij4mbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBs
ZS1jb252ZXJ0ZWQtc3BhY2UiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuNXB0O2ZvbnQtZmFt
aWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojMjIy
MjIyO2JhY2tncm91bmQ6d2hpdGUiPkwyDQogdG9wb2xvZ3kgbW9kZWw6Jm5ic3A7PC9zcGFuPjwv
c3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxp
YnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPjxhIGhyZWY9Imh0dHBzOi8vZGF0YXRy
YWNrZXIuaWV0Zi5vcmcvZG9jL2RyYWZ0LWlldGYtaTJycy15YW5nLWwyLW5ldHdvcmstdG9wb2xv
Z3kvIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjVwdDtjb2xvcjojM0QyMkIzO2JhY2tncm91
bmQ6d2hpdGU7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPmRyYWZ0LWlldGYtaTJycy15YW5nLWwyLW5l
dHdvcmstdG9wb2xvZ3ktMDA8L3NwYW4+PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGUtY29u
dmVydGVkLXNwYWNlIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjVwdDtmb250LWZhbWlseTom
cXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzIyMjIyMjti
YWNrZ3JvdW5kOndoaXRlIj4mbmJzcDs8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNp
emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJp
ZiZxdW90OyI+PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJn
aW4tbGVmdDoxLjBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6
LjVpbjt0ZXh0LWluZGVudDotLjI1aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv
bnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij5vPC9zcGFuPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6Ny4wcHQiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQt
c3BhY2UiPiZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1z
cGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2Fs
aWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7O2NvbG9yOiMyMjIyMjI7YmFja2dyb3Vu
ZDp3aGl0ZSI+TDENCiBUb3BvbG9neSBtb2RlbDo8L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJh
cHBsZS1jb252ZXJ0ZWQtc3BhY2UiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQt
ZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+Jm5ic3A7
PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTom
cXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPmRyYWZ0LXpoYW5nLWky
cnMtbDEtdG9wby15YW5nLW1vZGVsLTAxICgtMDINCiByZWxlYXNlZCBsYXRlciB0aGlzIHdlZWsp
LjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48bzpwPjwv
bzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtaW5kZW50
Oi0uMjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7
Q291cmllciBOZXcmcXVvdDsiPm88L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo3LjBwdCI+
Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9z
cGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj48c3BhbiBzdHls
ZT0iZm9udC1zaXplOjExLjVwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90
O3NhbnMtc2VyaWYmcXVvdDs7Y29sb3I6IzIyMjIyMjtiYWNrZ3JvdW5kOndoaXRlIj5TZXJ2aWNl
DQogdG9wb2xvZ3kgbW9kZWw6PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVy
dGVkLXNwYWNlIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVv
dDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPiZuYnNwOzwvc3Bhbj48L3Nw
YW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy
aSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5kcmFmdC1oYXJlcy1pMnJzLXNlcnZpY2Ut
dG9wby15YW5nLW1vZGVsLTAwDQogKHJlbGVhc2VkIG9uIFdlZG5lc2RheSk8bzpwPjwvbzpwPjwv
c3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy
Z2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6
JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4mbmJzcDs8bzpwPjwv
bzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls
ZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m
YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5BdCB0aGlz
IHRpbWUsIG5vbmUgb2YgdGhlIFRvcG9sb2d5IG1vZGVscyB1dGlsaXplIFRyYWZmaWMgZW5naW5l
ZXJpbmcuJm5ic3A7IEl0IGlzIGFudGljaXBhdGVkIHRoYXQgdGhlc2UgbW9kZWxzIHdpbGwgc3Vw
cG9ydCB0cmFmZmljIGVuZ2luZWVyaW5nLiAmbmJzcDtFc3RpbWF0ZWQNCiByYXRlcyBvZiB0cmFu
c2ZlciBhbmQgdGltaW5nIHJlcXVpcmVtZW50cyBmb3IgdGhlc2UgbW9kdWxlcyBhcmUgYXQ6PHNw
YW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPjxhIGhyZWY9Imh0
dHA6Ly90cmFjLnRvb2xzLmlldGYub3JnL3dnL2kycnMvdHJhYy93aWtpIj48c3BhbiBzdHlsZT0i
Y29sb3I6cHVycGxlIj5odHRwOi8vdHJhYy50b29scy5pZXRmLm9yZy93Zy9pMnJzL3RyYWMvd2lr
aTwvc3Bhbj48L2E+PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9z
cGFuPi0NCiB1bmRlciB0aGUgcHJvdG9jb2wgcmVxdWlyZW1lbnRzIHRhYmxlLjxzcGFuIGNsYXNz
PSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvc3Bhbj48
L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl
ZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7
Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4mbmJzcDs8bzpwPjwvbzpwPjwv
c3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy
Z2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6
JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5XZSBob3BlIHRoYXQg
TkVUQ09ORiBXRyBjYW4gcHJvdmlkZSBzb21lIGluaXRpYWwgZmVlZGJhY2sgb24gdGhlc2UgcmVx
dWlyZW1lbnRzIGJ5IElFVEYgOTMgYXQgdGhlIFR1ZXNkYXkgSTJSUyBzZXNzaW9uLiZuYnNwOyZu
YnNwOyBJMlJTIHdpbGwgdXNlIHRoZSA2LzI0DQogaW50ZXJpbSBhdCAxMDowMC0xMTozMGFtIEVU
ICZuYnNwO3RvIHByb3ZpZGUgYSB0aW1lIGZvciBhbnkgcGFydGljaXBhdGUgaW4gdGhlIEkyUlMs
IG5ldGNvbmYsIG9yIG5ldG1vZCBncm91cCB0byBhc2sgYWRkaXRpb25hbCBxdWVzdGlvbnMgb24g
dGhlc2UgcmVxdWlyZW1lbnRzLjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZu
YnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQt
c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNl
cmlmJnF1b3Q7Ij4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtz
YW5zLXNlcmlmJnF1b3Q7Ij5TdWUgSGFyZXM8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNw
YWNlIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxl
PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7
c2Fucy1zZXJpZiZxdW90OyI+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFu
IHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss
JnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+SW50ZXJpbSB0aW1lOiAxMDowMC0xMTozMGFtIEVUPG86
cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg
c3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv
bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+RGF0
ZSA2LzI0LzIwMTU8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQt
c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNl
cmlmJnF1b3Q7Ij5XZWJleDo8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJz
cDs8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNp
emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJp
ZiZxdW90OyI+PGEgaHJlZj0iaHR0cHM6Ly9pZXRmLndlYmV4LmNvbS9pZXRmL2oucGhwP01USUQ9
bTQyNjBiZWU3YmU2MWNiMTdiMDAwOGEzYzUyMDY5ZDBmIj48c3BhbiBzdHlsZT0iY29sb3I6cHVy
cGxlIj5odHRwczovL2lldGYud2ViZXguY29tL2lldGYvai5waHA/TVRJRD1tNDI2MGJlZTdiZTYx
Y2IxN2IwMDA4YTNjNTIwNjlkMGY8L3NwYW4+PC9hPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwv
ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWlu
Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJp
JnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwv
cD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVm
dDouNWluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtD
YWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPmFnZW5kYTo8c3BhbiBjbGFzcz0i
YXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0
Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Nh
bGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+Jm5ic3A7PG86cD48L286cD48L3Nw
YW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp
bi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx
dW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+MTA6MDAg4oCTIDEwOjA1
IOKAkyBCYXNoIEFnZW5kYTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0i
Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3Nh
bnMtc2VyaWYmcXVvdDsiPjEwOjA1IOKAkyAxMDoyMC0gLSZuYnNwOyByZXZpZXcgb2YgcmVxdWly
ZW1lbnRzIGZyb208bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1h
cmdpbi1sZWZ0Oi41aW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0
Oi41aW47dGV4dC1pbmRlbnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5kcmFm
dC1pZXRmLWkycnMtZXBoZW1lcmFsLXN0YXRlLTAwPG86cD48L286cD48L3NwYW4+PC9wPg0KPC9k
aXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
IHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtaW5kZW50Oi41aW4iPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fu
cy1zZXJpZiZxdW90OyI+ZHJhZnQtaWV0Zi1pMnJzLXB1Yi1zdWItcmVxdWlyZW1lbnRzLTAyPG86
cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDouNWlu
Ij4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtaW5k
ZW50Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90
O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+ZHJhZnQtaWV0Zi1pMnJzLXRy
YWNlYWJpbGl0eS0wMzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0i
bWFyZ2luLWxlZnQ6LjVpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl
ZnQ6LjVpbjt0ZXh0LWluZGVudDouNWluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm
b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPlRp
bWluZyByZXF1aXJlbWVudHM8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJz
cDs8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJn
aW4tbGVmdDouNWluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDou
NWluO3RleHQtaW5kZW50Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQt
ZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+Jm5ic3A7
PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0
O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+
MTA6MjAg4oCTIDEwOjMwJm5ic3A7Jm5ic3A7Jm5ic3A7IFJldmlldyBvZiByZXF1aXJlbWVudHMg
Zm9yIG11dHVhbCBhdXRoZW50aWNhdGlvbiw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4N
CjxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5
bGU9Im1hcmdpbi1sZWZ0Oi41aW47dGV4dC1pbmRlbnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQt
c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OywmcXVvdDtzYW5zLXNl
cmlmJnF1b3Q7Ij5hbmQgdHJhbnNhY3Rpb24gaW4gJm5ic3A7ZHJhZnQtaGFyZXMtYXV0aC10cmFu
cy0wMSByZXF1aXJlbWVudHM8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJz
cDs8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNp
emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJp
ZiZxdW90OyI+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg
Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fu
cy1zZXJpZiZxdW90OyI+MTA6MzAtIDExOjMwICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO09wZW4g
ZGlzY3Vzc2lvbiBmb3IgSTJSUyBSZXF1aXJlbWVudHM8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVy
dGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFu
IHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss
JnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9wPg0KPC9k
aXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4i
PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm
cXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+UHJvY2VlZGluZ3MgYW5kIHNsaWRlcyBjYW4g
YmUgZm91bmQgYXQ6PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9z
cGFuPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx
LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVv
dDsiPjxhIGhyZWY9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcHJvY2VlZGluZ3MvaW50ZXJpbS8yMDE1
LzA2LzI0L2kycnMvcHJvY2VlZGluZ3MuaHRtbCI+PHNwYW4gc3R5bGU9ImNvbG9yOnB1cnBsZSI+
aHR0cDovL3d3dy5pZXRmLm9yZy9wcm9jZWVkaW5ncy9pbnRlcmltLzIwMTUvMDYvMjQvaTJycy9w
cm9jZWVkaW5ncy5odG1sPC9zcGFuPjwvYT48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4N
CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNw
YW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90
OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVp
biI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy
aSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5TdWUgSGFyZXM8c3BhbiBjbGFzcz0iYXBw
bGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9wPg0K
PC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41
aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGli
cmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+Jm5ic3A7PG86cD48L286cD48L3NwYW4+
PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1s
ZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90
O0NhbGlicmkmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+Jm5ic3A7PG86cD48L286cD48
L3NwYW4+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl
ZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo5LjBwdDtmb250LWZhbWlseTomcXVvdDtI
ZWx2ZXRpY2EmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+X19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+DQpuZXRtb2QgbWFpbGluZyBsaXN0PGJy
Pg0KPC9zcGFuPjxhIGhyZWY9Im1haWx0bzpuZXRtb2RAaWV0Zi5vcmciPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6OS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7SGVsdmV0aWNhJnF1b3Q7LCZxdW90O3Nh
bnMtc2VyaWYmcXVvdDs7Y29sb3I6cHVycGxlIj5uZXRtb2RAaWV0Zi5vcmc8L3NwYW4+PC9hPjxz
cGFuIHN0eWxlPSJmb250LXNpemU6OS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7SGVsdmV0aWNhJnF1
b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPjxicj4NCjwvc3Bhbj48YSBocmVmPSJodHRwczov
L3d3dy5pZXRmLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25ldG1vZCI+PHNwYW4gc3R5bGU9ImZvbnQt
c2l6ZTo5LjBwdDtmb250LWZhbWlseTomcXVvdDtIZWx2ZXRpY2EmcXVvdDssJnF1b3Q7c2Fucy1z
ZXJpZiZxdW90Oztjb2xvcjpwdXJwbGUiPmh0dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlz
dGluZm8vbmV0bW9kPC9zcGFuPjwvYT48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9ibG9ja3F1
b3RlPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVp
biI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj5NYWhlc2ggSmV0aGFuYW5kYW5pPG86cD48L286
cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2lu
LWxlZnQ6LjVpbiI+PGEgaHJlZj0ibWFpbHRvOm1qZXRoYW5hbmRhbmlAZ21haWwuY29tIj5tamV0
aGFuYW5kYW5pQGdtYWlsLmNvbTwvYT48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48bzpwPiZuYnNwOzwv
bzpwPjwvcD4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0
Oi41aW4iPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
IiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4N
CjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K

--_000_EF64FF31F4C4384DBCE5D513A791C2B121B00EE1xmbalnx11ciscoc_--


From nobody Tue Jun 30 18:00:01 2015
Return-Path: <Pienaar.Ferdinand@alcatel-sbell.com.cn>
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 61FA01A1B3E for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 17:59:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, 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 0vXRB-bhWKEO for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 17:59:56 -0700 (PDT)
Received: from cnshjsmin04.alcatel-sbell.com.cn (cnshjsmin03.alcatel-sbell.com.cn [211.144.215.47]) by ietfa.amsl.com (Postfix) with ESMTP id A1A681A1B14 for <netmod@ietf.org>; Tue, 30 Jun 2015 17:59:55 -0700 (PDT)
X-AuditID: ac189298-f797c6d000005f89-4f-55933b5df607
Received: from CNSHJCASHUB03.ad4.ad.alcatel.com (Unknown_Domain [135.251.50.73]) by cnshjsmin04.alcatel-sbell.com.cn (Symantec Messaging Gateway) with SMTP id 54.0A.24457.D5B33955; Wed,  1 Jul 2015 08:59:09 +0800 (HKT)
Received: from CNSHJMBX04.ad4.ad.alcatel.com ([135.251.50.104]) by CNSHJCASHUB03.ad4.ad.alcatel.com ([135.251.50.73]) with mapi id 14.03.0123.003; Wed, 1 Jul 2015 08:59:54 +0800
From: FERDINAND Pienaar <Pienaar.Ferdinand@alcatel-sbell.com.cn>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [netmod] three color meters in diffserv model
Thread-Index: AQHQs3Xf5mkNP76zHECMzce/OmM2Bp3Fyw8g
Date: Wed, 1 Jul 2015 00:59:53 +0000
Message-ID: <7579CCA174A41243ACCA0BD307F639F147A4DA25@cnshjmbx04>
References: <7579CCA174A41243ACCA0BD307F639F147A4D7C4@cnshjmbx04> <D1B841E8.D9A9E%asechoud@cisco.com>
In-Reply-To: <D1B841E8.D9A9E%asechoud@cisco.com>
Accept-Language: zh-CN, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [135.251.31.246]
Content-Type: multipart/alternative; boundary="_000_7579CCA174A41243ACCA0BD307F639F147A4DA25cnshjmbx04_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrAIsWRmVeSWpSXmKPExsXS/ts0UjfWenKowYkGVYv5FxtZHRg9liz5 yRTAGMVlk5Kak1mWWqRvl8CVMevCRZaCXckVJ9ZNZ2pgvBXWxcjJISFgItGw5y4bhC0mceHe eiCbi0NI4A6jxMzTM5kgnK2MEqcf/wCrYhNwkGj+sJ4ZxBYRUJeYuROkg4NDWMBK4sTvQoiw tcS5a3MYIWwjieZfJ1lBSlgEVCRefjYFCfMKOEosad3HCmILCaRLrNx3EszmFDCQ+NW5F8xm FJCVmPboPhOIzSwgLnHryXwmiDsFJJbsOc8MYYtKvHz8jxXCVpL4MWcrG0R9lsTaiSuYIHYJ Spyc+YQFokZS4uCKGywTGEVnIRk7C0nLLCQtEHE9iRtTp7BB2NoSyxa+ZoawdSVm/DvEgiy+ gJF9FaNCcl5xRlZxbmaegZFeYk5yYklqjm5xUmpOjl5yfq5ect4mRmC8rZGYNGMH49mnTocY BTgYlXh4MyQmhwqxJpYVV+YeYpTgYFYS4c3QBgrxpiRWVqUW5ccXleakFh9ilOZgURLn/XNF JhQYcECzs1NTC1KLYLJMHJxSDYzbS0ufHo64kfjdOKS0WEZqckz0zt/GlmqP0iW/X5Cz4Gad of34xarbpZ0T5zJ7PI3QnCFS/8pk/5biV627EnpUn7Q1yL9xXa4933O3fnvOlteGNT751cp1 da2n3tzc0Hpsyi3XWaFnWnzTbklJRfRHRpQ8bphRqByw80AY60n+dTN074XG8CixFGckGmox FxUnAgAdGwDpswIAAA==
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/5A0b85zlRjxSguNpYuzNwtNR0XU>
Subject: Re: [netmod] three color meters in diffserv model
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: <https://mailarchive.ietf.org/arch/browse/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, 01 Jul 2015 00:59:59 -0000

--_000_7579CCA174A41243ACCA0BD307F639F147A4DA25cnshjmbx04_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hello Aseem



Thanks for your answer! If I understand correctly, the absence of the leaf =
meter-rate has special meaning: the bucket gets tokens by overflow from ano=
ther bucket. So for RFC 2697, bucket C is has rate CIR, and its fail-action=
 next-meter-id points to bucket E. Bucket E has no leaf meter-rate, so its =
token increment comes from bucket C's overflow.



How is it determined where a bucket's overflow goes? I'm assuming it is to =
the bucket pointed to by the next-meter-id in its fail-action (if the targe=
t has no rate), but this is not obvious to me -- doesn't this whole mechani=
sm deserve a mention in the description of the meter-rate and/or fail-actio=
n? Or maybe it's simpler than that, and token overflow is implied only for =
a list with two meters, one with a meter rate and the other without?



Regards



Ferdi



-----Original Message-----
From: Aseem Choudhary (asechoud) [mailto:asechoud@cisco.com]
Sent: Wednesday, July 01, 2015 04:47
To: FERDINAND Pienaar; netmod@ietf.org
Subject: Re: [netmod] three color meters in diffserv model



Hello Ferdi,



Thanks for your question!



Single Rate Three Color Marking can be supported by configuring two meters,=
 one with rate and burst, second with just burst.



=B3Coupling flag=B2 functionality, which is more effective in color aware m=
ode, is not defined by any of diffserv RFC=B9s, and hence not included in t=
he current model.



This functionality can be added as separate augmentation =B3mef=B2 module t=
o base diffserv module.



Regards,

Aseem



On 6/29/15, 9:30 PM, "FERDINAND Pienaar"

<Pienaar.Ferdinand@alcatel-sbell.com.cn<mailto:Pienaar.Ferdinand@alcatel-sb=
ell.com.cn>> wrote:



>Hello

>

>I think I see how container meter-cfg is intended to allow

>configuration of RFC 2697 and 2698 style meters (by linking two meters

>in the meter-list via the pointer next-meter-id). But it seems to me

>that a way to indicate overflow from one bucket to another during token

>update is needed. In RFC 2697, bucket E is incremented only if bucket C

>is full, i.e. C overflows into E. In RFC 2698, buckets C and P are

>updated independently.

>

>The Metro Ethernet Forum's Bandwidth Profile Algorithm explicitly

>supports configuring this type of coupling, via parameter CF, "coupling

>flag".

>

>It's not clear to me how RFC 2697 can be supported by concatenating the

>meters in the YANG model, unless there is a way to indicate overflow

>between them.

>

>Ferdi Pienaar

>Alcatel Shanghai-Bell

>

>_______________________________________________

>netmod mailing list

>netmod@ietf.org<mailto:netmod@ietf.org>

>https://www.ietf.org/mailman/listinfo/netmod



--_000_7579CCA174A41243ACCA0BD307F639F147A4DA25cnshjmbx04_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:SimSun;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:SimSun;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:SimSun;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	text-align:justify;
	text-justify:inter-ideograph;
	font-size:10.5pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{mso-style-priority:99;
	mso-style-link:"Plain Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.5pt;
	font-family:"Calibri","sans-serif";}
span.PlainTextChar
	{mso-style-name:"Plain Text Char";
	mso-style-priority:99;
	mso-style-link:"Plain Text";
	font-family:"Calibri","sans-serif";}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
/* Page Definitions */
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"ZH-CN" link=3D"blue" vlink=3D"purple" style=3D"text-justify-t=
rim:punctuation">
<div class=3D"WordSection1">
<p class=3D"MsoPlainText"><span lang=3D"EN-US">Hello Aseem<o:p></o:p></span=
></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">Thanks for your answer! If I=
 understand correctly, the absence of the leaf meter-rate has special meani=
ng: the bucket gets tokens by overflow from another bucket. So for RFC 2697=
, bucket C is has rate CIR, and its
 fail-action next-meter-id points to bucket E. Bucket E has no leaf meter-r=
ate, so its token increment comes from bucket C's overflow.<o:p></o:p></spa=
n></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">How is it determined where a=
 bucket's overflow goes? I'm assuming it is to the bucket pointed to by the=
 next-meter-id in its fail-action (if the target has no rate), but this is =
not obvious to me -- doesn't this whole
 mechanism deserve a mention in the description of the meter-rate and/or fa=
il-action? Or maybe it</span><span lang=3D"EN-US" style=3D"font-family:&quo=
t;Courier New&quot;">&#8217;</span><span lang=3D"EN-US">s simpler than that=
, and token overflow is implied only for a list with two
 meters, one with a meter rate and the other without?<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">Regards<o:p></o:p></span></p=
>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">Ferdi<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">-----Original Message-----<b=
r>
From: Aseem Choudhary (asechoud) [mailto:asechoud@cisco.com] <br>
Sent: Wednesday, July 01, 2015 04:47<br>
To: FERDINAND Pienaar; netmod@ietf.org<br>
Subject: Re: [netmod] three color meters in diffserv model</span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">Hello Ferdi,<o:p></o:p></spa=
n></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">Thanks for your question!<o:=
p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">Single Rate Three Color Mark=
ing can be supported by configuring two meters, one with rate and burst, se=
cond with just burst.<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span style=3D"font-family:SimSun">=B3</span><spa=
n lang=3D"EN-US">Coupling flag</span><span lang=3D"EN-US" style=3D"font-fam=
ily:&quot;Courier New&quot;">=B2</span><span lang=3D"EN-US"> functionality,=
 which is more effective in color aware mode, is not defined
 by any of diffserv RFC</span><span lang=3D"EN-US" style=3D"font-family:&qu=
ot;Courier New&quot;">=B9</span><span lang=3D"EN-US">s, and hence not inclu=
ded in the current model.<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">This functionality can be ad=
ded as separate augmentation
</span><span lang=3D"EN-US" style=3D"font-family:&quot;Courier New&quot;">=
=B3</span><span lang=3D"EN-US">mef</span><span lang=3D"EN-US" style=3D"font=
-family:&quot;Courier New&quot;">=B2</span><span lang=3D"EN-US"> module to =
base diffserv module.<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">Regards,<o:p></o:p></span></=
p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">Aseem<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">On 6/29/15, 9:30 PM, &quot;F=
ERDINAND Pienaar&quot;<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&lt;<a href=3D"mailto:Pienaa=
r.Ferdinand@alcatel-sbell.com.cn"><span style=3D"color:windowtext;text-deco=
ration:none">Pienaar.Ferdinand@alcatel-sbell.com.cn</span></a>&gt; wrote:<o=
:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;Hello<o:p></o:p></span><=
/p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;<o:p>&nbsp;</o:p></span>=
</p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;I think I see how contai=
ner meter-cfg is intended to allow
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;configuration of RFC 269=
7 and 2698 style meters (by linking two meters
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;in the meter-list via th=
e pointer next-meter-id). But it seems to me
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;that a way to indicate o=
verflow from one bucket to another during token
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;update is needed. In RFC=
 2697, bucket E is incremented only if bucket C
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;is full, i.e. C overflow=
s into E. In RFC 2698, buckets C and P are
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;updated independently.<o=
:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;<o:p>&nbsp;</o:p></span>=
</p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;The Metro Ethernet Forum=
's Bandwidth Profile Algorithm explicitly
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;supports configuring thi=
s type of coupling, via parameter CF, &quot;coupling
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;flag&quot;.<o:p></o:p></=
span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;<o:p>&nbsp;</o:p></span>=
</p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;It's not clear to me how=
 RFC 2697 can be supported by concatenating the
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;meters in the YANG model=
, unless there is a way to indicate overflow
<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;between them.<o:p></o:p>=
</span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;<o:p>&nbsp;</o:p></span>=
</p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;Ferdi Pienaar<o:p></o:p>=
</span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;Alcatel Shanghai-Bell<o:=
p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;<o:p>&nbsp;</o:p></span>=
</p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;________________________=
_______________________<o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;netmod mailing list<o:p>=
</o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;<a href=3D"mailto:netmod=
@ietf.org"><span style=3D"color:windowtext;text-decoration:none">netmod@iet=
f.org</span></a><o:p></o:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US">&gt;<a href=3D"https://www.i=
etf.org/mailman/listinfo/netmod"><span style=3D"color:windowtext;text-decor=
ation:none">https://www.ietf.org/mailman/listinfo/netmod</span></a><o:p></o=
:p></span></p>
<p class=3D"MsoPlainText"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
</div>
</body>
</html>

--_000_7579CCA174A41243ACCA0BD307F639F147A4DA25cnshjmbx04_--


From nobody Tue Jun 30 23:54:14 2015
Return-Path: <lhotka@nic.cz>
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 090531AD272 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 23:54:13 -0700 (PDT)
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] 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 AWqQ07IgRhA4 for <netmod@ietfa.amsl.com>; Tue, 30 Jun 2015 23:54:10 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 0C63B1AD259 for <netmod@ietf.org>; Tue, 30 Jun 2015 23:54:09 -0700 (PDT)
Received: from localhost (unknown [195.113.220.110]) by trail.lhotka.name (Postfix) with ESMTPSA id 96DDA1CC0337; Wed,  1 Jul 2015 08:54:13 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
In-Reply-To: <20150630143959.GB5803@elstar.local>
References: <D1A4CEB7.B22F7%kwatsen@juniper.net> <20150624145325.GB38016@elstar.local> <m2lhf27sko.fsf@birdie.labs.nic.cz> <20150630095600.GA4836@elstar.local> <m2mvzhcq2p.fsf@birdie.labs.nic.cz> <20150630132059.GC5406@elstar.local> <90672C21-8E4C-4B9B-81DD-BBCB5F529D20@nic.cz> <20150630133908.GC5604@elstar.local> <969A179E-2EB4-4E08-A55F-A4A8B0B0C0A1@nic.cz> <20150630143959.GB5803@elstar.local>
User-Agent: Notmuch/0.19 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Wed, 01 Jul 2015 08:54:07 +0200
Message-ID: <m28ub0v04w.fsf@nic.cz>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/UKegma9GIQdFmqdFRhPj1S1TPGg>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] WG Last Call for draft-ietf-netmod-yang-json-04 (until 2015-06-29)
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: <https://mailarchive.ietf.org/arch/browse/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, 01 Jul 2015 06:54:13 -0000

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:

> On Tue, Jun 30, 2015 at 04:07:10PM +0200, Ladislav Lhotka wrote:
>>=20
>> > On 30 Jun 2015, at 15:39, Juergen Schoenwaelder <j.schoenwaelder@jacob=
s-university.de> wrote:
>> >=20
>> > On Tue, Jun 30, 2015 at 03:32:13PM +0200, Ladislav Lhotka wrote:
>> >>=20
>> >>> On 30 Jun 2015, at 15:20, Juergen Schoenwaelder <j.schoenwaelder@jac=
obs-university.de> wrote:
>> >>>=20
>> >>> On Tue, Jun 30, 2015 at 02:56:30PM +0200, Ladislav Lhotka wrote:
>> >>>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
>> >>>>=20
>> >>>>> On Mon, Jun 29, 2015 at 11:49:11AM +0200, Ladislav Lhotka wrote:
>> >>>>>> Hi Juergen,
>> >>>>>>=20
>> >>>>>> thank you for the review.
>> >>>>>>=20
>> >>>>>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writ=
es:
>> >>>>>>=20
>> >>>>>>> On Mon, Jun 15, 2015 at 10:49:28PM +0000, Kent Watsen wrote:
>> >>>>>>>>=20
>> >>>>>>>> This is a notice to start a NETMOD WG last call for the documen=
t "JSON Encoding of Data Modeled with YANG":
>> >>>>>>>>=20
>> >>>>>>>> https://tools.ietf.org/html/draft-ietf-netmod-yang-json-04
>> >>>>>>>>=20
>> >>>>>>>> Please indicate your support by Monday June 29, 2015 at 9PM EST.
>> >>>>>>>=20
>> >>>>>>> Hi,
>> >>>>>>>=20
>> >>>>>>> I have reviewed draft-ietf-netmod-yang-json-04.
>> >>>>>>>=20
>> >>>>>>> - I am not sure I agree with the wording in section 3. Why is se=
ction
>> >>>>>>> 8.3.3 only applicable to XML encoded data? Validation applies to
>> >>>>>>> datastores. While constraints are defined using XML-based notati=
ons
>> >>>>>>=20
>> >>>>>> You are right that this section shouldn't talk about XML-encoded =
data,
>> >>>>>> i.e. serialized form. On the other hand, XPath 1.0 spec says: "XP=
ath
>> >>>>>> operates on the abstract, logical structure of an XML document, =
=E2=80=A6".
>> >>>>>>=20
>> >>>>>> So I think a datastore needs to be represented, at least conceptu=
ally,
>> >>>>>> as XML infoset.
>> >>>>>>=20
>> >>>>>>> such as XPATH, how the validation is carried out is not defined =
in
>> >>>>>>> the YANG specifications. I guess I actually disagree with the
>> >>>>>>=20
>> >>>>>> I don't think this is true. YANG spec doesn't say how "must" and =
"when"
>> >>>>>> statements are evaluated, and relies on XPath.
>> >>>>>=20
>> >>>>> RFC 6020:
>> >>>>>=20
>> >>>>> When a datastore is validated, all "must" constraints are
>> >>>>> conceptually evaluated once for each data node in the data tree, a=
nd
>> >>>>> for all leafs with default values in use (see Section 7.6.1).  If a
>> >>>>> data node does not exist in the data tree, and it does not have a
>> >>>>> default value, its "must" statements are not evaluated.
>> >>>>>=20
>> >>>>> [...]

The text you substituted here with an ellipsis is actually quite
important for this discussion because it defines the context for XPath
evaluation (together with section 6.4), in particular the data tree on
which every XPath expression is evaluated. It is clear that the data
tree can also comprise state data, notification content or RPC
input/output, i.e. not only datastore content as you keep saying.

Terms like "context node" refer to the XPath data model as described in
sec.=C2=A05 of the XPath spec:

http://www.w3.org/TR/1999/REC-xpath-19991116/#data-model

(and section 6.4 in RFC 6020 says it explicitly).

We need to know, at least conceptually, how to construct the XPath data
tree from JSON text. For example, it has to be clear that leaf-list
entries encoded as a JSON array appear as sibling nodes in the data
tree, otherwise a "must" constraint specified for the leaf-list won't
work correctly. I don't think this is anyhow evident and IMO it has to
be addressed. This is the purpose of section 3 in
draft-ietf-netmod-yang-json-04.

Would it help if "validation" is replaced with "XPath evaluation"
throughout this section?

Lada

>> >>>>>=20
>> >>>>> Also note that the XPath expression is conceptually evaluated.  Th=
is
>> >>>>> means that an implementation does not have to use an XPath evaluat=
or
>> >>>>> on the device.  How the evaluation is done in practice is an
>> >>>>> implementation decision.
>> >>>>=20
>> >>>> Yes, but the result must be guaranteed to be the same as if an XPat=
h 1.0
>> >>>> processor is used, otherwise it makes really no sense.
>> >>>>=20
>> >>>>>=20
>> >>>>>>> wording in section 3 of the JSON encoding I-D.
>> >>>>>>=20
>> >>>>>> What specifically? Do you have any suggestions for changes?
>> >>>>>=20
>> >>>>> The problem is that RFC 6020 talks about datastore validation, not
>> >>>>> about validation of a specific serialization. Hence, it does not
>> >>>>> matter whether the data was XML or JSON (or CBOR or whatnext) enco=
ded
>> >>>>> - once the data is in the datastore, datastore validation takes
>> >>>>> place. One way to implement this is to serialize everything to XML=
 and
>> >>>>> then to use XML gear to do the validation. But this implementation
>> >>>>> strategy is not required.
>> >>>>=20
>> >>>> We have no explicit concept of a metamodel for datastores but IMO t=
he
>> >>>> fact that we evaluate XPath expressions on top of it implies that t=
he
>> >>>> datastore must be (congruent to) restricted XML infoset. Section 5 =
(Data
>> >>>> Model) is a crucial part of XPath spec, and it is XML.
>> >>>=20
>> >>> The YANG language does not require that XPath is used. It says that
>> >>=20
>> >> YANG *does* use XPath 1.0. Whether it is evaluated conceptually or ot=
herwise is irrelevant, the results must always be the same. And evaluation =
of XPath requires a specific context and data model as defined in its spec.
>> >>=20
>> >=20
>> > The YANG language definition is rather clear that (i) datastore
>> > content is validated and (ii) that XPath expressions are conceptually
>> > evaluated. I think the JSON encoding should not say anything
>> > different.
>>=20
>>=20
>> RFC 6020(bis) says in sec. 6.4:
>>=20
>>    The data model used in the XPath expressions is the same as that used=
 in XPath 1.0 [
>>    XPATH], =E2=80=A6
>>=20
>> JSON's data model is different.
>>=20
>> Therefore, I believe the yang-json document has to specify how (YANG-spe=
cific) JSON data map on the XPath 1.0 data model. The way how it is current=
ly done is that JSON-encoded instances are (conceptually) mapped to XML-enc=
oded instances, and it is assumed that the mapping of the latter to the XPa=
th data model and XPath context is fully defined in YANG spec.
>>=20
>> Maybe there is a better way how to achieve the same but I am not aware o=
f it, and the current way is IMO better than hand-waving.
>>
>
> The data once decoded goes into a datastore. It is the datastore that
> is validated. I quote the relevant text again:
>
>    When a datastore is validated, all "must" constraints are
>    conceptually evaluated once for each data node in the data tree, and
>    for all leafs with default values in use (see Section 7.6.1).
>
>    [...]
>
>    Also note that the XPath expression is conceptually evaluated.  This
>    means that an implementation does not have to use an XPath evaluator
>    on the device.  How the evaluation is done in practice is an
>    implementation decision.
>
> /js
>
> --=20
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

--=20
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C

