Re: [netmod] Does defining a feature require the module be implemented?

Andy Bierman <andy@yumaworks.com> Thu, 19 May 2022 07:45 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 CAF10C14F687 for <netmod@ietfa.amsl.com>; Thu, 19 May 2022 00:45:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks.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 lWWlyGSqNnej for <netmod@ietfa.amsl.com>; Thu, 19 May 2022 00:45:33 -0700 (PDT)
Received: from mail-yb1-xb32.google.com (mail-yb1-xb32.google.com [IPv6:2607:f8b0:4864:20::b32]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A8311C14EB1F for <netmod@ietf.org>; Thu, 19 May 2022 00:45:33 -0700 (PDT)
Received: by mail-yb1-xb32.google.com with SMTP id x2so7291175ybi.8 for <netmod@ietf.org>; Thu, 19 May 2022 00:45:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=lHEK2DdL2a2glUacWklcJiLhXOUw22XWrEnAesLYjl0=; b=uT8sSoujr3DJOsH53M8mEbR4/Z7USSr/x/5QUcSk2meCOz+7RIxPYAYfnpbh5oUgyz WMFTmA+DhyWzpr3RwLmi5R9IbK7oHcKE13Rq/lIb0QKmosxE0zz1RoR1kncYWgOF3X9l j+EurIXU+vRaZ/V0bI8S3Wii+qglxrmMOn2fi1cu+j8INHRRwVoEPRdil5RdgLAnUtmV r2ma93w/GMyN1bLUZmEFNGw8cOK4nItWNiXRqAVBgX56E5cvn6/bJtqrwTwKrub3aBog f54DKnHoFTUTE2MLO/UdYdqGwa0wALiiRy5GAR3xZry9STnx+iZPs6hSk4GQUNFDTNeY Fh1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lHEK2DdL2a2glUacWklcJiLhXOUw22XWrEnAesLYjl0=; b=4CWFHWKqU3l9eS+Ld8H5L3lCZtvqLMDtlirIxZG40qsMWk9mo/aQpk1twilG2yUifw JhrjuAB3rnSncdMpN27kdrV/gXv59Pb5lHjlx7tYQ3SNbbpgNgWjnvWIGCfkTyujQAUG I7Rx+x1kq2WX+cjnjijxtYO+AKyIxduJWwf0H1kh+S0kNsNtSbJbiZFByuVDFmEcB1dY VLj4qeqgK70ke7EG5UgfLUC9oVYwiRxt4H536ipI1B5C8j2/2A/vTcw2EZjYt2tvkh3V u0QkeLDDwkfL77Zzjb6rTe4untuikp0rFWEC4mIRgAU1nhWiV7sbQa5BcxwF4LlQ1wa1 jxnQ==
X-Gm-Message-State: AOAM533RCo/+mj/E72SwFM+s/DDidOR66eci/bRq5BTZSvTxsLT2HSrD VAESR2EIrwqE3TH/LMthvOJp0wGmZ0sJj22EOIOkRGzrhC7EvQ==
X-Google-Smtp-Source: ABdhPJx8JOcwSj0vqoRt0j6sepCTKXpHNPmP3uThhHjFVI0AGuiDliKdUfLkL/n8NYRrREy7sY/hIgx6Dt78HIzpazo=
X-Received: by 2002:a25:3b8b:0:b0:64d:f406:d3bf with SMTP id i133-20020a253b8b000000b0064df406d3bfmr3158195yba.430.1652946331360; Thu, 19 May 2022 00:45:31 -0700 (PDT)
MIME-Version: 1.0
References: <01000180a9eb37cb-85b9c576-c1eb-425a-b42c-b3cabe548fbb-000000@email.amazonses.com> <20220518.080543.825575420363032441.id@4668.se> <01000180d793d6ee-f82a4a03-28d8-4f8b-909e-7306a7fc565b-000000@email.amazonses.com> <20220519.090452.636208001533389643.id@4668.se>
In-Reply-To: <20220519.090452.636208001533389643.id@4668.se>
From: Andy Bierman <andy@yumaworks.com>
Date: Thu, 19 May 2022 00:45:20 -0700
Message-ID: <CABCOCHQrS-FQtn_rCxzd07N8VRpPvGwH5TemC8GF=wSGjXzytA@mail.gmail.com>
To: Martin Björklund <mbj+ietf@4668.se>
Cc: Kent Watsen <kent+ietf@watsen.net>, NetMod WG <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000e9f88e05df588e1c"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/pz-zDPOSJSiWqcMliJY88e8qz8s>
Subject: Re: [netmod] Does defining a feature require the module be implemented?
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.34
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, 19 May 2022 07:45:37 -0000

On Thu, May 19, 2022 at 12:05 AM Martin Björklund <mbj+ietf@4668.se> wrote:

> Kent Watsen <kent+ietf@watsen.net> wrote:
> >
> >
> > > On May 18, 2022, at 2:05 AM, Martin Björklund <mbj+ietf@4668.se>
> > > wrote:
> > >
> > >> PS: the answer to this impacts the "crypto-types and friends" drafts
> > >> in the NETCONF WG, where it is assumed (and various tools agreed, sans
> > >> a recent change in `yanglint`) that the implementation-status of a
> > >> module is orthogonal to what features supported.
> > >
> > > Can you show a specific example where this is a problem?
> >
> >
> > Background:
> >
> > The genesis of this issue arises from a change (I think!) in
> > instance-document validation behavior from yanglint 1.x and 2.x, which
> > I've been switching to, whereby validation is now failing due to an
> > assumption that a module is *implemented* when the module is targeted
> > by the "--features" parameter, even if only to explicitly indicate the
> > *no* features are defined (i.e., "--featues=foo:", note that there are
> > no feature-names listed after the colon).  As an aside, this seems a
> > bit like "the tail wagging the dog", but the reasoning was/is that
> > features can only be defined if a module is implemented and therefore
> > it makes sense to auto-implement a module even though it wasn't
> > explicitly listed as such on the command line.
> >
> > Issue:
> >
> > An issue arises when a module (like ietf-keystore) defines a grouping
> > (like "keystore-grouping") that is used both to allow instances in
> > other data models as well as a "global" instance when the module is
> > implemented.  i.e., container keystore { uses keystore-grouping; }
> >
> > In ietf-keystore, a feature (central-keystore-supported) is used to
> > enable leafrefs to the global instance for cases when the module is
> > implemented (e.g., see local-or-keystore-symmetric-key-grouping).
> > However, because it was not anticipated that a module had to be
> > implemented in order for a feature to be defined (as was allowed by
> > RFC 7895 YANG Library), the "central-keystore-supported" feature
> > statement was NOT placed on the root node of the protocol-accessible
> > tree.
> >
> > So, in the case of NOT wanting the global keystore instance and yet
> > there IS a desire to define another keystore feature (e.g.,
> > asymmetric-keys), it seems that 1) the module MUST be implemented
> > *and* the root node of the protocol-accessible tree MUST have an
> > "if-feature central-keystore-supported" statement.
> >
> > Closing thoughts:
> >
> > 1) I'm not saying it is wrong that a module must be implemented in
> > order to define features defined in it.  But I am noting that I can't
> > find where this behavior is defined (e.g., in RFC 7950).  Also I note
> > that RFC 7895 enabled features to be defined independent of
> > implementation-status while RFC 8525 doesn't.  As a co-author of RFC
> > 8525, I don't recall this being discussed and wonder what
> > justification was used, as folks are pointing to and working backwards
> > from RFC 8525 to indicate that it must be so.
>
> Hmm, I don't remember why this was changed in RFC 8525.  Perhaps this
> was by accident?  The only text I can find is this in RFC 7950:
>
>   5.6.5.  Implementing a Module
>
>      A server implements a module if it implements the module's data
>      nodes, RPCs, actions, notifications, and deviations.
>
>

But RFC 7950 also says:

            Any set of data definition nodes may be replaced with another
set

      of syntactically and semantically equivalent nodes.  For example,
      a set of leafs may be replaced by a "uses" statement of a grouping
      with the same leafs.


If a module is re-factored such that previously inline definitions are now
imported,
then the data model does not change. Therefore the conformance for the
model does not change.

Yet another demonstration that YANG conformance really only applies to a
conceptual data model,
(use-cases) and not independently to each module in the data model.


Andy


 Which seems to indicate that "implementing a module" is NOT required
> for a feature to be supported.
>
> > 2) If it is the case that the module must be implemented to use its
> > features, then I need to update some of my modules (e.g., crypto-types
> > and friends) to explicitly disable the protocol-accessible tree when
> > the module is implemented *only* to use its features.
>
> Since RFC 8525 doesn't allow a feature to be supported w/o also
> implementing the module, I think this is the solution for now.  And it
> is not wrong even if RFC 8525 was updated to support features from
> imported modules.
>
>
> > 3) I wish more modules would following the pattern of having the
> > global protocol accessible tree be defined via a "uses" of a grouping
> > defined in the module.  In another recent project, I had to hack the
> > topology modules defined in RFC 8345 (to convert the containers to
> > groupings) to enable a multiplicity of "abstract network topologies"
> > to be configured.  The assumption that only a single global instance
> > is ever needed is proving to be invalid in my work time and again.
>
> This is a classic problem w/ any model... And you can extend it to
> other things as well, not only top-level nodes; whenever you define a
> leaf, perhaps someone could support multiple instances and wished it
> was a leaf-list instead?  And in a leaf-list, perhaps someone wanted
> to add additional properites to each item, and wished it was a list
> instead?  And so on...
>
>
> /martin
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>