SDP Controller Device

Introduction

The SDP controller Tango device is designed to provide the overall control of the SDP. The commands it receives cause the other SDP services to be stopped or started, and its attributes report on the overall state of the system.

The present implementation of the SDP controller device does the following:

  • performs the state transitions in response to commands

  • reports the statuses of SDP components on the components attribute

  • updates the healthState based on components’ statuses

Commands

The commands change the device state as described below, but at present they have no other effect on SDP.

Command

Argument type

Return type

Action

On

None

None

Set device state to ON

Disable

None

None

Set device state to DISABLE

Standby

None

None

Set device state to STANDBY

Off

None

None

Set device state to OFF

Attributes

Device attributes:

Attribute

Type

Read/Write

Values

Description

versionId

String

Read

Semantic version

Controller device server version

sdpVersion

String (JSON)

Read

SDP version information

Versions of the SDP and its components

adminMode

Enum

Read

Admin mode values

Controller admin mode

healthState

Enum

Read

Health state values

SDP health state

components

String

Read

Components attribute

Reports information on SDP components

SDP version information

This attribute contains information about the versions of the SDP and its components, formatted as a JSON string. The following is an example of the version information as provided by the SDP Helm chart.

{
    "version": "0.17.0",
    "components": [
        {"name": "etcd", "image": "artefact.skao.int/ska-sdp-etcd", "version": "3.5.9"},
        {"name": "lmc", "image": "artefact.skao.int/ska-sdp-lmc", "version": "0.23.1"},
        {"name": "lmc-queueconnector", "image": "artefact.skao.int/ska-sdp-lmc-queue-connector", "version": "1.2.0"},
        {"name": "dsconfig", "image": "artefact.skao.int/ska-tango-images-tango-dsconfig", "version": "1.5.9"},
        {"name": "proccontrol", "image": "artefact.skao.int/ska-sdp-proccontrol", "version": "0.12.1"},
        {"name": "helmdeploy", "image": "artefact.skao.int/ska-sdp-helmdeploy", "version": "0.14.0"},
        {"name": "console", "image": "artefact.skao.int/ska-sdp-console", "version": "0.5.1"}
    ],
    "dependencies": [
        {"name": "ska-sdp-qa", "repository": "https://artefact.skao.int/repository/helm-internal", "version": "0.19.1"},
        {"name": "ska-tango-base", "repository": "https://artefact.skao.int/repository/helm-internal", "version": "0.4.6"}
    ]
}

Admin mode values

Admin mode is implemented as a read-only attribute, so it always returns the value ONLINE.

adminMode

Description

ONLINE (0)

SDP can be used for normal operations

Health state values

healthState

Description

OK (0)

SDP is functioning as expected

DEGRADED (1)

SDP can only provide part of its functionality

FAILED (2)

SDP is unable to function

UNKNOWN (3)

Controller device is unable to determine the health of the SDP

The healthState is updated based on component statuses reported in the components attribute.

  • if all components are ONLINE: healthState is OK

  • if all of the subarrays are ONLINE but either the Helm Deployer or the Processing Controller (or both) are OFFLINE: healthState is DEGRADED

  • if any of the subarrays are OFFLINE: healthState is FAILED

Components attribute

Reports various information on components in the form of a JSON string. Currently, it contains status information of the:

  • Subarray device(s)

  • Processing Controller

  • Helm Deployer

When queried, it checks for owner entries of each component in the Configuration DB. When one is not found, the status of that component is reported as OFFLINE. When the entry exists, the status is reported as ONLINE.

Example string:

{
    "lmc-subarray-01": {"status": "ONLINE"},
    "lmc-subarray-02": {"status": "OFFLINE",
                        "error": {"SDP Subarray is OFFLINE. It cannot be used for processing."}
                        },
    "proccontrol": {"status": "ONLINE"},
    "helmdeploy": {"status": "OFFLINE",
                   "error": "SDP Helm Deployer is OFFLINE:
                            - Cannot deploy new processing scripts.
                            - Running scripts will not deploy execution engines.
                            - Deployments are not cleaned up."}
                  }
}