Hi Andy,

On 25/10/2017 16:54, Andy Bierman wrote:


On Wed, Oct 25, 2017 at 4:08 AM, Juergen Schoenwaelder <[email protected] <mailto:[email protected]>> wrote:

    It seems we are jumping between topics. I will skip over comments
    concerning the YANG library and whether it is OK or not OK that YANG
    library allows different schemas in different datastores.

\
\

Actually, this is the only issue that matters.

I decided that no special text is needed because the YANG library is violating a MUST requirement
in RFC 7950 and needs to be changed.
Are you referring to this text, or something else:

5.6.5.  Implementing a Module

   A server implements a module if it implements the module's data
   nodes, RPCs, actions, notifications, and deviations.

   A server MUST NOT implement more than one revision of a module.

If, so, then we still agree with this constraint, and this hasn't changed for NMDA.  I think that YANG library should make this clear in the list of modules.

But I don't think that text specifically prevents different deviations or features for different datastores ...


There can only be one implementation of a module per server, not per datastore.
Therefore a module MAY appear in multiple module-sets, but it MUST NOT
be different.  The exact same revision, features, and deviations MUST be present
in each instance.

The NMDA draft already states that the schema for all conventional configuration datastores must be the same (meaning that all deviations and features must be the same as well):

5.1. Conventional Configuration Datastores

   The conventional configuration datastores are a set of configuration
   datastores that share exactly the same schema, allowing data to be
   copied between them.


So, I think that the main question is about how the schema for <operational> can differ from the configuration datatstores.

We want to allow different features to be supported in running vs operational, so that feature statements can be useful to turn off features that may be supported by a device, but might not be externally configurable (e.g router-id).  But we could partially constrain their use.  So I propose that we add the following extra sentence to the NMDA draft on section 5.3  The Operational State Datastore (<operational>).

My proposed NEW text is:

If a YANG feature is supported for a module in any configuration datastore then it SHOULD also be supported in <operational>.  This is to allow the applied configuration and any other operational state associated with that feature to be available.  The inverse constraint does not hold, a server MAY support a feature in <operational> without also supporting it in any configuration datatstore.


I'm not sure that it makes sense to constrain deviations to be the same for all datastores, since these are the mechanism for reporting why a server doesn't conform to the standard ...

Thanks,
Rob



Andy



    On Tue, Oct 24, 2017 at 11:21:54AM -0700, Andy Bierman wrote:
    > On Tue, Oct 24, 2017 at 10:21 AM, Juergen Schoenwaelder <
    > [email protected]
    <mailto:[email protected]>> wrote:
    >
    > > On Tue, Oct 24, 2017 at 10:13:35AM -0700, Andy Bierman wrote:
    > > >
    > > > IMO the more complex NMDA is to implement, the less likely
    it will
    > > > be implemented.  If you want the tools to figure out the correct
    > > > datastore(s) from description-stmts instead of something
    > > > deterministic and machine-usable, NMDA is less likely to be
    > > > implemented.
    > >
    > > There is nothing machine readable today that tells you which
    argument
    > > of get-config identifies the datastore that is being accessed by
    > > get-config. Our reasoning is that for most actions that default is
    > > going to do the right thing. If there is a need to have further
    > > language support to handle the cases where operations may
    relate to
    > > datastores different than operational, then this should be
    taken up by
    > > a future version of YANG.
    > >
    > >
    > There is only 1 schema tree now in pre-NMDA so it is easy to parse
    > instance data against the one and only set of modules.
    >
    >
    >
    > > > Given that the same objects can be defined differently in each
    > > > datastore in NMDA, it is especially useful to know which set
    of YANG
    > > > modules applies, before parsing instance data against those
    modules.
    > >
    > > I am not sure I parse this correctly.
    > >
    >
    > The new YANG library requires the implementation to know the
    datastore
    > to pick the correct set of modules for the datastore used in the
    operation.
    > Module sets are allowed to overlap, so the same module can be
    different
    > in <running> vs. <operational>.
    >
    > Developers unaware of the new NMDA complexities should read the
    drafts
    > again.
    >
    >
    >
    > >
    > > > (2) Define <action2>:
    > > > >
    > > > > I'm not convinced that this is really required/helpful,
    given that most
    > > > > actions are likely to only apply to operational.  If it
    turns out that
    > > this
    > > > > is particularly useful then I would propose that this is
    deferred
    > > until a
    > > > > future revision of NETCONF, particularly because we are
    trying to keep
    > > the
    > > > > NETCONF NMDA and RESTCONF NMDA drafts as small as possible.
    > > > >
    > > > > Is this OK?
    > > > >
    > > >
    > > > The NMDA theme has been to declare things that are possible
    in pre-NMDA
    > > > but not supported in post-NMDA to be not useful, so this can
    be left to
    > > > vendors I guess.
    > >
    > > Not sure I understand this either.
    > >
    > > If you have a concrete change proposal, perhaps the discussion
    becomes
    > > more concrete and productive.
    > >
    >
    >
    > I already said to declare that <action> is invoked in
    <operational>. Period.
    > No description-stmt exceptions.
    >
    > If another datastore is needed, use rpc-stmt instead of action-stmt.

    So you are fine if for RPCs description statements can define which
    datastores are affected by an RPC? I probably did not get that you
    make a distinction between actions and RPCs here.

    /js

    --
    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/
    <http://www.jacobs-university.de/>>



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

Reply via email to