Versions Compared

Key

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

...

  • start ONOS
  • activate the SNMP southbound app :

    Code Block
    onos> app activate org.onosproject.snmp
  • activate the SNMP drivers for your device (i.e. lumentum drivers) :

    Code Block
    onos> app activate org.onosproject.drivers.lumentum

    Pay attention: if your drivers already depend upon the snmp app only the second step is needed.

  • give ONOS the information regarding the device and which driver to use for you device in a json file. You need to specify username, password, ip and port. If you wrote a specific driver that has also to be changed form the standard "rest" one.

    Code Block
    {
      "devices":{
        "snmp:<ip>:<port>":{
          "basic":{
            "driver":<your_driver_name>
          }
        }
      },
      "apps":{
        "org.onosproject.snmp":{
          "devices":[{
            "username":<username>,
            "password":<password>,
            "ip":<ip>,
            "port":<port>
          }]
        }
      }
    }

    A working example is in $ONOS_ROOT/tools/test/configs/restSB-cfg.json. Change the IP both in the DeviceId at the top and in the devices array. This example expects that your are running a REST server locally (127.0.0.1) on port 8080.
    You can also add other information, more than the driver, to the basic device configuration information: "type": "<device-type>", "manufacturer": "<device-manufacturer>","hwVersion": "<hw-version>","swVersion": "<sw-version>".

     

  • upload the configuration you just wrote to the instance of ONOS you are running, in our case localhost:

    Code Block
    <your_machine>~$ curl -X POST -H "content-type:application/json" http://localhost:8181/onos/v1/network/configuration -d @<path_to_your_json_configuration_file> --user onos:rocks

    or 

    Code Block
    <your_machine>~$ onos-netcfg localhost <path_to_your_json_configuration_file>
  • Check if the device is present in ONOS:

    Code Block
    onos> devices

    should return, among other devices also something like:

    Code Block
    onos> id=restsnmp:127.0.0.1:80801, available=true, role=MASTER, type=SWITCH, mfr=unknown, hw=unknown, sw=unknown, serial=unknown, ipaddress=127.0.0.1, driver=restCienalumentum, name=rest:127.0.0.1:80801

    If the device is not present the could have been and error one or multiple errors and you have to check the logs.

    • for localhost logs

      Code Block
      <your_machine>~$ tl

      or for remote logs

      Code Block
      <your_machine>~$ ol
    • verify that the logs don't contain REST related exceptions and this error does not appear:

      Code Block
      2016-01-19 15:19:28,102 | ERROR | event-dispatch-0 | RestDeviceProvider | 192 - org.onosproject.onos-restsb-provider-device - 1.5.0.SNAPSHOT | Device <device> not reachable, error creating HTTP connection
      java.net.ConnectException: Connection refused

      In case the log is preset it means SNMP related exceptions. In case error are present in the logs it could mean that the device was not able to reply on the given IP and Port. Verify Ip and Port in the Json file you posted and retry. If any other exception is present, such as no device name, please read the log and react to it accordingly.

  • If your driver specifies a PortDiscovery implementation, such as PortDiscoveryCienaWaveserverImpl LumentumRoadmDeviceDescription.java the Rest Snmp southbound provider also queries the description you provide and the ports that are available on that device and updates the information in the ONOS core. 

    So if your run in ONOS the command:

    Code Block
    onos> ports

    should return, among other devices also something like:

    Code Block
    onos> id=restsnmp:127.0.0.1:80801, available=true, role=MASTER, type=SWITCH, mfr=unknown, hw=unknown, sw=unknown, serial=unknown, ipaddress=127.0.0.1, driver=restCienalumentum, name=restsnmp:127.0.0.1:80801
      port=4, state=enabled, type=och, signalType=ODU4, isTunable=yes , name=1.1
      port=5, state=enabled, type=och, signalType=ODU4, isTunable=yes , name=1.2
      port=20, state=enabled, type=oduclt, signalType=CLT_100GBE , name=5
      port=24, state=enabled, type=oduclt, signalType=CLT_100GBE , name=6
      port=28, state=enabled, type=oduclt, signalType=CLT_100GBE , name=7
      port=32, state=enabled, type=oduclt, signalType=CLT_100GBE , name=8
      port=48, state=enabled, type=och, signalType=ODU4, isTunable=yes , name=12.1
      port=49, state=enabled, type=och, signalType=ODU4, isTunable=yes , name=12.2
  • Once the device is present in ONOS you can interact with it via the driver/provider subsystem.

...