Jump to: navigation, search

OpenDaylight Controller:MD-SAL:MD-SAL Document Review


In order to increase Consumability of the Controller, and better understand the:

  • capabilities
  • drawbacks
  • enhancements/simplification

of the following components:

  • config subsystem
  • POM structure
  • YANG

it was decided that the first step was to compile a list of the various "How To's" and Tutorials, and then work through them all through the lens of a prospective new project.

Links Reviewed

This page is a work in progress! As I work through each link below (not necessarily in the following order) I will create a living set of notes. All are welcome to contribute/comment - alagalah (Keith)

Config Main Notes:

  1. Configuration sub-system section blank.
  2. Is config.ini relevant in a Karaf world? https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Configuration:Initial
  3. Overall generally interesting post getting your project up and running IMHO.

  • Summary: Interesting but not useful within scope of getting started (depending on your Myer-Briggs profile I guess)

Sample Project Notes:

  1. "pom.xml (config-demo project is defined as a sub-module of the controller project, and at this point contains only the configuration for maven-bundle-plugin):" This is a problem. What if I don't want to be a sub-module of the controller project? Regardless, this still threw errors in Eclipse with "Non-resolvable parent POM"
  2. "Updating the maven configuration in pom.xml" ... where does this go IN the pom.xml ? (suggest under < build >
  3. Every XML snippet should explicitly state where it goes, followed by the final version. (FWIW, this is the sample pom I ended up with)
  4. "Next, create the runtime bean for FooImplModule. Runtime beans are designated to capture data about the running module. Add runtime bean definition to config-demo-impl.yang." Source is completely missing... so can't progress. What is interesting is that Proposed simplification - JavaShim skips this step (testing).
  5. Modifying Generated Sources - where in the blazes did customValidation() come from in AbstractBarImplModule.java (which is extended by BarImplModule) and AbstractFooImplModule.java (which is extended by FooImplModule) ? Is this part of yangtools? (suspect it is) which doesn't actually match what is in the instructions (validate() ) but ploughing on...
  6. Follow all the instructions.. .can't build. Can't find symbol(s).

  • Summary: this has to be "paint-by-numbers". As time allows I will see if I can come up with something more alagalah-proof. If I can get it working, then anyone should be able to.


  1. Similar issues here, happy to provide a more expansive specific write up, but if you follow it verbatim, it doesn't work.

  • Need to review this as well although some duplication Example Code


  1. Above links in the order I worked through them seem like a good logical start of increasing complexity and functionality
  2. Need following:
    1. Single summary page with all links and brief description
    2. Knowledge/environment assumptions clearly stated. Ideally with links on how to gain any lacking knowledge. (e.g. release, Eclipse environment, JAVA/Maven versions, experience level ie "you must be this tall to enter this ride")
    3. Each page worked through with screen shots/command outputs clearly shown, and if semi-complete code fragments shown, then link to a document that is complete (for that step).
    4. Updated for Karaf (see assumptions above... Hydrogen/Helium/Lithium/All etc)


Overall Architecture

Config Subsystem Sub-Project

MD-SAL Sub-Project

YANG Sub-Project

Karaf/OSGi Sub-Project

RESTCONF Sub-Project

RESTCONF/NETCONF Sub-Project - Placeholder

Painpoints not captured in templates - Placeholder

Buckets not captured in templates - Placeholder

Step by Step Toaster Tutorial

Meeting Minutes

Meeting minutes archives are here: https://meetings.opendaylight.org/opendaylight-meeting/2014/md_sal_hackers/?C=M;O=D