Hi,
A variant on your suggestion:
Rather than "diagnostics true;" a potentially more general way of
handling this could be a generalized schema flag to indicate that a
particular node (and its children) is never returned unless explicitly
requested. E.g. "hidden: true" instead of "diagnostics: true". The
data would only be returned if either (i) the filter explicitly
indicated that hidden data should be returned (as per Kent's
suggestion), or possibly also (ii) if the request path (or filter)
explicitly specified the hidden node(s).
Thanks,
Rob
On 15/12/2016 19:23, Vladimir Vassilev wrote:
Hi,
Here is a summary of the proposed solutions so far:
* The solution with introduction of YANG statement "diagnostics
true;", additional datastore and NETCONF protocol change. IMO that
sounds heavy but valid solution.
* The solution with RPC returning the data as output. IMO has the
limitation of not presenting the diagnostics data in the data tree (no
valid instance-identifiers to be used in notifications). But is the
simplest to have in place.
* The solution with RPC enabling the containers only for a certain
session.
I thought also of this alternative solution: The solution is to avoid
clobbering the replies to <get>s without filter or <get>s with filter
matching only parent nodes of the "diagnostics state" container data
and not return those nodes in the reply except in the cases the filter
matches data nodes part of the diagnostics data explicitly.
Example for /interfaces-state/interfaces/diagnostics (using xpath
filter for brevity but valid for the "subtree" case):
These skip "diagnostics":
<get><filter type="xpath" select="/interfaces-state"\></get>
<get><filter type="xpath" select="/interfaces-state/interface"\></get>
These return "diagnostics":
<get><filter type="xpath" select="/interfaces-state/interface/*"\></get>
<get><filter type="xpath"
select="/interfaces-state/interface/diagnostics"\></get>
This looks like a violation of RFC 6241 6.2.5 bullet 12 but IMO the
container is non-mandatory diagnostics data so returning it only when
someone really wants it and not otherwise is the definition of the
solution to the problem.
/Vladimir
On 12/12/2016 05:47 PM, Kent Watsen wrote:
Hi Robert,
You’re right, it should’ve been the <get-data> (not <get-config>).
However, I think that it’s better to use a flag on the
<operational-state> datastore, rather than to define a new
datastore. Not only would it mimic how with-defaults works, but it
also seems more intuitive from a retrieval perspective, as the
diagnostics nodes could be sprinkled throughout a data model, and a
single <get-data> could return all nodes (not just the diagnostics)
for a given subtree. Thoughts?
Separately, from a modelling perspective, presumably there would have
to be an additional flag to go with the config false flag, something
like the below. Is this what you were envisioning?
container thermostat {
leaf configured-temperature {
type int8;
}
leaf current-temperature {
config false;
type int8;
}
container diagnostics {
config false;
diagnostics true; <-- new flag here
...
}
Is all this leading up to a draft? ;)
Kent // contributor
*From: *Robert Wilton <[email protected]>
*Date: *Monday, December 12, 2016 at 6:10 AM
*To: *Kent Watsen <[email protected]>, Andy Bierman
<[email protected]>
*Cc: *"[email protected]" <[email protected]>
*Subject: *Re: [netmod] Modelling different "levels" of data in YANG
Hi Kent,
On 10/12/2016 00:59, Kent Watsen wrote:
> I prefer not to use specialized <get-foo> operations.
Agreed, I was thinking something more along the lines of:
<get-config>
<source>
<operational-state/>
</source>
<with-diagnostics/> <--- note this flag here
<filter type="subtree">
<top xmlns="http://example.com/schema/1.2/config"
<http://example.com/schema/1.2/config>>
<foo>
<bar/>
</foo>
</top>
</filter>
</get-config>
Thus explicitly requesting all the extra stuff get returned...
Yes, that is roughly along the lines that I was thinking.
Or building on draft-nmdsdt-netmod-revised-datastores:
- presuming the existing of a <get-data/> operation to generically
return the contents of any datastore,
- defining a new <diagnostics> datastore that contains the contents
of the <operational-state> along with all config false schema nodes
labelled as "diagnostics true".
<get-data>
<source>
<diagnostics/>
</source>
<filter type="subtree">
....
<get-data/>
Thanks,
Rob
> In the usage model that Rob described, the service tech will be
> setting diag-mode to 'system' then retrieving the extra
'diag-stats',
>then setting diag-mode back to 'user'.
Right, but this does not seem ideal as the diag-mode toggle is a
global setting that would affect all clients for some window of
time, or do we envision diag-mode dropping the system down to
single-user mode?
Kent // contributor
.
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod