Re: [netmod] Action and RPC statements

Andy Bierman <andy@yumaworks.com> Thu, 02 November 2017 21:35 UTC

Return-Path: <andy@yumaworks.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D5B6913F9BE for <netmod@ietfa.amsl.com>; Thu, 2 Nov 2017 14:35:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks-com.20150623.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1hsVwoPd4pYS for <netmod@ietfa.amsl.com>; Thu, 2 Nov 2017 14:35:35 -0700 (PDT)
Received: from mail-lf0-x22f.google.com (mail-lf0-x22f.google.com [IPv6:2a00:1450:4010:c07::22f]) (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 1210813F70B for <netmod@ietf.org>; Thu, 2 Nov 2017 14:35:35 -0700 (PDT)
Received: by mail-lf0-x22f.google.com with SMTP id w21so1011542lfc.6 for <netmod@ietf.org>; Thu, 02 Nov 2017 14:35:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=ngg7JpUCaTJs1I+QqDlNGLXmZnmA/9TaqGlPlCNFBM4=; b=oNO5WTG+ZF7EqpEMEeg+obzSykkXtV9mWPjnMVCwbhcqMyNaSVlljsO8lKVvQ49tCn sBNy8WdpqU/GWy8JkZ3+bdiex0K2/FcaIOqb29I+4pmG4p9nEDa/x7gJ1WN2pQWRpi7F L9/R04Pq/Ycd2ucnJWYyhhNvBKAN6/RDuCOl7NB/WxdWqr9RsdBXV4xPIfIRnHRBf3Jt yEd6UBw1WcpDdbsbQxkOgKpL2qZhsXGorGlJeHns20mKCgzJqhxrNspOg1tbtpl01Im5 YE6MvrufEhd/P05B2fnWiOVVD/riTTIG9MQgK4oqgWH5kUprdhY3PPlgkT8bOiQt5Ls+ IMXw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ngg7JpUCaTJs1I+QqDlNGLXmZnmA/9TaqGlPlCNFBM4=; b=GsfgCb7iBv0M2P/aezMjEUGxppsMkZEDqLjkWTCV5QGsbyjQtz+6Lm4kLXqeus1ATt XSKnEcYU8m6AWJfBlY01XLrbmrPry/sAWoArgRbOQeTKhQvKFVc0WGMcaYJtdNUKN9+I aDFGOhxFYGBXC1ZWev40JDxtgcQj6bcyvpVvcdD08sISmNmZ/0GDgTVyfQWg6h33n6DJ h5Ruoj3GnT8gZZnBSJTafthnI1cFjLYK/xu3XP4WQ6htAyAgl/kAplOZVj66e+BAqjyh JAT2lhWJTBoucEWO9baKpGY/o2NjGmNgDRmH2RkwJe50aW9TzjEu3NPwaFdMWrluOeXu YuAg==
X-Gm-Message-State: AMCzsaWPpkVQiQDrh4kj6o9CD01nIreB0e9gAR2/h1vq7hTep3y+pkXa FXrRbY1ddwXcKIHHppS4yFydlwI2UZd8i9YAlMl8iw==
X-Google-Smtp-Source: ABhQp+SZLdvwYJyKY1gpJZmc4P9ZKgn8yyRNIf8Br6Yhd/wXuuablH0E4LuAe/0jwtqLpZ6QR76PYNIT5AJLqQAF+k8=
X-Received: by 10.46.85.136 with SMTP id g8mr2013760lje.84.1509658533378; Thu, 02 Nov 2017 14:35:33 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.25.214.9 with HTTP; Thu, 2 Nov 2017 14:35:32 -0700 (PDT)
In-Reply-To: <201711022116.vA2LGTB3044617@idle.juniper.net>
References: <CABCOCHRkpPQ7Udcd7AZDTwYvEP3BOOv8ec6GOUOf2_QZsZApEA@mail.gmail.com> <201711022116.vA2LGTB3044617@idle.juniper.net>
From: Andy Bierman <andy@yumaworks.com>
Date: Thu, 02 Nov 2017 14:35:32 -0700
Message-ID: <CABCOCHS+g45H7P8nZ7tUQeW5Q=xXQRm7kQJWwsfG8PrR-DERSQ@mail.gmail.com>
To: Phil Shafer <phil@juniper.net>
Cc: Robert Wilton <rwilton@cisco.com>, Kent Watsen <kwatsen@juniper.net>, Martin Bjorklund <mbj@tail-f.com>, "netmod@ietf.org" <netmod@ietf.org>, Randy Presuhn <randy_presuhn@alumni.stanford.edu>
Content-Type: multipart/alternative; boundary="94eb2c1cdc449d5a1f055d06c4dd"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/Q6FIG4M-w29P2rUxkcl9ogVfXh8>
Subject: Re: [netmod] Action and RPC statements
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
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, 02 Nov 2017 21:35:38 -0000

On Thu, Nov 2, 2017 at 2:16 PM, Phil Shafer <phil@juniper.net> wrote:

> Sorry, if I wasn't clear.  I meant the <datastore> element would
> be directly under <action>, so the system knows where to start
> looking for data.  Guessing is bad.
>
>
Totally agree guessing is bad.
Did you see the <action2> proposal in a previous email?
That is exactly what I proposed, except I do not want to
overload <action> so the new template would be a different name.

I realize the expanded name of the datastore element prevents it from
being confused with top-level YANG nodes, but the conformance
is more clear with a new name.




> Thanks,
>  Phil
>

Andy


>
>
> Andy Bierman writes:
> >So a server will be required to guess the correct datastore until it
> >finds the right one that matches the action instance?
> >
> >   <action>
> >       <top>
> >          <list1>
> >             <key>10</key>
> >             <do-test>
> >                <datastore>candidate</datastore>
> >             </do-test>
> >          </list1>
> >        </top>
> >    </action>
> >
> >The server will guess the datastore in some proprietary order and parse
> >instances of /top/ and /top/list1.  Then it finds the <do-test> action
> >and parses the input to get to the datastore and find out the real
> datastore
> >to use.  If the server guessed wrong, then it reparses the <action>
> against
> >the requested datastore.  Hopefully the schema trees match up.
> >
> >Will vendors do all the extra work required to support this sort of thing?
> >I doubt it.
> >
> >
> >Andy
> >
> >
> >
> >
> >On Tue, Oct 31, 2017 at 11:36 PM, Phil Shafer <phil@juniper.net> wrote:
> >
> >> Robert Wilton writes:
> >> >ii) However, as far as I can see, it doesn't make sense for an action
> to
> >> >directly affect the contents of any configuration datastore, that
> should
> >> >be done via a purpose built rpc (like edit-config).
> >>
> >> An example action would be to retrieve the  fingerprint of an ssh
> >> key.  I might want to get the fingerprint of a key in <candidate>
> >> before I commit it.
> >>
> >> Or I could have an action that sets the SNMPv3 auth key to a random
> >> value, and I want to invoke that action against <candidate>.
> >>
> >> Seems like <startup> might also be an interesting place to target
> >> actions, but I can't think of a good example.
> >>
> >> There are always scenarios where something is useful, and the problem
> >> with ruling it out is that it becomes needed at some later point.
> >> We've a habit of ruling out things and later wishing we had them.
> >>
> >> Is the easy fix to just put a datastore leaf under rpc/action and
> >> have it default to operational?  Any specific RPC can define its
> >> own datastore leaf of hard-code the database in the description
> >> (explicitly or implicitly <operational>), but the <action> RPC only
> >> gets this if we make a new parameter for it.
> >>
> >> Thanks,
> >>  Phil
> >>
> >
> >--001a11411b0ad2d58d055cee96cb
> >Content-Type: text/html; charset="UTF-8"
> >Content-Transfer-Encoding: quoted-printable
> >
> ><div dir=3D"ltr">Hi,<div><br></div><div>So a server will be required to
> gue=
> >ss the correct datastore until it</div><div>finds the right one that
> matche=
> >s the action instance?</div><div><br></div><div>=C2=A0
> =C2=A0&lt;action&gt;=
> ></div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;top&gt;</div><div>=C2=A0
> =C2=A0 =
> >=C2=A0 =C2=A0 =C2=A0 &lt;list1&gt;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
> >=C2=A0 =C2=A0 =C2=A0&lt;key&gt;10&lt;/key&gt;</div><div>=C2=A0 =C2=A0
> =C2=
> >=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&lt;do-test&gt;</div><div>=C2=A0 =C2=A0
> =C2=
> >=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;datastore&gt;candidate&lt;
> /datas=
> >tore&gt;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
> =C2=A0&lt;/do-=
> >test&gt;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
> &lt;/list1&gt;</div><=
> >div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 &lt;/top&gt;</div><div>=C2=A0 =C2=A0
> &lt;/a=
> >ction&gt;</div><div><br></div><div>The server will guess the datastore
> in s=
> >ome proprietary order and parse</div><div>instances of /top/ and
> /top/list1=
> >.=C2=A0 Then it finds the &lt;do-test&gt; action</div><div>and parses the
> i=
> >nput to get to the datastore and find out the real datastore</div><div>to
> u=
> >se.=C2=A0 If the server guessed wrong, then it reparses the
> &lt;action&gt; =
> >against</div><div>the requested datastore.=C2=A0 Hopefully the schema
> trees=
> > match up.</div><div><br></div><div>Will vendors do all the extra work
> requ=
> >ired to support this sort of thing?</div><div>I doubt
> it.</div><div><br></d=
> >iv><div><br></div><div>Andy</div><div><br></div><div><br></
> div><div><br></d=
> >iv><div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Tue,
> O=
> >ct 31, 2017 at 11:36 PM, Phil Shafer <span dir=3D"ltr">&lt;<a
> href=3D"mailt=
> >o: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-le=
> >ft:1px #ccc solid;padding-left:1ex">Robert Wilton writes:<br>
> >&gt;ii) However, as far as I can see, it doesn&#39;t make sense for an
> acti=
> >on to<br>
> >&gt;directly affect the contents of any configuration datastore, that
> shoul=
> >d<br>
> >&gt;be done via a purpose built rpc (like edit-config).<br>
> ><br>
> >An example action would be to retrieve the=C2=A0 fingerprint of an ssh<br>
> >key.=C2=A0 I might want to get the fingerprint of a key in
> &lt;candidate&gt=
> >;<br>
> >before I commit it.<br>
> ><br>
> >Or I could have an action that sets the SNMPv3 auth key to a random<br>
> >value, and I want to invoke that action against &lt;candidate&gt;.<br>
> ><br>
> >Seems like &lt;startup&gt; might also be an interesting place to
> target<br>
> >actions, but I can&#39;t think of a good example.<br>
> ><br>
> >There are always scenarios where something is useful, and the problem<br>
> >with ruling it out is that it becomes needed at some later point.<br>
> >We&#39;ve a habit of ruling out things and later wishing we had them.<br>
> ><br>
> >Is the easy fix to just put a datastore leaf under rpc/action and<br>
> >have it default to operational?=C2=A0 Any specific RPC can define its<br>
> >own datastore leaf of hard-code the database in the description<br>
> >(explicitly or implicitly &lt;operational&gt;), but the &lt;action&gt;
> RPC =
> >only<br>
> >gets this if we make a new parameter for it.<br>
> ><br>
> >Thanks,<br>
> >=C2=A0Phil<br>
> ></blockquote></div><br></div></div></div>
> >
> >--001a11411b0ad2d58d055cee96cb--
>