X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=README;h=1cf47ae7b50255f67c4ef7b1e375876c4b0409a3;hb=42745096baaeb190b58e7d28325187a87fc34458;hp=f7b6cc46fc2ee0d6796080c11979eae6986555fd;hpb=dd4b356470969561d520e89d4c5c3539f81ecd75;p=netvirt.git diff --git a/README b/README index f7b6cc46fc..1cf47ae7b5 100644 --- 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--SNAPSHOT.zip file created from step 1 in the directory ovsdb/karaf/target/: + "unzip karaf--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 , 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 + - 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= -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 -