Re: [netmod] datastore-specific constraints

Martin Bjorklund <mbj@tail-f.com> Thu, 13 December 2018 08:51 UTC

Return-Path: <mbj@tail-f.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 9B852130FA9 for <netmod@ietfa.amsl.com>; Thu, 13 Dec 2018 00:51:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 TdpkOcrGeItZ for <netmod@ietfa.amsl.com>; Thu, 13 Dec 2018 00:51:45 -0800 (PST)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 0A0ED130FD3 for <netmod@ietf.org>; Thu, 13 Dec 2018 00:51:44 -0800 (PST)
Received: from localhost (unknown [173.38.220.45]) by mail.tail-f.com (Postfix) with ESMTPSA id A11CF1AE034F; Thu, 13 Dec 2018 09:51:40 +0100 (CET)
Date: Thu, 13 Dec 2018 09:51:39 +0100 (CET)
Message-Id: <20181213.095139.2195805691286738924.mbj@tail-f.com>
To: lhotka@nic.cz
Cc: rwilton@cisco.com, janl@tail-f.com, netmod@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <b434351564e5244c1341a247b819e5fe935788e5.camel@nic.cz>
References: <BE57F393-5E00-4877-BA04-7B980DDB3CDF@tail-f.com> <2c2eff9a-4cdb-d755-dc2b-05c01d8c8d1d@cisco.com> <b434351564e5244c1341a247b819e5fe935788e5.camel@nic.cz>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/PIYM5XcX0wM_nfKdbKisbPGuO8E>
Subject: Re: [netmod] datastore-specific constraints
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
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, 13 Dec 2018 08:51:55 -0000

Ladislav Lhotka <lhotka@nic.cz> wrote:
> On Wed, 2018-12-12 at 15:23 +0000, Robert Wilton wrote:
> > Hi Lada,
> > I basically agree with Jan's suggestion.
> > I don't think that I would use a when statement for this scenario since you
> > want a leaf to report the operational value that is in effect, and one of the
> > aims of NMDA is to try and get the configured and operational value onto the
> > same path wherever possible.
> > But, I think that the question about validity of must statements is more
> > interesting.  RFC 8342 states that these can be violated in operational, but
> > the intention is that the constraints in <operational> should generally apply
> > (but never be actually checked by the server).  In this case, it might be
> > useful to be able to annotate a must statement to indicate that it only
> > applies to configuration data and not operational data.
> 
> Another option could be that "must" constraints on config data do not apply in
> <operational>, whereas constraints on "config false" data serve as binding
> guidelines for implementors.

Not sure what "binding guideline" means, but note that RFC 8342 says
for <operational>:

   <operational> SHOULD conform to any constraints specified in the data
   model, but given the principal aim of returning "in use" values, it
   is possible that constraints MAY be violated [...]

   Only semantic constraints MAY be violated.  These are the YANG
   "when", "must", "mandatory", "unique", "min-elements", and
   "max-elements" statements; and the uniqueness of key values.

It would be useful with a YANG statement that indicates when the
modeller's intention is that a constraint doesn't apply to
<operational>.  For now, this can be indicated in the description
statement, for example:

  leaf foo {
    when "../auto-foo = 'false'" {
      description
        "This when expression does not apply to <operational>.";
    }
    ...
  }



/martin



> 
> Anyway, the logic of my example could then be implemented using "must". I agree
> though that ignoring the configured value if auto-foo is true may be preferable.
> 
> Lada
> 
> 
> > Thanks,
> > Rob
> > 
> > On 12/12/2018 14:52, Jan Lindblad wrote:
> > > Lada,
> > > 
> > > Maybe you could just skip the when and explain the behavior in the
> > > description? E.g.
> > > 
> > > leaf foo {
> > >  ...
> > >  description "Foo controls bla, bla. 
> > >   Any configured value will be ignored when auto-foo is true.";
> > > }
> > > 
> > > Best Regards,
> > > /jan
> > > 
> > > > On 12 Dec 2018, at 15:33, Ladislav Lhotka <lhotka@nic.cz> wrote:
> > > > 
> > > > Hi,
> > > > 
> > > > in some cases, constraints expressed with "when" or "must" may only be
> > > > intended for configuration datastores. A typical example is an
> > > > auto-negotiable parameter:
> > > > 
> > > > leaf auto-foo {
> > > >  type boolean;
> > > >  default true;
> > > >  description "If true, parameter 'foo' will be auto-negotiated.";
> > > > }
> > > > leaf foo {
> > > >  when "../auto-foo = 'false'";
> > > >  ...
> > > > }
> > > > 
> > > > This means that if auto-foo is true, it is impossible to configure the
> > > > foo parameter. However, even with auto-foo = true, it is desirable to
> > > > see the auto-negotiated value in <operational>, so, ideally, the "when"
> > > > constraint should not apply in <operational>.
> > > > 
> > > > How can this logic be modelled under NMDA? Is an extra leaf
> > > > "foo-operational" needed?
> > > > 
> > > > Thanks, Lada
> > > > 
> > > > -- 
> > > > Ladislav Lhotka
> > > > Head, CZ.NIC Labs
> > > > PGP Key ID: 0xB8F92B08A9F76C67
> > > > 
> > > > _______________________________________________
> > > > netmod mailing list
> > > > netmod@ietf.org
> > > > https://www.ietf.org/mailman/listinfo/netmod
> > > > 
> > > 
> > > 
> > > 
> > > _______________________________________________
> > > netmod mailing list
> > > netmod@ietf.org
> > > https://www.ietf.org/mailman/listinfo/netmod
> -- 
> Ladislav Lhotka
> Head, CZ.NIC Labs
> PGP Key ID: 0xB8F92B08A9F76C67
> 
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>