2.5.2. Composite services manager

2.5.2.1. Introduction

This enabler presents a graphical environment where ASSIST-IoT administrators can connect previously deployed enablers to compose a composite service (i.e., a workflow or a pipeline). Having information about the physical topology and available K8s nodes/clusters, it allows the user to decide whether to select the proper node or cluster for deploying an enabler, or let the system decide based on pre-defined architectural rules.

In addition, the composite services manager can be integrated in the tactile dashboard enabler.

This enabler has reached a TRL of 5 during the execution of the ASSIST-IoT project.

2.5.2.2. Features

Users can define flows among ASSIST-IoT enablers (previously defined as nodes) to move data among them, facilitating the translation between different communication protocols. For instance, published messages on an MQTT topic of the EDBE are needed to be stored in the LTSE, or some data available through an HTTP REST API needs to be published in an MQTT topic to be available for the subscribers.

List of available nodes:

  • EDBE

  • LTSE

  • HTTP ENDPOINT

  • MQTT-HTTP

  • HTTP-MQTT

List of available translation agents:

  • MQTT-HTTP

  • HTTP-MQTT

2.5.2.3. Place in architecture

The Composite services manager is part of the vertical plane manageability enablers. Moreover, the frontend component of this enabler will be part of the Tactile dashboard enabler.

Composite services manager architecture

2.5.2.4. User guide

2.5.2.4.1. REST API endpoints

This enabler will be included in the Tactile Dashboard of the project, so a logged user with the right permissions will be able to access to it by clicking its menu entry.

Method

Endpoint

Description

Payload (if needed)

Response format

GET

/composite-services-manager

Composite services manager view of the dashboard

Web page

Endpoints of the Backend component:

Method

Endpoint

Description

Payload (if needed)

Response format

GET

/version

Get the enabler version

{ “enabler”: String, “version”: String }

GET

/health

Get the enabler’s health status

GET

/metrics

Obtain some enabler metrics

{ “flows”: Number, “deployedAgents”: Number }

GET

/api-export

Get the OpenAPI specification in JSON

OpenAPI specification in JSON

POST

/

Update flows as defined in the front endpoint

Node-RED flows format in JSON

{ “message”: String }

2.5.2.4.2. Frontend dashboard

Composite services manager dashboard

2.5.2.4.3. Create a flow

  1. Drag a node of an enabler from the ASSIST-IoT group from the left side menu and drop it onto the dashboard.

  2. Double-click on the enabler node to configure it and save the configuration.

Composite services manager: edit node
  1. Drag an agent node, drop it on the dashboard and connect the two nodes by clicking on the edge of the node.

  2. Double-click on the agent node to configure it and save the configuration.

  3. Drag a node of another enabler, drop it on the dashboard and connect it to the agent by clicking on the node border.

  4. Double-click on the enabler node to configure it and save the configuration.

  5. Click on the Deploy button at the top right of the dashboard.

  6. A JSON with the response of the Backend API will be displayed in the Debug section.

  7. The Smart Orchestrator will deploy the configured agents in the flows in the corresponding K8s cluster.

Example of working flows:

Composite services manager: example flows

2.5.2.4.4. Delete a flow

  1. Select and delete the flows from the dashboard.

  2. Click on the Deploy button at the top right of the dashboard.

  3. A JSON with the response of the Backend API will be displayed in the Debug section.

  4. The Smart Orchestrator will deploy the configured agents in the flows in the corresponding K8s cluster.

Note

It’s better to click on the Deploy button after the creation and deletion of all the flows.

2.5.2.5. Prerequisites

The Smart Orchestrator and the LTSE must be previously installed.

Warning

This enabler has some prerequisites regarding the Smart Orchestrator: - At least the cloud K8s cluster must be registered - The ASSIST-IoT enabler’s Helm chart public repository must be resgistered

2.5.2.6. Installation

The enabler can be installed using its Helm chart, which is publicly available in Artifact Hub.

  1. Add the Helm chart repository:

    helm repo add assist-iot-composite-services https://assist-iot.github.io/composite_services/composite-services-manager-artifact

  2. Install the lastest version of the enabler:

    helm install composite-services-enabler assist-iot-composite-services/composite-services

2.5.2.7. Configuration options

The backend of the enabler can be configured using the following environment variables in the Helm chart:

  • smartOrchestratorUrl: complete URL of the Smart Orchestrator.

  • validNodes: list of valid nodes (Node-RED nodes) to be used to define the flows in the frontend dashboard.

  • helmChartRepository: name of the Helm chart repository which contains the charts of the agents.

  • ltseUrl: complete URL of the LTSE API.

  • ltseIndex: name of the Elasticsearch index to store the defined flows.

2.5.2.8. Developer guide

The source code is publicly available in GitHub.

The intention of this enabler is to be open to the development of new Node-RED nodes and translation agents. Please, use the developed nodes , which have been published in the Node-RED Flow Library, and agents as a reference.

2.5.2.9. Version control and release

Version 1.1.0 fully functional, but it is open to the addition of more agents, nodes and features. Furthermore, it is aligned with the version 4.0.0 of the Smart Orchestrator enabler.

2.5.2.10. License

This software is licensed under the Apache 2.0 license.

2.5.2.11. Notice (dependencies)

ASSIST-IoT - Architecture for Scalable, Self-*, human-centric, Intelligent, Se-cure, and Tactile next generation IoT

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 957258.

Composite services manager enabler of the manageability enablers

Copyright 2020-2023 Universitat Politècnica de València

  1. Included Software

  2. Used Software

  1. List of licenses