Merge "Add missing Order and Key to InstructionBuilders"
[ovsdb.git] / README
1 DIRECTORY ORGANIZATION
2 ======================
3
4 - library : Contains Schema-independent library that is a reference implementation for RFC 7047.
5             This module doesn't depend on any of the Opendaylight components.
6             This library module can also be used independently in a non-OSGi environment.
7
8 - schemas :
9   |-- openvswitch : Schema wrapper that represents http://openvswitch.org/ovs-vswitchd.conf.db.5.pdf
10   |-- hardwarevtep: Schema wrapper that represents http://openvswitch.org/docs/vtep.5.pdf
11
12 - plugin : Contains Opendaylight Southbound Plugin APIs and provides an simpler API interface on top of library layer.
13            Ideally, this module should also be schema independent. But due to legacy reasons this layer contains some
14            deprecated functionalities that assume openvswitch schema.
15
16 - northbound : Provides AD-SAL style Northbound REST APIs.
17                Supports the legacy v2 APIs to provide backward compatibility for Hydrogen Release
18                Also supports the newer v3 APIs to provide schema-independent access to the OVSDB protocol.
19
20 - openstack
21   |-- net-virt : Handles the Openstack Neutron ML2 and Network Service calls and performs all the logic required
22                  for Network Virtualization.
23   |-- net-virt-providers : Mostly contains data-path programming functionalities via OpenFlow or potentially
24                            other protocols.
25
26 - commons
27   |-- parent : Contains Parent pom.xml for all the ovsdb modules.
28   |-- integrationtest : Contains the parent pom.xml for all the integrationtest needs.
29
30 - distribution : Builds a working controller distribution based on the controller + ovsdb modules and other
31                  dependant modules such as openflowplugin
32
33 - features : This folder contains all the Karaf related files.
34
35 - integrationtest : Contains all the PAX-Exam based integrationTests that covers IT for all of the above modules.
36
37 - resources : Contains some useful resources such as scripts, testing utilities and tools used for deployment
38               or testing the binaries generated from the OVSDB project.
39
40 HOW TO BUILD & RUN
41 ==================
42
43 Pre-requisites : JDK 1.7+, Maven 3+
44
45 1. Building a OVSDB based Opendaylight Virtualization edition :
46    1. This is the legacy way to build and distribute Opendaylight archives. And this method was
47       followed in Hydrogen and possibly in Helium release as well.
48
49    2. From the root folder(that hosts this README), execute "mvn clean install"
50       That should build a full distribution archive and distribution directory that will contain
51       Opendaylight Controller + OVSDB bundles + Openflow Plugins under
52       distribution/opendaylight/target/distribution.ovsdb-X.X.X-osgipackage
53
54    3. Upon successful completion of a build, the Controller with OVSDB can be executed by :
55       cd distribution/opendaylight/target/distribution.ovsdb-X.X.X-osgipackage/opendaylight/
56       ./run.sh -virt ovsdb
57
58
59 2. Building a Karaf Feature and deploying it in an Opendaylight Karaf distribution :
60    1. This is a new method for Opendaylight distribution wherein there is no defined editions such
61       as Base, Virtualization or SP editions. Rather each of the projects will generate features in
62       form of .kar files. The end-customer can choose to deploy the required feature based on his/her
63       deployment needs.
64
65    2. From the features/ directory, execute "mvn clean install"
66       This will generate a kar file such as "features/target/ovsdb-features-1.2.0-SNAPSHOT.kar"
67
68    3. Download (or build from controller project) the Karaf distribution :
69       http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/controller/distribution.opendaylight-karaf/
70       Sample zip file :
71       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
72
73    4. unzip the downloaded (or built) distribution and copy the ovsdb-features-x.x.x.kar file (from step 2) into
74       the unzipped distribution.opendaylight-karaf-X.X.X/deploy/ directory.
75
76    5. run Karaf from within the distribution.opendaylight-karaf-X.X.X/ directory using "bin/karaf"
77
78    Sample output from Karaf console :
79
80    opendaylight-user@root>kar:list
81    KAR Name
82    -----------------------------
83    ovsdb-features-1.2.0-SNAPSHOT
84
85    opendaylight-user@root>feature:list | grep ovsdb
86    odl-ovsdb-all | 1.2.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OpenDaylight :: OVSDB :: all
87    odl-ovsdb-library | 1.0.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OVSDB :: Library
88    odl-ovsdb-schema-openvswitch | 1.0.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OVSDB :: Schema :: Open_vSwitch
89    odl-ovsdb-schema-hardwarevtep | 1.0.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OVSDB :: Schema :: hardware_vtep
90    odl-ovsdb-plugin | 1.0.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OpenDaylight :: OVSDB :: Plugin
91
92    opendaylight-user@root>bundle:list | grep OVSDB
93    186 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB Library
94    199 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB Open_vSwitch Schema
95    200 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB hardware_vtep Schema
96    201 | Active | 80 | 1.0.0.SNAPSHOT | OpenDaylight OVSDB Plugin
97
98 Running The Integration Tests
99 =============================
100
101 To run the integration tests locally the following components are required:
102
103  - Docker
104  - Fig
105
106 To install docker, follow the installation guide for your platform:
107    http://docs.docker.com/installation/
108
109 To install fig:
110    http://www.fig.sh/install.html
111
112 To run the integration tests:
113
114     mvn clean install
115     fig start
116     # OSX
117     mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=$(boot2docker ip 2>/dev/null) -Dovsdbserver.port=6640
118     # Linux
119     mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=127.0.0.1 -Dovsdbserver.port=6640
120     fig stop
121