On 14/06/2017 10:46, Ladislav Lhotka wrote:
On 14 Jun 2017, at 11:21, Robert Wilton <[email protected]> wrote:
On 14/06/2017 09:28, Ladislav Lhotka wrote:
On 14 Jun 2017, at 00:35, Alex Campbell <[email protected]> wrote:
Presumably a device is free to not implement an optional config=false node if
that node would never be returned in a response anyway - as this will make no
externally visible difference.
That's my view, too. However, this reasoning works if the parent container is
being retrieved but it is not very clear what is supposed to happen if the
client asks explicly for that optional parameter. This looks like a gap in the
architecture – most of the time, YANG pretends to be something like a schema
language in that it describes constraints on a valid data tree but conformance
issues like what parameters a server needs to implement are something different.
It would surely do the same thing as if a client requested any node in a YANG
data tree that doesn't exist.
So you are saying that one server can return the parameter but another may report
"404 Not Found", correct?
Yes.
RESTCONF has special semantics if a GET request is for a specific leaf rather than a
parent container, but I just regard this as a mistake in the specification (i.e. the
"restconf default handling" thread on the NETCONF alias).
Defaults are another can of worms. If we have an optional config false
parameter with a default defined in YANG and the server doesn't implement the
parameter (and hence doesn't send it), can the client assume that the server
actually has the default value?
Not in any way that is reliable. I.e. sometimes the client may make
this assumption and just be wrong!
One of the key themes running through the NMDA work has been to try and
get more integrity and consistence between the data that is being returned.
So, in the NMDA world, I think that there are really only two
"with-default" options that are robust and most useful:
(1) For the candidate/running/status datastores, where the content of
the datastore is controlled by the client, then the explicit mode is the
sane default choice. I.e. generally you should get out exactly what you
put in.
(2) For the operational state datastore, the report-all mode is the sane
choice, because this is the only one that allows a client to detect that
a server is choosing to return no value rather than the default value.
I do appreciate that the other with-defaults options can be used to
either minimize the amount of data being transferred (potentially at the
expense of data accuracy), or provide a consolidated view of the
configuration (e.g. to avoid the client constructing the same combined
view itself). But I think that the client should have to opt in if they
want to see these, and the normal behaviour should be to favour
correctness and explicitness.
Hence, I wish there had been more consistency with the normal choice of
default mode in the standard rather that leaving it up to the server
implementation to decide, thus requiring that clients have to cope with
a mismash of default handling flavours.
Rob
Lada
However, if the model states or implies that the node is present under certain
conditions (for example, the node is always present for Ethernet ports), and
the device can meet those conditions (i.e. it has an Ethernet port), then the
device must implement the node or it does not conform to the model.
Right, this could be written in a description, but I've been assuming it is not
the case.
Lada
Rob
Alex
From: netmod <[email protected]> on behalf of Andy Bierman
<[email protected]>
Sent: Wednesday, 14 June 2017 7:30 a.m.
To: Ladislav Lhotka
Cc: [email protected]
Subject: Re: [netmod] Question on intefaces-state model
On Tue, Jun 13, 2017 at 11:52 AM, Ladislav Lhotka <[email protected]> wrote:
Andy Bierman <[email protected]> writes:
On Mon, Jun 12, 2017 at 10:21 AM, Juergen Schoenwaelder <
[email protected]> wrote:
On Fri, Jun 09, 2017 at 10:55:20AM +0000, Bogaert, Bart (Nokia -
BE/Antwerp) wrote:
We have a question regarding the statistics container as defined in the
interfaces-state model. This container defines one mandatory leaf
(discontinuity-time) while all other leafs are optional. What is the
rationale behind this leaf being mandatory and not an optional field?
It does not make a lot of sense to return a discontinuity-time value and
no
counters if none of the counters are relevant for a specific interface.
Another alternative could be to add, via a deviation, a when clause to
the
container indicating for which ifType(s) the container is (or is not)
present. But that would lead to not supporting the IETF interfaces model
to
the full extent.
The discontinuity-time is relevant for _any_ counter associated with
an interface, regardless whether the counter is defined in the
interfaces model or elsewhere. I have a hard time to imagine an
interface that has zero counters.
The mandatory-stmt is very confusing for config=false nodes. Mandatory=true
means
an <rpc-reply> must contain an instance of the mandatory leaf.
I don't think it is that confusing. RFC 7950 defines what a valid data
tree means and "mandatory" are among the constraints.
I agree though that in terms of a management protocol it means different
things for config true and false data, but this is true also for default
values and maybe other YANG concepts as well.
Mandatory=false does not mean optional-to-implement although it sure
looks that way for config=false nodes. Only if-feature can make a node
optional to implement.
I don't think this interpretation is supported by any text in the YANG
spec. State data nodes that are optional needn't be implemented.
RFC 7950, sec 5.6 (Conformance) does not support your interpretation.
It defines basic behavior, optional (via features), and deviations as the only
mechanisms affecting conformance.
Lada
Andy
/js
Andy
--
Juergen Schoenwaelder Jacobs University Bremen gGmbH
Phone: +49 421 200 3587 Campus Ring 1 | 28759 Bremen | Germany
Fax: +49 421 200 3103 <http://www.jacobs-university.de/>
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod
--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67
--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod
--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67
.
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod