Advertise prefix info for dhcpv6-stateful subnets
[netvirt.git] / README
diff --git a/README b/README
index f7b6cc46fc2ee0d6796080c11979eae6986555fd..1cf47ae7b50255f67c4ef7b1e375876c4b0409a3 100644 (file)
--- a/README
+++ b/README
@@ -3,109 +3,71 @@ DIRECTORY ORGANIZATION
 
 - commons
   +-- parent : Contains Parent pom.xml for all the ovsdb modules.
-  +-- integrationtest : Contains the parent pom.xml for all the integrationtest needs.
-
-- distribution : Builds a working controller distribution based on the controller + ovsdb modules and other
-                 dependant modules such as openflowplugin
 
 - features : This folder contains all the Karaf related files.
 
-- integrationtest : Contains all the PAX-Exam based integrationTests that covers IT for all of the above modules.
-
-- library : Contains Schema-independent library that is a reference implementation for RFC 7047.
-            This module doesn't depend on any of the Opendaylight components.
-            This library module can also be used independently in a non-OSGi environment.
-
-- northbound : Provides AD-SAL style Northbound REST APIs.
-               Supports the legacy v2 APIs to provide backward compatibility for Hydrogen Release
-               Also supports the newer v3 APIs to provide schema-independent access to the OVSDB protocol.
-
-- of-extension : Adds OpenFlow Nicera extensions.
+- karaf : Builds a working controller distribution based on the controller + ovsdb modules and other
+          dependant modules such as openflowplugin
 
 - openstack
   +-- net-virt : Handles the Openstack Neutron ML2 and Network Service calls and performs all the logic required
                  for Network Virtualization.
-  +-- net-virt-providers : Mostly contains data-path programming functionalities via OpenFlow or potentially
+  +-- net-virt-providers : Mostly contains data-path programming functionality via OpenFlow or potentially
                            other protocols.
+  +-- net-virt-sfc : SFC implementation using the OVSDB project.
 
-- ovs-sfc : SFC implementation using the OVSDB project. Currently it is just a shell.
-
-- plugin : Contains Opendaylight Southbound Plugin APIs and provides an simpler API interface on top of library layer.
-           Ideally, this module should also be schema independent. But due to legacy reasons this layer contains some
-           deprecated functionalities that assume openvswitch schema.
-
-- plugin-mdsal-adapter : Adds an MD-SAL Adapter for the OVSDB Plugin. The adapter updates the MD-SAL with nodes
-                         as they are added and removed from the inventory. The Yang model provides a reference
-                         between OVSDB nodes and the OpenFlow nodes (bridges) that they manage.
-
-- plugin-shell : Contains a Karaf shell framework for OVSDB plugin and printCache command-line.
+- ovsdb-ui : Contains the DLUX implementation for displaying network virtualization
 
 - resources : Contains some useful resources such as scripts, testing utilities and tools used for deployment
               or testing the binaries generated from the OVSDB project.
 
-- schemas :
-  +-- openvswitch : Schema wrapper that represents http://openvswitch.org/ovs-vswitchd.conf.db.5.pdf
-  +-- hardwarevtep: Schema wrapper that represents http://openvswitch.org/docs/vtep.5.pdf
-
-- utils : MD-SAL OpenFlow utilities.
+- utils : MD-SAL OpenFlow and OVSDB common utilities.
 
 HOW TO BUILD & RUN
 ==================
 
 Pre-requisites : JDK 1.7+, Maven 3+
 
-1. Building an OVSDB based Opendaylight Virtualization edition :
-   1. This is the legacy way to build and distribute Opendaylight archives. And this method was
-      followed in Hydrogen and possibly in Helium release as well.
+1. Building a Karaf Feature and deploying it in an Opendaylight Karaf distribution :
+   1. From the root ovsdb/ directory, execute "mvn clean install"
 
-   2. From the root folder(that hosts this README), execute "mvn clean install"
-      That should build a full distribution archive and distribution directory that will contain
-      Opendaylight Controller + OVSDB bundles + Openflow Plugins under
-      distribution/opendaylight/target/distribution.ovsdb-X.X.X-osgipackage
+   2. Unzip the karaf-<VERSION_NUMBER>-SNAPSHOT.zip file created from step 1 in the directory ovsdb/karaf/target/:
+      "unzip karaf-<VERSION_NUMBER>-SNAPSHOT.zip"
 
-   3. Upon successful completion of a build, the Controller with OVSDB can be executed by :
-      cd distribution/opendaylight/target/distribution.ovsdb-X.X.X-osgipackage/opendaylight/
-      ./run.sh -virt ovsdb
+   3. Once karaf has started and you see the Opendaylight ascii art in the console, the last step
+      is to start the OVSDB plugin framework with the following command in the karaf console:
+      "feature:install odl-ovsdb-openstack" (without quotation marks).
 
+   Sample output from Karaf console :
 
-2. Building a Karaf Feature and deploying it in an Opendaylight Karaf distribution :
-   1. This is a new method for Opendaylight distribution wherein there is no defined editions such
-      as Base, Virtualization or SP editions. Rather each of the projects will generate features in
-      form of .kar files. The end-customer can choose to deploy the required feature based on his/her
-      deployment needs.
-
-   2. From the features/ directory, execute "mvn clean install"
-      This will generate a kar file such as "features/target/ovsdb-features-1.2.0-SNAPSHOT.kar"
-
-   3. Download (or build from controller project) the Karaf distribution :
-      http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/controller/distribution.opendaylight-karaf/
-      Sample zip file :
-      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
-
-   4. unzip the downloaded (or built) distribution and copy the ovsdb-features-x.x.x.kar file (from step 2) into
-      the unzipped distribution.opendaylight-karaf-X.X.X/deploy/ directory.
+  opendaylight-user@root>feature:list -i | grep ovsdb
+   odl-ovsdb-southbound-api          | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: api
+   odl-ovsdb-southbound-impl         | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: impl
+   odl-ovsdb-southbound-impl-rest    | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: impl :: REST
+   odl-ovsdb-southbound-impl-ui      | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: impl :: UI
+   odl-ovsdb-library                 | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-library-1.2.1-SNAPSHOT        | OpenDaylight :: library
+   odl-ovsdb-openstack               | 1.2.1-SNAPSHOT   | x         | ovsdb-1.2.1-SNAPSHOT                    | OpenDaylight :: OVSDB :: OpenStack Network Virtual
 
-   5. run Karaf from within the distribution.opendaylight-karaf-X.X.X/ directory using "bin/karaf"
+2. Building a bundle and deploying it in an Opendaylight Karaf distribution :
+   This method can be used to update and test new code in a bundle. If the bundle of interest is rebuilt as a
+   snapshot with the same version as what it already defined in a feature repo then that new bundle will be used
+   when the feature is loaded in karaf. If karaf is already running with the feature loaded then follow the steps
+   below to load the new bundle:
 
-   Sample output from Karaf console :
+   1. Find the bundle id of the bundle you are going to rebuild:
+      - bundle:list -s | grep <bundlename>, i.e. bundle:list -s | grep odl-ovsdb-plugin
 
-   opendaylight-user@root>kar:list
-   KAR Name
-   -----------------------------
-   ovsdb-features-1.2.0-SNAPSHOT
+   2. Instruct karaf to watch the new bundle and reload it if it changes:
+      - bundle:watch <id>
+      - The id is the value returned in 1 above.
+      - You can also watch the bundle URL itself:
+        - bundle:watch mvn:org.opendaylight.ovsdb/plugin/1.0.2-SNAPSHOT
 
-   opendaylight-user@root>feature:list | grep ovsdb
-   odl-ovsdb-all | 1.2.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OpenDaylight :: OVSDB :: all
-   odl-ovsdb-library | 1.0.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OVSDB :: Library
-   odl-ovsdb-schema-openvswitch | 1.0.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OVSDB :: Schema :: Open_vSwitch
-   odl-ovsdb-schema-hardwarevtep | 1.0.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OVSDB :: Schema :: hardware_vtep
-   odl-ovsdb-plugin | 1.0.0-SNAPSHOT | x | ovsdb-1.2.0-SNAPSHOT | OpenDaylight :: OVSDB :: Plugin
+   3. Rebuild bundle.
+      - cd bundle dir, i.e. cd ovsdb/plugin
+      - mvn clean install. This will install the new bundle into the local mvn repo.
 
-   opendaylight-user@root>bundle:list | grep OVSDB
-   186 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB Library
-   199 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB Open_vSwitch Schema
-   200 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB hardware_vtep Schema
-   201 | Active | 80 | 1.0.0.SNAPSHOT | OpenDaylight OVSDB Plugin
+   4. karaf will see the changed bundle and reload it.
 
 Running The Integration Tests
 =============================
@@ -113,26 +75,33 @@ Running The Integration Tests
 To run the integration tests locally the following components are required:
 
  - Docker
- - Fig
+ - Docker Compose
 
 To install docker, follow the installation guide for your platform:
    http://docs.docker.com/installation/
 
-To install fig:
-   http://www.fig.sh/install.html
+To install Docker Compose:
+   http://docs.docker.com/compose/install/
 
 To run the integration tests:
 
     mvn clean install
-    fig start
+    # The first time you need to set everything up
+    docker-compose up -d
+    # Later runs only need the containers to be started
+    docker-compose start
     # OSX
     mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=$(boot2docker ip 2>/dev/null) -Dovsdbserver.port=6640
     # Linux
-    mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=127.0.0.1 -Dovsdbserver.port=6640
-    fig stop
+    mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=127.0.0.1 -Dovsdbserver.port=6640 -Dovsdb.controller.address=<addr of docker interface> -Dovsdb.userspace.enabled=yes
+    docker-compose stop
+
+On Linux you'll generally need to run fig as root (sudo fig ...).
+
+Running the docker image manually:
+    sudo docker run -itd --cap-add NET_ADMIN -p 6640:6640 jhershbe/centos7-ovs:latest
 
 Skipping unit tests and karaf tests
 ====================
 
 mvn clean install -Dmaven.test.skip=true -Dskip.karaf=true
-