Jump to: navigation, search

OpenDaylight Controller:Config:Design

Config subsystem

This page contains documented design for the config subsystem.

Component diagram for 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.

More information on config subsystem can be found at Config Subsystem and Configuration process.

UML Component Diagram

Config subsystem core components

Config persister

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

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

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)

Testing modules

Used for unit/integration testing of config and netconf subsystem.