Re: [yang-doctors] YANG dialects?

Jan Lindblad <janl@tail-f.com> Sat, 21 December 2019 08:49 UTC

Return-Path: <janl@tail-f.com>
X-Original-To: yang-doctors@ietfa.amsl.com
Delivered-To: yang-doctors@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5359F120A32 for <yang-doctors@ietfa.amsl.com>; Sat, 21 Dec 2019 00:49:08 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.001
X-Spam-Level:
X-Spam-Status: No, score=0.001 tagged_above=-999 required=5 tests=[HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, 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 uLJrt8xwEsW1 for <yang-doctors@ietfa.amsl.com>; Sat, 21 Dec 2019 00:49:05 -0800 (PST)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 74A20120A30 for <yang-doctors@ietf.org>; Sat, 21 Dec 2019 00:49:05 -0800 (PST)
Received: from [192.168.1.109] (213-67-237-150-no99.tbcn.telia.com [213.67.237.150]) by mail.tail-f.com (Postfix) with ESMTPSA id 210041AE02A7; Sat, 21 Dec 2019 09:49:02 +0100 (CET)
From: Jan Lindblad <janl@tail-f.com>
Message-Id: <DEA9471B-B525-4408-B4BE-BF1C0476A9BC@tail-f.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_AC8DAB1B-0F54-4DBF-B848-66717C5BD4AD"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Date: Sat, 21 Dec 2019 09:49:01 +0100
In-Reply-To: <CABCOCHTNGtpmHNQxcfS+rCu1+RX97FHkOR1hjVMG6FOR8z_4YQ@mail.gmail.com>
Cc: Ladislav Lhotka <lhotka@nic.cz>, YANG Doctors <yang-doctors@ietf.org>
To: Andy Bierman <andy@yumaworks.com>
References: <CABCOCHTB+V6sV8hRcAC+OfseBBN=jUQnHQxzEVB_1drWhaEVXg@mail.gmail.com> <20191218.220130.545256750871048075.mbj@tail-f.com> <CABCOCHRfNrz+cNMA8ciRYGEM-7aR=S2NYJzU-t8JQ620Zs=hvQ@mail.gmail.com> <20191219.090708.1031388562992503497.mbj@tail-f.com> <MN2PR11MB4366F797234C963E23734BA1B5520@MN2PR11MB4366.namprd11.prod.outlook.com> <6684E0F3-DC49-4E94-B4FB-1109662F394D@tail-f.com> <1b398c323c72edc5970e90af06b70226b6eed755.camel@nic.cz> <18F4705E-7ECC-4698-8787-5604CDA8ED79@tail-f.com> <acf7a84b55428a3dd05bd646a518529e412f3da0.camel@nic.cz> <CABCOCHTNGtpmHNQxcfS+rCu1+RX97FHkOR1hjVMG6FOR8z_4YQ@mail.gmail.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/yang-doctors/NIMdM59qU76Iq1uwXugBtWy1LXU>
Subject: Re: [yang-doctors] YANG dialects?
X-BeenThere: yang-doctors@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Email list of the yang-doctors directorate <yang-doctors.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/yang-doctors/>
List-Post: <mailto:yang-doctors@ietf.org>
List-Help: <mailto:yang-doctors-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 21 Dec 2019 08:49:08 -0000

Andy,
Completely agree. oc:pattern does not exist in code anywhere, AFAIK.
/jan

> On Fri, Dec 20, 2019 at 6:44 AM Ladislav Lhotka <lhotka@nic.cz <mailto:lhotka@nic.cz>> wrote:
> On Fri, 2019-12-20 at 11:07 +0100, Jan Lindblad wrote:
> > Lada,
> > 
> > > > > > o  extension: An extension attaches non-YANG semantics to statements.
> > > > > > 
> > > > > > This is not the case here, it is only syntactically compatible. If
> > > > > > tool A
> > > > > > says that some instance data is valid, but tool B says it isn't, then
> > > > > > the
> > > > > > standard is gone.
> > > > > > 
> > > > > > Lada
> > > > 
> > > > Of course it would be legal. It's always legal for a NETCONF server to
> > > > reject
> > > > an edit-config for no apparent reason (from a YANG perspective), so all
> > > > device
> > > > YANG models would still be legal if all pattern statements were removed,
> > > > but
> > > > the same string pattern constraints still enforced by the devices. The OC
> > > > group could therefore remove their pattern statements and introduce a YANG
> > > > extension oc:posix-pattern (or oc:go-pattern, or whatever) that gives a
> > > > hint
> > > > to some clients what is expected. The clients that don't understand this
> > > > extension would just se a rejection for no apparent reason (from a YANG
> > > > perspective).
> > > 
> > > I strongly disagree. Why then do we have so much text about constraints,
> > > validity etc. in RFC 7950? The benefit of schema validation is that an
> > > implementation can rely on an external validator and needn't clutter the
> > > code
> > > with all kinds of input data checks. But if the validation result depends on
> > > whether I choose library A or B, this concept simply falls apart.
> > > 
> > > Lada
> > 
> > I completely agree that the device interface behavior should be exposed with
> > much detail in the corresponding YANG.
> > 
> > Practically, however, I don't think it is reasonable to expect that every
> > little rule of the implementation is exposed. YANG isn't expressive enough to
> > cover everything. And actually, there are sometimes cases where I advise not
> > to add as many constraints into the model as technically possible by the YANG
> > language. Half-a-page long XPath expressions may detract sharply from
> > readability, performance and universality. Implementation details may start to
> > leak into the interface.
> 
> I understand this but I guess the problem is opposite: A server developer uses a
> YANG library for validating config before applying it. If an implemented module
> contained say
> 
>     oc:pattern '^x[123]$';
> 
> the developer might think that this constraint is checked by the library and
> take it for granted. But if the library in fact silently ignores the oc:
> extension, then arbitrary strings will be accepted and can do all kinds of nasty
> things.
> 
> 
> 
> But this is not the openconfig solution.
> The oc-ext:regext-posix extension is much worse that this oc:pattern (does it exist?)
> It can be ignored by the compiler, which of course is unaware that pattern-stmt
> is not the YANG-defined pattern syntax.  They have already added this
> module-level extension to all modules, so problem solved (they think).
> 
> I do not agree that the pattern-stmt is somehow "close to the implementation"
> and therefore one cannot expect it to work on all servers the same way.
> All YANG constraints are supposed to produce the same client results, even
> if they are not implemented the same way on each server.
> 
> There is a proper way to use YANG extensions to annotate the model
> with implementation details.   Writing YANG modules so they only
> work for 1 organization or only work if the server is written in a particular language
> is not the proper way.
> 
> There is no way to fix this correctly in YANG 1.1.
> A new language version with new statements is needed to force all tools
> to support any new pattern syntax.
> 
> Andy
> 
> > 
> > There are also operational aspects to consider, such as a device running out
> > of memory at some point. A client therefore has to be prepared that an edit-
> > config may be refused for no apparent reason. There is no text in the RFC
> > stating that the YANG constraints in a module must be complete, even if I
> > regard that as a goal. One reason UML models tend to be useless as interface
> > descriptions in practice is that they lack these constraints.
> > 
> > YANG extensions are a practical way to introduce validation concepts not
> > feasible to express with YANG and XPath. Here are some examples:
> > + Constraints on compatible colors in an optical YANG model (Not expressive
> > enough)
> > + Constraints on configured paths being disjunct (Not computationally
> > efficient)
> > + Constraints on an interface being unused by all other services (Not
> > universally reusable [layer violation] if service YANG depends on device YANG)
> 
> All these constraints are related to a particular use case but oc:pattern would
> really affect YANG semantics. For example:
> 
> - if oc:pattern is used in a type definition, does it also apply to a derived
> type?
> 
> - according to sec. 8.1 in RFC 7950, this must be true in all data trees: 'All
> leaf data values MUST match the type constraints for the leaf, including those
> defined in the ... "pattern" properties.' But does this also apply to
> oc:pattern?
> 
> In short: I believe that the notion of validity with respect to a YANG schema
> should not depend on extensions as they are defined in RFC 7950. That's why I
> proposed the critical/core extensions, because then YANG implementations can
> learn that a modified YANG is assumed, and refuse to validate instances or at
> least warn the user that things may unexpectedly break.
> 
> Lada
> 
> > 
> > In these cases it may not be possible or desirable to express the constraints
> > in YANG/XPath. It may be possible express the constraint using domain specific
> > extension keywords, which should be better than not expressing it at all.
> > Clients that do not understand the added keywords would still work as long as
> > the configurations generated are valid. Clients with domain understanding,
> > possibly including understanding of the extension keywords, have a better
> > chance at generating valid configurations.
> > 
> > /jan
> > 
> -- 
> Ladislav Lhotka
> Head, CZ.NIC Labs
> PGP Key ID: 0xB8F92B08A9F76C67
> 
> _______________________________________________
> yang-doctors mailing list
> yang-doctors@ietf.org <mailto:yang-doctors@ietf.org>
> https://www.ietf.org/mailman/listinfo/yang-doctors <https://www.ietf.org/mailman/listinfo/yang-doctors>