Martin, Jernej, I am a bit confused by your replies
With a reference to my short example below, are you saying that NEW (B) provides an NBC change while NEW (A) provides a BC change for OLD? Actually , this is exactly the result I have got by testing NEW (A) and NEW (B) with pyang However, if I am not mistaken, based on section 7.18.2 of RFC7950, NEW (A) seems equivalent to NEW (B): if identity B (baz) is derived from A (foo) and C (bar) is derived from B (baz), then C (bar) is also derived from A (foo) ... Italo > -----Original Message----- > From: Jernej Tuljak <[email protected]> > Sent: martedì 31 gennaio 2023 08:19 > To: Martin Björklund <[email protected]> > Cc: Italo Busi <[email protected]>; [email protected] > Subject: Re: [netmod] Changing an identity base > > On 30/01/2023 11:17, Martin Björklund wrote: > > Hi, > > > > > > Jernej Tuljak <[email protected]> wrote: > >> On 30/01/2023 10:19, Italo Busi wrote: > >>> Yes, the intention is not to change the semantic of bar but to > >>> introduce a more “restricted” identity from which bar could be > >>> derived > >>> > >>> Something like introducing an identity for italian-car in between > >>> car and Ferrari identities > >>> > >> I understand your intention. I do not understand the intention behind > >> text in RFC 7950, however. > >> > >> My clarification request was aimed at RFC 7950 authors and whether a > >> revision like this could be considered as not changing the semantics > >> of the original identity definition because: > >> > >> Otherwise, if the semantics of any previous definition are > >> changed > >> (i.e., if a non-editorial change is made to any definition other > >> than > >> those specifically allowed above), then this MUST be achieved by > >> a > >> new definition with a new identifier. > >> > >> So, RFC authors: Is "NEWB:bar" definition semantically equivalent to > >> "OLD:bar" definition? > > I think that this change isn't allowed according to RFC 7950, but it > > should have been. If there ever is a new version of YANG, this should > > be fixed. > > > > The quoted text says: > > > > if a non-editorial change is made to any definition other > > than those specifically allowed above, then this MUST be achieved > > by a > > new definition with a new identifier > > > > This is a non-editorial change that is not "specifically allowed > > above". > > That has been my interpretation as well so far. Our tools were implemented > accordingly. I believe that the Pyang plugin also reports an error for a > change > like this. > > Jernej > > > > > /martin > > > > > > > >> Jernej > >> > >>> Italo > >>> > >>> *From:* Jernej Tuljak <[email protected]> > >>> *Sent:* lunedì 30 gennaio 2023 08:51 > >>> *To:* Italo Busi <[email protected]>; [email protected] > >>> *Subject:* Re: [netmod] Changing an identity base > >>> > >>> On 27/01/2023 17:54, Italo Busi wrote: > >>> > >>> According to section 11 of RFC7950, the following change is > >>> considered BC: > >>> > >>> o A "base" statement may be added to an "identity" statement. > >>> > >>> Since, as explained in section 7.18.2 of RFC7950, the derivation > >>> of identities is transitive, my understanding is that replacing a > >>> "base" statement with new "base" statement which is derived from > >>> the previous one is also a BC change. > >>> > >>> Considering the example below, the NEW (A) change is BC according > >>> to section 11 of RFC7950. However, NEW (B) is equivalent to NEW > >>> (A), since the new baz is derived from foo, and therefore it is > >>> also a BC change. > >>> > >>> Is my understanding correct? > >>> > >>> > >>> I'd like a clarification regarding this as well. Is "NEWB:bar" > >>> definition semantically equivalent to "OLD:bar" definition? > >>> > >>> Jernej > >>> > >>> > >>> Thanks, Italo > >>> > >>> OLD > >>> > >>> identity foo {} > >>> > >>> identity bar { > >>> > >>> base foo; > >>> > >>> } > >>> > >>> NEW (A) > >>> > >>> identity foo {} > >>> > >>> identity baz { > >>> > >>> base foo > >>> > >>> } > >>> > >>> identity bar { > >>> > >>> base foo; > >>> > >>> base baz; > >>> > >>> } > >>> > >>> NEW (B) > >>> > >>> identity foo {} > >>> > >>> identity baz { > >>> > >>> base foo > >>> > >>> } > >>> > >>> identity bar { > >>> > >>> base baz; > >>> > >>> } > >>> > >>> > >>> > >>> _______________________________________________ > >>> > >>> netmod mailing list > >>> > >>> [email protected] > >>> > >>> https://www.ietf.org/mailman/listinfo/netmod > >>> _______________________________________________ netmod mailing list [email protected] https://www.ietf.org/mailman/listinfo/netmod
