How to run *tangoctl* ********************* .. image:: 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= tangoctl -t -K e.g. tangoctl -t -K integration Display classes and Tango devices associated with them tangoctl -d|--class --k8s-ns=|--host= tangoctl -d\|--class -K \|-H e.g. tangoctl -d -K integration List Tango device names tangoctl --show-dev --k8s-ns=\|--host= tangoctl -l -K \|-H e.g. tangoctl -l -K integration Display all Tango devices (will take a long time) tangoctl --full\|--short -e|--everything [--namespace=\|--host=] tangoctl -l -K integration e.g. tangoctl -f|-s -K |-H Filter on device name tangoctl --full|--short -D -K |-H tangoctl -f|-s --device= --k8s-ns=|--host= e.g. tangoctl -f -K integration -D ska_mid/tm_leaf_node/csp_subarray01 Filter on attribute name tangoctl --full|--short --attribute= --k8s-ns=|--host= tangoctl -f|-s -A -K |-H e.g. tangoctl -f -K integration -A timeout Filter on command name tangoctl --full|--short --command= --k8s-ns=|--host= tangoctl -f|-s -C -K |-H e.g. tangoctl -l -K integration -C status Filter on property name tangoctl --full|--list|--short --property= --k8s-ns=|--host= tangoctl -f|-s -P --k8s-ns=|--host= e.g. tangoctl -l -K integration -P power Display tangoctl test input files tangoctl --json-dir= tangoctl -J e.g. ADMIN_MODE=1 tangoctl -J resources/ Run test, reading from input file tangoctl --k8s-ns= --input= tangoctl --K -O 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 |-H -D [--simul=<0|1>] Test a Tango device and read attributes tangoctl -a -K |-H -D [--simul=<0|1>] Display attribute and command names for a Tango device tangoctl -c -K |-H -D Turn a Tango device on tangoctl --on -K |-H -D [--simul=<0|1>] Turn a Tango device off tangoctl --off -K |-H -D [--simul=<0|1>] Set a Tango device to standby mode tangoctl --standby -K |-H -D [--simul=<0|1>] Change admin mode on a Tango device tangoctl --admin=<0|1> Display status of a Tango device tangoctl --status -K |-H -D Check events for attribute of a Tango device tangoctl -K |-H -D -A 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= directory with JSON input file, e.g. 'resources' -J --json-dir= directory with JSON input file, e.g. 'resources' -J --device= device name, e.g. 'csp' (not case sensitive, only a part is needed) -D --k8s-ns= Kubernetes namespace for Tango database, e.g. 'integration' -K --host= Tango database host and port, e.g. 10.8.13.15:10000 -H --attribute= attribute name, e.g. 'obsState' (not case sensitive) -A --command= command name, e.g. 'Status' (not case sensitive) -C --output= output file name -O --input= input file name -I 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..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 : Query sub-devices : 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 System ID Device is not available Not polled Event change : Not specified Quality : BitstreamVersion System ID Device is not available Not polled Event change : Not specified Quality : DIMMTemperatures AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : FansFault AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : FansPwm AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : 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 System ID Device is not available Not polled Event change : Not specified Quality : BitstreamVersion System ID Device is not available Not polled Event change : Not specified Quality : DIMMTemperatures AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : FansFault AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : FansPwm AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : FansPwmEnable AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : FpgaDieTemperature AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : HumiditySensorTemperature AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : MboRxLOLStatus AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : MboRxLOSStatus AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : MboRxVccVoltages AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : MboTxFaultStatus AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : MboTxLOLStatus AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : MboTxLOSStatus AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : MboTxTemperatures AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : MboTxVccVoltages AttributeError: 'TalonBoardComponentManager' object has no attribute '_hostname' Not polled Event change : Not specified Quality : 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 Talon Status Device is not available Not polled Event change : Not specified Quality : controlMode '0' Not polled Event change : Not specified Quality : ATTR_VALID e100g_0_pll_fault Talon Status Device is not available Not polled Event change : Not specified Quality : e100g_1_pll_fault Talon Status Device is not available Not polled Event change : Not specified Quality : emif_bl_fault Talon Status Device is not available Not polled Event change : Not specified Quality : emif_br_fault Talon Status Device is not available Not polled Event change : Not specified Quality : emif_tr_fault Talon Status Device is not available Not polled Event change : Not specified Quality : fs_iopll_locked_fault Talon Status Device is not available Not polled Event change : Not specified Quality : healthState '0' Polled Event change : Not specified Quality : ATTR_VALID iopll_locked_fault Talon Status Device is not available Not polled Event change : Not specified Quality : 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 Talon Status Device is not available Not polled Event change : Not specified Quality : system_clk_fault Talon Status Device is not available Not polled Event change : Not specified Quality : 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) .. image:: img/logo.webp