On Wed, Jan 18, 2017 at 4:01 PM, Phil Shafer <[email protected]> wrote:

> Andy Bierman writes:
> >The reason the status-stmt is broken is because status=obsolete is not
> >inherited from the parent.  The status obsolete means it is gone from the
> >server.
>
> No: '"obsolete" means that the definition is obsolete and SHOULD NOT be
> implemented and/or can be removed from implementations.'  It's not
> gone, just that it _can_ be removed.
>
>
OK.  If the parent object gets removed, then NETCONF and RESTCONF can
no longer access the descendant nodes.



> >Since YANG data is hierarchical, any descendants of the obsolete node
> >are no longer accessible in any way.
>
> This is not true.  "deprecated" and "obsolete" nodes can continue
> to exist for decades.  They are accessible by normal mechanisms.
> The "status" affects expectations, not implementations, which
> tend to not remove features that might affect paying customers.
>
>

I mean in a given server, if that server has removed obsolete /foo
then you cannot access and descendants of /foo

The status-stmt is for the benefit of the client developer, not just
the server developer.  They are forewarned that servers SHOULD
remove obsolete nodes, and it might be wise to find a different data node
to use.


In any case, my main contention is that the rule:
>
>     If a definition is "current", it MUST NOT reference a "deprecated" or
>     "obsolete" definition within the same module
>
> is not workable, since nodes may need to reference deprecated and
> obsolete nodes to block the interactions between new and old nodes,
> as depicted in my example.
>
>
OK


> Thanks,
>  Phil
>


Andy


>
> >On Wed, Jan 18, 2017 at 1:32 PM, Phil Shafer <[email protected]> wrote:
> >> Martin Bjorklund writes:
> >> >But marking definition as obsolete in one module cannot automatically
> >> >make definitions in *other* modules obsolete.
> >> >
> >> >(*) _maybe_ 7950 can be interpreted in this way when it says:
> >> >
> >> >   If a definition is "current", it MUST NOT reference a "deprecated"
> or
> >> >   "obsolete" definition within the same module
> >> >
> >> >If you're in a good mood, you could argue that a child always
> >> >"references" its parent.
> >>
> >> That's a massively deforming interpretation of "references".
> >>
> >> I'm not even sure this is a good rule at all.  Consider:
> >>
> >>     leaf old-stuff {
> >>         status deprecated;
> >>         must not(../new-stuff);
> >>     }
> >>     leaf new-stuff {
> >>         must not(../old-stuff);
> >>     }
> >>
> >> My new-stuff definitely references old-stuff which is deprecated,
> >> but this is a _good_ data model and should not be "MUST NOT"d out
> >> of existence.
> >>
> >> Thanks,
> >>  Phil
>
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to