Coder Social home page Coder Social logo

netgroup-polito / ovsdb Goto Github PK

View Code? Open in Web Editor NEW

This project forked from opendaylight/ovsdb

0.0 17.0 0.0 4.57 MB

Mirror of the OpenDaylight ovsdb gerrit project

License: Eclipse Public License 1.0

Java 98.84% Python 0.29% Shell 0.59% Puppet 0.16% HTML 0.12%

ovsdb's Introduction

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
  +-- opendaylight : older, OSGi-based distribution
  +-- opendaylight-karaf : karaf-based distribution

- features : This folder contains all the Karaf related files.

- integrationtest : Contains all the PAX-Exam based integrationTests that covers IT for all the 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.

- 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 functionality via OpenFlow or potentially
                           other protocols.

- ovs-sfc : SFC implementation using the OVSDB project. Currently it is just a shell.

- plugin : Contains Opendaylight Southbound Plugin APIs and provides a 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 functionality that assumes 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.

- 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 and OVSDB common utilities.

HOW TO BUILD & RUN
==================

Pre-requisites : JDK 1.7+, Maven 3+

1. 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. The end-customer can choose to deploy the required feature
      based on his/her deployment needs.

   2. From the root ovsdb/ directory, execute "mvn clean install"

   3. Next unzip the distribution-karaf-<VERSION_NUMBER>-SNAPSHOT.zip file created from step #2 in
      the directory ovsdb/distribution/opendaylight-karaf/target like so:
      "unzip distribution-karaf-<VERSION_NUMBER>-SNAPSHOT.zip"

   4. 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 odl-ovsdb-northbound" (without quotation marks).

   Sample output from Karaf console :

   opendaylight-user@root>feature:list | grep -i ovsdb
   odl-ovsdb-all                    | 1.0.0-SNAPSHOT      |           | ovsdb-1.0.0-SNAPSHOT                  | OpenDaylight :: OVSDB :: all
   odl-ovsdb-library                | 1.0.0-SNAPSHOT      | x         | ovsdb-1.0.0-SNAPSHOT                  | OVSDB :: Library
   odl-ovsdb-schema-openvswitch     | 1.0.0-SNAPSHOT      | x         | ovsdb-1.0.0-SNAPSHOT                  | OVSDB :: Schema :: Open_vSwitch
   odl-ovsdb-schema-hardwarevtep    | 1.0.0-SNAPSHOT      | x         | ovsdb-1.0.0-SNAPSHOT                  | OVSDB :: Schema :: hardware_vtep
   odl-ovsdb-plugin                 | 1.0.0-SNAPSHOT      | x         | ovsdb-1.0.0-SNAPSHOT                  | OpenDaylight :: OVSDB :: Plugin
   odl-ovsdb-northbound             | 0.6.0-SNAPSHOT      |           | ovsdb-1.0.0-SNAPSHOT                  | OpenDaylight :: OVSDB :: Northbound
   odl-ovsdb-openstack              | 1.0.0-SNAPSHOT      | x         | ovsdb-1.0.0-SNAPSHOT                  | OpenDaylight :: OVSDB :: OpenStack Network Virtual
   odl-ovsdb-ovssfc                 | 0.0.1-SNAPSHOT      |           | ovsdb-0.0.1-SNAPSHOT                  | OpenDaylight :: OVSDB :: OVS Service Function Chai


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:

   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

   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

   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.

   4. karaf will see the changed bundle and reload it.


3. Building an OVSDB based Opendaylight Virtualization edition:
   1. This is the legacy way to build and distribute Opendaylight archives. This method was
      followed in Hydrogen. It might still work in Helium but it is best effort for support.
      The preferred method for Helium and later is to use karaf.

   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

   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

4. Building a Karaf Feature and deploying it in an Opendaylight Karaf distribution :
*** This method is deprecated.
   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.

   5. run Karaf from within the distribution.opendaylight-karaf-X.X.X/ directory using "bin/karaf"

   Sample output from Karaf console :

   opendaylight-user@root>kar:list
   KAR Name
   -----------------------------
   ovsdb-features-1.2.0-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

   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

Running The Integration Tests
=============================

To run the integration tests locally the following components are required:

 - Docker
 - Fig

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 run the integration tests:

    mvn clean install
    fig 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

Skipping unit tests and karaf tests
====================

mvn clean install -Dmaven.test.skip=true -Dskip.karaf=true

ovsdb's People

Contributors

mavenugo avatar shague avatar flavio-fernandes avatar edwarnicke avatar nerdalert avatar srini084 avatar ryandgoulding avatar vishnoianil avatar sharadmishra15 avatar snackewm avatar spark404 avatar dave-tucker avatar evanzeller avatar mgkwill avatar alagalah avatar ashw7n avatar giovannimeo avatar tbachman avatar amitmandke avatar collivier avatar zxiiro avatar hsinyishen avatar mierdin avatar leocavalcanti avatar benderscript avatar yevvievvy avatar abonas avatar tykeal avatar nilok avatar colinmcnamara avatar

Watchers

James Cloos avatar Felicián Németh avatar  avatar Sebastiano Miano avatar Matteo Virgilio avatar Bevilacqua Daniele avatar Gabriele Castellano avatar Alessio Viola avatar Francesco Pellerey avatar Fulvio Risso avatar Giuseppe Piscopo avatar  avatar  avatar Steven Van Rossem avatar Federico Vibrati avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.