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
attributeupdates 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 |
Versions of the SDP and its components |
|
adminMode |
Enum |
Read |
Controller admin mode |
|
healthState |
Enum |
Read |
SDP health state |
|
components |
String |
Read |
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."}
}
}