Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

NameOrganizationEmail
Shravan AmbatiCalix Inc

shravan.ambati@calix.com

Sanjana AgarwalON.Labsanjana@onlab.us

 

 

OVERVIEW

SDN Applications wanting to receive notifications from ONOS must be written as native ONOS Java Application.

...

  1. Build and run ONOS. This how-to screencast is a good starting point to build and run ONOS locally on your development machine, for any other information please refer to the ONOS Developer Guide.

    Info
    titleImportant! Build using Maven

    Do not build using BUCK as the app currently does not support BUCK build. Use 'maven clean install' or mci (for the lazy ones like me).

    Code Block
    languagetext
    $ mci
  2. Activate Zookeeper and the Kafka server. Download Kafka version and un-tar it. You can follow the Step 1 of the Quick start guide on this page: http://kafka.apache.org/documentation.html#quickstart

    Info

    Activate Zookeeper and the Kafka server (in this order) in separate terminals.

    Code Block
    languagetext
    $ bin/zookeeper-server-start.sh config/zookeeper.properties
    Code Block
    languagetext
    $ bin/kafka-server-start.sh config/server.properties

    Once, both have been activated successfully, you can proceed to the next steps.

  3. Activate the Kafka integration app. This will activate all the modules of the app. In the ONOS command line, type:

    Code Block
    languagetext
    $ app activate org.onosproject.kafkaintegration
  4. Check that RPC services and the ONOS Protobuf models have been activated too.

    Code Block
    languagetext
    $ apps -s -a

    You should see an output similar to this (depending on your defined startup apps in $ONOS_APPS) : 

    Code Block
    languagetext
    *  18 org.onosproject.drivers              1.7.0.SNAPSHOT Default Device Drivers
    *  27 org.onosproject.openflow-base        1.7.0.SNAPSHOT OpenFlow Provider
    *  28 org.onosproject.hostprovider         1.7.0.SNAPSHOT Host Location Provider
    *  29 org.onosproject.lldpprovider         1.7.0.SNAPSHOT LLDP Link Provider
    *  30 org.onosproject.openflow             1.7.0.SNAPSHOT OpenFlow Meta App
    *  41 org.onosproject.fwd                  1.7.0.SNAPSHOT Reactive Forwarding App
    *  44 org.onosproject.incubator.rpc        1.7.0.SNAPSHOT ONOS inter-cluster RPC service
    *  45 org.onosproject.incubator.protobuf   1.7.0.SNAPSHOT ONOS ProtoBuf models
    *  51 org.onosproject.kafkaintegration     1.7.0.SNAPSHOT Kafka Integration Application
    *  58 org.onosproject.mobility             1.7.0.SNAPSHOT Host Mobility App
    *  81 org.onosproject.proxyarp             1.7.0.SNAPSHOT Proxy ARP/NDP App
  5. Register your app using Swagger API. You will want to register your app to listen to specific ONOS events using Swagger API.
    The link to Swagger UI is: http://127.0.0.1:8181/onos/v1/docs/#/ and the username and password, both are: karaf

    You have to select 'Kafka Integration Application REST API' from the selection menu on the top which is default set on 'ONOS Core REST API.'
    The following image displays what POST and GET operations will be available for your use.


    In the register POST operation, input the name of your app, and hit on 'Try it out!'

  6. The Response Body consists of the JSON generated from the call. It consists of the GROUP_ID, KAFKA_IP and KAFKA_PORT. 
    It would look something like this: 
    The KAFKA_IP and the KAFKA_PORT are to be passed as a parameter to the "bootstrap.servers" Kafka property of your app.
    Use the GROUP_ID to subscribe for ONOS events using the Swagger UI. 



  7. Subscribe for ONOS events. In the subscribe POST operation, create a subscription to a specific ONOS event. A model schema exists on the right-hand side of the call. 
    The appName would be the same name of the app, with which you registered. The groupId would be the groupId you get as a response after registering your app and the eventType would be the type of the ONOS events you want to register for (LINK and DEVICE events for now).

    Info
    titleErrors with Swagger responses

    There is a possibility that the Swagger UI might give wrong responses, like 'No response from server.' In such cases, please check your log to be sure of the correct response. To print your log, you can use the following command in a new Terminal window.

    Code Block
    languagetext
    $ tl

    For a successful subscription you should get a 'Subscription for DEVICE event by forwardingApp successful' message.


  8. Successfully receive the specific ONOS events. After your event subscription is completed, you should receive the specific ONOS events successfully.

...