This needs to be updated. Please bear that in mind when reading the content and feel free to help update it.
- Links nexus
- 1 Getting Started Overall
- 2 Helpful Tips and Tricks
- 3 Getting Started by Project
- 4 Troubleshooting
- 5 Asking Questions
Getting Started Overall
- Getting help and general communication
- Look into Weekly Project Meetings
- Set Up your Development Environment (OS, Development Tools etc)
- Pulling Hacking and Pushing All the Code from the CLI
- GIT Cheat Sheet - A quick reference guide for common GIT commands and possible workflows.
- GettingStarted: Eclipse - Walks through how to get Eclipse set up. Presently focuses on the controller source as an example.
- Push + fix scenario
- Life Cycle of a Bug - Provides an overview of the life cycle of a bug and how it passes through various systems etc.
- Example Code - Check out these examples of various code that will introduce you to the controller and other projects / functionality.
- Toaster Tutorial - Provides a simple walk through of the "Toaster" application which uses the MD-SAL framework.
- Startup Project Archetype - How to use the simple MD-SAL startup archetype
- MD-SAL Archetype - Walks through using a maven archetype to quickly generate some starter projects based on the MD-SAL framework.
- Getting hooked into the GPG Web of Trust
- For the controller project, the latest javadoc can be found here:
- For other projects, the documentation can be found at:
- fill in the project's git repo name in place of <project>
Tasks that need work
Helpful Tips and Tricks
- Executing Methods from the OSGI Console - This is an awesome trick to allow you to execute methods in your bundle directly by typing in the OSGI console... very helpful during development :)
- Useful Equinox OSGI Commands - a very useful list of commonly used OSGI commands
Maven Archetypes are sort of like 'templates' for maven projects. Currently for OpenDaylight we have the following archetypes:
- odl-model-project - A maven archetype to create a yang model project that will generate java code from .yang files
MD-SAL Cliff Notes
Getting Started by Project
Sign up for controller-dev mailing list.
Sign up for vtn-dev mailing list.
Jump on the IRC Channel #opendaylight-ovsdb on irc.freenode.net
Sign up for snmp4sdn-dev mailing list.
Sign up for bgpcep-dev mailing list.
It may also be useful to look at the controller installation troubleshooting page.
There are some common recurring issues in building OpenDaylight which largely relate to the build environment and the occasional maven failing to fetching a given file.
Also, in general, it's very difficult to debug an error if you only include the one line of maven output which says it failed. It helps a lot to run maven with the -e flag and then try to find the lines of code where the actual error occurs.
OpenDaylight assumes that you are building with Java 1.8 (Java 8). Make sure the output of java -version matches that. Something like this:
$ java -version openjdk version "1.8.0_121" OpenJDK Runtime Environment (build 1.8.0_121-b14) OpenJDK 64-Bit Server VM (build 25.121-b14, mixed mode)
OpenDaylight assumes the use of Maven 3.3.9 or newer. Make sure the output of mvn -v matches that. Something like this:
$ mvn -v Apache Maven 3.3.9 Maven home: /usr/share/maven Java version: 1.8.0_121, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre Default locale: en_GB, platform encoding: UTF-8 OS name: "linux", version: "4.9.0-1-amd64", arch: "amd64", family: "unix"
Errors fetching a pom or jar file
We're working on this, but for whatever reason, fetching artifacts and pom files from nexus seems to occasionally run into issues where it will either fail to download a necessary file, give you a version with zero size or otherwise hiccup.
Often merely running the build again will fix the issue.
Other times, merely deleting the ~/.m2/ directories contents and then rebuilding will fix the problem.
In rare cases, you may have to resort to actually finding the file that isn't being copied and manually copying it down as described in this mailing list post.
Out of memory error / PermGen space
If you run into an out of memory error while building either just a normal out of memory error or one complaining about PermGen space, the easiest way to fix this is to adjust your maven options as explained here.
Increase the amount of memory by changing the "MAVEN_OPTS" ENV variable. An example for a Bash shell is as follows:
export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m" syntax for setting varies on the OS used by the build machine. */
You can verify the variable is set with the following in a Bash shell.
$ export | grep MAVEN_OPTS declare -x MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m"
An example on a Linux based machine or a Mac you simply put "export" before the variable. e.g. export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m" (parentheses around the value after the equals sign). That ENV variable is not persistent unless you put it into a shell startup script. In Linux for example the ~/.bashrc file and Mac the ~/.bash_profile file.
While the various tests run during build are huge at helping to find bugs and they have to pass for a patch to be accepted, sometimes they get in the way of finding the root cause of a build error. You can disable them by adding -DskipTests to the end of your build command. So something like this:
mvn clean install -DskipTests
The following are various places for collaboration and asking questions: