Juergen Schoenwaelder <j.schoenwael...@jacobs-university.de> wrote: > On Mon, Apr 06, 2020 at 08:51:46AM +0200, Radek Krejci wrote: > > Hi, > > I just want to emphasis, what are the consequences of the option 1. This > > way, the tools are allowed to not accept require-instance in derived > > types, so actually schema authors SHOULD NOT use require-instance this > > way. Since there is at least 1 YANG model in RFC (8639 and I would > > expect more), which has require-instance in the derive type, errata will > > be needed in this case(s). > > > > RFC 7950 says in 9.9.3: > > If this statement is not present, it defaults to "true". > > This means that require-instance is 'on by default'. Hence, it is > necessary to use what RFC 7950 calls a 'restriction' (9.9.1) to > effectively _remove_ what seems like a restriction (or constraint). > (This text apparently has already been in RFC 6020.)
I think the correct fix is to change the text so that "require-instance" is not classified as a restriction and keep the default. Also, I think that it would be easiest (for backwards compatibility w/ existing models) to allow "require-inetance" to be changed in derived types. However, this cannot imo be done in an errata. /martin > > The definition I found in RFC 8639 is this: > > leaf stream { > type stream-ref { > require-instance false; > } > mandatory true; > description > "Indicates the event stream to be considered for > this subscription."; > } > > This could be changed to: > > leaf stream { > type leafref { > path "/sn:streams/sn:stream/sn:name"; > require-instance false; > } > mandatory true; > description > "Indicates the event stream to be considered for > this subscription."; > } > > What bothers me here is that I find the design of the default > behaviour backwards. If the default would have been > > If this statement is not present, it defaults to "false". > > then require-instance could be used to add a constraint in derived > types but not to remove it (like the other type restrictions). > > If people were to agree that the default here is wrong, can the > problem be fixed? Likely not since changing the default (even in say > YANG 2.0) could have drastic consequences and would essentially > require to be always explicit about the require-instance property to > be on the safe side. > > /js > > > Regards, > > Radek > > > > > > Dne 03. 04. 20 v 18:55 Juergen Schoenwaelder napsal(a): > > > I propose option 1) and add an issue on yang-next (if not already > > > there yet). > > > > > > /js > > > > > > On Fri, Apr 03, 2020 at 04:24:35PM +0000, Rob Wilton (rwilton) wrote: > > >> For the errata, it looks like there are two choices: > > >> > > >> 1) We reject this errata, on the grounds that it is unclear on what the > > >> behaviour was expected to be. It is left unspecified as to whether > > >> require-instance is allowed in a typedef. We add an issue on the > > >> YANG.Next issue tracker to sort this out in a future revision of YANG. > > >> > > >> 2) We agree on what the expected behaviour should be, in which case it > > >> may be possible that this can be "Hold for document update", although it > > >> still seems questionable whether this really fits as an errata. > > >> > > >> Regards, > > >> Rob > > >> > > >> > > >>> -----Original Message----- > > >>> From: netmod <netmod-boun...@ietf.org> On Behalf Of Ladislav Lhotka > > >>> Sent: 03 April 2020 15:52 > > >>> To: netmod@ietf.org > > >>> Subject: Re: [netmod] [Technical Errata Reported] RFC7950 (6031) > > >>> > > >>> On Fri, 2020-04-03 at 14:01 +0000, Sterne, Jason (Nokia - CA/Ottawa) > > >>> wrote: > > >>>> Hi Martin, > > >>>> > > >>>> I believe you that the technical "value space" doesn't change, but > > >>>> that leaf would suddenly accept more values than it did before right? > > >>>> I'm wondering if we want to follow the "spirit" here, or stick with the > > >>> "value space" argument. > > >>> > > >>> I agree with Martin here. Moreover, if such a derived type is added, it > > >>> doesn't change anything related to existing data, because they use the > > >>> base type as before. New data nodes may use the new type but no > > >>> confusion > > >>> can arise - their type has "require-instance false", which is correct. > > >>> > > >>> Lada > > >>> > > >>>> I'm not really certain what the implications are (and maybe someone > > >>>> has an example of why it is better to allow it?) but overwriting > > >>>> require-instance with 'false' doesn't feel right. > > >>>> > > >>>> Jason > > >>>> > > >>>>> -----Original Message----- > > >>>>> From: Martin Björklund <mbj+i...@4668.se> > > >>>>> Sent: Friday, April 3, 2020 9:54 AM > > >>>>> To: Sterne, Jason (Nokia - CA/Ottawa) <jason.ste...@nokia.com> > > >>>>> Cc: rwilton=40cisco....@dmarc.ietf.org; j.schoenwaelder@jacobs- > > >>>>> university.de; mbj+i...@4668.se; war...@kumari.net; netmod@ietf.org; > > >>>>> rfc- edi...@rfc-editor.org > > >>>>> Subject: Re: [netmod] [Technical Errata Reported] RFC7950 (6031) > > >>>>> > > >>>>> Hi, > > >>>>> > > >>>>> "Sterne, Jason (Nokia - CA/Ottawa)" <jason.ste...@nokia.com> wrote: > > >>>>>> I don't think we should allow overwriting a require-instance true > > >>>>>> with a require-instance false in a derived type. It seems to go > > >>>>>> against the spirit of avoiding expansion of allowable values. > > >>>>> As I wrote earlier in this thread, the value space doesn't change > > >>>>> with require-instance. > > >>>>> > > >>>>> > > >>>>> /martin > > >>>>> > > >>>>> > > >>>>> > > >>>>>> From section 4.1 of RFC7950: > > >>>>>> > > >>>>>> Derived types can restrict their base type's set of valid > > >>>>>> values > > >>>>>> > > >>>>>> And this text in section 7.3.4 implies that derived types only do > > >>>>>> further restriction: > > >>>>>> > > >>>>>> If the type's default value is not valid according to the new > > >>>>>> restrictions specified in a derived type or leaf definition, the > > >>>>>> derived type or leaf definition MUST specify a new default value > > >>>>>> compatible with the restrictions. > > >>>>>> > > >>>>>> Going the other direction (overwriting with require-instance true) > > >>>>>> seems OK to me. > > >>>>>> > > >>>>>> Jason > > >>>>>> > > >>>>>> > > >>>>>>> -----Original Message----- > > >>>>>>> From: netmod <netmod-boun...@ietf.org> On Behalf Of Rob Wilton > > >>>>>>> (rwilton) > > >>>>>>> Sent: Friday, April 3, 2020 8:06 AM > > >>>>>>> To: Juergen Schoenwaelder > > >>>>>>> <j.schoenwael...@jacobs-university.de>; > > >>>>>>> Martin > > >>>>>>> Björklund <mbj+i...@4668.se> > > >>>>>>> Cc: war...@kumari.net; netmod@ietf.org; > > >>>>>>> rfc-edi...@rfc-editor.org > > >>>>>>> Subject: Re: [netmod] [Technical Errata Reported] RFC7950 (6031) > > >>>>>>> > > >>>>>>> > > >>>>>>> > > >>>>>>>> -----Original Message----- > > >>>>>>>> From: netmod <netmod-boun...@ietf.org> On Behalf Of Juergen > > >>>>>>> Schoenwaelder > > >>>>>>>> Sent: 27 March 2020 16:13 > > >>>>>>>> To: Martin Björklund <mbj+i...@4668.se> > > >>>>>>>> Cc: ibagd...@gmail.com; war...@kumari.net; netmod@ietf.org; > > >>>>>>>> rfc- edi...@rfc-editor.org > > >>>>>>>> Subject: Re: [netmod] [Technical Errata Reported] RFC7950 > > >>>>>>>> (6031) > > >>>>>>>> > > >>>>>>>> On Fri, Mar 27, 2020 at 04:35:44PM +0100, Martin Björklund > > >>> wrote: > > >>>>>>>>> [re-sent w/ correct address] > > >>>>>>>>> > > >>>>>>>>> Juergen Schoenwaelder <j.schoenwael...@jacobs-university.de> > > >>>>> wrote: > > >>>>>>>>>> Hi, > > >>>>>>>>>> > > >>>>>>>>>> two comments: > > >>>>>>>>>> > > >>>>>>>>>> - It is unclear to me whether this really qualifies as an > > >>> errata. > > >>>>>>>>>> - If we add this, then there should probably text about > > >>> which > > >>>>>>>>>> combinations are allowed. For example, for pattern and > > >>>>>>>>>> ranges, > > >>>>> there > > >>>>>>>>>> is explicit text that says further restrictions of the > > >>>>>>>>>> value space > > >>>>>>>>>> are possible, bot not expansions. If we follow that > > >>>>>>>>>> logic, then > > >>>>>>>>>> > > >>>>>>>>>> typedef a { > > >>>>>>>>>> type leaf-ref { > > >>>>>>>>>> path "/some/thing"; > > >>>>>>>>>> require-instance true; > > >>>>>>>>>> } > > >>>>>>>>>> } > > >>>>>>>>>> > > >>>>>>>>>> typedef b { > > >>>>>>>>>> type a { > > >>>>>>>>>> require-instance false; > > >>>>>>>>>> } > > >>>>>>>>>> } > > >>>>>>>>>> > > >>>>>>>>>> might be illegal since b has a larger value space than a. > > >>>>>>>>> The value space of b is the same as for a. "require-instance" > > >>>>>>>>> doesn't > > >>>>>>>>> change the value space; it changes semantic validation of > > >>>>>>>>> the given values ((see my mail from 17 Mar, "Require-instance > > >>> problem"). > > >>>>>>>>> /martin > > >>>>>>>> OK. If we consider require-instance a constraint and not a > > >>>>>>>> restriction, then the motivation for this errata is at least > > >>>>>>>> confusing: > > >>>>>>>> > > >>>>>>>> Since no one argued against this understanding, this errata > > >>> changes > > >>>>>>>> the text to the same form as in other restrictions applicable > > >>> to > > >>>>>>>> derived types. > > >>>>>>>> > > >>>>>>>> Simply put: Do you think it is OK to overwrite a > > >>>>>>>> require-instance true with a require-instance false in a derived > > >>> type? > > >>>>>>> [RW] > > >>>>>>> I'm not sure, but going in the other direction seems plausible. > > >>>>>>> > > >>>>>>> E.g. you start with a typedef that is explicitly > > >>>>>>> require-instance false that is then refined by a typedef to be > > >>>>>>> require-instance true. > > >>>>>>> > > >>>>>>> Regards, > > >>>>>>> Rob > > >>>>>>> > > >>>>>>> > > >>>>>>>> /js > > >>>>>>>> > > >>>>>>>> -- > > >>>>>>>> Juergen Schoenwaelder Jacobs University Bremen gGmbH > > >>>>>>>> Phone: +49 421 200 3587 Campus Ring 1 | 28759 Bremen | > > >>> Germany > > >>>>>>>> Fax: +49 421 200 3103 <https://www.jacobs- > > >>> university.de/> > > >>>>>>>> _______________________________________________ > > >>>>>>>> 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 > > >>>> _______________________________________________ > > >>>> 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 > > >> _______________________________________________ > > >> 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 > > > -- > Juergen Schoenwaelder Jacobs University Bremen gGmbH > Phone: +49 421 200 3587 Campus Ring 1 | 28759 Bremen | Germany > Fax: +49 421 200 3103 <https://www.jacobs-university.de/> > > _______________________________________________ > 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