Re: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]

"Joe Clarke (jclarke)" <jclarke@cisco.com> Mon, 13 January 2020 18:58 UTC

Return-Path: <jclarke@cisco.com>
X-Original-To: netmod-ver-dt@ietfa.amsl.com
Delivered-To: netmod-ver-dt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DA6A712096D for <netmod-ver-dt@ietfa.amsl.com>; Mon, 13 Jan 2020 10:58:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.5
X-Spam-Level:
X-Spam-Status: No, score=-14.5 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, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=UpwPLrfY; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=kCu1W/Nj
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1tvB1aEERc5k for <netmod-ver-dt@ietfa.amsl.com>; Mon, 13 Jan 2020 10:58:45 -0800 (PST)
Received: from alln-iport-7.cisco.com (alln-iport-7.cisco.com [173.37.142.94]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AC48D12088C for <netmod-ver-dt@ietf.org>; Mon, 13 Jan 2020 10:58:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=135853; q=dns/txt; s=iport; t=1578941924; x=1580151524; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=xfqCAGjnBucHqJWAjrmrvUSm3NEynsHz/9IGsL+jdiY=; b=UpwPLrfYoQFwH5ZdVR1g8tW2tjeYmgl0pl3MBpes0L04xnxPdeJiyfry DdbMmB/rtNwcO0xGJhFv6/c4zmy61K48/u1PnHJ2wgcWRa0r+Rox6DOWp uQLxo3wQv1K9bDtSEft2J1O7MgZSheKTICTl9qq8kCGRRUOiv7ag11O/y M=;
IronPort-PHdr: 9a23:dwQ8SBYVBMz7acMwvyQ5Tvv/LSx94ef9IxIV55w7irlHbqWk+dH4MVfC4el20gebRp3VvvRDjeee87vtX2AN+96giDgDa9QNMn1NksAKh0olCc+BB1f8KavoZCgzBsdPfFRk5Hq8d0NSHZW2ag==
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AgAgBZvRxe/4MNJK1bChsBAQEBAQEBBQEBAREBAQMDAQEBgXuBJS8kBScFbFggBAsWFAqEAoNGA4sFgl+YDYFCgRADUAQJAQEBDAEBGAEKCgIBAYFMgi9FAheBYSQ4EwIDDQEBBAEBAQIBBQRthTcMhV4BAQEBAwEBEAgBCAQZAQEsBAcBDwIBBgIRBAEBIQEGAwICAiULFAkIAQEEDgUbB4MEAYF9TQMuAQ6PAJBkAoE4iGF1fzOCfgEBBYJEgmEYggwDBoE2jBkagUE/gREnIIJMPoJkAQGBMAEHCwEJQwmCWjKCLI1UATIBAoJDhVckiUqPLgqCN5YtG4JHiAGERItgkCSZLQIEAgQFAg4BAQWBaSIqPXFwFTsqAYJBUBgNiAEHBReBBAECgkmFFIU/dIEoiTYPFweBBAGBDwEB
X-IronPort-AV: E=Sophos;i="5.69,429,1571702400"; d="scan'208,217";a="403854849"
Received: from alln-core-1.cisco.com ([173.36.13.131]) by alln-iport-7.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 13 Jan 2020 18:58:42 +0000
Received: from XCH-ALN-010.cisco.com (xch-aln-010.cisco.com [173.36.7.20]) by alln-core-1.cisco.com (8.15.2/8.15.2) with ESMTPS id 00DIwgVJ013095 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL) for <netmod-ver-dt@ietf.org>; Mon, 13 Jan 2020 18:58:42 GMT
Received: from xhs-rcd-001.cisco.com (173.37.227.246) by XCH-ALN-010.cisco.com (173.36.7.20) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 13 Jan 2020 12:58:41 -0600
Received: from xhs-rtp-002.cisco.com (64.101.210.229) by xhs-rcd-001.cisco.com (173.37.227.246) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 13 Jan 2020 12:58:41 -0600
Received: from NAM10-MW2-obe.outbound.protection.outlook.com (64.101.32.56) by xhs-rtp-002.cisco.com (64.101.210.229) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 13 Jan 2020 13:58:41 -0500
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fEY0/9LlFNZxQuIQDmsGm9OUEfPTmuv6Msq4Z7PdkSh3G+EdHIhmufbpYGIu8AZPLQ2fZ/j2USo/5SBIKHTCyQqfkmNKhIuEhlJAY9OiRXlwK07YuEQjz4hvJNdEUDCdju5c3CP43ssJ7leoKXD5Ca9JA8bDIQqdjBnnlVUmEKvNy6mIPkQWzsJC6CyNqLS0txGNn0ODSo6ow8gBgca7dq6pxcS0LgP6/pL12DKTF6jXaWdTb6rWAYP4K+4NJ3N/XlRLrIJoQsKwQvRkOOyHidEI0jU6Nrl0qr0CAX33dgiN0I+p+kpTstA9qZ9UIeJk2cVJXpEVG/BR4XCYJ7bI8A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xfqCAGjnBucHqJWAjrmrvUSm3NEynsHz/9IGsL+jdiY=; b=Ks6XE+cfvgngINcUB7gNfs/0KLLcYLeKfZauzu6LdNzalXp+eNe5Ib5dUEQ1hECi4EeE4XgqkWfg82Fc0wo7agiwnGfetLvCmreDVgZIZohs+81UGtox1i57O9Rd6gatZAEMpEJPEwWU1HNuZUz8cGi153SIQlSwDu2qRW1jaJjBgfvPTJ0HTQBAcTdnnxWncbwSVJ5sDZivOw5RsSq8d98nFzxHC3UFxHo8WBnYM6cqoRxHrGls3hxUiO7/m0w2ET1Qo0Q0/UicxMAqH78ounVGHUJy1tvdzugED4rtvSLBdAknDuyeQcD4ejThV88hRiK5bXcBwTiPioeUcaiUYQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cisco.com; dmarc=pass action=none header.from=cisco.com; dkim=pass header.d=cisco.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com; s=selector2-cisco-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xfqCAGjnBucHqJWAjrmrvUSm3NEynsHz/9IGsL+jdiY=; b=kCu1W/NjFyeMYwqM3XCI1RE/h8i2IrGwiyskRrjUfT99TEWxcmiq8+ZC5CvXvYigNZLeEOUJ27E3oM5ABHYi3M5BmN2ci7nRn4zUdEu2Rry9RcAIfgugFcE3ygHNnhhNC/vSpfH+3iCIlQcV+SIsJOTniIrn6jifMWN9/L8b050=
Received: from BN6PR11MB1667.namprd11.prod.outlook.com (10.172.23.12) by BN6PR11MB1956.namprd11.prod.outlook.com (10.175.100.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2623.13; Mon, 13 Jan 2020 18:58:39 +0000
Received: from BN6PR11MB1667.namprd11.prod.outlook.com ([fe80::796c:13fb:1730:6835]) by BN6PR11MB1667.namprd11.prod.outlook.com ([fe80::796c:13fb:1730:6835%4]) with mapi id 15.20.2623.015; Mon, 13 Jan 2020 18:58:39 +0000
From: "Joe Clarke (jclarke)" <jclarke@cisco.com>
To: "Rob Wilton (rwilton)" <rwilton@cisco.com>
CC: "netmod-ver-dt@ietf.org" <netmod-ver-dt@ietf.org>
Thread-Topic: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]
Thread-Index: AdXHmld13jvhI/wQRxCV2HHooG51IgCiID5AAAF3RYAAAAFY0AAGrvMA
Date: Mon, 13 Jan 2020 18:58:39 +0000
Message-ID: <76BB0585-B255-45F4-B523-062E02F76D6D@cisco.com>
References: <MN2PR11MB43668363A657E52D0E9C7AB2B5380@MN2PR11MB4366.namprd11.prod.outlook.com> <MN2PR11MB4366300C80EB69EDA594F274B5350@MN2PR11MB4366.namprd11.prod.outlook.com> <DE82A207-FAE2-4F59-B3D5-31FD41A73054@cisco.com> <MN2PR11MB43662E5637717BF49171A1CEB5350@MN2PR11MB4366.namprd11.prod.outlook.com>
In-Reply-To: <MN2PR11MB43662E5637717BF49171A1CEB5350@MN2PR11MB4366.namprd11.prod.outlook.com>
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=jclarke@cisco.com;
x-originating-ip: [173.38.117.82]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: b9979fba-476f-4d37-8405-08d7985a99fd
x-ms-traffictypediagnostic: BN6PR11MB1956:
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <BN6PR11MB195662C1D22FD92304362EA2B8350@BN6PR11MB1956.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 028166BF91
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(136003)(376002)(346002)(396003)(366004)(189003)(199004)(478600001)(6486002)(76116006)(66556008)(91956017)(186003)(4326008)(81156014)(81166006)(6506007)(53546011)(8936002)(64756008)(66446008)(66476007)(66946007)(6636002)(37006003)(8676002)(26005)(71200400001)(6862004)(5660300002)(6512007)(86362001)(316002)(36756003)(2906002)(30864003)(2616005)(33656002)(966005)(559001)(579004)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR11MB1956; H:BN6PR11MB1667.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: cisco.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: BB11oLV8TpP6AivSM43KDY/8HLnacOyaNOhdeVOU8tfIWZebONn79pqZpNcgZNPM6ZzWV6FPUV/QcjZMXbUeQIOEgU3NsASf+FrhUlFh7YTVyFv7NeazuaYDkzxui2ssKaa8SfCS3iXtJ/ise7VJZRwlmfs3/WBV5oZIqnioFXLWSoZR4rJmCLKoMcRhiJMVHN9EsMZrunTsK5Pf+wv39FnvbDBwU7hAk1vEfpOLl/WI87rRyjZbWrPIyAVJRHsETLNV0D+27LrxiJ+s6Y165QQfNwup4Qe0bQ0LDBgCKc03+icNmXBRLtINnB82Qo7cvBwn853LpsQuEnCf/Qh4fWzEOpRgFWSXUhFbKqyd5ojEirMPSWUQ8L4dQx4ffNk9zIzVvlMiIKbrE0NtCIholc9kves/I8n2u6QE5NXDj/cEH+4vt3yW6zB1MLRSWhHqTCS9WSnfn2+2FWZxq+cPYkIvnlWSdK7O5QTtfYoZIOaL+ZxNB+wKjTYpH+Z7BIaz3unKxEYp1zSMi7/+cr01pA==
Content-Type: multipart/alternative; boundary="_000_76BB0585B25545F4B523062E02F76D6Dciscocom_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: b9979fba-476f-4d37-8405-08d7985a99fd
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jan 2020 18:58:39.1972 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: nMqk4sLfYkEBVVafZQlH7dGvMMWeMaQgiAvn8PxUVG9G9TbrCf8siBVmfUeYQvIMXvVqydqUOlkt6Y+q/v/+/Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1956
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.36.7.20, xch-aln-010.cisco.com
X-Outbound-Node: alln-core-1.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod-ver-dt/rkEbV-bJbtH74IT8c90jY4xHBAs>
Subject: Re: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]
X-BeenThere: netmod-ver-dt@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NetMod WG YANG Model Versioning Design Team <netmod-ver-dt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod-ver-dt/>
List-Post: <mailto:netmod-ver-dt@ietf.org>
List-Help: <mailto:netmod-ver-dt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Jan 2020 18:58:49 -0000


On Jan 13, 2020, at 11:04, Rob Wilton (rwilton) <rwilton@cisco.com<mailto:rwilton@cisco.com>> wrote:

Hi Joe,

Each of the examples has a different client experience.  There are rough notes above each individual examples hopefully explaining the key aspects.  I’ve copied the examples intro text inline below.  Hopefully, this help clarify, but please let me know if anything is still not clear.  I’ve also given brief answers to your questions inline below …

I’ve also noticed that I have a mistake in the ones with a selectable primary schema.  I should have illustrated a RPC at the end rather than configuration for selecting the primary schema.

Ah, thanks.  That addresses my question.  So the final thing should be that client issuing the RPC to select the desired schema?

Joe



Example 1:
Selectable primary version, no secondary
========================================

This example illustrates a device is that capable of supporting 3 different versions of its native manageability schema.
- The clients can decide (via RPC) which version of primary schema is used by the device, all interactions with the device use the primary schema version (with no version selection required in the RPCs).

This example supports 3 versions of its schema, that contain non-backwards-compatible changes between versions:
    3.0.0 (the default schema version of the software)
    2.1.0, a preceding nbc software version
    1.3.1, a preceding nbc software version.

The aim here is allow a client to entirely configure and interact with the device using the schema associated with an older version of the software.
- The device would be expected to store the schema and version alongside the persistent configuration.
- The schema version can only be modified via RPC, which allows the configuration to either be migrated to a new version, or to be replaced with the provided configuration written in the new schema version.
may optionally allow the configuration to be migrated to/from the new version, or replaced with a
 - How does the user update the software?
   - Could be done with a custom RPC, which could optionally include a configuration
     validated against a different schema version to replace it with.
   - Can it be done with a regular config update?
   - Can it be done with a secondary schema.

Example 2:

Fixed primary, configurable secondary
=====================================

This example illustrates a device is that capable of supporting 3 different versions of its native manageability schema, but using a different approach where the primary schema-set for the device is fixed to the latest version of the software, and cannot be changed (except by software upgrade)
   - Clients may configure secondary schema-sets to allow the configuration to be read/written using older versions of the schema, which are always immediately translated to/from configuration changes in the latest version of the schema, and which must result in a valid configuration for the configuration to be accepted to the system.

This example supports 3 versions of its schema, that contain non-backwards-compatible changes between versions:
    3.0.0 (the primary schema version of the software)
    2.1.0, a preceding nbc software version, may be configured as a secondary schema
    1.3.1, a preceding nbc software version, may be configured as a secondary schema

The example below assumes that the secondary-schema must be configured before they are available, but alternatively the server could automatically make the secondary schema available without requring client configuration.

Schema upgrade is outside the scope of this example, but normally a device would be expected to automatically upgrade the configuration perhaps with or without client intervention.


Example 3:

Configurable primary and secondary
==================================

This example illustrates a device is that capable of supporting 3 different versions of its native manageability schema.
- The clients can decide (via RPC) which version of primary schema is used by the device
- Clients can also optionally configure secondary schema to provide read-only views of the configuration using any configuration version higher than the primary schema version.

This example supports 3 versions of its schema, that contain non-backwards-compatible changes between versions:
    3.0.0 (the default schema version of the software)
    2.1.0, a preceding nbc software version
    1.3.1, a preceding nbc software version.

The aim here is allow a client to entirely configure and interact with the device using the schema associated with an older version of the software.
- The device would be expected to store the schema and version alongside the persistent configuration.
- The schema version can only be modified via RPC, which allows the configuration to either be migrated to a new version, or to be replaced with the provided configuration written in the new schema version.
may optionally allow the configuration to be migrated to/from the new version, or replaced with a
 - How does the user update the software?
   - Could be done with a custom RPC, which could optionally include a configuration
     validated against a different schema version to replace it with.
   - Can it be done with a regular config update?
   - Can it be done with a secondary schema.

From: Joe Clarke (jclarke) <jclarke@cisco.com<mailto:jclarke@cisco.com>>
Sent: 13 January 2020 15:47
To: Rob Wilton (rwilton) <rwilton@cisco.com<mailto:rwilton@cisco.com>>
Cc: netmod-ver-dt@ietf.org<mailto:netmod-ver-dt@ietf.org>
Subject: Re: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]

Rob, should I interpret these examples as:

* Device supports N schema sets
[RW]
Yes.  In all three examples. N is 3.

* Only the default can be used out of the box
[RW]
Maybe.

A device can either automatically support secondary schema, or it can require that they be configured first.  This can be expressed by whether anything is contained in /schema-set-selection/secondary in the operational datastore.  E.g. perhaps whether secondary schema-sets are available might be determined by what packages are installed rather than requiring client configuration.  My aim with the solution is to give the server quite a lot of flexibility in how this can be implemented.


* An administrator MAY configure one or more additional, secondary schema sets
[RW]
Yes.

* If allowed, a client MAY choose a secondary schema set with an RPC/path
[RW]
Yes.


I’m trying to understand the client experience in these approaches just so I’m absolutely clear.  And if I’m right in my assumptions above, how does that last client know what secondary schemas are enabled on the device?
[RW]
By querying the list in “/schema-set-selection/secondary”.  in <running> this list allows a client (e.g. admin) to choose which secondary schema-sets are available.   In <operational> this represents the actual secondary schema-sets that are available on the device.  The entries in this list can be due to admin configuration, or because the device just automatically supports some secondary schema-sets, or even a combination of the two.  NMDA origin metadata would indicate the source of these entries (e.g. are they due to configuration or have they been added by the system).

Thanks,
Rob



Joe


On Jan 13, 2020, at 10:37, Rob Wilton (rwilton) <rwilton@cisco.com<mailto:rwilton@cisco.com>> wrote:

Hi,

I’ve been playing around with the schema selection YANG model and examples a bit more.

3 examples attached (all for selecting from 3 different versions of the YANG schema):

1.      3 choices of primary schema versions; no secondary schema.

2.      3 choices of primary schema versions; secondary schema are configurable read-only views of latest versions

3.      Primary schema fixed to latest version; older schema versions are allowed.


Comments and tree output inline below …

From: Netmod-ver-dt <netmod-ver-dt-bounces@ietf.org<mailto:netmod-ver-dt-bounces@ietf.org>> On Behalf Of Rob Wilton (rwilton)
Sent: 10 January 2020 10:09
To: netmod-ver-dt@ietf.org<mailto:netmod-ver-dt@ietf.org>
Subject: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]

Points from the meeting what would be good for further discussion.  I think that a lot of these issues are probably still open and require further discussion:

1)     It is clear that we need to standardize supporting different versions of a schema, but do we also want to support different schema families (e.g. vendor vs IETF vs OC)?
a.       My personal view is that it would be good if the model is general enough that this can be described (and I think that it might be useful if there are some examples given in the appendix).
2)     For supporting non-native schema, there seem to be two approaches:
                                                                        i.     always translate into the native schema, reads from say OC convert back from the native schema
                                                                       ii.     store/persist configuration in the external schema (e.g. OC).  E.g. so a get-config on OC would only get back what had been written to the OC schema, not any other schema.
b.      Do we need to describe these two approaches?  For secondary schema does the model need to indicate which method is being performed, or is that purely an implementation detail?
[RW]
I think that the draft does want to describe the differences between a translated schema-sets vs filtered schema-sets that are just a subset of the primary schema-set.  At the moment, or in the examples that I have so far, I don’t think that these need to expressed in the YANG model.

3)     Can both of the approaches described in (2) above work for different versions of the schema?  Or must these always be handled by dynamic translation.
[RW]
My thinking is that schema with different module versions (relative to the primary schema) must always be translated.

4)     What is the schema that the configuration is persisted in?  Should this automatically be tied to the default schema, or should this a separate data node, that could potentially be configurable?
a.      Related to this, how does the system handle changing the default schema?  Can that be done as part of a config request?  Does the connection have to be closed and re-opened?  Or should it be an RPC outside of configuration?
[RW]
I still think that it makes sense to tie this to the primary schema.  I’ve introduced a RPC to change the primary schema rather than allowing this to be done via regular configuration.  I’m hoping that this solves the issue that we were discussing in the last meeting.

5)     We need a concise way of describing the relationship between schema and datastores.  The current approach in the model is somewhat verbose, if every datastore needs to be described separately (but is somewhat aligned to YANG library style).
a.      Should we allow schema to only support some datastores (e.g. only operational, or only conventional configuration)?
[RW]
Adding a common schema definition, so that it just becomes a list of supported datastores makes this more concise.  I think that we want the flexibility to allow different schema to express support for different datastores.

6)     Do we need secondary schema to have the ability to be defined or described as only being read-only?
a.      E.g. I can see a requirement to allow a client a configure a device using an older version of the schema.  I can also see a requirement of allowing a client to see what the instance data against a older version of a schema would look like in a more current version.  But I’m less convinced of the need to be able to convert a current configuration back into an older format.
[RW]
I think that this is useful, and have added this to the latest version.

Approximate changes to the schema:

•        Primary schema is now only changeable via RPC, it can’t be chosen via config (secondary schema are still configured, or a server can support them automatically)

•        Renamed stuff from “schema” to “schema-set” since that seems more correct

•        Added a list of “common packages” that apply to all datatstores, in addition to per datastore packages (the datastore schema is defined as the union of the common and per-datastore packages).

•        Added a flag to indicate that a datastore is read-only, for datastores that would normally be writable.  Actually, it might be cleaner to reverse the sense and change this to writable.

•        Renamed some of the containers/flags/etc.


Tree output:

module: ietf-schema-selection-2
  +--rw schema-set-selection
     +--ro primary?      -> /schema-set-selection/schema-set/name
     +--rw secondary*    -> /schema-set-selection/schema-set/name {secondary-schema-set}?
     +--rw custom* [name] {custom-schema-set}?
     |  +--rw name               string
     |  +--rw description?       string
     |  +--rw included-schema*   -> /schema-set-selection/schema-set/name
     +--ro schema-set* [name]
        +--ro name                    string
        +--ro common-package* [name version]
        |  +--ro name        -> /yanglib:yang-library/yl-pkg:package/name
        |  +--ro version     -> /yanglib:yang-library/yl-pkg:package[yl-pkg:name = current()/../name]/version
        |  +--ro checksum?   -> /yanglib:yang-library/yl-pkg:package[yl-pkg:name = current()/../name][yl-pkg:version = current()/../version] /yl-pkg:checksum
        +--ro datastore* [name]
        |  +--ro name                  ds:datastore-ref
        |  +--ro read-only?            empty
        |  +--ro additional-package* [name version]
        |     +--ro name        -> /yanglib:yang-library/yl-pkg:package/name
        |     +--ro version     -> /yanglib:yang-library/yl-pkg:package[yl-pkg:name = current()/../name]/version
        |     +--ro checksum?   -> /yanglib:yang-library/yl-pkg:package[yl-pkg:name = current()/../name][yl-pkg:version = current()/../version] /yl-pkg:checksum
        +--ro primary-selectable?     empty {primary-schema-set}?
        +--ro secondary-selectable! {secondary-schema-set}?
        |  +--ro compatible-with
        |     +--ro primary*     -> /schema-set-selection/schema-set/name
        |     +--ro secondary*   -> /schema-set-selection/schema-set/name
        +--ro custom-selectable! {custom-schema-set}?
           +--ro combinable*   -> /schema-set-selection/schema-set/name

  rpcs:
    +---x change-primary {primary-schema-set}?
       +---w input
          +---w primary?                    -> /schema-set-selection/schema-set/name
          +---w (config)
             +--:(translate)
             |  +---w translate?            empty
             +--:(replacement-config)
                +---w replacement-config?   <anydata>

YANG file, and examples are attached.

Please let me know your thoughts/comments.

Thanks,
Rob



Perhaps we can discuss some of these over email, and try and reach consensus, or otherwise we will pick up discussion in next week’s meeting.

Was there anything else that I missed?

Thanks,
Rob


From: Netmod-ver-dt <netmod-ver-dt-bounces@ietf.org<mailto:netmod-ver-dt-bounces@ietf.org>> On Behalf Of Rob Wilton (rwilton)
Sent: 09 January 2020 14:11
To: netmod-ver-dt@ietf.org<mailto:netmod-ver-dt@ietf.org>
Subject: [Netmod-ver-dt] Today's Ver DT meeting

Happy New Year!

From the last meeting I did say that I would work on producing some concrete examples of version selection 😊

I’ve started working on this, but more work is required.  I have attached one example that we can discuss in the meeting, more may be forthcoming before the meeting.

As part of that work, I’ve been thinking more about the default/secondary schema.

As a recap, I think that this is roughly where I am at:

(1)   The default schema:
o   is the schema that is used if a client doesn’t specify a secondary schema during their connection (i.e. NETCONF capabilities negotiation, or RESTCONF path).
o   is also the schema used for the persistent configuration (and the <startup> datastore). [I think that this is probably right, but might need further thought/discussion]

(2)   Secondary schema:
o   are additional schema that clients can choose to use, and are specified during their session (i.e. NETCONF capabilities negotiation, or RESTCONF path).
o   can probably take several forms:
•  A filtered view on the default schema (e.g. if the default schema supported vendor native + IETF + OC schema) then a filtered schema view might just be the OC subset.  This should be simple to support since it broadly equivalent to a subtree filter on any get operations.
•  A translated view on the default schema (e.g. perhaps a different version of a schema),  All reads/writes to a translated schema are converted to/from the default schema.  The configuration is persisted in the “default schema”.
o   It might be useful if some of the secondary schema could be labelled as read-only views on the data.  E.g. it might be reasonable to see the configuration using a secondary schema non native version, but not allow it to be modified.

Attached example:

Example 1, a simple example of a server supporting two schema versions, and the client can choose between which version is used for the primary schema.
-        One question related to this example is what happens to the current configuration if a client changes the default schema to a different version.  Does that configuration also automatically get translated as well?  What happens if that translation fails?
-        Do we need a simpler way to reporting the per datastore schema?  E.g. should we have a special value to identify all datastores, or all conventional datastores?

Thanks,
Rob
<example_vendor_versioning_fixed_primary_configurable_secondary.xml><example_vendor_versioning_selectable_primary_no_secondary.xml><example_vendor_versioning_configurable_primary_and_secondary.xml><ietf-schema-selection-2.yang>_______________________________________________
Netmod-ver-dt mailing list
Netmod-ver-dt@ietf.org<mailto:Netmod-ver-dt@ietf.org>
https://www.ietf.org/mailman/listinfo/netmod-ver-dt