[netmod] structured metadata for schema nodes using YANG extensions

"Jason Sterne (Nokia)" <jason.sterne@nokia.com> Tue, 12 March 2024 22:29 UTC

Return-Path: <jason.sterne@nokia.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 69D85C14F6B3 for <netmod@ietfa.amsl.com>; Tue, 12 Mar 2024 15:29:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.107
X-Spam-Level:
X-Spam-Status: No, score=-2.107 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=nokia.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZI0CrSv1VENf for <netmod@ietfa.amsl.com>; Tue, 12 Mar 2024 15:29:31 -0700 (PDT)
Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2051.outbound.protection.outlook.com [40.107.237.51]) (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 72733C14F6B5 for <netmod@ietf.org>; Tue, 12 Mar 2024 15:29:30 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FRzpJTudDZZPKZVEzHngArbcVnSVPx9pOTGUAW+kbaSDPS4sSqpMGDHT8Hd/AdxCjMFgfKsBKaoIFk7FIOWyjtLOskITplUewKHh2wxyvtfcVE5cxL4ZCGAULgT0N77/NmXXvpFBoNvb87+QltINacCyOqqpxVSZCTMCrFKO9WUFOZzWRzNJZWAxg/sgFHY3xzgydBx/RoTt2VLDAOnntBhkMICMKByHxDtlaoQV2zd6pqofbRb4T7QoyTB45C0MUtdWrMzCGn+9st4lbLeQIcAMhGKBTXOwC1DXQ5XJsyzej8UBxdL/p92TF8v0LvsM40C5AHjlI9fbgXH+AuZqpw==
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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5pFthW98mE9KpPBO7g9RYXMijLdmuxiWX49PjeawkY4=; b=eX90ZcMtVeqS5MfcBTtDLpKi7q0uqLUYOERvNMUgDSFeDVELxPqEVtIpfPjArpT0bJBlbPUUsqzyOPNg0k9anFkaUTcAu/o3SFh+cUoH8PRaAh44dcaUOP/acnak7yhLK03C+LAWqNBZUdPo4J3WKkas307nCeOYR/7cVfm+uC1MKWJO3ygg7a6n1eqmrcxLfTXi0srENIu5q7o59ryRYBz8C9MQCc8bSor2MKZiHhbPYUwRkLsV7nHX5j8kEZwlhGGSzVclvpLKV8aJ5gESk8ptcU7xt6NfzfdpQ3LijXiHKPWBvFqZcnd1GCBvRHlnWsJpEihmDWLG6e9/6d215w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nokia.com; dmarc=pass action=none header.from=nokia.com; dkim=pass header.d=nokia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5pFthW98mE9KpPBO7g9RYXMijLdmuxiWX49PjeawkY4=; b=YWBS/4XEKtG3XadjvUloTa4vPwuB4IfStikWPAj/j+AHh+CIkSLWJwRlSNQfF7jb61d+ZaB78vhytjukd6ktHI/YcuGfS31BUVvdvY88wQYywNYElcAMD8PPlJrLvUgv5cXyw5UAuL7JOMDrFS/84kOcTzjksZRaIieQIZlBs1vscQTMOEFfkJyUcMFpzm2Q05WHdHw2OW9tDCeNqsKeWtdHCDm+W5Qu8JJeIlCaJY3N7ezBfCjP55qV9zTFjIkd4f8k+1jVTe/+l8ifw1LlQp5ovrOdIXA6jzxX4Qf3Vb3IXSq1ecAhdcJdnCFExx170m2X4uGwp65idRbyCD77yQ==
Received: from SN6PR08MB4847.namprd08.prod.outlook.com (2603:10b6:805:6b::12) by PH0PR08MB8014.namprd08.prod.outlook.com (2603:10b6:510:11d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.36; Tue, 12 Mar 2024 22:29:27 +0000
Received: from SN6PR08MB4847.namprd08.prod.outlook.com ([fe80::3b22:f1b2:178c:f6c8]) by SN6PR08MB4847.namprd08.prod.outlook.com ([fe80::3b22:f1b2:178c:f6c8%7]) with mapi id 15.20.7362.035; Tue, 12 Mar 2024 22:29:27 +0000
From: "Jason Sterne (Nokia)" <jason.sterne@nokia.com>
To: "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: structured metadata for schema nodes using YANG extensions
Thread-Index: Adp0zIh3sX0rFCQbQnysoMLgD9z3Nw==
Date: Tue, 12 Mar 2024 22:29:27 +0000
Message-ID: <SN6PR08MB4847A4E43785C38E77331CC89B2B2@SN6PR08MB4847.namprd08.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nokia.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SN6PR08MB4847:EE_|PH0PR08MB8014:EE_
x-ms-office365-filtering-correlation-id: 462488b5-ca6a-474f-ef8e-08dc42e3e0cc
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: w0WCmtihm9lLUM71W12/+C9fBipAlvd84FVZ70n4pfrbmLK5An+YMm0a0cvvQDJyXDQcEobFNECjJc151xe1HB+yW1qXV46nEu9ZPswNiSbtmKA0I09TzQibGmZ4r6UN3g9Y2Bicm6Fzqk9Ui37xAGkfuTd+PjQq8HTRaumiKX2gFySIEjnL5MNBJZ15BJTXlljq94kWo7vqRMxqZc6Dtqbt8i0iDUL/v0wmDOR/jxZI6Tkp7UuVarGPPbYUhPUoWfVcHQ2FrrQpfxhuGDjDRu1vB0vZ8eRVp/28UHdalg9wG5P+UucgNQBR2cE9CdmCUw+fZJJBNsSZHaIySRsULNHhqQqDGFj+Z12PoYSJYx6S5Ngruvb7Q1MTiNmNZERpYXRGo0UE+UCyiztp/Nvpul2v1VuFKIHS28tYa9zG+h4GwMToqpXXpEI6ysiObDSzjbgIc9cLu87+apLL0HBC+iqnfmTjXQW0Nh9s2kYbbc1Ml47z+x1HV/P/GGVTc6knxuByEayFwLX3JL09sDy94/2tm+lEAp11kkmLjFvuBJ/pf3Ggl0g2NWAkbTBAEpKFsjTGWslC3tiRwXnY0KRXZj8F/GSqm4YxjkVjn83I0xj2GuYiqOgi/gq3XPgMn0qKSDdMr5WHTLF6pLRIntBKzHkJNdcHMcEBXheUyyC8lnxvjJNYE7/g++jMhTVSy58B3h3Dp/Y4tLoI1n/lgHapycazaZ5datLlft8x/TS3UNA=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR08MB4847.namprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: 7QSmILOwa8itAm61FOHKynQvaboMnc53WrIllQaoA/JYzH1ErUI6HNYf6r8jWD2jxXx7dveIR6AMQsk2knAouKD9SaHD3aipjHSM5+CzjxXaGiPQawkPvmoD5+soolWcKUiivJ9wrUWLYpl75L83IsWuHjhrQ0LPkSFQ/kZxtpYLPRJfMh2RSJOxl9V/PLLnA2E695sLuFsf4QoybPHb7i0bhp1WukLp27SZNXU5p5rOgvchOXgsJhUQZxI4UHAsbG3HUfWEi8e4/1E825d1d30l1Ib8o/fLYFPHK1M+EcrcOLx1fi3nRU/p7xISHFE34fub2UqDoYjmOdurw6VhdlS/xCmSzaLQwlPGbANs7o+M9WD2/spcKoo84ojX2Q2QlPvdAktttBAOIFs5OZQnt5/ZDfVuyCG/6+Jf8gzrUlWOnVgmzopDUVvMrN/WETx6sARILZKwkdccGcc57zD+gupXXi2O/eDSRRyXijkMqz76itCgim4m9lNytc0fM5Y+7GN+Umk+Cu7hsE/N0/MPYJEnNQk83wruJXNKoPWCXJRElPsRRXrK2tcfU8di90rQTZOI5bdzKhID0C6GihBosfLi2YwaP1VERjxh9oTkVepNCAlvHmBoBNZbN8eJjI/n1XYeZ/LFNbfozaMDjEz/8yqkbweCOZqNo+TOJzvgS9LjRCmjW85M1QvvMgVOnUg29LFLW6zW8QNy28jo+l9beRg5N7r2WXEoQHeX4HceNNCVhHE1r32qT82vg/57J3XXAn1Djrtmh2XH7E0Rdbi6o4UipWKfz4UHTdsuu0nBVyZfAGUKv6Wm9E7hiq+YmoMPAbNCEyZhtmHZzA9DJIacd1FWtaYaIO9KKXPkNEL5k8H0Lg/wuyTBziXqyv2hKh3uoJjLoRxisrlb/QksLvS4n1VI7wgxvW8SqxSbII0Bd/GoiVJLsG6hLFNXVTIQTAgCabFP4EcytD+iBikmQ8tNbsHcxuiGN2HwiN+cgF8PWlWAGtWB+bnVbs0W9PbqfZ2lxt+AijF+Q/K4ZMb0oyiA0b7cdv2EPuXNmd1/+yLa4hz8wf6fzKroC0ZnEsySnl3W+Pwe+lJsjHoomwdcWvkS9X74twDeGIqqTmCHvIdnWPxJAUOvk/CbnKyem/CRLGUAWfDkqlUhAVzZVmbQwj+bY6Do6wD/Vnk3vZMDIXZINE3AvKQKdxEJrXoRd5rSj6PW/qZfVQGpe4aqYViqvbtVeRlga3CjPFUEOvDmgIYGUTyLtZl8t8q8diXk00zfSwS8O+nHNJc4lA/0XC34pIZg3R+TpDuAHM+XfGASQx2/DGVmoG8Yngm2I73FhGYA2eTkB0vpyWDyq+Dki6FcZRdNSDWYSuTYoP492PffrLxOMGAFamQQiVAcTAc4O+hZsNd0SqU00Dflh/TG7skE+qKULead7ii5t1iSVc82LPHm1wPQjLr+9Wf5PgRuC/U8Z8JcAQCTR1Cbt28BhA78iynW5kD9zu+LUDH9palJmv2fS/Wcw4TQR8h+JHhaFpyZqMMzc8M+hRAdSoXMob2JpfdSjvFlkCenkfEITV2bH2XEcnhUXoGcrBC+jMQlWZ7WPYh0
Content-Type: multipart/alternative; boundary="_000_SN6PR08MB4847A4E43785C38E77331CC89B2B2SN6PR08MB4847namp_"
MIME-Version: 1.0
X-OriginatorOrg: nokia.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SN6PR08MB4847.namprd08.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 462488b5-ca6a-474f-ef8e-08dc42e3e0cc
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Mar 2024 22:29:27.5804 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5d471751-9675-428d-917b-70f44f9630b0
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: K8gS/KyBn4X2NDCED9tFB5mEoIP/yU0mWHjti2g31mM8Y3qsDt8B4veeIP4qq8u1L8nX1LtK6RB/LnpipRVcjg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR08MB8014
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/0f3U5mRzEHXacozc_K6ompx8iqU>
Subject: [netmod] structured metadata for schema nodes using YANG extensions
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.39
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, 12 Mar 2024 22:29:35 -0000

Hi all,

I'm looking for information about doing more complex YANG extensions that the basic <name,value> type, e.g.:
oc-ext:openconfig-version "2.5.0";

The node-tags approach doesn't fit what I'm trying to do (tags can't have values).

RFC7950 says the following:
   The substatements of an
   extension are defined by the "extension" statement, using some
   mechanism outside the scope of this specification.  Syntactically,
   the substatements MUST be YANG statements, including extensions
   defined using "extension" statements.

Let me start with a simple example and build on it. Say I want to associate a color with any schema node. That's easy:

    extension color {
        argument "color";
        description "Takes a value of red, green or blue";
    }

    leaf foo {
        myext:color "red";
    }

But what if I want a more complex structure for my color metadata like this?  (a leaf-list and leaf inside a container)

    leaf foo {
        myext:chroma-metadata {
            myext:colors "red green";
            myext:saturation "45";
        }

>From what I can tell, I'd have to define it like this:

    extension chroma-metadata {
    }
    extension colors {
        argument "color-list";
        description "sub-statement of chroma-metadata. Space separated list of colors red, green and blue.";
    }
    extension saturation {
        argument "saturation-level";
        description "sub-statement of chroma-metadata";
    }

Or if I wanted a list like this?

    myext:chroma-metadata {
        myext:color "red" {
            myext:saturation "45";
        }
        myext:color "green" {
            myext:saturation "23";
        }
    }

I don't think there is any formal way to do it, but could I say that the structure of the chroma-metadata follows a grouping I define?

    grouping cm-struct {
        list color {
            leaf saturation { ... }
        }
    }

Could another option be to just define the top level extension chroma-metadata with a single argument, and then describe that the argument itself is a json-ietf blob of instance data that conforms to YANG grouping xyz?

Jason (he/him)