How to run tangoctl

https://readthedocs.org/projects/ska-tangoctl/badge/?version=latest

Introduction

This project provides a command line utility for use with Tango. It reads information fields and also attributes, command and property configuration and values.

The utility reads all Tango devices from the Tango database, specified on the command line or with the TANGO_HOST environment variable. When reading Tango devices, there are three types of output: * list output with one line per device (list) * read and display values of attributes, properties and a selection of commands (short) * read and display configuration and values in full (full) Output can be in plain text, YAML, HTML, JSON or Markdown format.

There are no hard-coded attribute, command or property names. The columns in the list are configured in a JSON file.

By default, devices with names that start with _sys_ or _dserver_ are not shown. This can be overridden using a command line flag or in the configuration file. The Tango devices can be filtered by attribute, command, property or class name. Matches can be done on full or partial matches. To shorten the running time, there is an option to limit output to one device per class.

An enhanced version of tangoctl (named tangoktl) has support for Tango devices running in a Kubernetes cluster. The namespaces in the cluster can be listed. By setting a standard pod name for Tango database servers in the configuration file, the FQDN of the server can be derived and the IP address can be looked up.

By default, commands are not run since it might result in devices ending up in unwanted or unsafe states. The configuration file contain commands that are safe to be read, for example Status.

There is a basic test function. Values for attributes, commands or properties are specified in a JSON file. These are written and then read. The test fails if the expected value is not returned.

An experimental C++ version with a subset of the above functionality is available at:

https://gitlab.com/jcoetzer/tangoctl_cpp

How to get and set Tango host

Using kubectl.py

Read the external IP address of the service tango-databaseds in the Kubernetes namespace of interest, e.g. integration:

` $ kubectl get service tango-databaseds --namespace integration NAME               TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)           AGE tango-databaseds   LoadBalancer   10.110.24.5   10.164.10.161   10000:32207/TCP   6d7h $ export TANGO_HOST=10.164.10.161:10000 `

Using tangoktl

If tangoktl is installed (see below) it can be used to get the Tango host setting:

$ tangoktl -K integration -t
TANGO_HOST=tango-databaseds.integration.svc.miditf.internal.skao.int:10000
TANGO_HOST=10.164.10.161:10000
$ export TANGO_HOST=10.164.10.161:10000

Tango control utility

Types of output

When reading Tango devices, there are three types of output:

  • list output with one line per device (use -l or –list)

  • read and display values of attributes, properties and some commands (-s or –short)

  • read and display configuration and values in full (-f or –full)

Filtering output

The list of devices can be filtered by

  • device name (-D or –device=)

  • attribute (-A or –attribute=)

  • command (-C or –command)

  • property (-P or –property)

By default, devices with names that start with sys or dserver are not shown. This is configurable (see below). To override this, use the flag -e or –everything.

To shorten the running time use -u or –unique to limit output to one device per class.

Logging level

By default, the logging level is WARNING*. Use -v to switch to INFO or -V to switch to DEBUG.

Progress bars can be turned off with -q or –quiet. They are disbled when logging level is set to INFO or DEBUG.

Output format

Output can be in any of the following formats: * text (default) * YAML (-y or ‘–yaml`) * HTML (-j or –html) * JSON (-w or –json) * Markdown (-m or –md)

Configuration files

The items displayed in the list output are configurable. The configuration also contain commands that can be read.

Configuration file for tangoktl

To change the configuration, create a file using the JSON syntax and use the option –cfg to read it. This is the default configuration for tangoktl:

{
  "cluster_domain": "miditf.internal.skao.int",
  "databaseds_name": "tango-databaseds",
  "databaseds_port": 10000,
  "device_port": 45450,
  "run_commands":  ["QueryClass", "QueryDevice", "QuerySubDevice", "GetVersionInfo", "State", "Status"],
  "run_commands_name": ["DevLockStatus", "DevPollStatus", "GetLoggingTarget"],
  "ignore_device": ["sys", "dserver"],
  "min_str_len": 4,
  "delimiter": ",",
  "list_items" : {
    "attributes" : {"adminMode": ">11", "versionId": "<10"},
    "commands": {"State": "<10"},
    "properties": {"SkaLevel": ">9"}
  }
}

Fields: * min_str_len: mininum string length below which only exact matches are allowed * ignore_device: device names that start with these string are ignored (unless the ) * run_commands: commands that can be run * run_commands_name: commands that can be run with the device name as parameter * databaseds_name: prefix used to set TANGO_HOST * cluster_domain: domain name used to set TANGO_HOST * databaseds_port: Tango database device port, used to set TANGO_HOST * list_items: attributes, commands and properties to display in list (the values are used to construct Python f-strings)

The value for TANGO_HOST is set as follows:

databaseds_name.`namespace`.`cluster_domain`:databaseds_port

where namespace is specified on the command line

tangoctl.json

To change the configuration, create a file using the JSON syntax and use the option –cfg to read it. This is the default configuration for tangoctl:

{
  "device_port": 45450,
  "run_commands":  ["QueryClass", "QueryDevice", "QuerySubDevice", "GetVersionInfo", "State", "Status"],
  "run_commands_name": ["DevLockStatus", "DevPollStatus", "GetLoggingTarget"],
  "ignore_device": ["sys", "dserver"],
  "min_str_len": 4,
  "delimiter": ",",
  "list_items" : {
    "attributes" : {"adminMode": ">11", "versionId": "<10"},
    "commands": {"State": "<10"},
    "properties": {"SkaLevel": ">9"}
  }
}

Fields: * min_str_len: mininum string length below which only exact matches are allowed * ignore_device: device names that start with these string are ignored (unless the ) * run_commands: commands that can be run * run_commands_name: commands that can be run with the device name as parameter * list_items: attributes, commands and properties to display in list (the values are used to construct Python f-strings)

Getting help

To obtain help:

$ tangoktl --help
Read Tango devices:

Display version number
        tangoctl --version

Display help
        tangoctl --help
        tangoctl -h

Display Kubernetes namespaces
        tangoctl --show-ns
        tangoctl -k

Display Tango database address
        tangoctl --show-db --k8s-ns=<NAMESPACE>
        tangoctl -t -K <NAMESPACE>
e.g. tangoctl -t -K integration

Display classes and Tango devices associated with them
        tangoctl -d|--class --k8s-ns=<NAMESPACE>|--host=<HOST>
        tangoctl -d\|--class -K <NAMESPACE>\|-H <HOST>
e.g. tangoctl -d -K integration

List Tango device names
        tangoctl --show-dev --k8s-ns=<NAMESPACE>\|--host=<HOST>
        tangoctl -l -K <NAMESPACE>\|-H <HOST>
e.g. tangoctl -l -K integration

Display all Tango devices (will take a long time)
        tangoctl --full\|--short -e|--everything [--namespace=<NAMESPACE>\|--host=<HOST>]
        tangoctl -l -K integration
        e.g. tangoctl -f|-s -K <NAMESPACE>|-H <HOST>

Filter on device name
        tangoctl --full|--short -D <DEVICE> -K <NAMESPACE>|-H <HOST>
        tangoctl -f|-s --device=<DEVICE> --k8s-ns=<NAMESPACE>|--host=<HOST>
e.g. tangoctl -f -K integration -D ska_mid/tm_leaf_node/csp_subarray01

Filter on attribute name
        tangoctl --full|--short --attribute=<ATTRIBUTE> --k8s-ns=<NAMESPACE>|--host=<HOST>
        tangoctl -f|-s -A <ATTRIBUTE> -K <NAMESPACE>|-H <HOST>
e.g. tangoctl -f -K integration -A timeout

Filter on command name
        tangoctl --full|--short --command=<COMMAND> --k8s-ns=<NAMESPACE>|--host=<HOST>
        tangoctl -f|-s -C <COMMAND> -K <NAMESPACE>|-H <HOST>
e.g. tangoctl -l -K integration -C status

Filter on property name
        tangoctl --full|--list|--short --property=<PROPERTY> --k8s-ns=<NAMESPACE>|--host=<HOST>
        tangoctl -f|-s -P <PROPERTY> --k8s-ns=<NAMESPACE>|--host=<HOST>
e.g. tangoctl -l -K integration -P power

Display tangoctl test input files
        tangoctl --json-dir=<PATH>
        tangoctl -J <PATH>
e.g. ADMIN_MODE=1 tangoctl -J resources/

Run test, reading from input file
        tangoctl --k8s-ns=<NAMESPACE> --input=<FILE>
        tangoctl --K <NAMESPACE> -O <FILE>
Files are in JSON format and contain values to be read and/or written, e.g:
{
    "description": "Turn admin mode on and check status",
    "test_on": [
        {
            "attribute": "adminMode",
            "read" : ""
        },
        {
            "attribute": "adminMode",
            "write": 1
        },
        {
            "attribute": "adminMode",
            "read": 1
        },
        {
            "command": "State",
            "return": "OFFLINE"
        },
        {
            "command": "Status"
        }
    ]
}

Files can contain environment variables that are read at run-time:
{
    "description": "Turn admin mode off and check status",
    "test_on": [
        {
            "attribute": "adminMode",
            "read": ""
        },
        {
            "attribute": "adminMode",
            "write": "${ADMIN_MODE}"
        },
        {
            "attribute": "adminMode",
            "read": "${ADMIN_MODE}"
        },
        {
            "command": "State",
            "return": "ONLINE"
        },
        {
            "command": "Status"
        }
    ]
}

To run the above:
ADMIN_MODE=1 tangoctl --k8s-ns=integration -D mid_csp_cbf/talon_board/001 -f --in resources/dev_online.json -V

Test Tango devices:

Test a Tango device
        tangoctl -K <NAMESPACE>|-H <HOST> -D <DEVICE> [--simul=<0|1>]

Test a Tango device and read attributes
        tangoctl -a -K <NAMESPACE>|-H <HOST> -D <DEVICE> [--simul=<0|1>]

Display attribute and command names for a Tango device
        tangoctl -c -K <NAMESPACE>|-H <HOST> -D <DEVICE>

Turn a Tango device on
        tangoctl --on -K <NAMESPACE>|-H <HOST> -D <DEVICE> [--simul=<0|1>]

Turn a Tango device off
        tangoctl --off -K <NAMESPACE>|-H <HOST> -D <DEVICE> [--simul=<0|1>]

Set a Tango device to standby mode
        tangoctl --standby -K <NAMESPACE>|-H <HOST> -D <DEVICE> [--simul=<0|1>]

Change admin mode on a Tango device
        tangoctl --admin=<0|1>

Display status of a Tango device
        tangoctl --status -K <NAMESPACE>|-H <HOST> -D <DEVICE>

Check events for attribute of a Tango device
        tangoctl -K <NAMESPACE>|-H <HOST> -D <DEVICE> -A <ATTRIBUTE>

Parameters:

        -a                              flag for reading attributes during tests
        -c|--cmd                        flag for running commands during tests
        --simul=<0|1>                   set simulation mode off or on
        --admin=<0|1>                   set admin mode off or onn
        -e|--everything                 show all devices
        -f|--full                       display in full
        -l|--list                       display device name and status on one line
        -s|--short                      display device name, status and query devices
        -q|--quiet                      do not display progress bars
        -j|--html                       output in HTML format
        -j|--json                       output in JSON format
        -m|--md                         output in markdown format
        -y|--yaml                       output in YAML format
        --json-dir=<PATH>               directory with JSON input file, e.g. 'resources'
        -J <PATH>
        --json-dir=<PATH>               directory with JSON input file, e.g. 'resources'
        -J <PATH>
        --device=<DEVICE>               device name, e.g. 'csp' (not case sensitive, only a part is needed)
        -D <DEVICE>
        --k8s-ns=<NAMESPACE>            Kubernetes namespace for Tango database, e.g. 'integration'
        -K <NAMESPACE>
        --host=<HOST>                   Tango database host and port, e.g. 10.8.13.15:10000
        -H <HOST>
        --attribute=<ATTRIBUTE>         attribute name, e.g. 'obsState' (not case sensitive)
        -A <ATTRIBUTE>
        --command=<COMMAND>             command name, e.g. 'Status' (not case sensitive)
        -C <COMMAND>
        --output=<FILE>                 output file name
        -O <FILE>
        --input=<FILE>                  input file name
        -I <FILE>

Note that values for device, attribute, command or property are not case sensitive.
Partial matches for strings longer than 4 charaters are OK.

When a namespace is specified, the Tango database host will be made up as follows:
        tango-databaseds.<NAMESPACE>.miditf.internal.skao.int:10000

Run the following commands where applicable:
        QueryClass,QueryDevice,QuerySubDevice,GetVersionInfo,State,Status

Run commands with device name as parameter where applicable:
        DevLockStatus,DevPollStatus,GetLoggingTarget

Examples:

        tangoctl --k8s-ns=integration -l
        tangoctl --k8s-ns=integration -D talon -l
        tangoctl --k8s-ns=integration -A timeout
        tangoctl --k8s-ns=integration -C Telescope
        tangoctl --k8s-ns=integration -P Power
        tangoctl --k8s-ns=integration -D mid_csp_cbf/talon_lru/001 -f
        tangoctl --k8s-ns=integration -D mid_csp_cbf/talon_lru/001 -q
        tangoctl --k8s-ns=integration -D mid_csp_cbf/talon_board/001 -f
        tangoctl --k8s-ns=integration -D mid_csp_cbf/talon_board/001 -f --dry
        tangoctl --k8s-ns=integration -D mid-sdp/control/0 --on
        ADMIN_MODE=1 tangoctl --k8s-ns=integration -D mid_csp_cbf/talon_board/001 -f --in resources/dev_online.json -V

Read all namespaces in Kubernetes cluster

The user must be logged into the Mid ITF VPN, otherwise this will time out.

Run this command to list namespaces:

$ tangoktl --show-ns
Namespaces : 53
        advanced-tango-training
        advanced-tango-training-sdp
        binderhub
        calico-apiserver
        calico-operator
        calico-system
        ci-dish-lmc-ska001-at-1838-update-main
        ci-dish-lmc-ska036-at-1838-update-main
        integration
        integration-sdp
        ci-ska-mid-itf-at-1838-update-main
        ci-ska-mid-itf-at-1838-update-main-sdp
        ci-ska-mid-itf-sah-1486
        ci-ska-mid-itf-sah-1486-sdp
        default
        dish-lmc-ska001
        dish-lmc-ska036
        dish-lmc-ska063
        dish-lmc-ska100
        dish-structure-simulators
        dishlmc-integration-ska001
        ds-sim-ska001
        extdns
        file-browser
        gitlab
        infra
        ingress-nginx
        integration
        integration-sdp
        integration-ska-mid-dish-spfc
        itf-ska-dish-lmc-spf
        kube-node-lease
        kube-public
        kube-system
        kyverno
        metallb-system
        miditf-lmc-002-ds
        miditf-lmc-003-karoo-sims
        miditf-lmc-005-spfrx
        register-spfc
        rook-ceph
        secrets-store-csi-driver
        ska-db-oda
        ska-tango-archiver
        ska-tango-operator
        sonobuoy
        spookd
        tango-tar-pvc
        tango-util
        taranta
        test-equipment
        test-spfc
        vault

Read Tango devices

Read all Tango devices

This will display the name, current state and admin mode setting for each Tango device in the database. Note that output has been shorteneded. By default, device names starting with dserver or sys are not listed:

$ tangoktl --namespace=integration --list
DEVICE NAME                              STATE      ADMIN MODE  VERSION  CLASS
mid-csp/capability-fsp/0                 ON         ONLINE      2        MidCspCapabilityFsp
mid-csp/capability-vcc/0                 ON         ONLINE      2        MidCspCapabilityVcc
mid-csp/control/0                        DISABLE    OFFLINE     2        MidCspController
mid-csp/subarray/01                      DISABLE    OFFLINE     2        MidCspSubarray
mid-csp/subarray/02                      DISABLE    OFFLINE     2        MidCspSubarray
mid-csp/subarray/03                      DISABLE    OFFLINE     2        MidCspSubarray
mid-eda/cm/01                            ON         N/A         N/A      HdbConfigurationManager
mid-eda/es/01                            ON         N/A         N/A      HdbEventSubscriber
mid-sdp/control/0                        N/A        N/A         N/A      N/A
mid-sdp/queueconnector/01                N/A        N/A         N/A      N/A
mid-sdp/queueconnector/02                N/A        N/A         N/A      N/A
mid-sdp/queueconnector/03                N/A        N/A         N/A      N/A
mid-sdp/subarray/01                      N/A        N/A         N/A      N/A
mid-sdp/subarray/02                      N/A        N/A         N/A      N/A
mid-sdp/subarray/03                      N/A        N/A         N/A      N/A
mid_csp_cbf/fs_links/000                 DISABLE    OFFLINE     0.11.4   SlimLink
...
mid_csp_cbf/fs_links/015                 DISABLE    OFFLINE     0.11.4   SlimLink
mid_csp_cbf/fsp/01                       DISABLE    OFFLINE     0.11.4   Fsp
mid_csp_cbf/fsp/02                       DISABLE    OFFLINE     0.11.4   Fsp
mid_csp_cbf/fsp/03                       DISABLE    OFFLINE     0.11.4   Fsp
mid_csp_cbf/fsp/04                       DISABLE    OFFLINE     0.11.4   Fsp
mid_csp_cbf/fspCorrSubarray/01_01        DISABLE    OFFLINE     0.11.4   FspCorrSubarray
...
mid_csp_cbf/fspCorrSubarray/04_03        DISABLE    OFFLINE     0.11.4   FspCorrSubarray
mid_csp_cbf/fspPssSubarray/01_01         DISABLE    OFFLINE     0.11.4   FspPssSubarray
...
mid_csp_cbf/fspPssSubarray/04_03         DISABLE    OFFLINE     0.11.4   FspPssSubarray
mid_csp_cbf/fspPstSubarray/01_01         DISABLE    OFFLINE     0.11.4   FspPstSubarray
...
mid_csp_cbf/fspPstSubarray/04_03         DISABLE    OFFLINE     0.11.4   FspPstSubarray
mid_csp_cbf/power_switch/001             DISABLE    OFFLINE     0.11.4   PowerSwitch
mid_csp_cbf/power_switch/002             DISABLE    OFFLINE     0.11.4   PowerSwitch
mid_csp_cbf/power_switch/003             DISABLE    OFFLINE     0.11.4   PowerSwitch
mid_csp_cbf/slim/slim-fs                 DISABLE    OFFLINE     0.11.4   Slim
mid_csp_cbf/slim/slim-vis                DISABLE    OFFLINE     0.11.4   Slim
mid_csp_cbf/sub_elt/controller           DISABLE    OFFLINE     0.11.4   CbfController
mid_csp_cbf/sub_elt/subarray_01          DISABLE    OFFLINE     0.11.4   CbfSubarray
mid_csp_cbf/sub_elt/subarray_02          DISABLE    OFFLINE     0.11.4   CbfSubarray
mid_csp_cbf/sub_elt/subarray_03          DISABLE    OFFLINE     0.11.4   CbfSubarray
mid_csp_cbf/talon_board/001              DISABLE    OFFLINE     0.11.4   TalonBoard
...
mid_csp_cbf/talon_board/008              DISABLE    OFFLINE     0.11.4   TalonBoard
mid_csp_cbf/talon_lru/001                DISABLE    OFFLINE     0.11.4   TalonLRU
...
mid_csp_cbf/talon_lru/004                DISABLE    OFFLINE     0.11.4   TalonLRU
mid_csp_cbf/talondx_log_consumer/001     DISABLE    OFFLINE     0.11.4   TalonDxLogConsumer
mid_csp_cbf/vcc/001                      DISABLE    OFFLINE     0.11.4   Vcc
...
mid_csp_cbf/vcc/008                      DISABLE    OFFLINE     0.11.4   Vcc
mid_csp_cbf/vcc_sw1/001                  DISABLE    OFFLINE     0.11.4   VccSearchWindow
...
mid_csp_cbf/vcc_sw2/008                  DISABLE    OFFLINE     0.11.4   VccSearchWindow
mid_csp_cbf/vis_links/000                DISABLE    OFFLINE     0.11.4   SlimLink
mid_csp_cbf/vis_links/001                DISABLE    OFFLINE     0.11.4   SlimLink
mid_csp_cbf/vis_links/002                DISABLE    OFFLINE     0.11.4   SlimLink
mid_csp_cbf/vis_links/003                DISABLE    OFFLINE     0.11.4   SlimLink
ska_mid/tm_central/central_node          ON         OFFLINE     0.12.2   CentralNodeMid
ska_mid/tm_leaf_node/csp_master          ON         OFFLINE     0.10.3   CspMasterLeafNode
ska_mid/tm_leaf_node/csp_subarray01      ON         OFFLINE     0.10.3   CspSubarrayLeafNodeMid
ska_mid/tm_leaf_node/csp_subarray_01     INIT       OFFLINE     0.11.4   TmCspSubarrayLeafNodeTest
ska_mid/tm_leaf_node/csp_subarray_02     INIT       OFFLINE     0.11.4   TmCspSubarrayLeafNodeTest
ska_mid/tm_leaf_node/d0001               ON         OFFLINE     0.8.1    DishLeafNode
...
ska_mid/tm_leaf_node/d0100               ON         OFFLINE     0.8.1    DishLeafNode
ska_mid/tm_leaf_node/sdp_master          ON         OFFLINE     0.14.2   SdpMasterLeafNode
ska_mid/tm_leaf_node/sdp_subarray01      ON         OFFLINE     0.14.2   SdpSubarrayLeafNode
ska_mid/tm_subarray_node/1               ON         OFFLINE     0.13.19  SubarrayNodeMid

Filter by device name

To find all devices with talon in the name:

$ tangoktl --namespace=integration -D talon -l
DEVICE NAME                              STATE      ADMIN MODE  VERSION  CLASS
mid_csp_cbf/talon_board/001              DISABLE    OFFLINE     0.11.4   TalonBoard
mid_csp_cbf/talon_board/002              DISABLE    OFFLINE     0.11.4   TalonBoard
mid_csp_cbf/talon_board/003              DISABLE    OFFLINE     0.11.4   TalonBoard
mid_csp_cbf/talon_board/004              DISABLE    OFFLINE     0.11.4   TalonBoard
mid_csp_cbf/talon_board/005              DISABLE    OFFLINE     0.11.4   TalonBoard
mid_csp_cbf/talon_board/006              DISABLE    OFFLINE     0.11.4   TalonBoard
mid_csp_cbf/talon_board/007              DISABLE    OFFLINE     0.11.4   TalonBoard
mid_csp_cbf/talon_board/008              DISABLE    OFFLINE     0.11.4   TalonBoard
mid_csp_cbf/talon_lru/001                DISABLE    OFFLINE     0.11.4   TalonLRU
mid_csp_cbf/talon_lru/002                DISABLE    OFFLINE     0.11.4   TalonLRU
mid_csp_cbf/talon_lru/003                DISABLE    OFFLINE     0.11.4   TalonLRU
mid_csp_cbf/talon_lru/004                DISABLE    OFFLINE     0.11.4   TalonLRU
mid_csp_cbf/talondx_log_consumer/001     DISABLE    OFFLINE     0.11.4   TalonDxLogConsumer

Find attributes, commands or properties

It is possible to search for attributes, commands or properties by part of the name. This is not case-sensitive.

Find attributes

To find all devices with attributes that contain timeout:

$ tangoktl --namespace=integration -A timeout
DEVICE                                           ATTRIBUTE                                VALUE
mid-csp/control/0                                commandTimeout                           5
                                                 offCmdTimeoutExpired                     False
                                                 onCmdTimeoutExpired                      False
                                                 standbyCmdTimeoutExpired                 False
mid-csp/subarray/01                              commandTimeout                           5
                                                 timeoutExpiredFlag                       False
mid-csp/subarray/02                              commandTimeout                           5
                                                 timeoutExpiredFlag                       False
mid-csp/subarray/03                              commandTimeout                           5
                                                 timeoutExpiredFlag                       False
mid_csp_cbf/sub_elt/subarray_01                  assignResourcesTimeoutExpiredFlag        False
                                                 configureScanTimeoutExpiredFlag          False
                                                 releaseResourcesTimeoutExpiredFlag       False
mid_csp_cbf/sub_elt/subarray_02                  assignResourcesTimeoutExpiredFlag        False
                                                 configureScanTimeoutExpiredFlag          False
                                                 releaseResourcesTimeoutExpiredFlag       False
mid_csp_cbf/sub_elt/subarray_03                  assignResourcesTimeoutExpiredFlag        False
                                                 configureScanTimeoutExpiredFlag          False
                                                 releaseResourcesTimeoutExpiredFlag       False

To find all devices with attributes that contain timeout, without displaying values:

$ tangoktl --namespace=integration -A timeout --dry-run
DEVICE                                           ATTRIBUTE
mid-csp/control/0                                commandTimeout
                                                 offCmdTimeoutExpired
                                                 onCmdTimeoutExpired
                                                 standbyCmdTimeoutExpired
mid-csp/subarray/01                              commandTimeout
                                                 timeoutExpiredFlag
mid-csp/subarray/02                              commandTimeout
                                                 timeoutExpiredFlag
mid-csp/subarray/03                              commandTimeout
                                                 timeoutExpiredFlag
mid_csp_cbf/sub_elt/subarray_01                  assignResourcesTimeoutExpiredFlag
                                                 configureScanTimeoutExpiredFlag
                                                 releaseResourcesTimeoutExpiredFlag
mid_csp_cbf/sub_elt/subarray_02                  assignResourcesTimeoutExpiredFlag
                                                 configureScanTimeoutExpiredFlag
                                                 releaseResourcesTimeoutExpiredFlag
mid_csp_cbf/sub_elt/subarray_03                  assignResourcesTimeoutExpiredFlag
                                                 configureScanTimeoutExpiredFlag
                                                 releaseResourcesTimeoutExpiredFlag

Find commands

To find all devices with commands that have Telescope in the name:

$ tangoktl --namespace=integration -C Telescope
ska_mid/tm_central/central_node                  TelescopeOff
                                                 TelescopeOn
                                                 TelescopeStandby

To find all devices with commands that have Outlet in the name:

$ tangoktl --namespace=integration -C Outlet
mid_csp_cbf/power_switch/001                     GetOutletPowerMode
                                                 TurnOffOutlet
                                                 TurnOnOutlet
mid_csp_cbf/power_switch/002                     GetOutletPowerMode
                                                 TurnOffOutlet
                                                 TurnOnOutlet
mid_csp_cbf/power_switch/003                     GetOutletPowerMode
                                                 TurnOffOutlet
                                                 TurnOnOutlet

Find properties

To find all devices with properties that have Power in the name:

$ tangoktl --namespace=integration -P Power
mid_csp_cbf/power_switch/001                     PowerSwitchIp
                                                 PowerSwitchLogin
                                                 PowerSwitchModel
                                                 PowerSwitchPassword
mid_csp_cbf/power_switch/002                     PowerSwitchIp
                                                 PowerSwitchLogin
                                                 PowerSwitchModel
                                                 PowerSwitchPassword
mid_csp_cbf/power_switch/003                     PowerSwitchIp
                                                 PowerSwitchLogin
                                                 PowerSwitchModel
                                                 PowerSwitchPassword
mid_csp_cbf/sub_elt/controller                   PowerSwitch
mid_csp_cbf/talon_lru/001                        PDU1PowerOutlet
                                                 PDU2PowerOutlet
mid_csp_cbf/talon_lru/002                        PDU1PowerOutlet
                                                 PDU2PowerOutlet
mid_csp_cbf/talon_lru/003                        PDU1PowerOutlet
                                                 PDU2PowerOutlet
mid_csp_cbf/talon_lru/004                        PDU1PowerOutlet
                                                 PDU2PowerOutlet

Information on device

Full description of device

This display all information about a device. The input and output of commands are displayed where available:

$ tangoktl --namespace=integration -D mid_csp_cbf/talon_lru/001 -f
Device            : mid_csp_cbf/talon_lru/001
Admin mode        : 1
State             : DISABLE
Status            : The device is in DISABLE state.
Description       : A Tango device
Acronyms          : Correlator Beam Former (CBF), Central Signal Processor (CSP), Line Replaceable Unit (LRU)
Database used     : True
Server host       : ds-talonlru-talonlru-001-0
Server ID         : TalonLRU/talonlru-001
Device class      : TalonLRU
Commands          : DebugDevice                    N/A
                                                   Not polled
                                                   OUT The TCP port the debugger is listening on.
                    GetVersionInfo                 TalonLRU, ska_tango_base, 0.11.4, A set of generic base devices for SKA Telescope.
                                                   Not polled
                                                   OUT Version strings
                    Init                           N/A
                                                   Not polled
                    Off                            N/A
                                                   Not polled
                                                   OUT (ReturnType, 'informational message')
                    On                             N/A
                                                   Not polled
                                                   OUT (ReturnType, 'informational message')
                    Reset                          N/A
                                                   Not polled
                                                   OUT (ReturnType, 'informational message')
                    Standby                        N/A
                                                   Not polled
                                                   OUT (ReturnType, 'informational message')
                    State                          DISABLE
                                                   Polled
                                                   OUT Device state
                    Status                         The device is in DISABLE state.
                                                   Not polled
                                                   OUT Device status
Attributes        : PDU1PowerMode                  '0'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    PDU2PowerMode                  '0'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    State                          'DISABLE'
                                                   Polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    Status                         'The device is in DISABLE state.'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    adminMode                      '1'
                                                   Polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    buildState                     'ska_tango_base, 0.11.4, A set of generic base devices for SKA Telescope.'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    controlMode                    '0'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    healthState                    '0'
                                                   Polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    loggingLevel                   '4'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    loggingTargets                 tango::logger
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    simulationMode                 '1'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    testMode                       '0'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    versionId                      '0.11.4'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
Properties        : PDU1                           002
                    PDU1PowerOutlet                AA41
                    PDU2                           002
                    PDU2PowerOutlet                AA41
                    PDUCommandTimeout              20
                    TalonDxBoard1                  001
                    TalonDxBoard2                  002
                    polled_attr                    state  1000
                                                   healthstate  3000
                                                   adminmode  3000

Short display

This displays only the values for status, commands, attributes and properties:

$ tangoktl --namespace=integration -D mid_csp_cbf/talon_lru/001 -s
Device            : mid_csp_cbf/talon_lru/001
Admin mode        : 1
Commands          : DebugDevice                    N/A
                    GetVersionInfo                 TalonLRU, ska_tango_base, 0.11.4, A set of generic base devices for SKA Telescope.
                    Init                           N/A
                    Off                            N/A
                    On                             N/A
                    Reset                          N/A
                    Standby                        N/A
                    State                          DISABLE
                    Status                         The device is in DISABLE state.
Attributes        : PDU1PowerMode                  '0'
                    PDU2PowerMode                  '0'
                    State                          'DISABLE'
                    Status                         'The device is in DISABLE state.'
                    adminMode                      '1'
                    buildState                     'ska_tango_base, 0.11.4, A set of generic base devices for SKA Telescope.'
                    controlMode                    '0'
                    healthState                    '0'
                    loggingLevel                   '4'
                    loggingTargets                 tango::logger
                    simulationMode                 '1'
                    testMode                       '0'
                    versionId                      '0.11.4'
Properties        : PDU1                           002
                    PDU1PowerOutlet                AA41
                    PDU2                           002
                    PDU2PowerOutlet                AA41
                    PDUCommandTimeout              20
                    TalonDxBoard1                  001
                    TalonDxBoard2                  002
                    polled_attr                    state  1000
                                                   healthstate  3000
                                                   adminmode  3000

Display names only, without reading values:

$ tangoktl --namespace=integration -D mid_csp_cbf/talon_lru/001 -s --dry-run
Device            : mid_csp_cbf/talon_lru/001
Admin mode        : 1
Commands          : DebugDevice
                    GetVersionInfo
                    Init
                    Off
                    On
                    Reset
                    Standby
                    State
                    Status
Attributes        : PDU1PowerMode
                    PDU2PowerMode
                    State
                    Status
                    adminMode
                    buildState
                    controlMode
                    healthState
                    loggingLevel
                    loggingTargets
                    simulationMode
                    testMode
                    versionId
Properties        : PDU1
                    PDU1PowerOutlet
                    PDU2
                    PDU2PowerOutlet
                    PDUCommandTimeout
                    TalonDxBoard1
                    TalonDxBoard2
                    polled_attr

Quick/query mode

This displays a shortened form, with query sub-devices where available:

$ tangoktl --namespace=integration -D mid_csp_cbf/talon_lru/001 -q
Device            : mid_csp_cbf/talon_lru/001 9 commands, 13 attributes
Admin mode        : 1
State             : DISABLE
Status            : The device is in DISABLE state.
Description       : A Tango device
Acronyms          : Correlator Beam Former (CBF), Central Signal Processor (CSP), Line Replaceable Unit (LRU)
Device class      : TalonLRU
Server host       : ds-talonlru-talonlru-001-0
Server ID         : TalonLRU/talonlru-001
Logging target    : <N/A>
Query sub-devices : <N/A>

Using regular expressions for namespaces

Regular expressions can used to match Kubernetes namepaces:

$ ./src/ska_tangoctl/tango_kontrol/tangoktl.py -K integration.* -k
Namespaces : 4
        integration
        integration-dish-lmc-ska001
        integration-dish-lmc-ska036
        integration-sdp

Regular expressions can used for listing the Tango devices in Kubernetes namepaces:

$ ./src/ska_tangoctl/tango_kontrol/tangoktl.py -K integration.* -l
Namespace integration
DEVICE NAME                                                        ADMINMODE VERSIONID  STATE       SKALEVEL CLASS
alarm/handler/01                                                           - -          RUNNING            - AlarmHandler
mid-csp/capability-fsp/0                                                   0 0.18.2     ON                 - MidCspCapabilityFsp
mid-csp/capability-vcc/0                                                   0 0.18.2     ON                 - MidCspCapabilityVcc
mid-csp/control/0                                                          0 0.18.2     OFF                1 MidCspController
mid-csp/subarray/01                                                        0 0.18.2     OFF                2 MidCspSubarray
mid-csp/subarray/02                                                        0 0.18.2     OFF                2 MidCspSubarray
mid-csp/subarray/03                                                        0 0.18.2     OFF                2 MidCspSubarray
mid-eda/cm/01                                                              - -          ON                 - HdbConfigurationManager
mid-eda/es/01                                                              - -          ON                 - HdbEventSubscriber
mid-sdp/control/0                                                          0 0.28.0     STANDBY            - SDPController
mid-sdp/queueconnector/01                                                  - -          STANDBY            - SDPQueueConnector
mid-sdp/queueconnector/02                                                  - -          STANDBY            - SDPQueueConnector
mid-sdp/queueconnector/03                                                  - -          STANDBY            - SDPQueueConnector
mid-sdp/subarray/01                                                        0 0.28.0     OFF                - SDPSubarray
mid-sdp/subarray/02                                                        0 0.28.0     OFF                - SDPSubarray
mid-sdp/subarray/03                                                        0 0.28.0     OFF                - SDPSubarray
mid_csp_cbf/fs_links/000                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/001                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/002                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/003                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/004                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/005                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/006                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/007                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/008                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/009                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/010                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/011                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/012                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/013                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/014                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fs_links/015                                                   0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/fsp/01                                                         0 0.11.4     OFF                - Fsp
mid_csp_cbf/fsp/02                                                         0 0.11.4     OFF                - Fsp
mid_csp_cbf/fsp/03                                                         0 0.11.4     OFF                - Fsp
mid_csp_cbf/fsp/04                                                         0 0.11.4     OFF                - Fsp
mid_csp_cbf/fspCorrSubarray/01_01                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/01_02                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/01_03                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/02_01                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/02_02                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/02_03                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/03_01                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/03_02                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/03_03                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/04_01                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/04_02                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspCorrSubarray/04_03                                          0 0.11.4     OFF                - FspCorrSubarray
mid_csp_cbf/fspPssSubarray/01_01                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/01_02                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/01_03                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/02_01                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/02_02                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/02_03                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/03_01                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/03_02                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/03_03                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/04_01                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/04_02                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPssSubarray/04_03                                           0 0.11.4     OFF                - FspPssSubarray
mid_csp_cbf/fspPstSubarray/01_01                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/01_02                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/01_03                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/02_01                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/02_02                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/02_03                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/03_01                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/03_02                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/03_03                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/04_01                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/04_02                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/fspPstSubarray/04_03                                           0 0.11.4     OFF                - FspPstSubarray
mid_csp_cbf/power_switch/001                                               0 0.11.4     ON                 - PowerSwitch
mid_csp_cbf/power_switch/002                                               0 0.11.4     ON                 - PowerSwitch
mid_csp_cbf/power_switch/003                                               1 0.11.4     DISABLE            - PowerSwitch
mid_csp_cbf/power_switch/004                                               1 0.11.4     DISABLE            - PowerSwitch
mid_csp_cbf/slim/slim-fs                                                 N/A 0.11.4     ALARM              - Slim
mid_csp_cbf/slim/slim-vis                                                  0 0.11.4     OFF                - Slim
mid_csp_cbf/sub_elt/controller                                             0 0.11.4     OFF                - CbfController
mid_csp_cbf/sub_elt/subarray_01                                            0 0.11.4     OFF                - CbfSubarray
mid_csp_cbf/sub_elt/subarray_02                                            0 0.11.4     OFF                - CbfSubarray
mid_csp_cbf/sub_elt/subarray_03                                            0 0.11.4     OFF                - CbfSubarray
mid_csp_cbf/talon_board/001                                                0 0.11.4     OFF                - TalonBoard
mid_csp_cbf/talon_board/002                                                0 0.11.4     OFF                - TalonBoard
mid_csp_cbf/talon_board/003                                                0 0.11.4     OFF                - TalonBoard
mid_csp_cbf/talon_board/004                                                0 0.11.4     OFF                - TalonBoard
mid_csp_cbf/talon_board/005                                                1 0.11.4     DISABLE            - TalonBoard
mid_csp_cbf/talon_board/006                                                1 0.11.4     DISABLE            - TalonBoard
mid_csp_cbf/talon_board/007                                                1 0.11.4     DISABLE            - TalonBoard
mid_csp_cbf/talon_board/008                                                1 0.11.4     DISABLE            - TalonBoard
mid_csp_cbf/talon_lru/001                                                  0 0.11.4     OFF                - TalonLRU
mid_csp_cbf/talon_lru/002                                                  0 0.11.4     OFF                - TalonLRU
mid_csp_cbf/talon_lru/003                                                  1 0.11.4     DISABLE            - TalonLRU
mid_csp_cbf/talon_lru/004                                                  1 0.11.4     DISABLE            - TalonLRU
mid_csp_cbf/talondx_log_consumer/001                                       1 0.11.4     DISABLE            - TalonDxLogConsumer
mid_csp_cbf/vcc/001                                                        0 0.11.4     UNKNOWN            - Vcc
mid_csp_cbf/vcc/002                                                        0 0.11.4     UNKNOWN            - Vcc
mid_csp_cbf/vcc/003                                                        0 0.11.4     OFF                - Vcc
mid_csp_cbf/vcc/004                                                        0 0.11.4     UNKNOWN            - Vcc
mid_csp_cbf/vcc/005                                                        1 0.11.4     DISABLE            - Vcc
mid_csp_cbf/vcc/006                                                        1 0.11.4     DISABLE            - Vcc
mid_csp_cbf/vcc/007                                                        1 0.11.4     DISABLE            - Vcc
mid_csp_cbf/vcc/008                                                        1 0.11.4     DISABLE            - Vcc
mid_csp_cbf/vcc_sw1/001                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw1/002                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw1/003                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw1/004                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw1/005                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw1/006                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw1/007                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw1/008                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw2/001                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw2/002                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw2/003                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw2/004                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw2/005                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw2/006                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw2/007                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vcc_sw2/008                                                    1 0.11.4     DISABLE            - VccSearchWindow
mid_csp_cbf/vis_links/000                                                  0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/vis_links/001                                                  0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/vis_links/002                                                  0 0.11.4     UNKNOWN            - SlimLink
mid_csp_cbf/vis_links/003                                                  0 0.11.4     UNKNOWN            - SlimLink
ska001/elt/master                                                          1 0.19.1     DISABLE            - HelperDishDevice
ska036/elt/master                                                          1 0.19.1     DISABLE            - HelperDishDevice
ska063/elt/master                                                          1 0.19.1     DISABLE            - HelperDishDevice
ska100/elt/master                                                          1 0.19.1     DISABLE            - HelperDishDevice
ska_mid/tm_central/central_node                                            1 0.14.5     ON                 1 CentralNodeMid
ska_mid/tm_leaf_node/csp_master                                            1 0.15.3     ON                 3 CspMasterLeafNodeMid
ska_mid/tm_leaf_node/csp_subarray01                                        1 0.15.3     ON                 3 CspSubarrayLeafNodeMid
ska_mid/tm_leaf_node/csp_subarray02                                        1 0.15.3     ON                 3 CspSubarrayLeafNodeMid
ska_mid/tm_leaf_node/d0001                                                 1 0.12.1     ON                 3 DishLeafNode
ska_mid/tm_leaf_node/d0036                                                 1 0.12.1     ON                 3 DishLeafNode
ska_mid/tm_leaf_node/d0063                                                 1 0.12.1     ON                 3 DishLeafNode
ska_mid/tm_leaf_node/d0100                                                 1 0.12.1     ON                 3 DishLeafNode
ska_mid/tm_leaf_node/sdp_master                                            1 0.14.2     ON                 3 SdpMasterLeafNode
ska_mid/tm_leaf_node/sdp_subarray01                                        1 0.14.2     ON                 3 SdpSubarrayLeafNode
ska_mid/tm_leaf_node/sdp_subarray02                                        1 0.14.2     ON                 3 SdpSubarrayLeafNode
ska_mid/tm_subarray_node/1                                                 1 0.16.1     ON                 2 SubarrayNodeMid
ska_mid/tm_subarray_node/2                                                 1 0.16.1     ON                 2 SubarrayNodeMid

Namespace integration-dish-lmc-ska001
DEVICE NAME                                                        ADMINMODE VERSIONID  STATE       SKALEVEL CLASS
mid-dish/dish-logger/SKA001                                                1 0.19.1     DISABLE            - DishLogger
mid-dish/dish-manager/SKA001                                               1 0.19.1     STANDBY            1 DishManager
mid-dish/ds-manager/SKA001                                                 1 0.19.1     DISABLE            1 DSManager
mid-dish/simulator-spfc/SKA001                                             - -          UNKNOWN            - SPFDevice
mid-dish/simulator-spfrx/SKA001                                            - -          UNKNOWN            - SPFRxDevice
mid-itf/skysimctl/4 (N/A)                                                  - -          -                  - N/A
ska001/spfrxpu/100gigeth (N/A)                                             - -          -                  - N/A
ska001/spfrxpu/bandprocessor123-0 (N/A)                                    - -          -                  - N/A
ska001/spfrxpu/bandprocessor123-1 (N/A)                                    - -          -                  - N/A
ska001/spfrxpu/controller (N/A)                                            - -          -                    N/A
ska001/spfrxpu/datarx123-0 (N/A)                                           - -          -                  - N/A
ska001/spfrxpu/datarx123-1 (N/A)                                           - -          -                  - N/A
ska001/spfrxpu/eeprom (N/A)                                                - -          -                  - N/A
ska001/spfrxpu/fan (N/A)                                                   - -          -                  - N/A
ska001/spfrxpu/fpgatemp-1 (N/A)                                            - -          -                  - N/A
ska001/spfrxpu/ltm-1 (N/A)                                                 - -          -                  - N/A
ska001/spfrxpu/ltm-11 (N/A)                                                - -          -                  - N/A
ska001/spfrxpu/ltm-12 (N/A)                                                - -          -                  - N/A
ska001/spfrxpu/ltm-2 (N/A)                                                 - -          -                  - N/A
ska001/spfrxpu/mbo-rx1 (N/A)                                               - -          -                  - N/A
ska001/spfrxpu/mbo-rx2 (N/A)                                               - -          -                  - N/A
ska001/spfrxpu/mbo-tx1 (N/A)                                               - -          -                  - N/A
ska001/spfrxpu/mbo-tx2 (N/A)                                               - -          -                  - N/A
ska001/spfrxpu/mux (N/A)                                                   - -          -                  - N/A
ska001/spfrxpu/odl-12 (N/A)                                                - -          -                  - N/A
ska001/spfrxpu/odl-3 (N/A)                                                 - -          -                  - N/A
ska001/spfrxpu/packetizer (N/A)                                            - -          -                  - N/A
ska001/spfrxpu/pktcap (N/A)                                                - -          -                  - N/A
ska001/spfrxpu/sysid (N/A)                                                 - -          -                  - N/A
ska001/spfrxpu/temperature (N/A)                                           - -          -                  - N/A

Namespace integration-dish-lmc-ska036
DEVICE NAME                                                        ADMINMODE VERSIONID  STATE       SKALEVEL CLASS
mid-dish/dish-logger/SKA036                                                1 0.19.1     DISABLE            - DishLogger
mid-dish/dish-manager/SKA036                                               1 0.19.1     STANDBY            1 DishManager
mid-dish/ds-manager/SKA036                                                 1 0.19.1     DISABLE            1 DSManager
mid-dish/simulator-spfc/SKA036                                             - -          UNKNOWN            - SPFDevice
mid-dish/simulator-spfrx/SKA036                                            - -          UNKNOWN            - SPFRxDevice

Note that namespaces without a Tango database host are not shown.

Error output

When a device attribute can not be read, a shortened error message is displayed:

$ tangoktl --namespace=integration -D mid_csp_cbf/talon_board/001 -f
Tango host        : tango-databaseds.integration.svc.miditf.internal.skao.int:10000

Device            : mid_csp_cbf/talon_board/001
Admin mode        : 1
State             : DISABLE
Status            : The device is in DISABLE state.
Description       : A Tango device
Acronyms          : Correlator Beam Former (CBF), Central Signal Processor (CSP)
Database used     : True
Device class      : TalonBoard
Server host       : ds-talonboard-talon-001-0
Server ID         : TalonBoard/talon-001
Commands            DebugDevice                    Not polled  OUT The TCP port the debugger is listening on.
                    GetVersionInfo                 Not polled  OUT Version strings
                    Init                           Not polled
                    Off                            Not polled  OUT (ReturnType, 'informational message')
                    On                             Not polled  OUT (ReturnType, 'informational message')
                    Reset                          Not polled  OUT (ReturnType, 'informational message')
                    Standby                        Not polled  OUT (ReturnType, 'informational message')
                    State                          Polled      OUT Device state
                    Status                         Not polled  OUT Device status
Attributes        : BitstreamChecksum              <ERROR> System ID Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    BitstreamVersion               <ERROR> System ID Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    DIMMTemperatures               <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    FansFault                      <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    FansPwm                        <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>

Dry run

To skip reading attribute values, use this option:

$ tangoktl --namespace=integration -D mid_csp_cbf/talon_board/001 -f
Device            : mid_csp_cbf/talon_board/001
Admin mode        : 1
State             : DISABLE
Status            : The device is in DISABLE state.
Description       : A Tango device
Acronyms          : Correlator Beam Former (CBF), Central Signal Processor (CSP)
Database used     : True
Server host       : ds-talonboard-talon-001-0
Server ID         : TalonBoard/talon-001
Device class      : TalonBoard
Commands          : DebugDevice                    N/A
                                                   Not polled
                                                   OUT The TCP port the debugger is listening on.
                    GetVersionInfo                 TalonBoard, ska_tango_base, 0.11.4, A set of generic base devices for SKA Telescope.
                                                   Not polled
                                                   OUT Version strings
                    Init                           N/A
                                                   Not polled
                    Off                            N/A
                                                   Not polled
                                                   OUT (ReturnType, 'informational message')
                    On                             N/A
                                                   Not polled
                                                   OUT (ReturnType, 'informational message')
                    Reset                          N/A
                                                   Not polled
                                                   OUT (ReturnType, 'informational message')
                    Standby                        N/A
                                                   Not polled
                                                   OUT (ReturnType, 'informational message')
                    State                          DISABLE
                                                   Polled
                                                   OUT Device state
                    Status                         The device is in DISABLE state.
                                                   Not polled
                                                   OUT Device status
Attributes        : BitstreamChecksum              <ERROR> System ID Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    BitstreamVersion               <ERROR> System ID Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    DIMMTemperatures               <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    FansFault                      <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    FansPwm                        <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    FansPwmEnable                  <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    FpgaDieTemperature             <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    HumiditySensorTemperature      <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    MboRxLOLStatus                 <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    MboRxLOSStatus                 <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    MboRxVccVoltages               <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    MboTxFaultStatus               <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    MboTxLOLStatus                 <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    MboTxLOSStatus                 <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    MboTxTemperatures              <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    MboTxVccVoltages               <ERROR> AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    State                          'DISABLE'
                                                   Polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    Status                         'The device is in DISABLE state.'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    adminMode                      '1'
                                                   Polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    buildState                     'ska_tango_base, 0.11.4, A set of generic base devices for SKA Telescope.'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    comms_iopll_locked_fault       <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    controlMode                    '0'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    e100g_0_pll_fault              <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    e100g_1_pll_fault              <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    emif_bl_fault                  <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    emif_br_fault                  <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    emif_tr_fault                  <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    fs_iopll_locked_fault          <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    healthState                    '0'
                                                   Polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    iopll_locked_fault             <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    loggingLevel                   '4'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    loggingTargets                 tango::logger
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    simulationMode                 '0'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    slim_pll_fault                 <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    system_clk_fault               <ERROR> Talon Status Device is not available
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : <N/A>
                    testMode                       '0'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
                    versionId                      '0.11.4'
                                                   Not polled
                                                   Event change : Not specified
                                                   Quality : ATTR_VALID
Properties        : HpsMasterServer                dshpsmaster
                    InfluxDbAuthToken              ikIDRLicRaMxviUJRqyE8bKF1Y_sZnaHc9MkWZY92jxg1isNPIGCyLtaC8EjbOhsT_kTzjt12qenB4g7-UOrog==
                    InfluxDbBucket                 talon
                    InfluxDbOrg                    ska
                    InfluxDbPort                   8086
                    Instance                       talon1_test
                    TalonDx100GEthernetServer      ska-talondx-100-gigabit-ethernet-ds
                    TalonDxBoardAddress            192.168.8.1
                    TalonDxSysIdServer             ska-talondx-sysid-ds
                    TalonStatusServer              ska-talondx-status-ds
                    polled_attr                    state  1000
                                                   healthstate  3000
                                                   adminmode  3000

Examples

Some useful ways of using tangoktl:

$ tangoktl --namespace=integration --show-dev
$ tangoktl --namespace=integration -D talon -l
$ tangoktl --namespace=integration -A timeout
$ tangoktl --namespace=integration -C Telescope
$ tangoktl --namespace=integration -P Power
$ tangoktl --namespace=integration -D mid_csp_cbf/talon_lru/001 -f
$ tangoktl --namespace=integration -D mid_csp_cbf/talon_lru/001 -s
$ tangoktl --namespace=integration -D mid_csp_cbf/talon_lru/001 -q
$ tangoktl --namespace=integration -D mid_csp_cbf/talon_board/001 -f
$ tangoktl --namespace=integration -D mid_csp_cbf/talon_board/001 -f --dry-run
$ ADMIN_MODE=1 tangoctl --k8s-ns=integration -D mid_csp_cbf/talon_board/001 -f --in resources/dev_online.json -V

Testing

Build a new Docker image for the project:

$ make oci-build
[...]
[+] Building 111.7s (14/14) FINISHED
[...]

Install python requirements:

$ poetry install

Run python-test:

$ poetry shell
$ make python-test

pytest 6.2.5
PYTHONPATH=/home/ubuntu/ska-tangoctl/src:/app/src:  pytest  \
 --cov=src --cov-report=term-missing --cov-report html:build/reports/code-coverage --cov-report xml:build/reports/code-coverage.xml --junitxml=build/reports/unit-tests.xml tests/
=============================================================================================== test session starts ================================================================================================
platform linux -- Python 3.10.12, pytest-6.2.5, py-1.11.0, pluggy-1.3.0
rootdir: /home/ubuntu/ska-tangoctl, configfile: pyproject.toml
plugins: cov-4.1.0, metadata-2.0.4, bdd-5.0.0, json-report-1.5.0, repeat-0.9.3, ska-ser-skallop-2.29.6
collected 4 items

tests/functional/tmc/test_deployment.py ....                                                                                                                                                                 [100%]

----------------------------------------------------------- generated xml file: /home/ubuntu/ska-tangoctl/build/reports/unit-tests.xml ------------------------------------------------------------

---------- coverage: platform linux, python 3.10.12-final-0 ----------
Name                                                Stmts   Miss  Cover   Missing
---------------------------------------------------------------------------------
src/ska_mid_itf_engineering_tools/__init__.py           0      0   100%
src/ska_mid_itf_engineering_tools/tmc_dish_ids.py      47     12    74%   74, 167, 169, 171, 173, 199-205, 209-214
---------------------------------------------------------------------------------
TOTAL                                                  47     12    74%
Coverage HTML written to dir build/reports/code-coverage
Coverage XML written to file build/reports/code-coverage.xml

================================================================================================ 4 passed in 0.10s =================================================================================================

Python linting

To check for errors and correctly formatted code:

$ make python-lint
[...]
--------------------------------------------------------------------
Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)
_images/logo.webp