Hello All,
We are building a product in order to provision network devices for which we are using lighty.io as the core framework. We have a few YANG models which serve as the core models and these models get registered with lighty as part of the lighty initialization.
We also expose few RPC API s that enable writing of data into the MDSAL operational data store corresponding to the above models.
There is a requirement to support introduction of new YANG models into the system and as part of the process, these models need to be
stored into the MDSAL data tree and also dynamically registered with lighty. Once these models are registered the expectation is to be able
to write data into the MDSAL data tree for these models.
Currently, we have run into an issue where the dynamic registration of new YANG models is not working as expected and write is not happening
into MDSAL since MDSAL cannot recognize these models .Analysis of the lighty framework code revealed that upfront the lighty framework builds the schema context with the initial set of YANG models that are packaged with the application. This initial schema context is passed down to the RESTCONF module and assigned to some of the objects that are used
during write/read operations to/from MDSAL.
Any new model that gets introduced into the system post startup needs to go into the schema context.
The issue that we are facing is that lighty.io does not offer any API that facilitates addition of new models into the existing schema context and the schema
context needs to be rebuilt and updated wherever required.
To update the schema context that is created as part of the RESTCONF module startup the RESTCONF module library code was modified to add a method to update the schema context and this method was invoked from the flow that introduces new models into the system.
This resolved the initial problem of finding the module in the schema context but the write operation failed later on because the write transaction objects use a In memory data tree snapshot which has the initial schema context encapsulated within it and this snapshot is read-only and initialized as part of the shard creation and therefore cannot be updated directly. Need to find a way to if possible to re-create/update it.
We are not able to find out a way to update the schema context at the global level so that it is reflected in all places where it is used.
We also want to understand how to create an instance of a container within a model that augments a container from another model. it has to be noted that this container is not
explicitly defined as part of the model being augmented.
Appreciate any assistance that will help us to resolve the above issues
Thanks,
Ravishankar CS