On Tue, Dec 12, 2017 at 11:37:58AM +0100, Vladimir Vassilev wrote:
> 
> 
> On 12/11/2017 05:15 PM, Juergen Schoenwaelder wrote:
> > I do not fully understand why you think it is worth to preserve the
> > old YANG module library structure. Clearly, it won't be backwards
> > compatible since an NMDA implementation may list modules that are not
> > implemented in all datastores and an old client talking to a new
> > server will thus misunderstand what is exposed via the old YANG module
> > library structure. Your proposal "looks" backwards compatible but it
> > is not if one takes a closer look.
> > 
> > One can start making changes to say the conformance-type but then this
> > does not solve the problem since an old client does not know what a
> > new conformance type value means. The design team did look into the
> > option of keeping the old structure unchanged some weeks ago and we
> > finally arrived at the conclusion that it gets (i) ugly and (ii) does
> > not really provide backwards compatibility for a client written agains
> > the old YANG module library structure.
> > 
> > Note that with the new proposals on the table, it should be possible
> > to provide a backwards compatible view on YANG library for systems
> > that implement the exact same module set (with the exact same set of
> > features and deviations) on all datastores they support. But for
> > systems where this is not true, it seems better to use new
> > definitions instead of tweaking semantics.
> > 
> > Perhaps it helps if you can clearly phrase the objective of keeping
> > the old structure. What is the goal you want to achieve with that?
> I prefer to call it the current structure for now. I will try to explain. My
> goal is to efficiently build transactional systems based on YANG models and
> open standards.
> 
> For this I need some reusable bricks. Such a brick is the rfc7895
> ietf-yang-libraray module. Even in a system with multiple YANG model
> contexts eventually processing breaks down to a single model context e.g.
> for example a YANG data validation task performed in a command line
> application comes down to:
>  $ yang-data-validator yang-library-data.xml data.xml

I think you can implement

$ yang-data-validator yang-library-data-bis.xml data.xml

and it will work for any datastore data in data.xml with and without
schema mount.

> The command can be called multiple times for different data and different
> contexts but it is the same very well tested simple tool.

Looks like you do not want to make changes but then you have to make
changes. I am not sure how to address such a requirement.

> So my point is why
> can we not use one of the 2 newly introduced methods for instantiating this
> very well designed model for the needs of NMDA.
> 
> 1. Use datastore for instantiation.
> 2. Use schema mount to mount rfc 7895 ietf-yang-library in the
> ietf-datastores list. (an alternative I assume is especially applicable to
> modules like ietf-yang-library that are self-contained)
> 
> In general having a solution that is flexible can easily be trimmed down.
> Adding special cases that are less flexible e.g. the (not-implemented-in
> leaf-list or none at all for the case of fully transactional systems with a
> single model context (no extra work for these)). The advantage is that even
> with the not-implemented-in leaf-list solution or other diff based the data
> processing tasks will eventually convert the differential information to a
> data structure implementing the rfc7895 ietf-yang-library data tree and the
> yang-data-validator application will be backward compatible and reusable.
> With changes that introduce a whole new level of abstraction in place of the
> simple list with module name and revision as keys one can't even reuse the
> groupings defined in that module and that is a problem I try to avoid.

I think you can easily express the ietf-yang-library model in
ietf-yang-library-bis so moving to ietf-yang-library-bis will
give you a clean solution.
 
> Vladimir
> 
> 
> > /js
> > 
> > On Mon, Dec 11, 2017 at 04:53:30PM +0100, Vladimir Vassilev wrote:
> > > On 12/11/2017 12:16 PM, Robert Wilton wrote:
> > > 
> > > > Hi Vladimir,
> > > > 
> > > > 
> > > > On 09/12/2017 11:49, Vladimir Vassilev wrote:
> > > > > On 12/08/2017 07:01 PM, Andy Bierman wrote:
> > > > > 
> > > > > > Hi,
> > > > > > 
> > > > > > A library per datastore sounds too complicated.
> > > > > I am not proposing that.
> > > > I'm slightly lost, because I thought that was exactly what you were
> > > > proposing! ;-)
> > > I propose a solution that keeps ietf-yang-library a data model of a single
> > > YANG context specification doing the datastore specific modeling in
> > > ietf-datastores model instead. The solution can be both flexible
> > > (independent yang-library data instances per datastore as my example was
> > > focused on) or constrained ('not-implemented-in' modules leaf-list). Here 
> > > is
> > > everything that is needed:
> > > 
> > > module: ietf-datastores
> > >      +--ro datastores-state
> > >         +--ro datastore* [name]
> > >         +--ro (model)?
> > >            +--:(same-as-operational)
> > >            +--:(constrained-to-operational)
> > >            |  +--ro not-implemented-in*       ->
> > > /yanglib:module-state/module/name
> > >            +--:(unconstrained)
> > >               +--ro yang-library-datastore?   identityref
> > > 
> > > YANG:
> > > ...
> > > container datastores-state {
> > >      config false;
> > >      list datastore {
> > >        key name;
> > >      }
> > >      choice model {
> > >          case same-as-operational {
> > >          }
> > >          case constrained-to-operational {
> > >            leaf-list not-implemented-in {
> > >              type leafref {
> > >                path "/yanglib:module-state/yanglib:module/yanglib:name";
> > >              }
> > >            }
> > >          }
> > >          case unconstrained {
> > >            leaf yang-library-datastore {
> > >              type identityref {
> > >                base ds:datastore;
> > >            }
> > >          }
> > >        }
> > >      }
> > >    }
> > > ...
> > > 
> > > IMO ietf-yang-library as defined in rfc7895 is modular and reusable. I do
> > > not see why this has to be compromised.
> > > > > The fundamental point proposed is that the datastore relevant bits
> > > > > are kept in the ietf-datastores module instead of merging everything
> > > > > in a new ietf-yang-library entangled monster module. If needed
> > > > > ietf-datastores can augment ietf-yang-library but ietf-yang-library
> > > > > should be usable on its own without ietf-datastores. The solution is
> > > > > coherent and modular and addresses the problem statement.
> > > > The issue with this is that datastore augmentations to YANG library
> > > > would end up changing the meaning of the existing YANG library nodes.
> > > > E.g. an old client that ignores the datastore augmentations is going to
> > > > get a nasty surprise when the server does not behave how it expects.
> > > > E.g. because the configuration node that it thinks should be there isn't
> > > > there because it only supported in <operational>.
> > > > 
> > > > This was one of the reasons for changing YANG library.
> > > A well written client that finds out unsupported newer versions of
> > > ietf-yang-library (which is reported in the capabilities) or any of the 
> > > NMDA
> > > modules is deployed should not do any damage. How exactly did you solve 
> > > the
> > > problem for the bad clients by changing the structure of yang-library in a
> > > incompatible way is something I do not understand.
> > > > In terms of the idea of just re-using YANG library but export a separate
> > > > copy for each datastore I think that this has its own problems:
> > > > - I don't like the idea of returning meta-data along with configuration
> > > > for a <get-data> on any of the configuration datastores.
> > > There is no meta data. The datastores contain only the config false;
> > > /modules-state tree. I think I explained that very clearly.
> > > > - How does a client know whether the YANG library for <running> applies
> > > > to the whole server (as it does today) vs just applies to the <running>
> > > > datastore (as it would for an NMDA server)?
> > > All datastore models are "case same-as-operational" for such systems.
> > > > - It requires more handshaking between the client and server to get the
> > > > schema, since a separate request would be required for each datastore
> > > > that is supported.
> > > Correct. Flexibility and modularity come at a price. IMO modularity is 
> > > more
> > > important in this case. And there are solutions for the problem e.g. send
> > > all <get-data> requests before waiting for replies. NETCONF supports this.
> > > > So, for me, I think that the only way that this solution works, would be
> > > > to define a new <get-server-metadata> RPC, but even then I think that it
> > > > would make sense to combine the data together into a new YANG library
> > > > structure.
> > > As I said my focus is on keeping ietf-yang-library modular (single YANG
> > > model context). <get-server-metadata> or just adding datastore identities
> > > allowing the client to use <get-data> to achieve the retrieval of the data
> > > is of little importance to me.
> > > 
> > > > At the end of the day, I don't think that a new YANG library is going to
> > > > be were the real cost for supporting NMDA comes from.  I think that the
> > > > real work is supporting <operational> independently from <running> both
> > > > in the client and servers. But I also think that once servers start
> > > > implementing this properly that it will simplify automation, because
> > > > rather than a client having to guess what state a server is in, it can
> > > > actually querey, or be notified of it, without having to write a lot of
> > > > model specific code.
> > > +1
> > > 
> > > Vladimir
> > > > Thanks,
> > > > Rob
> > > > 
> > > > 
> > > > > > I prefer the proposal that was made at the IETF meeting that had
> > > > > > a 'not-implemented-in' leaf-list and a single module list.
> > > > > This constraint is already specified in the text of the revised
> > > > > datastores draft. Clients conforming to the draft can expect servers
> > > > > to comply with the MUST requirement even if there is a separate
> > > > > yang-library data tree for each datastore the constraint of
> > > > > configuration stores mapping to 'operational' should be enforced
> > > > > according to the draft. There is no contradiction here.
> > > > > 
> > > > > That said I would be also be OK with ietf-datastores augmenting
> > > > > ietf-yang-library with such a leaf-list ('not-implemented-in'
> > > > > leaf-list) as a more constrained flavor of the same approach instead
> > > > > of going for independent copies of yang-library data. For any of
> > > > > that to happen change in ietf-datastores.yang is needed and change
> > > > > in the original rfc7895 ietf-yang-library is not needed at all.
> > > > > 
> > > > > Vladimir
> > > > > 
> > > > > > Why is it interesting to have a separate module list for regular
> > > > > > modules and imported modules?
> > > > > > I prefer to keep the conformance leaf and not change the module 
> > > > > > list.
> > > > > > 
> > > > > > NMDA needs to be possible to implement with a single schema tree
> > > > > > such that a module
> > > > > > is implemented in all datastores, or a subset of all
> > > > > > datastores.  Otherwise it probably won't
> > > > > > get supported in clients.
> > > > > > 
> > > > > > 
> > > > > > Andy
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > On Fri, Dec 8, 2017 at 9:21 AM, Kent Watsen <[email protected]
> > > > > > <mailto:[email protected]>> wrote:
> > > > > > 
> > > > > >      CC-ing NETCONF, where the draft is being worked on.
> > > > > > 
> > > > > >      Kent
> > > > > > 
> > > > > > 
> > > > > >      On Fri, 2017-12-08 at 16:34 +0100, Juergen Schoenwaelder wrote:
> > > > > >      > On Fri, Dec 08, 2017 at 04:19:28PM +0100, Vladimir
> > > > > > Vassilev wrote:
> > > > > >      > >
> > > > > >      > > Yes. The default value for yang-library-datastore leaf is
> > > > > >      ds:operational
> > > > > >      > > (the only possible one for the ds:operational datastore). 
> > > > > > This
> > > > > >      is backward
> > > > > >      > > compatible. If one needs different model for 'running', 
> > > > > > etc.
> > > > > >      then a new
> > > > > >      > > datastore identity has to be defined  and set in place of 
> > > > > > the
> > > > > >      default value.
> > > > > >      > > Then this identity can be used to read the yang-library
> > > > > > data with
> > > > > >      > > <get-data>.
> > > > > >      > >
> > > > > >      >
> > > > > >      > Sorry, but I have to ask this: How do I obtain the schema 
> > > > > > for the
> > > > > >      > datastore (lets call it <running-library>) that reports the
> > > > > >      schema for
> > > > > >      > <running>? Is there another <running-library-library> 
> > > > > > datastore?
> > > > > >      Will
> > > > > >      > the recursion end? Perhaps it does since
> > > > > > <running-library-library>
> > > > > >      > might have itself listed as the schema defining datastore.
> > > > > > I guess
> > > > > >      > Lada will like these kind of meta and meta-meta datastores.
> > > > > > 
> > > > > >      Not really. Metadata needn't be in datastores.
> > > > > > 
> > > > > >      Lada
> > > > > > 
> > > > > >      >
> > > > > >      > /js
> > > > > >      >
> > > > > >      --
> > > > > >      Ladislav Lhotka
> > > > > >      Head, CZ.NIC Labs
> > > > > >      PGP Key ID: 0xB8F92B08A9F76C67
> > > > > > 
> > > > > >      _______________________________________________
> > > > > >      netmod mailing list
> > > > > >      [email protected]  <mailto:[email protected]>
> > > > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_netmod&d=DwICAg&c=HAkYuh63rsuhr6Scbfh0UjBXeMK-ndb3voDTXcWzoCI&r=9zkP0xnJUvZGJ9EPoOH7Yhqn2gsBYaGTvjISlaJdcZo&m=5qj6BQUSwqYmkAVeKz5axFV8k3gxYEPSJ5Cp0RSnxrE&s=I7fR1GY5lN2hVMkDuvryrhDeRypike3wPeFRrvQI5l8&e=
> > > > > > 
> > > > > > <https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_netmod&d=DwICAg&c=HAkYuh63rsuhr6Scbfh0UjBXeMK-ndb3voDTXcWzoCI&r=9zkP0xnJUvZGJ9EPoOH7Yhqn2gsBYaGTvjISlaJdcZo&m=5qj6BQUSwqYmkAVeKz5axFV8k3gxYEPSJ5Cp0RSnxrE&s=I7fR1GY5lN2hVMkDuvryrhDeRypike3wPeFRrvQI5l8&e=>
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > >      _______________________________________________
> > > > > >      netmod mailing list
> > > > > >      [email protected]  <mailto:[email protected]>
> > > > > >      https://www.ietf.org/mailman/listinfo/netmod
> > > > > >      <https://www.ietf.org/mailman/listinfo/netmod>
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > _______________________________________________
> > > > > > netmod mailing list
> > > > > > [email protected]
> > > > > > https://www.ietf.org/mailman/listinfo/netmod
> > > > > _______________________________________________
> > > > > Netconf mailing list
> > > > > [email protected]
> > > > > https://www.ietf.org/mailman/listinfo/netconf
> > > _______________________________________________
> > > netmod mailing list
> > > [email protected]
> > > https://www.ietf.org/mailman/listinfo/netmod
> 

-- 
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

Reply via email to