5 +-- parent : Contains Parent pom.xml for all the ovsdb modules.
6 +-- integrationtest : Contains the parent pom.xml for all the integrationtest needs.
8 - distribution : Builds a working controller distribution based on the controller + ovsdb modules and other
9 dependant modules such as openflowplugin
10 +-- opendaylight : older, OSGi-based distribution
11 +-- opendaylight-karaf : karaf-based distribution
13 - features : This folder contains all the Karaf related files.
15 - integrationtest : Contains all the PAX-Exam based integrationTests that covers IT for all the modules.
17 - library : Contains Schema-independent library that is a reference implementation for RFC 7047.
18 This module doesn't depend on any of the Opendaylight components.
19 This library module can also be used independently in a non-OSGi environment.
22 +-- net-virt : Handles the Openstack Neutron ML2 and Network Service calls and performs all the logic required
23 for Network Virtualization.
24 +-- net-virt-providers : Mostly contains data-path programming functionality via OpenFlow or potentially
27 - ovs-sfc : SFC implementation using the OVSDB project. Currently it is just a shell.
29 - plugin : Contains Opendaylight Southbound Plugin APIs and provides a simpler API interface on top of library layer.
30 Ideally, this module should also be schema independent. But due to legacy reasons this layer contains some
31 deprecated functionality that assumes openvswitch schema.
33 - plugin-mdsal-adapter : Adds an MD-SAL Adapter for the OVSDB Plugin. The adapter updates the MD-SAL with nodes
34 as they are added and removed from the inventory. The Yang model provides a reference
35 between OVSDB nodes and the OpenFlow nodes (bridges) that they manage.
37 - plugin-shell : Contains a Karaf shell framework for OVSDB plugin and printCache command-line.
39 - resources : Contains some useful resources such as scripts, testing utilities and tools used for deployment
40 or testing the binaries generated from the OVSDB project.
43 +-- openvswitch : Schema wrapper that represents http://openvswitch.org/ovs-vswitchd.conf.db.5.pdf
44 +-- hardwarevtep: Schema wrapper that represents http://openvswitch.org/docs/vtep.5.pdf
46 - utils : MD-SAL OpenFlow and OVSDB common utilities.
51 Pre-requisites : JDK 1.7+, Maven 3+
53 1. Building a Karaf Feature and deploying it in an Opendaylight Karaf distribution :
54 1. This is a new method for Opendaylight distribution wherein there is no defined editions such
55 as Base, Virtualization or SP editions. The end-customer can choose to deploy the required feature
56 based on his/her deployment needs.
58 2. From the root ovsdb/ directory, execute "mvn clean install"
60 3. Next unzip the distribution-karaf-<VERSION_NUMBER>-SNAPSHOT.zip file created from step #2 in
61 the directory ovsdb/distribution/opendaylight-karaf/target like so:
62 "unzip distribution-karaf-<VERSION_NUMBER>-SNAPSHOT.zip"
64 4. Once karaf has started and you see the Opendaylight ascii art in the console, the last step
65 is to start the OVSDB plugin framework with the following command in the karaf console:
66 "feature:install odl-ovsdb-openstack" (without quotation marks).
68 Sample output from Karaf console :
70 opendaylight-user@root>feature:list | grep -i ovsdb
71 odl-ovsdb-all | 1.0.0-SNAPSHOT | | ovsdb-1.0.0-SNAPSHOT | OpenDaylight :: OVSDB :: all
72 odl-ovsdb-library | 1.0.0-SNAPSHOT | x | ovsdb-1.0.0-SNAPSHOT | OVSDB :: Library
73 odl-ovsdb-schema-openvswitch | 1.0.0-SNAPSHOT | x | ovsdb-1.0.0-SNAPSHOT | OVSDB :: Schema :: Open_vSwitch
74 odl-ovsdb-schema-hardwarevtep | 1.0.0-SNAPSHOT | x | ovsdb-1.0.0-SNAPSHOT | OVSDB :: Schema :: hardware_vtep
75 odl-ovsdb-openstack | 1.0.0-SNAPSHOT | x | ovsdb-1.0.0-SNAPSHOT | OpenDaylight :: OVSDB :: OpenStack Network Virtual
76 odl-ovsdb-ovssfc | 0.0.1-SNAPSHOT | | ovsdb-0.0.1-SNAPSHOT | OpenDaylight :: OVSDB :: OVS Service Function Chai
79 2. Building a bundle and deploying it in an Opendaylight Karaf distribution :
80 This method can be used to update and test new code in a bundle. If the bundle of interest is rebuilt as a
81 snapshot with the same version as what it already defined in a feature repo then that new bundle will be used
82 when the feature is loaded in karaf. If karaf is already running with the feature loaded then follow the steps
83 below to load the new bundle:
85 1. Find the bundle id of the bundle you are going to rebuild:
86 - bundle:list -s | grep <bundlename>, i.e. bundle:list -s | grep odl-ovsdb-plugin
88 2. Instruct karaf to watch the new bundle and reload it if it changes:
90 - The id is the value returned in 1 above.
91 - You can also watch the bundle URL itself:
92 - bundle:watch mvn:org.opendaylight.ovsdb/plugin/1.0.2-SNAPSHOT
95 - cd bundle dir, i.e. cd ovsdb/plugin
96 - mvn clean install. This will install the new bundle into the local mvn repo.
98 4. karaf will see the changed bundle and reload it.
101 3. Building an OVSDB based Opendaylight Virtualization edition:
102 1. This is the legacy way to build and distribute Opendaylight archives. This method was
103 followed in Hydrogen. It might still work in Helium but it is best effort for support.
104 The preferred method for Helium and later is to use karaf.
106 2. From the root folder(that hosts this README), execute "mvn clean install"
107 That should build a full distribution archive and distribution directory that will contain
108 Opendaylight Controller + OVSDB bundles + Openflow Plugins under
109 distribution/opendaylight/target/distribution.ovsdb-X.X.X-osgipackage
111 3. Upon successful completion of a build, the Controller with OVSDB can be executed by :
112 cd distribution/opendaylight/target/distribution.ovsdb-X.X.X-osgipackage/opendaylight/
115 4. Building a Karaf Feature and deploying it in an Opendaylight Karaf distribution :
116 *** This method is deprecated.
117 1. This is a new method for Opendaylight distribution wherein there is no defined editions such
118 as Base, Virtualization or SP editions. Rather each of the projects will generate features in
119 form of .kar files. The end-customer can choose to deploy the required feature based on his/her
122 2. From the features/ directory, execute "mvn clean install"
123 This will generate a kar file such as "features/target/ovsdb-features-1.2.1-SNAPSHOT.kar"
125 3. Download (or build from controller project) the Karaf distribution :
126 http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/controller/distribution.opendaylight-karaf/
128 http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/controller/distribution.opendaylight-karaf/1.4.2-SNAPSHOT/distribution.opendaylight-karaf-1.4.2-20140718.075612-407.zip
130 4. unzip the downloaded (or built) distribution and copy the ovsdb-features-x.x.x.kar file (from step 2) into
131 the unzipped distribution.opendaylight-karaf-X.X.X/deploy/ directory.
133 5. run Karaf from within the distribution.opendaylight-karaf-X.X.X/ directory using "bin/karaf"
135 Sample output from Karaf console :
137 opendaylight-user@root>kar:list
139 -----------------------------
140 ovsdb-features-1.2.1-SNAPSHOT
142 opendaylight-user@root>feature:list | grep ovsdb
143 odl-ovsdb-all | 1.2.1-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OpenDaylight :: OVSDB :: all
144 odl-ovsdb-library | 1.0.0-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OVSDB :: Library
145 odl-ovsdb-schema-openvswitch | 1.0.0-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OVSDB :: Schema :: Open_vSwitch
146 odl-ovsdb-schema-hardwarevtep | 1.0.0-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OVSDB :: Schema :: hardware_vtep
147 odl-ovsdb-plugin | 1.0.0-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OpenDaylight :: OVSDB :: Plugin
149 opendaylight-user@root>bundle:list | grep OVSDB
150 186 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB Library
151 199 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB Open_vSwitch Schema
152 200 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB hardware_vtep Schema
153 201 | Active | 80 | 1.0.0.SNAPSHOT | OpenDaylight OVSDB Plugin
155 Running The Integration Tests
156 =============================
158 To run the integration tests locally the following components are required:
161 - Fig or Docker Compose
163 To install docker, follow the installation guide for your platform:
164 http://docs.docker.com/installation/
167 http://www.fig.sh/install.html
169 To install Docker Compose:
170 http://docs.docker.com/compose/install/
172 To run the integration tests:
175 # The first time you need to set everything up
177 # Later runs only need the containers to be started
180 mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=$(boot2docker ip 2>/dev/null) -Dovsdbserver.port=6640
182 mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=127.0.0.1 -Dovsdbserver.port=6640
185 On Linux you'll generally need to run fig as root (sudo fig ...).
187 If you're using Docker Compose, replace "fig" above with "docker-compose" and ignore the warnings.
189 Skipping unit tests and karaf tests
192 mvn clean install -Dmaven.test.skip=true -Dskip.karaf=true