Re: [netmod] Question on draft-wu-netmod-factory-default

Kent Watsen <> Tue, 26 March 2019 07:50 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id E613212028D for <>; Tue, 26 Mar 2019 00:50:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id m2wKoUq6oz7W for <>; Tue, 26 Mar 2019 00:50:28 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 0DAE1120047 for <>; Tue, 26 Mar 2019 00:50:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=6gbrjpgwjskckoa6a5zn6fwqkn67xbtw;; t=1553586626; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc:Content-Transfer-Encoding:Message-Id:References:To:Feedback-ID; bh=sS6BaHDJz4iE0VQeBVdK/IxFsUFWGg/TZ2cPIoh8WBw=; b=WeqcFJpOtQGjja3i5WzDMDp6KSUWorMpHZXRPe6ZRyDalumJnlyFeRwrxePZRN1w nMPTj/ir4JVdLLC7d5EdHNAJQLot2O0b8Y5fU+DJbEzTu6yeG6duBB5qNuh1j86644H bbqAhhATEmcoSRtu+jS3GpelhaajvKiqVbWmYsnk=
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (1.0)
From: Kent Watsen <>
X-Mailer: iPhone Mail (16D57)
In-Reply-To: <>
Date: Tue, 26 Mar 2019 07:50:26 +0000
Cc: Qin Wu <>, "" <>
Content-Transfer-Encoding: quoted-printable
Message-ID: <>
References: <> <> <> <> <>
To: Joe Clarke <>
X-SES-Outgoing: 2019.03.26-
Archived-At: <>
Subject: Re: [netmod] Question on draft-wu-netmod-factory-default
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 26 Mar 2019 07:50:30 -0000

Sent from my iPhone

> On Mar 26, 2019, at 8:37 AM, Joe Clarke <> wrote:
>> On 3/26/19 03:22, Juergen Schoenwaelder wrote:
>>> On Tue, Mar 26, 2019 at 03:12:26AM -0400, Joe Clarke wrote:
>>>> On 3/26/19 01:51, Juergen Schoenwaelder wrote:
>>>> Qin,
>>>> the idea should be to make things simpler, not more complex. Perhaps
>>>> it is not necessary to expose N options to reset a device. Perhaps a
>>>> simple "factory-reset" RPC which resets all relevant datastores in an
>>>> implementation specific manner is sufficient. Why expose more details
>>>> to the management client?
>>> This would certainly make it simpler from the RPC standpoint.  However,
>>> if one can <get-data> from the factory-default DSes, I still think there
>>> is a need to know what factory-default DS maps to what other DS (in the
>>> case where there might be multiple that are different).
>> The notion of multiple factory-default datastores sounds complex. And
>> what is a management application going to do with them? How would a
>> management application know which sets of datastores to reset together
>> in a meaningful way?
> This is why I think having a single RPC to "reset the device to factory"
> makes sense.  Not to say that's the only use case, but it would be
> useful in a number of cases.

Correct.   This was requested by the WG last time it was presented, as there are other things that need to be reset besides YANG-modeled configuration.  Not only does such an RPC make sense, I will likely object a Last Call if it if such an RPC is missing. 

>> My naive interpretation of the factory default DS (a single one) would
>> be that it exposes the content you will find in <running> after the
>> factory-reset has been executed. An extended version of Figure 2 of
>> RFC 8342 would look like this:

The contents are, effectively, the first <startup> data store, as shipped from factory. 

Resetting other datastores to default needs discussion.  For all of the “conventional configuration datastores”, there’s likely just the one mentioned previously; each dynamic datastore might have its own notion of a factory default. 

Kent // contributor