On Tue, Jan 10, 2017 at 9:07 AM, Robert Wilton <rwil...@cisco.com> wrote:
> > > On 10/01/2017 16:16, Juergen Schoenwaelder wrote: > >> On Tue, Jan 10, 2017 at 07:30:51AM -0800, Andy Bierman wrote: >> >>> On Mon, Jan 9, 2017 at 11:21 PM, Juergen Schoenwaelder < >>> j.schoenwael...@jacobs-university.de> wrote: >>> >>> On Mon, Jan 09, 2017 at 01:17:09PM -0800, Andy Bierman wrote: >>>> >>>>> I think itt is not realistic to say that datastores are optional. >>>>> >>>>> e.g. <enabled> leaf: If there is a standard way to enable/disable >>>>> config >>>>> then individual "enabled" leafs are redundant. However XPath >>>>> (must/when) >>>>> has no way to describe if the subtree is enabled (which is a >>>>> >>>> show-stopper) >>>> >>>> I may not understand what you are saying. From what I know, there are >>>> implementations that allow to 'comment out' nodes and subtrees and >>>> that work with clients in a backwards compatible way. >>>> >>>> <foo-config> vs <foo-oper>. If the applied or operational datastore is >>>>> assumed, >>>>> then there is no need to model the redundant config-as-operstate. >>>>> If this is left out of the model, then the datastore becomes mandatory. >>>>> If it is left in the model, the datasore becomes redundant. >>>>> >>>>> The basic premise that these datastores are optional is flawed. >>>>> One cannot design a YANG module assuming the datastores are present >>>>> if they are in fact optional. >>>>> >>>> The claim that all datastores are mandatory is equally flawed. >>>> >>>> >>>> correct -- nobody is saying that. >>> >> Well, I originally commented on the statement that intened would be >> required and adding complexity - it does not. >> >> >>> The reason this is different is that the YANG objects are impacted. >>> Candidate vs. running has no impact whatsoever on the set of >>> YANG modules. The protocol is not self-selecting some objects >>> and making other objects invisible. >>> >> Yes. And the same is true for intended as long as an implementation >> does not support templates or inactive configuration objects. >> >> But if I want to model <foo-state>, I will soon have to decide >>> to use <foo-state> and allow all protocols to read it or >>> model get-state(foo) and require a different module for each >>> protocol. >>> >> If you do /foo and /foo-state, things will just work with or without >> an operational state datastore. >> > True, but there would also be an undesirable duplication of data in the > data tree. > > > If you have only /foo, then an >> operational state datastore may come in handy if you have to support >> config and state with different lifetimes. >> > I think that this may be more than "come in handy". I think that there > would be key information that clients would expect to be available in a > model but wouldn't be easily retrievable without supporting the operational > state datastore. Specifically you lose the ability to easily query an > operational property of a system that can be configured, but hasn't been > configured. > > Example: Consider an Ethernet interface speed leaf that in the running ds > represents the configured speed, and in the operational state ds represents > the actual operational speed in use. Normally, the operational speed would > default to the maximum speed supported by the hardware (or the negotiated > value if auto-neg is in effect). If a device doesn't support the > operational state datastore then you wouldn't be able to query the > operational speed of an interface if it hasn't also been configured. > This is my concern -- that data modelers will put in the <oper-speed> leaf to make sure all protocols (including existing NETCONF) can retrieve the oper-value. For many decades, this has been the design approach. There have not been many leafs where interactions with control-plane protocols is a factor. The SNMP-style solution is ad-hoc, but the problem is somewhat rare, so it didn't really matter. The premise now seems to be that the problem is no longer rare and lots of <oper-speed> type of data is needed. I am not even sure this will be true if I2RS is constrained to RIB data (as the charter dictates). Presumably, the same instrumentation gets invoked for get(oper-speed) as get-state(admin-speed) > If the device support the with-defaults extension and appropriate options > then they could presumably retrieve the "complex default" value from the > device using one of the with-default query parameters. > with-defaults is a bit different because the YANG module can provide the default even if the server won't. > > Rob > > > >> /js >> >> > Andy
_______________________________________________ netmod mailing list netmod@ietf.org https://www.ietf.org/mailman/listinfo/netmod