Open rgwilton opened 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.
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.
Our server already works this way. It removes obsolete nodes from the server so they would cause unknown-object errors if used
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".
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
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.