Re: [Netconf] nmda-restconf operations (was: netconf-binary-encoding comments)

Andy Bierman <andy@yumaworks.com> Thu, 12 July 2018 14:43 UTC

Return-Path: <andy@yumaworks.com>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3800212D949 for <netconf@ietfa.amsl.com>; Thu, 12 Jul 2018 07:43:57 -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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_DKIMWL_WL_MED=-0.01, URIBL_BLOCKED=0.001] autolearn=unavailable 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 bJesYfNz9zqc for <netconf@ietfa.amsl.com>; Thu, 12 Jul 2018 07:43:54 -0700 (PDT)
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) (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 64CC9130E3E for <netconf@ietf.org>; Thu, 12 Jul 2018 07:43:51 -0700 (PDT)
Received: by mail-lj1-x22e.google.com with SMTP id v9-v6so11865897ljk.4 for <netconf@ietf.org>; Thu, 12 Jul 2018 07:43:51 -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=t9I3XjTMo+Hb0ISUtvpOfsYvhwf+5QRpXcaPtaLmZKE=; b=KpWupNIbSyrfk2/DZo3sYgKlpGUFwWBRiWOSBjGQuu2gwndSi3sVSs5Va91X83dA05 O80kaReDGu6CvrMkM0+ERoeu/MhcYuzf1G7WD7y/rbfh8IT2qHR0kC2pxnYpYHSpXwe8 WlfAreEx8u4EEwapty6OTGl4pLD65j+h6Cssyg2YuByTbEqTOIOgEOg0bmYRsqqf1I1e +/z8sp1PgjtMv3W+c4s3OO20MxjGSoTwoAqCu1kbNF6r31n/lC43ZeqMIwzhK9M20LWT 2tVdEJmP2fb1rYs+pWzubj5wbNx0o6Ev7b1igdQ2f7LpOOfBHWASSR665FPpILrv1P37 Tz3A==
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=t9I3XjTMo+Hb0ISUtvpOfsYvhwf+5QRpXcaPtaLmZKE=; b=hZuZOE0paGrOhPoqFakR5vrNLy8lbI0lN3XBQT30odyKYX7mC9tdJJM56Lc7peJarT /eitoB/NLdb+82Tykdj0+THkrq1mT2+cN4Vqmj4Wf6QJ34vPsOMzompjPIflxb+1x3/8 /ol0f+5CB/S0PiwNwS0n856/BeWywVUFIMbJWRbwi0ej4a/dKppu/hP2/4c4vYn99BKC yWQnucuHnOMtMsk/GeuNqJ+k/dmW9b8mpHl/bOThGHHNBUYywzdf2ySG1PxHntqGSeSD yiOFLQedzQbe8Wgo4Z6a4sHqPDvERRNME1ZM+P/VIYM+Iv+cLymO/FMLvx1RZmjfLCbv wTIA==
X-Gm-Message-State: AOUpUlEgRh4iA7p0ixsHGJq3TpJh25xfXUVZrnGm04Aw1ggRXCc90kMt afI1hRiHIQnj5DhBGd94nTxzlKH+XRBQ7If8ihOFlg==
X-Google-Smtp-Source: AAOMgpeO1CGkrblsnEwZEwfyyDxfVPr2V8bQgQuMlQXzLUvVpgr3NkPyKoVgkUwfiADvp+ijUY4JfSVxEexf3GI2bak=
X-Received: by 2002:a2e:8950:: with SMTP id b16-v6mr806768ljk.111.1531406629400; Thu, 12 Jul 2018 07:43:49 -0700 (PDT)
MIME-Version: 1.0
Received: by 2002:a19:aa46:0:0:0:0:0 with HTTP; Thu, 12 Jul 2018 07:43:48 -0700 (PDT)
In-Reply-To: <17b6cb1c2cd297a11b2dc6d4b54647aa0f4a47b7.camel@nic.cz>
References: <82A8420F-445C-42BD-9A47-DCF62A9864BC@juniper.net> <20180709173041.xkihqyccjcucjslj@anna.jacobs.jacobs-university.de> <13FABA4A-C367-4E27-88FF-3EA48638249F@juniper.net> <87va9mf23z.fsf@nic.cz> <CABCOCHS2nmjsZ7nDk9OhbkM5dGTLEWHpngxhWbaUtX2v+x2TLA@mail.gmail.com> <17b6cb1c2cd297a11b2dc6d4b54647aa0f4a47b7.camel@nic.cz>
From: Andy Bierman <andy@yumaworks.com>
Date: Thu, 12 Jul 2018 07:43:48 -0700
Message-ID: <CABCOCHR-0CNzUjHXDfqbO7XbOMejjyr+B8m5H1vmv5MWi8Ny=g@mail.gmail.com>
To: Ladislav Lhotka <lhotka@nic.cz>
Cc: Kent Watsen <kwatsen@juniper.net>, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, "draft-ietf-netconf-nmda-restconf@ietf.org" <draft-ietf-netconf-nmda-restconf@ietf.org>, "netconf@ietf.org" <netconf@ietf.org>, Robert Wilton <rwilton=40cisco.com@dmarc.ietf.org>
Content-Type: multipart/alternative; boundary="00000000000027099c0570ce6447"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/jmCL3YnFUyvhBbdfEdu3v7EtEJ8>
Subject: Re: [Netconf] nmda-restconf operations (was: netconf-binary-encoding comments)
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.27
Precedence: list
List-Id: Network Configuration WG mailing list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf/>
List-Post: <mailto:netconf@ietf.org>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Jul 2018 14:43:57 -0000

On Wed, Jul 11, 2018 at 10:16 AM, Ladislav Lhotka <lhotka@nic.cz> wrote:

> On Wed, 2018-07-11 at 08:40 -0700, Andy Bierman wrote:
> >
> >
> > On Wed, Jul 11, 2018 at 4:22 AM, Ladislav Lhotka <lhotka@nic.cz> wrote:
> > > Kent Watsen <kwatsen@juniper.net> writes:
> > >
> > > >>> This isn't what I meant.  To be more specific, I'm wondering if the
> > > nmda-restconf
> > > >>> draft would benefit from having a sentence like:
> > > >>>
> > > >>>    A RESTCONF server supporting NMDA datastores MAY implement the
> > > >>>    "ietf-netconf" [RFC6241] and "ietf-netconf-nmda" [I-D.
> ietf-netconf-
> > > nmda-
> > > >>>    netconf] modules to enable the NETCONF operations defined in
> those
> > > >>>    drafts to appear {+restconf}/operations resource.
> > > >>>
> > > >>> Note: I put "MAY" as RESTCONF may someday have a more native way
> to do
> > > this.
> > > >>>
> > > >>
> > > >> Well, "ietf-netconf" does not really support NMDA well and this is
> why
> > > >> we have "ietf-netconf-nmda". Does not make much sense to point to
> > > >> "ietf-netconf" in an NMDA document.
> > > >
> > > > But we'd still need lock, unlock, commit, commit-confirmed, etc.,
> > > > right?
> > >
> > > These would make RESTCONF server stateful, thus violating REST
> principles.
> > > My
> > > draft
> > >
> > > https://datatracker.ietf.org/doc/draft-lhotka-netconf-
> restconf-transactions/
> > >
> > > tries to achieve similar effects in a RESTful way.
> > >
> >
> >
> > I like the idea of "private candidate" datastores you call "staging".
> > I would keep the term candidate.
>
> The problem with this is that <candidate> in NETCONF has a looser
> semantics (it
> can also be shared).
>
> >
> > This idea was discussed during RESTCONF draft development, but
> > as the client creating a "transaction" resource. I think your draft is on
> > the right track, and datastores are protocol-independent so NETCONF
> > can use the same datastores with RPC operations.
>
> Yes, it can certainly be improved. I already have some pending updates,
> but I
> wanted to keep it simple for start.
>
> >
> > You ignore the problem of concurrent edits, which is why this idea was
> not
> > pursued
> > at the time. What happens when the altered data overlaps across private
> > candidates?
>
> I don't ignore it, the text says that the user's staging datastore has to
> be
> atomically merged into <intended>, I just didn't want to specify the
> procedure.
> In any case, the result has to be a valid <intended>. But I am open to a
> discussion.
>


Leaving it as an implementation detail is the IETF's way of ignoring
problems.


>
> > What are the procedures equivalent to git pull, push, merge?
> > How are collisions handled? What exactly is a collision?
> > Not trivial standards issues to solve.
>
> I think it can be left open, I even suspect there is no universal solution
> suitable for all use cases. Our implementation (JetConf) does the
> following:
>
> - each user's edit operation is applied to the staging datastore and also
> recorded in a journal
>
> - at commit, if <intended> hasn't been changed in the mean time, then the
> staging datastore simply becomes <intended>
>
> - otherwise, the edit operations from the journal are applied sequentially
> on
> the actual contents of <intended>.
>
>

This is "last one wins".
You will find this sort of works for create and merge but no so much for
replace and delete.



> (Actually, we are not NMDA-compatible yet and don't have <intended> but it
> works
> this way).
>
> Lada
>


Andy


>
> >
> > > Lada
> > >
> >
> >
> > Andy
> >
> > > >
> > > > Maybe it's a moot point, since ietf-netconf-nmda requires that ietf-
> > > netconf
> > > > is implemented too, but I thought being explicit would be helpful
> here.
> > > >
> > > > So, adding something like this to nmda-restconf would be good?
> > > >
> > > >
> > > > Kent // contributor
> > > >
> > > > _______________________________________________
> > > > Netconf mailing list
> > > > Netconf@ietf.org
> > > > https://www.ietf.org/mailman/listinfo/netconf
> > >
> --
> Ladislav Lhotka
> Head, CZ.NIC Labs
> PGP Key ID: 0xB8F92B08A9F76C67
>