This page contains documented design for the config subsystem.
Config subsystem core consists of 2 modules:
- config-api - containing base API definition for config subsystem.
- config-manager - implementation of config-api that uses JMX as its registry/storage.
UML Component Diagram
Config persister modules in config subsystem contain:
- API for config persister
- XML file based storage adapter
- XML directory based storage adapter
Detailed information as well as component diagram can be found at Config Persister.
Yang JMX generator
Yang JMX generator is responsible for generating Java classes (binding) that allow a module to be managed by config subsystem. These classes serve as an interface between resources and config subsystem.
Generator consists of 2 modules:
- Yang-jmx-generator - contains metamodel for config subsystem binding. This metamodel is built on top of parsed SchemaContext from yangtools. This metamodel is also used by config-netconf-connector from netconf subsystem when transformation between XML and Open type objects is performed.
- Yang-jmx-generator-plugin - contains an implementation of CodeGenerator for yang-maven-plugin and generates the actual files from parsed metamodel.
UML Component Diagram
Config module archetype
There is a prototype of maven archetype for bundles with configurable modules. It should make the process of building "config subsystem aware" bundles easier.
Managed modules are config-subsystem aware components, that provide configurable modules into the config subsystem. Some of them are split into api and one or more implementations.
Config subsystem wrapper over java threadpools.
Wrapper over netty's utils such as Timers, EventExecutors etc.
Wrapper over slf4j logging api. This wrapper allows logback configuration over netconf/config subsystem.
Wrapper over a simple shutdown utility for controller. Shutdown is performed by stopping the system bundle in OSGi environment or exiting the JVM if OSGi stop fails.
Netconf config dispatcher
Thin wrapper over netconf dispatchers. (This should be probably moved to netconf)
Used for unit/integration testing of config and netconf subsystem.