Hi Lada,

On 26/07/2017 11:46, Ladislav Lhotka wrote:
"Sterne, Jason (Nokia - CA/Ottawa)" <[email protected]> writes:

OK – so the same leaf (in the schema) has the same value space in the 
conventional datastores and in the operational datastore.  That probably makes 
sense since a single schema describes the model for that leaf whether it is 
accessed in conventional DSes or the operational DS.

But I think that also means that *if* you need slightly different
value spaces for an item, then you’ll need to split it into multiple
leafs in the schema.
This is easier said than done: will there be "foo" and "foo-state" as
sibling leaves, both present in <operational>, as sec. 4.7 indicates?

Apart from value space mismatch, there are other potential issues like
the one that I mentioned in Prague: "if-feature" applies to
configuration but not to state data. An example is in ietf-routing: in
config, "router-id" leaf is only present if "router-id" feature is
advertised (other servers derive router-id by other means), but in state
data "router-id" does not depend on the feature.
It is perhaps worth noting that the proposed NMDA YANG library allows for different features to be expressed in different datastores. Not that I am actually suggesting that this would be a good solution here.


The assumption made in NMDA that config and state data schemas can be
unified is IMO simply broken. YANG, being basically a document-oriented
schema language, is not designed to support such tricks.
I agree that you cannot align config and state schema values in all cases. However, I think that in the vast majority of cases there is close alignment between the configured value, and what the system is using. Optimizing for this common case should make management systems simpler for the mainline cases. There will always be some exceptions, but that is OK too.

For the router-id, I think that my preferred solution would be to:
Define the "configurable-router-id" feature, have a single router-id leaf, then put in the description that it is only configurable if the "configurable-router-id" feature is enabled.

Possibly, in future, we could extend the YANG language to allow if-feature to be conditionally applied to only config true or config false elements.

An alternative solution, that works today, is to just have 2 separate, but co-located, leaves:
1) cfg-router-id, config true, conditional on if-feature.
2) router-id, config false, operational.
- In the future, we could define a YANG extension to bind the config and state leaves together in the model (e.g. a related-config statement). But I think that we should see how often this issue turns up in practice before we jump to doing this.

Thanks,
Rob

Lada

Jason

From: Kent Watsen [mailto:[email protected]]
Sent: Monday, July 24, 2017 20:53
To: Acee Lindem (acee) <[email protected]>; Sterne, Jason (Nokia - CA/Ottawa) 
<[email protected]>; [email protected]
Subject: Re: [netmod] nmda-guidelines-01: value space for config vs state


Related, revised-datastores-03#section-4.7 says:

    As a result of remnant configuration, the semantic constraints
    defined in the data model cannot be relied upon for <operational>,
    since the system may have remnant configuration whose constraints
    were valid with the previous configuration and that are not valid
    with the current configuration.  Since constraints on "config false"
    nodes may refer to "config true" nodes, remnant configuration may
    force the violation of those constraints.  The constraints that may
    not hold include "when", "must", "min-elements", and "max-elements".
    Note that syntactic constraints cannot be violated, including
    hierarchical organization, identifiers, and type-based constraints.

The last sentence implies that the value-space must be the same between
nodes in <operational> and the conventional datastores.

Kent // contributor


On 7/24/17, 4:35 PM, "netmod on behalf of Acee Lindem (acee)" 
<[email protected]<mailto:[email protected]> on behalf of 
[email protected]<mailto:[email protected]>> wrote:

Hi Jason,

From: "Sterne, Jason (Nokia - CA/Ottawa)" 
<[email protected]<mailto:[email protected]>>
Date: Monday, July 24, 2017 at 4:32 PM
To: Acee Lindem <[email protected]<mailto:[email protected]>>, 
"[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>>
Subject: RE: [netmod] nmda-guidelines-01: value space for config vs state

Hi Acee,

OK – maybe this example isn’t the best.  But in the general case my concern 
about using a super-set would be that it implies all those values are valid 
input values for an edit-config in the candidate/running.  I can’t immediately 
see a clean way to indicate that some of the values aren’t valid for writing.

Another possible approach we could use is that if the value space is different, 
then it means we should have separate leafs.   The model designer could have 1 
typedef for the common values (i.e. for applied/intended config), and then use 
a union with additional values for the state/operational leaf that supports the 
extra values.

Right – if there additional values that the leaf can take, then it is probably 
pure operational state as opposed to applied config.

Thanks,
Acee


Jason

From: Acee Lindem (acee) [mailto:[email protected]]
Sent: Monday, July 24, 2017 16:22
To: Sterne, Jason (Nokia - CA/Ottawa) 
<[email protected]<mailto:[email protected]>>; 
[email protected]<mailto:[email protected]>
Subject: Re: [netmod] nmda-guidelines-01: value space for config vs state

Hi Jason,

From: netmod <[email protected]<mailto:[email protected]>> on behalf of "Sterne, 
Jason (Nokia - CA/Ottawa)" <[email protected]<mailto:[email protected]>>
Date: Monday, July 17, 2017 at 6:22 AM
To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Subject: [netmod] nmda-guidelines-01: value space for config vs state

Hi all,

A note in Rob Wilton’s presentation today in rtgwg mentioned something about 
consistency in the value space for config vs state leafs.  The NMDA approach results in 
the same leaf for both config & state in many cases (at least for the cases where 
the separate config & state leafs were only there to represent intended vs applied 
config).

But aren’t there some cases where the value space for state will be different than 
the value space for config ?  I’m thinking of the basic admin/oper state for 
interfaces for example where config may allow enable/disable but state may have 
additional values like ‘testing’.  If the config & state value spaces aren’t 
100% the same, are module designers recommended to create a separate state leaf ?

In this particular example, the leaf you are describing would be read-only 
system state as opposed to applied state. If there were such a leaf that could 
take on a wider range of values of applied state values than the intended 
state, I’d expect the value space would need to be the superset.

Thanks,
Acee


Rgds,
Jason
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to