Node Prefix Issue Analysis
Reference: https://jira.onap.org/browse/CPS-1380
Prefix required for
root node of a parent yang
direct leaves of external/augment yang
direct leaf lists of external/augment yang
direct containers of of external/augment yang
lists of external/augment yang
Prefix not required for
any direct nodes (leafs, leaf lists, containers, lists) of parent yang
container inside container in augmented yang models
containers inside list
lists of a same yang
Approach to store prefix of containers
add new field prefix in yangresourcesentity
create many-to-many relationship between fragment and yangresourcesentity
Store Yangresourceentity in storeschemaset. Changes required in CPSModulePersistenceServiceImpl
Approach to store prefix for leaves:
add the prefix only for augmented nodes.
Augmented nodes can be identified by module.getAugmentations() method. Iterate over schemacontext and identify the corresponding prefix
CPSDataServiceImpl - DatanodeBuilder - addYangLeaf method can be modified to find the prefix from schemacontext and frame DataNode leaves (costly operation - time consuming)
How to identify a field is on particular yang module?
iterate the modules of schemacontext
compare the node's schemespecficpart with each module's schemespecificpart
Matching schemespecficpart helps to identify the node's module.
schemespecficpart is part of namespace in yang module.
Prefix Retrieval
Containers:
find the prefix from yangresources table using xpath(fragment)
skip the above step for MapEntryNode ( to avoid prefix for lists and containers)
skip for inner containers. Find approach to find a container is nested.
Leaves of augmented/external modules:
No changes are required