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