Skip to content
jgrunert edited this page Nov 11, 2015 · 19 revisions

ZSDN provides a module build system, based on CMake, to build the controller modules.

Building

For building zeroSDN modules you need a initialized clone of the zeroSDN repository. You can either install it manually as described in Manual-Installation or use a provided VM Image from here Virtual-Machines.

In your zeroSDN folder you can run the script build-modules.sh. The script needs the -m parameter defining which set of modules to build.

ZeroSDN has the following predefined module sets:

  • zsdn-core: Module set of all ZSDN core modules. This is the controller with all it's core functionality. Will not do much on it's own. One instance of each module type.
  • zsdn-default: Core controller functionality as well as forwarding-by-controller, Layer-2-flow-installation, and ARP-handling. One instance of each module type.
  • zsdn-webadmin: Module set zsdn-default + WebAdmin (REST interface and Web GUI)
  • zsdn-webadmin-logging: Module set zsdn-webadmin + LoggingModule logging controller messages (requires Apache Cassandra)

Module sets can be individually defined as explained in section Build-System#module-set-definition.

When the build finished successfully the builded modules will be stored in the build folder

Then you can run modules individually or using the run script as describe in Quick-Start

Exporting

Module Set Definition

A module set defines a set of controller modules. The definition consists of two files:

  • Module File List .txt: Defines a list of all module types in this module set. The first line contains the module description, followed by the list of modules, one in each line. C++ modules with the prefix "cpp/", Java modules with the prefix "java/".
    • Example custom.txt:
        Your description.
        cpp/MyCppModule
        java/MyJavaModule
      
  • Module Run Script <name.sh>: Script define how to run the modules. This is useful for running modules on a single node. You can define which modules to run. You can define the module run parameters and start modules one or multiple times. The parameter $1 defines the module executable folder and the parameter $2 the configuration file.
    • Example custom.sh:
        ...
      
        # Define module starts
        modulStarts=("$1/MyCppModule $2" "java -jar $1/MyJavaModule.jar")
      
        # Run module starter
        java -jar $1/module-starter.jar "${modulStarts[@]}"
      

The script run-modules.sh will run a given module set using its module run script. You can also start single modules directly or use your own custom run scripts.

Clone this wiki locally