Advertise prefix info for dhcpv6-stateful subnets
[netvirt.git] / README
1 DIRECTORY ORGANIZATION
2 ======================
3
4 - commons
5   +-- parent : Contains Parent pom.xml for all the ovsdb modules.
6
7 - features : This folder contains all the Karaf related files.
8
9 - karaf : Builds a working controller distribution based on the controller + ovsdb modules and other
10           dependant modules such as openflowplugin
11
12 - openstack
13   +-- net-virt : Handles the Openstack Neutron ML2 and Network Service calls and performs all the logic required
14                  for Network Virtualization.
15   +-- net-virt-providers : Mostly contains data-path programming functionality via OpenFlow or potentially
16                            other protocols.
17   +-- net-virt-sfc : SFC implementation using the OVSDB project.
18
19 - ovsdb-ui : Contains the DLUX implementation for displaying network virtualization
20
21 - resources : Contains some useful resources such as scripts, testing utilities and tools used for deployment
22               or testing the binaries generated from the OVSDB project.
23
24 - utils : MD-SAL OpenFlow and OVSDB common utilities.
25
26 HOW TO BUILD & RUN
27 ==================
28
29 Pre-requisites : JDK 1.7+, Maven 3+
30
31 1. Building a Karaf Feature and deploying it in an Opendaylight Karaf distribution :
32    1. From the root ovsdb/ directory, execute "mvn clean install"
33
34    2. Unzip the karaf-<VERSION_NUMBER>-SNAPSHOT.zip file created from step 1 in the directory ovsdb/karaf/target/:
35       "unzip karaf-<VERSION_NUMBER>-SNAPSHOT.zip"
36
37    3. Once karaf has started and you see the Opendaylight ascii art in the console, the last step
38       is to start the OVSDB plugin framework with the following command in the karaf console:
39       "feature:install odl-ovsdb-openstack" (without quotation marks).
40
41    Sample output from Karaf console :
42
43   opendaylight-user@root>feature:list -i | grep ovsdb
44    odl-ovsdb-southbound-api          | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: api
45    odl-ovsdb-southbound-impl         | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: impl
46    odl-ovsdb-southbound-impl-rest    | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: impl :: REST
47    odl-ovsdb-southbound-impl-ui      | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: impl :: UI
48    odl-ovsdb-library                 | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-library-1.2.1-SNAPSHOT        | OpenDaylight :: library
49    odl-ovsdb-openstack               | 1.2.1-SNAPSHOT   | x         | ovsdb-1.2.1-SNAPSHOT                    | OpenDaylight :: OVSDB :: OpenStack Network Virtual
50
51 2. Building a bundle and deploying it in an Opendaylight Karaf distribution :
52    This method can be used to update and test new code in a bundle. If the bundle of interest is rebuilt as a
53    snapshot with the same version as what it already defined in a feature repo then that new bundle will be used
54    when the feature is loaded in karaf. If karaf is already running with the feature loaded then follow the steps
55    below to load the new bundle:
56
57    1. Find the bundle id of the bundle you are going to rebuild:
58       - bundle:list -s | grep <bundlename>, i.e. bundle:list -s | grep odl-ovsdb-plugin
59
60    2. Instruct karaf to watch the new bundle and reload it if it changes:
61       - bundle:watch <id>
62       - The id is the value returned in 1 above.
63       - You can also watch the bundle URL itself:
64         - bundle:watch mvn:org.opendaylight.ovsdb/plugin/1.0.2-SNAPSHOT
65
66    3. Rebuild bundle.
67       - cd bundle dir, i.e. cd ovsdb/plugin
68       - mvn clean install. This will install the new bundle into the local mvn repo.
69
70    4. karaf will see the changed bundle and reload it.
71
72 Running The Integration Tests
73 =============================
74
75 To run the integration tests locally the following components are required:
76
77  - Docker
78  - Docker Compose
79
80 To install docker, follow the installation guide for your platform:
81    http://docs.docker.com/installation/
82
83 To install Docker Compose:
84    http://docs.docker.com/compose/install/
85
86 To run the integration tests:
87
88     mvn clean install
89     # The first time you need to set everything up
90     docker-compose up -d
91     # Later runs only need the containers to be started
92     docker-compose start
93     # OSX
94     mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=$(boot2docker ip 2>/dev/null) -Dovsdbserver.port=6640
95     # Linux
96     mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=127.0.0.1 -Dovsdbserver.port=6640 -Dovsdb.controller.address=<addr of docker interface> -Dovsdb.userspace.enabled=yes
97     docker-compose stop
98
99 On Linux you'll generally need to run fig as root (sudo fig ...).
100
101 Running the docker image manually:
102     sudo docker run -itd --cap-add NET_ADMIN -p 6640:6640 jhershbe/centos7-ovs:latest
103
104 Skipping unit tests and karaf tests
105 ====================
106
107 mvn clean install -Dmaven.test.skip=true -Dskip.karaf=true