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

Reply via email to