Updated DevStack OpenDaylight VM Image for OpenStack IceHouse

Updated DevStack OpenDaylight VM Image for OpenStack IceHouse

Openstack Devstack Crop

Updated DevStack OpenDaylight VM Image for OpenStack

Here is an updated Fedora 20 image for building OpenStack Icehouse and OpenDaylight. ODL is now merged into the upcoming OpenStack Icehouse release so now you can install ODL directly from OpenStack trunk. The updated image comes from Kyle Mestery who was primarily responsible for getting the OpenStack/OpenDaylight merge and navigating the process. Thanks also to Andrew Grimberg from the Linux Foundation with assisting with getting testing setup and all the code contributors from the community.

We have some cool new stuff that we are working on for the Helium release that leverages more of the killer work from the Open vSwitch community that we are integrating into the ODL (Network Virtualization) OVSDB plugin along with integrating some services into the network pipeline of OVS. We see this as worthwhile in bringing some coherency to the network operations of Neutron by unifying some of the OpenStack services into the application aware, flow forwarding pipeline.

Download the VM and Follow the Existing Instructions

Download the latest image from the OpenDaylight Wiki. It is around 2.28GB compressed. It has all OpenStack dependancies taken care of. The only changes required are copying the compute local conf for the compute node and replacing the IP addresses as indicated in the file where we put . Also some slides we have with further instructions here. Download the Image from below:
Updated DevStack OpenDaylight VM Image for OpenStack IceHouse

Use the existing instructions from the last post as that has all stayed the same except now the controller is downloaded for you as part of the DevStack build. If you want to use an external controller see Kyle’s blog post below. It is simply a flag in the local.conf build pointing to the external API/URI.

There is one error you will hit the first time you ./stack.sh with the volume groups. The work around is to simply ./unstack.sh and ./stack.sh again to resolve them. The error appears as follows:

The other difference from the original post is that the ML2 update will actually download the ODL virtualization build for you and spin it up on the OpenStack controller instance. If you want to run ODL in a separate VM/instance, you can setup your local.conf to do so. Below is an example OpenStack controller and compute local.conf I use:

Controller local.conf: OpenStack Controller ( – OpenDaylight Controller (

Controller local.conf: OpenStack Compute ( – OpenDaylight Controller (

OpenDaylight OpenStack Integration with DevStack on Fedora →

See Kyle’s post for details on the local.conf configurations and more SiliconLoon goodness at:

OpenDaylight Integration with OpenStack has merged into Icehouse! →

Getting Help with the OpenStack Configuration

If you have any issues you can get assistance via the OVSDB plugin listserv or check the archives here. For realtime assistance ping myself in IRC or studs like, Madhu Venugopal, Kyle Mestery, Thomas Bachman, Dave Tucker or any of the other freakishly passionate community in the IRC channel #opendaylight-ovsdb on irc.freenode.net.

Thanks for stopping by!

About the Author

Brent SalisburyI have over 15 years of experience wearing various hats from, network engineer, architect, devops and software engineer. I currently have the pleasure of working at the company that develops my favorite software I have ever used, Docker. My comments here are my personal thoughts and opinions. More at Brent's BioView all posts by Brent Salisbury →

  1. Qing ZhongQing Zhong05-18-2014

    Hi BRENT,

    When I started controller node and ran “$ ./stack.sh”, I would always get following output:

    2014-05-19 05:52:36.028 | 2014-05-19 05:52:36.027 INFO 021_add_default_quota_class [-] Added default quota class data into the DB.
    2014-05-19 05:52:36.032 | 2014-05-19 05:52:36.029 INFO migrate.versioning.api [-] done
    2014-05-19 05:52:36.034 | 2014-05-19 05:52:36.029 INFO migrate.versioning.api [-] 21 -> 22…
    2014-05-19 05:52:36.047 | 2014-05-19 05:52:36.042 INFO migrate.versioning.api [-] done
    2014-05-19 05:52:36.084 | + is_service_enabled c-vol
    2014-05-19 05:52:36.092 | + return 0
    2014-05-19 05:52:36.094 | + create_cinder_volume_group
    2014-05-19 05:52:36.097 | + sudo vgs stack-volumes
    2014-05-19 05:52:36.099 | Volume group “stack-volumes” not found
    2014-05-19 05:52:36.100 | Skipping volume group stack-volumes
    2014-05-19 05:52:36.102 | + ‘[‘ -z ” ‘]’
    2014-05-19 05:52:36.104 | + [[ -f /opt/stack/data/stack-volumes-backing-file ]]
    2014-05-19 05:52:36.105 | ++ sudo losetup -f –show /opt/stack/data/stack-volumes-backing-file
    2014-05-19 05:52:36.113 | + DEV=/dev/loop0
    2014-05-19 05:52:36.117 | + sudo vgs stack-volumes
    2014-05-19 05:52:36.131 | Volume group “stack-volumes” not found
    2014-05-19 05:52:36.134 | Skipping volume group stack-volumes
    2014-05-19 05:52:36.136 | + sudo vgcreate stack-volumes /dev/loop0
    [odl@fedora-odl-1 devstack]$ 2014-05-19 05:52:36.142 | A volume group called stack-volumes already exists.
    2014-05-19 05:52:36.144 | + exit_trap
    2014-05-19 05:52:36.146 | + local r=5
    2014-05-19 05:52:36.148 | ++ jobs -p
    2014-05-19 05:52:36.150 | + jobs=
    2014-05-19 05:52:36.153 | + [[ -n ” ]]
    2014-05-19 05:52:36.155 | + exit 5

    Would you please tell me what was wrong with it?

    BR/Qing Zhong

    • Brent SalisburyBrent Salisbury06-13-2014

      Hi BR, the image has a volume issue. It will fail the first time (blame Mestery 🙂 If you just ./unstack.sh and ./stack.sh again, it will work the 2nd time.

      I think I used something like this to resolve it if you want to try and get it to work the first stack with:
      sudo rm -rf /opt/stack/data/stack-volumes-backing-file
      sudo vgchange -a n stack-volumes && sudo vgremove stack-volumes

  2. Qing ZhongQing Zhong05-19-2014

    Hi BRENT,

    After I deleted some files in my Macbook and got more free disk volume, it was all fine now. Thanks anyway.

    BR/Qing Zhong

    • Brent SalisburyBrent Salisbury06-13-2014

      Thanks for the followup BR!

  3. AnisAnis06-03-2014

    Hi Brent,
    I am new to opendaylight, java, and maven. I followed your tutorial regarding importing opendaylight into eclipse. I did every thing as you described in the video and as described in opendaylight wiki. I built it using maven, and I installed all required plugins for eclipse. However, The only directory that was imported is distribution.opendaylight. I do not know where is the problem. Could you please help me solving this issue.

  4. cylcyl06-10-2014

    The instance launched from fedora-odl-2 cannot get IP through DHCP. How do I troubleshoot? I use the following command to launch the instance

    nova boot –flavor m1.nano –image $(nova image-list | grep grep ‘uec ‘ | awk ‘{print $2}’) –nic net-id=$(neutron net-list | grep private | awk ‘{print $2}’) vm2 –availability_zone=nova:fedora-odl-2

    PS. I use qemu to start both fedora-odl VMs instead of VirtualBox.


  5. Brent SalisburyBrent Salisbury06-13-2014

    Hi guys, apologies I missed these. If you would email the ODL listserv https://lists.opendaylight.org/mailman/listinfo/ovsdb-dev with your issues I would appreciate it as I can’t keep up with both lol. You can also ping us in the #opendaylight-ovsdb channel irc.freenode.net for realtime assistance.

    Gist/Pastebin or attach a text file with the output of the following would be helpful:

    . ./openrc admin admin
    nova hypervisor-list
    nova-manage service list
    nova list
    sudo ovs-vsctl show
    sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
    sudo ovsdb-client dump