netmod-wg / yang-next

Feature requests for future versions of YANG
6 stars 0 forks source link

Require that "status obsolete" nodes are not implemented #66

Open rgwilton opened 5 years ago

rgwilton commented 5 years ago

We should consider changing YANG (with some sensible migration path) to require servers to not implement "status obsolete" nodes or otherwise use a [new] explicit deviation mechanism to indicate that the data noes are still implemented and present in the schema.

This could be done on a per module basis (i.e. every module that is YANG version 1.2 or above must not have their obsolete nodes implemented by the server, or otherwise deviated), but it would be preferable to be able to indicate this a server wide behavior, perhaps as a "obsolete-nodes-absent" flag in YANG library.

This issue is also discussed as part of the YANG versioning draft-to-be: draft-verdt-netmod-yang-semver

One key consideration here is the meaning of a data node that is marked as obsolete and is also mandatory. If the data node remains as mandatory then a client MUST have a way to find out if it is implemented to be able to correctly use the schema.

mbj4668 commented 5 years ago

One key consideration here is the meaning of a data node that is marked as obsolete and is also mandatory. If the data node remains as mandatory then a client MUST have a way to find out if it is implemented to be able to correctly use the schema.

As I have explained elsewhere, there is no interaction between these statements. If server implements a node that is mandatory (regardless of status), it must be present. The "only" problem is how a client can find out if a certain obsolete node is implemented or not.

rgwilton commented 5 years ago

One key consideration here is the meaning of a data node that is marked as obsolete and is also mandatory. If the data node remains as mandatory then a client MUST have a way to find out if it is implemented to be able to correctly use the schema.

As I have explained elsewhere, there is no interaction between these statements. If server implements a node that is mandatory (regardless of status), it must be present. The "only" problem is how a client can find out if a certain obsolete node is implemented or not.

I agree.

abierman commented 5 years ago

Our server already works this way. It removes obsolete nodes from the server so they would cause unknown-object errors if used

kwatsen commented 5 years ago

New implementations MUST NOT implement the obsoleted node, unless using a deviation (per issue #63) to mark it as "deprecated" (per issue #65) or "current".

kwatsen commented 3 weeks ago

Juergen: why is this importance high? James: use case: vendor implements a standards model, moves to a new version that has a node obsoleted, but they want to continue using anyway Jurgen: SMTP used counters, which were obsoleted, but implementation still wanted use. Jurgen: these are two different things: what is the status of the implementation vs status of the definition General opinion: SHOULD NOT seems okay

Close this issue? - Andy/James: yes