Simple remote connectors

Prerequisites

git checkout origin/osp-web-configuration .

Checkout

To checkout this example (first checkout prerequisites)

git checkout origin/simple_remote_connector .

Description

This example explains how to create a random value generated by a remote connector.

Steps

1. Create an empty module.remote file in the modules path.

The definition of a remote module is done with a single step - define an empty file name module.remote instead of the module.service

modules/waveforms/waveforms-1/module.remote

# This file is empty

Add the module configuration, as for a normal module, but replace the rabbit value with the IP of your stack.

modules/waveforms/waveforms-1/module.waveforms

{
  "messagingConfiguration": 
  {
    "clientId": "osp-waveforms-1",
    "host": "rabbit"
  }
}

2. Create a random value generator

root/random/value.ospp

{
    "name" : "Waveform",
    "description" : "",
    "type" : "DECIMAL"
}

root/random/owner.waveforms

{
    "moduleId": "modules.waveforms.waveforms-1",
    "waveformConfigurationEntity": {
        "min": 0,
        "max": 100,
        "type": "DISCRETE_RANDOM",
        "seed": 111
    },
    "samplePeriod": {
        "unit": "SECONDS",
        "value": 1
    }
}

3. Add a dashboard with a value subscription widget

root/dashboard.view

{
    "configuration": [
        {
            "valueSubscriptions": {
                "values": [
                    {
                        "id": "root.random",
                        "right": "READ_WRITE",
                        "type": "INTEGER"
                    }
                ]
            },
            "id": "oK1dVAne",
            "type": "ValueSubscription",
            "title": ""
        }
    ],
    "layout": {
        "lg": [
            {
                "w": 4,
                "h": 3,
                "x": 0,
                "y": 0,
                "i": "oK1dVAne"
            }
        ]
    },
    "breakpoints": {
        "lg": 1200,
        "md": 996,
        "sm": 768,
        "xs": 480,
        "xxs": 0
    },
    "cols": {
        "lg": 12,
        "md": 10,
        "sm": 6,
        "xs": 4,
        "xxs": 2
    },
    "rowHeight": 150
}

4. Push the configuration

git add .
git commit -m "Add module.waveform (remote connector)"
git push

5. Check the current configuration

Check exposed port

The dispatcher will restart and expose port 10000 (which will be reached by the remote connector to retrieve the configuration).

$ docker service logs  | grep dispatcher
sf1f5dux1b0l   osp-stack-1_modules_configuration-dispatcher_main   replicated   1/1        osp-configuration-dispatcher:<version>            *:5022->5022/tcp, *:9102->9100/tcp, *:10000->10000/tcp

Hint

The port is exposed by the service, not by the docker, because the network used is the overlay in SWARM mode.

Check no waveform is running

$ docker service logs  | grep waveforms

Check frontend value is unknown for root.random

6. Connect a remote connector

In this example, we’ll use the docker container, but a docker service can also be created. Even a SWARM can be created to share the certificate.

Creating a directory for remote certificates :

mkdir /tmp/example-cert
cp /tmp/onsphere/certs/remote-module/modules_waveforms_waveforms-1.crt /tmp/example-cert/module.crt
cp /tmp/onsphere/certs/remote-module/modules_waveforms_waveforms-1.key /tmp/example-cert/module.key
cp /tmp/onsphere/certs/ca/ca.crt /tmp/example-cert/ca.crt

Replace in the following command:

  • HOST : The Ip of your SWARM

  • VERSION : The version of your OnSphere stack

docker container run --detach --name=waveform-remote --restart=always --env DISPATCHER_HOST="[HOST]" --env DISPATCHER_PORT="10000" -v /tmp/example-cert:/run/secrets nexus.sdnroot.net/osp-waveforms:[VERSION]

7. Visualize the result on the dashboard

../../_images/basic-example-dashboard.png