From 8c37c4b2a15a2503459a518028bccad55990ee28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corn=C3=A9=20Lukken?= <lukken@astron.nl> Date: Mon, 27 May 2024 09:05:51 +0000 Subject: [PATCH] Small refactor station state errors and objects --- README.md | 1 + docker/snmp-exporter/generator.yml | 4 +- docker/snmp-exporter/lofar_mibs/ACX-MIB.mib | 364 +++++++++--------- infra/README.md | 1 - tangostationcontrol/VERSION | 2 +- .../tangostationcontrol/states/hibernate.py | 17 +- .../tangostationcontrol/states/off.py | 8 +- .../tangostationcontrol/states/on.py | 8 +- .../tangostationcontrol/states/standby.py | 14 +- .../states/station_state.py | 15 +- 10 files changed, 209 insertions(+), 225 deletions(-) diff --git a/README.md b/README.md index a10bb47f1..7eaf2c5dc 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,7 @@ Next change the version in the following places: # Release Notes +* 0.38.5 Unify exception handling for station manager * 0.38.4 Fixed ordering in subband_frequency_R, which broke frequency calculations for HBA * 0.38.3 Upgraded to JupyterLab v4 * 0.38.2 Fixed polling of some attributes required by Metadata device diff --git a/docker/snmp-exporter/generator.yml b/docker/snmp-exporter/generator.yml index eb824ec68..65b5971ee 100644 --- a/docker/snmp-exporter/generator.yml +++ b/docker/snmp-exporter/generator.yml @@ -226,7 +226,7 @@ modules: wrsPtpServoExt: type: EnumAsStateSet # -# Eltek Enexus Power controllers +# Eltek Enexus Power controllers # eltek: walk: @@ -313,7 +313,7 @@ modules: type: EnumAsStateSet smartNodeErrorStatus: type: EnumAsStateSet - + # Cisco Wireless LAN Controller cisco_wlc: diff --git a/docker/snmp-exporter/lofar_mibs/ACX-MIB.mib b/docker/snmp-exporter/lofar_mibs/ACX-MIB.mib index 9af49ada9..e241a3179 100644 --- a/docker/snmp-exporter/lofar_mibs/ACX-MIB.mib +++ b/docker/snmp-exporter/lofar_mibs/ACX-MIB.mib @@ -4,16 +4,16 @@ -- ORGANIZATION "Unipower" -- CONTACT-INFO "www.unipowerco.com" -- DESCRIPTION "System Information, ACX Power Systems" - + ACX-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, - enterprises, + enterprises, IpAddress, Integer32 FROM SNMPv2-SMI - DisplayString, - RowStatus, + DisplayString, + RowStatus, StorageType FROM SNMPv2-TC OBJECT-TYPE, NOTIFICATION-TYPE FROM SNMPv2-SMI @@ -24,21 +24,21 @@ IMPORTS KeyChange FROM SNMP-USER-BASED-SM-MIB snmpTrapOID FROM SNMPv2-MIB TEXTUAL-CONVENTION FROM SNMPv2-TC; - + powecMIB MODULE-IDENTITY LAST-UPDATED "201906180000Z" ORGANIZATION "Unipower" CONTACT-INFO "www.unipowerco.com" - DESCRIPTION + DESCRIPTION "System Information, ACX Power Systems" REVISION "201906180000Z" - DESCRIPTION + DESCRIPTION "Revision 1.15" - ::= { enterprises 5961 } + ::= { enterprises 5961 } acxPowerSystem OBJECT IDENTIFIER ::= { powecMIB 5 } - systemInfo OBJECT IDENTIFIER ::= { acxPowerSystem 1 } - powerSystem OBJECT IDENTIFIER ::= { acxPowerSystem 2 } + systemInfo OBJECT IDENTIFIER ::= { acxPowerSystem 1 } + powerSystem OBJECT IDENTIFIER ::= { acxPowerSystem 2 } systemParameters OBJECT IDENTIFIER ::= { acxPowerSystem 3 } customBoost OBJECT IDENTIFIER ::= { systemParameters 46 } agentSetup OBJECT IDENTIFIER ::= { acxPowerSystem 4 } @@ -76,7 +76,7 @@ UsmPrivProtocol ::= TEXTUAL-CONVENTION aesPrivProtocol(1), noPrivProtocol(2) } - + SwitchValue ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION @@ -86,7 +86,7 @@ SwitchValue ::= TEXTUAL-CONVENTION off(0), on(1) } - + ComStatusValue ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION @@ -96,7 +96,7 @@ ComStatusValue ::= TEXTUAL-CONVENTION ok(0), fail(1) } - + AlarmValue ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION @@ -107,7 +107,7 @@ AlarmValue ::= TEXTUAL-CONVENTION alarm(1) } --- ------------------------------------------------------------ +-- ------------------------------------------------------------ -- SYSTEM INFO variables -- ------------------------------------------------------------ @@ -158,52 +158,52 @@ batteryDescript OBJECT-TYPE DESCRIPTION "String containing a description of the Battery" ::= { systemInfo 6 } - + batteryCapacity OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-write STATUS current DESCRIPTION "An integer containing battery capacity in Ah" - + ::= { systemInfo 7 } - + installationDate OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-write STATUS current DESCRIPTION "Installation date of the system of the form 'DD.MM.YY'" - + ::= { systemInfo 8 } - + updateDate OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-write STATUS current DESCRIPTION "Last date of updating system of the form 'DD.MM.YY'" - + ::= { systemInfo 9 } - + powerSystemAddress OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-write STATUS current DESCRIPTION "An integer containing the address of the System" - - ::= { systemInfo 10 } - + + ::= { systemInfo 10 } + powerSystemSerialCode OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION - "Serial Number in new format (ACX version 2.22 and newer)" + "Serial Number in new format (ACX version 2.22 and newer)" ::= { systemInfo 11 } --- ------------------------------------------------------------ +-- ------------------------------------------------------------ -- POWER SYSTEM variables -- ------------------------------------------------------------ @@ -238,7 +238,7 @@ rectifierCurrent OBJECT-TYPE STATUS current DESCRIPTION "A variable containing the rectifier current (A*10)" - ::= { powerSystem 4 } + ::= { powerSystem 4 } battTemperature OBJECT-TYPE SYNTAX Integer32 @@ -246,15 +246,15 @@ battTemperature OBJECT-TYPE STATUS current DESCRIPTION "A variable containing the battery temperature(C)" - ::= { powerSystem 5 } - + ::= { powerSystem 5 } + acPhase1Voltage OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "A variable containing AC input voltage for phase 1 (V), (-1) means measurement not available" - ::= { powerSystem 6 } + ::= { powerSystem 6 } acPhase2Voltage OBJECT-TYPE SYNTAX Integer32 @@ -262,7 +262,7 @@ acPhase2Voltage OBJECT-TYPE STATUS current DESCRIPTION "A variable containing AC input voltage for phase 2 (V), (-1) means measurement not available" - ::= { powerSystem 7 } + ::= { powerSystem 7 } acPhase3Voltage OBJECT-TYPE SYNTAX Integer32 @@ -270,7 +270,7 @@ acPhase3Voltage OBJECT-TYPE STATUS current DESCRIPTION "A variable containing AC input voltage for phase 3 (V), (-1) means measurement not available" - ::= { powerSystem 8 } + ::= { powerSystem 8 } remainBatteryTime OBJECT-TYPE SYNTAX Integer32 @@ -278,7 +278,7 @@ remainBatteryTime OBJECT-TYPE STATUS current DESCRIPTION "A variable containing the remaining battery time in (minutes)" - ::= { powerSystem 9 } + ::= { powerSystem 9 } dcdcCurrent OBJECT-TYPE SYNTAX Integer32 @@ -286,9 +286,9 @@ dcdcCurrent OBJECT-TYPE STATUS current DESCRIPTION "A variable containing the DC/DC units total current (A*10)" - ::= { powerSystem 10 } + ::= { powerSystem 10 } --- ------------------------------------------------------------ +-- ------------------------------------------------------------ -- SYSTEM PARAMETERS -- ------------------------------------------------------------ @@ -357,7 +357,7 @@ lowVoltReconLim OBJECT-TYPE DESCRIPTION "A variable containing the Low Voltage Reconnect Limit (V*10)" ::= { systemParameters 8 } - + partLoadDiscon1Limit OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-write @@ -392,7 +392,7 @@ highVoltLim OBJECT-TYPE DESCRIPTION "A variable containing the High Voltage Limit (V*10)" ::= { systemParameters 12 } - + highVoltDisconLim OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-write @@ -651,22 +651,22 @@ lowACVoltLim OBJECT-TYPE STATUS current DESCRIPTION "A variable containing the Low AC Voltage Limit (V)" - ::= { systemParameters 44 } - + ::= { systemParameters 44 } + turnOnOffRecifiers OBJECT-TYPE SYNTAX Integer32 (0 | 1) MAX-ACCESS read-write STATUS current DESCRIPTION - "A switch for turning On/Off rectifiers, + "A switch for turning On/Off rectifiers, NOTE: If system does not have another power source (e.g. battery), this will cause system shutdown" - ::= { systemParameters 45 } + ::= { systemParameters 45 } -- ------------------------------------------------------------ -- Custom boost parameters -- ------------------------------------------------------------ - + cbBatteryCapacity OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-write @@ -674,7 +674,7 @@ cbBatteryCapacity OBJECT-TYPE DESCRIPTION "Battery capacity Cn in Ah, capacity is for required rating" ::= { customBoost 1 } - + cbBODTime OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write @@ -683,7 +683,7 @@ cbBODTime OBJECT-TYPE "Minimal Battery on discharge time in minutes required to custom boost is activated" ::= { customBoost 2 } - + cbStage1Duration OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write @@ -691,7 +691,7 @@ cbStage1Duration OBJECT-TYPE DESCRIPTION "Custom boost Stage1 duration in minutes" ::= { customBoost 3 } - + cbStage1BatCurLimit OBJECT-TYPE SYNTAX Integer32 (0..1000) MAX-ACCESS read-write @@ -708,7 +708,7 @@ cbStage2Duration OBJECT-TYPE DESCRIPTION "Custom boost Stage2 duration in minutes" ::= { customBoost 5 } - + cbStage2BatCurLimit OBJECT-TYPE SYNTAX Integer32 (0..1000) MAX-ACCESS read-write @@ -717,13 +717,13 @@ cbStage2BatCurLimit OBJECT-TYPE "Custom boost Stage2 battery current limit in % of cbBatteryCapacity resolution is 1 => 0.1%" ::= { customBoost 6 } - + cbStage2EarlyExitBatCurLimit OBJECT-TYPE SYNTAX Integer32 (0..1000) MAX-ACCESS read-write STATUS current DESCRIPTION - "Custom boost Stage2 early exit (before cbStage2Duration expires) + "Custom boost Stage2 early exit (before cbStage2Duration expires) battery current limit in % of cbBatteryCapacity resolution is 1 => 0.1%" ::= { customBoost 7 } @@ -736,7 +736,7 @@ customBoostEnable OBJECT-TYPE "A variable containing the Custom Boost Flag (1 for auto boost enabled, 0 disabled)." ::= { customBoost 8 } --- ------------------------------------------------------------ +-- ------------------------------------------------------------ -- AGENT SETUP -- ------------------------------------------------------------ @@ -747,7 +747,7 @@ trapReciepient1 OBJECT-TYPE DESCRIPTION "IP address of Trap Reciepient 1" ::= { agentSetup 1 } - + trapReciepient2 OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-write @@ -755,7 +755,7 @@ trapReciepient2 OBJECT-TYPE DESCRIPTION "IP address of Trap Reciepient 2" ::= { agentSetup 2 } - + trapReciepient3 OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-write @@ -763,7 +763,7 @@ trapReciepient3 OBJECT-TYPE DESCRIPTION "IP address of Trap Reciepient 3" ::= { agentSetup 3 } - + trapReciepient4 OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-write @@ -771,7 +771,7 @@ trapReciepient4 OBJECT-TYPE DESCRIPTION "IP address of Trap Reciepient 4" ::= { agentSetup 4 } - + trapReciepient5 OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-write @@ -779,7 +779,7 @@ trapReciepient5 OBJECT-TYPE DESCRIPTION "IP address of Trap Reciepient 5" ::= { agentSetup 5 } - + trapReciepient6 OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-write @@ -787,7 +787,7 @@ trapReciepient6 OBJECT-TYPE DESCRIPTION "IP address of Trap Reciepient 6" ::= { agentSetup 6 } - + trapReciepient7 OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-write @@ -795,7 +795,7 @@ trapReciepient7 OBJECT-TYPE DESCRIPTION "IP address of Trap Reciepient 7" ::= { agentSetup 7 } - + trapReciepient8 OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-write @@ -803,20 +803,20 @@ trapReciepient8 OBJECT-TYPE DESCRIPTION "IP address of Trap Reciepient 8" ::= { agentSetup 8 } - + trapCommunityName OBJECT-TYPE SYNTAX DisplayString (SIZE (0..15)) MAX-ACCESS read-write STATUS current DESCRIPTION "A variable containing Trap community name" - ::= { agentSetup 9 } - + ::= { agentSetup 9 } + -- ------------------------------------------------------------ -- ALARM INFO variables (Alarm and Status Information) -- The alarmData, extraAlarmData and statusData --- are integers from 0-255 containing the byte value received --- from the controlmodule. +-- are integers from 0-255 containing the byte value received +-- from the controlmodule. -- ------------------------------------------------------------ numbOfAlarms OBJECT-TYPE @@ -850,7 +850,7 @@ alarmData3 OBJECT-TYPE DESCRIPTION "A byte containing alarm data 3" ::= { alarmInfo 4 } - + extraAlarmData1 OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-only @@ -858,7 +858,7 @@ extraAlarmData1 OBJECT-TYPE DESCRIPTION "A byte containing extra alarm data 1" ::= { alarmInfo 5 } - + extraAlarmData2 OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-only @@ -1027,7 +1027,7 @@ extAlarm15Name OBJECT-TYPE "Ext.alarm 15 name" ::= { alarmInfo 26 } --- ------------------------------------------------------------ +-- ------------------------------------------------------------ -- rectifierInfo -- ------------------------------------------------------------ @@ -1037,7 +1037,7 @@ numOfRectifiers OBJECT-TYPE STATUS current DESCRIPTION "Number of Rectifiers installed in the system" - ::= { rectifierInfo 1 } + ::= { rectifierInfo 1 } numOfChannels OBJECT-TYPE SYNTAX Integer32 (0..255) @@ -1061,8 +1061,8 @@ moduleTable OBJECT-TYPE STATUS current DESCRIPTION "Module Information Table" - ::= { rectifierInfo 2 } - + ::= { rectifierInfo 2 } + moduleEntry OBJECT-TYPE SYNTAX ModuleEntry MAX-ACCESS not-accessible @@ -1071,7 +1071,7 @@ moduleEntry OBJECT-TYPE "Queue of Module Table" INDEX { moduleIndex } ::= { moduleTable 1 } - + ModuleEntry ::= SEQUENCE { moduleIndex @@ -1105,7 +1105,7 @@ ModuleEntry ::= serialNumber Integer32 } - + moduleIndex OBJECT-TYPE SYNTAX Integer32 (0..100) MAX-ACCESS read-only @@ -1121,7 +1121,7 @@ moduleAddress OBJECT-TYPE DESCRIPTION "Address of current module viewed in the Module Table, (-1) means this value is invalid" ::= { moduleEntry 2 } - + moduleComStatus OBJECT-TYPE SYNTAX ComStatusValue MAX-ACCESS read-only @@ -1129,7 +1129,7 @@ moduleComStatus OBJECT-TYPE DESCRIPTION "Module Communication Status, 0-OK, 1-Failed, (-1) means this value is invalid" ::= { moduleEntry 3 } - + moduleOk OBJECT-TYPE SYNTAX AlarmValue MAX-ACCESS read-only @@ -1137,7 +1137,7 @@ moduleOk OBJECT-TYPE DESCRIPTION "Rectifier Module Ok or Alarm, 0-OK, 1-Alarm, (-1) means this value is invalid" ::= { moduleEntry 4 } - + moduleEnabled OBJECT-TYPE SYNTAX SwitchValue MAX-ACCESS read-write @@ -1145,7 +1145,7 @@ moduleEnabled OBJECT-TYPE DESCRIPTION "Rectifier module is activated or not, 1-Activated, 0-Disable, (-1) means this value is invalid" ::= { moduleEntry 5 } - + inputVoltage OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only @@ -1153,7 +1153,7 @@ inputVoltage OBJECT-TYPE DESCRIPTION "Module Input Voltage(V), (-1) means measurement not available" ::= { moduleEntry 6 } - + outputVoltage OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only @@ -1169,7 +1169,7 @@ outputCurrent OBJECT-TYPE DESCRIPTION "Module Current (A*10), (-1) means measurement not available" ::= { moduleEntry 8 } - + meanCurrent OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only @@ -1225,7 +1225,7 @@ serialNumber OBJECT-TYPE DESCRIPTION "Serial Number of the module, (-1) means this value is invalid" ::= { moduleEntry 15 } - + -- ------------------------------------------------------------ -- BATTERY INFORMATION -- ------------------------------------------------------------ @@ -1237,14 +1237,14 @@ numbOfBatteries OBJECT-TYPE DESCRIPTION "Number of battery strings installed in the system" ::= { batteryInfo 1 } - + typeofBattery OBJECT-TYPE SYNTAX Integer32 (0..100) MAX-ACCESS read-only STATUS current DESCRIPTION "Type of battery installed in the system" - ::= { batteryInfo 2 } + ::= { batteryInfo 2 } symmetryTable OBJECT-TYPE SYNTAX SEQUENCE OF SymmetryEntry @@ -1252,8 +1252,8 @@ symmetryTable OBJECT-TYPE STATUS current DESCRIPTION "Symmetry Information Table" - ::= { batteryInfo 3 } - + ::= { batteryInfo 3 } + symmetryEntry OBJECT-TYPE SYNTAX SymmetryEntry MAX-ACCESS not-accessible @@ -1262,7 +1262,7 @@ symmetryEntry OBJECT-TYPE "Queue of Symmetry Table" INDEX { batteryIndex } ::= { symmetryTable 1 } - + SymmetryEntry ::= SEQUENCE { batteryIndex @@ -1276,7 +1276,7 @@ SymmetryEntry ::= symmetry4 Integer32 } - + batteryIndex OBJECT-TYPE SYNTAX Integer32 (0..100) MAX-ACCESS read-only @@ -1284,7 +1284,7 @@ batteryIndex OBJECT-TYPE DESCRIPTION "Index of current battery string viewed in the Symmetry Table" ::= { symmetryEntry 1 } - + symmetry1 OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only @@ -1292,15 +1292,15 @@ symmetry1 OBJECT-TYPE DESCRIPTION "Symmetry Voltage in Block 1 (V*100), (-1) means this value is invalid" ::= { symmetryEntry 2 } - + symmetry2 OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only STATUS current DESCRIPTION "Symmetry Voltage in Block 2 (V*100), (-1) means this value is invalid" - ::= { symmetryEntry 3 } - + ::= { symmetryEntry 3 } + symmetry3 OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only @@ -1308,14 +1308,14 @@ symmetry3 OBJECT-TYPE DESCRIPTION "Symmetry Voltage in Block 3 (V*100), (-1) means this value is invalid for this battery type" ::= { symmetryEntry 4 } - + symmetry4 OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only STATUS current DESCRIPTION "Symmetry Voltage in Block 4 (V*100), (-1) means this value is invalid for this battery type" - ::= { symmetryEntry 5 } + ::= { symmetryEntry 5 } -- ------------------------------------------------------------ -- ALARM HISTORY INFORMATION @@ -1327,7 +1327,7 @@ alarmHistoryCount OBJECT-TYPE STATUS current DESCRIPTION "Number of Alarm History entries in the History Table" - ::= { alarmHistory 1 } + ::= { alarmHistory 1 } alarmHistoryTable OBJECT-TYPE SYNTAX SEQUENCE OF AlarmHistoryEntry @@ -1335,8 +1335,8 @@ alarmHistoryTable OBJECT-TYPE STATUS current DESCRIPTION "Alarm History Table" - ::= { alarmHistory 2 } - + ::= { alarmHistory 2 } + alarmHistoryEntry OBJECT-TYPE SYNTAX AlarmHistoryEntry MAX-ACCESS not-accessible @@ -1345,7 +1345,7 @@ alarmHistoryEntry OBJECT-TYPE "Queue of History Table" INDEX { ahTableIndex } ::= { alarmHistoryTable 1 } - + AlarmHistoryEntry ::= SEQUENCE { ahTableIndex @@ -1363,7 +1363,7 @@ AlarmHistoryEntry ::= ahData5 Integer32 } - + ahTableIndex OBJECT-TYPE SYNTAX Integer32 (0..100) MAX-ACCESS read-only @@ -1379,7 +1379,7 @@ ahTime OBJECT-TYPE DESCRIPTION "Time and date of the History Table entry" ::= { alarmHistoryEntry 2 } - + ahData1 OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-only @@ -1387,7 +1387,7 @@ ahData1 OBJECT-TYPE DESCRIPTION "A byte containing alarm history data 1" ::= { alarmHistoryEntry 3 } - + ahData2 OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-only @@ -1395,7 +1395,7 @@ ahData2 OBJECT-TYPE DESCRIPTION "A byte containing alarm history data 2" ::= { alarmHistoryEntry 4 } - + ahData3 OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-only @@ -1411,14 +1411,14 @@ ahData4 OBJECT-TYPE DESCRIPTION "A byte containing alarm history data 4" ::= { alarmHistoryEntry 6 } - + ahData5 OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-only STATUS current DESCRIPTION "A byte containing alarm history data 5" - ::= { alarmHistoryEntry 7 } + ::= { alarmHistoryEntry 7 } -- ------------------------------------------------------------ -- DCDCModuleInfo @@ -1430,7 +1430,7 @@ numOfDCDCUnits OBJECT-TYPE STATUS current DESCRIPTION "Number of DCDC Modules installed in the system" - ::= { dcdcInfo 1 } + ::= { dcdcInfo 1 } dcdcTable OBJECT-TYPE SYNTAX SEQUENCE OF DCDCModuleEntry @@ -1438,8 +1438,8 @@ dcdcTable OBJECT-TYPE STATUS current DESCRIPTION "DCDC Module Information Table" - ::= { dcdcInfo 2 } - + ::= { dcdcInfo 2 } + dcdcModuleEntry OBJECT-TYPE SYNTAX DCDCModuleEntry MAX-ACCESS not-accessible @@ -1482,7 +1482,7 @@ DCDCModuleEntry ::= dcdcSerialNumber Integer32 } - + dcdcModuleIndex OBJECT-TYPE SYNTAX Integer32 (0..100) MAX-ACCESS read-only @@ -1498,7 +1498,7 @@ dcdcModuleAddress OBJECT-TYPE DESCRIPTION "Address of current module viewed in the DCDC Module Table, (-1) means this value is invalid" ::= { dcdcModuleEntry 2 } - + dcdcModuleComStatus OBJECT-TYPE SYNTAX ComStatusValue MAX-ACCESS read-only @@ -1506,7 +1506,7 @@ dcdcModuleComStatus OBJECT-TYPE DESCRIPTION "Module Communication Status, 0-OK, 1-Failed, (-1) means this value is invalid" ::= { dcdcModuleEntry 3 } - + dcdcModuleOk OBJECT-TYPE SYNTAX AlarmValue MAX-ACCESS read-only @@ -1514,7 +1514,7 @@ dcdcModuleOk OBJECT-TYPE DESCRIPTION "DCDC Module Ok or Alarm, 0-OK, 1-Alarm, (-1) means this value is invalid" ::= { dcdcModuleEntry 4 } - + dcdcModuleEnabled OBJECT-TYPE SYNTAX SwitchValue MAX-ACCESS read-only @@ -1522,7 +1522,7 @@ dcdcModuleEnabled OBJECT-TYPE DESCRIPTION "DCDC module is enabled or not, 1-Enabled, 0-Disabled, (-1) means this value is invalid" ::= { dcdcModuleEntry 5 } - + dcdcInputVoltage OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only @@ -1530,7 +1530,7 @@ dcdcInputVoltage OBJECT-TYPE DESCRIPTION "Module Input Voltage(V), (-1) means measurement not available" ::= { dcdcModuleEntry 6 } - + dcdcOutputVoltage OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only @@ -1546,7 +1546,7 @@ dcdcOutputCurrent OBJECT-TYPE DESCRIPTION "Module Current (A*10), (-1) means measurement not available" ::= { dcdcModuleEntry 8 } - + dcdcMeanCurrent OBJECT-TYPE SYNTAX Integer32 (0..30000) MAX-ACCESS read-only @@ -1602,7 +1602,7 @@ dcdcSerialNumber OBJECT-TYPE DESCRIPTION "Serial Number of the module, (-1) means this value is invalid" ::= { dcdcModuleEntry 15 } - + -- ------------------------------------------------------------ -- SLIInfo -- ------------------------------------------------------------ @@ -1613,7 +1613,7 @@ numOfSLIUnits OBJECT-TYPE STATUS current DESCRIPTION "Number of SLI inverters installed in the system" - ::= { sliInfo 1 } + ::= { sliInfo 1 } sliTable OBJECT-TYPE SYNTAX SEQUENCE OF SLIModuleEntry @@ -1621,8 +1621,8 @@ sliTable OBJECT-TYPE STATUS current DESCRIPTION "SLI Module internal information table" - ::= { sliInfo 2 } - + ::= { sliInfo 2 } + sliModuleEntry OBJECT-TYPE SYNTAX SLIModuleEntry MAX-ACCESS not-accessible @@ -1663,7 +1663,7 @@ SLIModuleEntry ::= sliSerialNumber Integer32 } - + sliModuleIndex OBJECT-TYPE SYNTAX Integer32 (0..100) MAX-ACCESS read-only @@ -1679,7 +1679,7 @@ sliModuleAddress OBJECT-TYPE DESCRIPTION "Communication address of current SLI inverter viewed in the current SLI Table, (-1) means this value is not available" ::= { sliModuleEntry 2 } - + sliModuleComStatus OBJECT-TYPE SYNTAX ComStatusValue MAX-ACCESS read-only @@ -1687,7 +1687,7 @@ sliModuleComStatus OBJECT-TYPE DESCRIPTION "Sli inverter communication status, 0-OK, 1-Failed, (-1) means this value is not available" ::= { sliModuleEntry 3 } - + sliOutputVoltage OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only @@ -1703,7 +1703,7 @@ sliOutputCurrent OBJECT-TYPE DESCRIPTION "SLI inverter output current in hundredths of A (A*100), (-1) means that this value is not available" ::= { sliModuleEntry 5 } - + sliOutputPower OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only @@ -1727,7 +1727,7 @@ sliGridCurrent OBJECT-TYPE DESCRIPTION "SLI inverter AC Grid Output Current in hundredths of Amperes (A*100), (-1) means this value is not available" ::= { sliModuleEntry 8 } - + sliModuleGeneralFailure OBJECT-TYPE SYNTAX AlarmValue MAX-ACCESS read-only @@ -1810,7 +1810,7 @@ sliTSStatus OBJECT-TYPE DESCRIPTION "Transfer switch status, (-1) means this value is not available" ::= { sliModuleEntry 13 } - + sliSerialNumber OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only @@ -1830,7 +1830,7 @@ alarmTTable OBJECT-TYPE DESCRIPTION "Alarm state and trap setting table" ::= { alarmTable 1 } - + alarmTableEntry OBJECT-TYPE SYNTAX AlarmTableEntry MAX-ACCESS not-accessible @@ -1851,7 +1851,7 @@ AlarmTableEntry ::= alarmTrapDisable Integer32 } - + alarmTableIndex OBJECT-TYPE SYNTAX Integer32 (0..100) MAX-ACCESS read-only @@ -1867,7 +1867,7 @@ alarmDescription OBJECT-TYPE DESCRIPTION "Alarm decription (Name)" ::= { alarmTableEntry 2 } - + alarmStatus OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only @@ -1875,14 +1875,14 @@ alarmStatus OBJECT-TYPE DESCRIPTION "Alarm Status, 0-Off (Alarm is not active), 1-Active" ::= { alarmTableEntry 3 } - + alarmTrapDisable OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "Flag if trap is disabled or enabled for this alarm" - ::= { alarmTableEntry 4 } + ::= { alarmTableEntry 4 } -- ------------------------------------------------------------ -- SNMPv3 USM @@ -1894,7 +1894,7 @@ usmUserTable OBJECT-TYPE MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table is used to configure ACX USM. - To get the SNMPv3 access, user need to configure security + To get the SNMPv3 access, user need to configure security name,authentication,auth password,priv protocol and priv password. Table returns zero strings if SNMPv1/2c is selected in controller" ::= { snmpV3USM 1 } @@ -1903,7 +1903,7 @@ usmUserEntry OBJECT-TYPE SYNTAX UsmUserEntry MAX-ACCESS not-accessible STATUS current - DESCRIPTION + DESCRIPTION "User security configurations for USM." INDEX { usmIndex } ::= { usmUserTable 1 } @@ -1916,7 +1916,7 @@ UsmUserEntry ::= SEQUENCE { usmPrivProtocol UsmPrivProtocol, usmPrivKey KeyChange, usmStorage StorageType, - usmStatus RowStatus + usmStatus RowStatus } usmIndex OBJECT-TYPE @@ -1939,12 +1939,12 @@ usmAuthProtocol OBJECT-TYPE SYNTAX UsmAuthProtocol MAX-ACCESS read-write STATUS current - DESCRIPTION + DESCRIPTION "Authentication support to the SNMPv3. - If usmAuthProtocol == NoAuthProtocol, then SNMPv3 Stack does + If usmAuthProtocol == NoAuthProtocol, then SNMPv3 Stack does not support/requires authentication. If usmAuthProtocol == HMACMD5Auth , supports MD5 auth - If usmAuthProtocol == HMACSHAAuth, supports SHA Auth + If usmAuthProtocol == HMACSHAAuth, supports SHA Auth If a set operation tries to set value as NoAuthProtocol while the usmPrivProtocol value for the same userName is not equal to NoPrivProtocol, @@ -1960,17 +1960,17 @@ usmAuthKey OBJECT-TYPE -- typically (SIZE (0 | 40)) for HMACSHA MAX-ACCESS read-write STATUS current - DESCRIPTION + DESCRIPTION "This object in the MIB is associated to usmAuthProtocol. - A secret authentication key is required to establish a secure connection - between snmp agent and manager." + A secret authentication key is required to establish a secure connection + between snmp agent and manager." ::= { usmUserEntry 4 } usmPrivProtocol OBJECT-TYPE SYNTAX UsmPrivProtocol MAX-ACCESS read-write STATUS current - DESCRIPTION + DESCRIPTION " A privacy protocol to provide encryption and decryption of SNMPv3 pdu." ::= { usmUserEntry 5 } @@ -1981,27 +1981,27 @@ usmPrivKey OBJECT-TYPE STATUS current DESCRIPTION "This object in the MIB is associated to usmPrivProtocol. - A secret privacy key is required to establish a secure connection + A secret privacy key is required to establish a secure connection between snmp agent and manager." ::= { usmUserEntry 6 } - + usmStorage OBJECT-TYPE SYNTAX StorageType MAX-ACCESS read-only STATUS current - DESCRIPTION + DESCRIPTION "This object indicates storage type for user data (always nonVolatile)." ::= { usmUserEntry 7 } - + usmStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-only STATUS current - DESCRIPTION + DESCRIPTION "This object indicates user status (always active)." ::= { usmUserEntry 8 } --- ------------------------------------------------------------ +-- ------------------------------------------------------------ -- Traps -- As defined in RFC each TRAP V2 contains at least OBJECTS { snmpTrapOID } -- which is set to 1 at cleared to 0 during corresponding events @@ -2021,42 +2021,42 @@ highVoltTrap NOTIFICATION-TYPE DESCRIPTION "High DC Voltage Alarm" ::= { powecACXTrap 2 } - + loadBattDisconTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Load/Battery Disconnected" ::= { powecACXTrap 3 } - + mainsFailTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Mains Failure Alarm" ::= { powecACXTrap 4 } - + distrFuseTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Distribution Fuse Failure" ::= { powecACXTrap 5 } - + lowACTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Low AC input voltage" ::= { powecACXTrap 6 } - + battFailTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Battery Test Failure" ::= { powecACXTrap 7 } - + moduleFailTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current @@ -2070,250 +2070,250 @@ battTempTrap NOTIFICATION-TYPE DESCRIPTION "High Battery Temperature Alarm" ::= { powecACXTrap 9 } - + symmFailTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Battery Symmetry Alarm" ::= { powecACXTrap 10 } - + battFuseTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Battery Fuse Failure" ::= { powecACXTrap 11 } - + highLoadTrap NOTIFICATION-TYPE - OBJECTS { snmpTrapOID } + OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "High Load" ::= { powecACXTrap 12 } - + highACTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "High AC input voltage" ::= { powecACXTrap 13 } - + urgentModFailTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Urgent Module Alarm" ::= { powecACXTrap 14 } - + comFailTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Communication Failure" ::= { powecACXTrap 15 } - + partLoadDiscon1Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Partial Load Disconnect 1 Alarm" ::= { powecACXTrap 16 } - + tempProbeTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Temperature probe fault" ::= { powecACXTrap 17 } - + dischargingTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Battery on Discharge" ::= { powecACXTrap 18 } - + ovShutdownTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Overvoltage Shutdown alarm" ::= { powecACXTrap 19 } - + lowBattTempTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Low Battery Temperature" ::= { powecACXTrap 20 } - + partLoadDiscon2Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Partial Load Disconnect 2 Alarm" ::= { powecACXTrap 21 } - + partLoadDiscon3Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Partial Load Disconnect 3 Alarm" ::= { powecACXTrap 22 } - + alarmsBlockedTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Alarms Blocked" ::= { powecACXTrap 23 } - + extAlarm0Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 0" ::= { powecACXTrap 24 } - + extAlarm1Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 1" ::= { powecACXTrap 25 } - + extAlarm2Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 2" ::= { powecACXTrap 26 } - + extAlarm3Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 3" ::= { powecACXTrap 27 } - + extAlarm4Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 4" ::= { powecACXTrap 28 } - + extAlarm5Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 5" ::= { powecACXTrap 29 } - + extAlarm6Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 6" ::= { powecACXTrap 30 } - + extAlarm7Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 7" ::= { powecACXTrap 31 } - + extAlarm8Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 8" ::= { powecACXTrap 32 } - + extAlarm9Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 9" ::= { powecACXTrap 33 } - + extAlarm10Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 10" ::= { powecACXTrap 34 } - + extAlarm11Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 11" ::= { powecACXTrap 35 } - + extAlarm12Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 12" ::= { powecACXTrap 36 } - + extAlarm13Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 13" ::= { powecACXTrap 37 } - + extAlarm14Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 14" ::= { powecACXTrap 38 } - + extAlarm15Trap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "Ext.alarm 15" ::= { powecACXTrap 39 } - + u1NormalTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "System output reference changed to Normal" ::= { powecACXTrap 40 } - + u2BoostTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "System output reference changed to Boost" ::= { powecACXTrap 41 } - + u3TestTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "System output reference changed to Test" ::= { powecACXTrap 42 } - + u4SpareTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "System output reference changed to Spare" ::= { powecACXTrap 43 } - + snmpV3ReadyTrap NOTIFICATION-TYPE OBJECTS { snmpTrapOID } STATUS current DESCRIPTION "SNMPv3 Engine is ready" ::= { powecACXTrap 44 } - + END diff --git a/infra/README.md b/infra/README.md index b2d4c1b00..8c77701ac 100644 --- a/infra/README.md +++ b/infra/README.md @@ -185,4 +185,3 @@ resources (see [above](#clean-up-lingering-resources)). ## unable to destroy resource Name: station, Type: network Solution: some containers are still running. Stop them, or force stop all containers using ``docker ps -q -a | xargs docker rm -f``. - diff --git a/tangostationcontrol/VERSION b/tangostationcontrol/VERSION index 87f0b954e..e92c04be1 100644 --- a/tangostationcontrol/VERSION +++ b/tangostationcontrol/VERSION @@ -1 +1 @@ -0.38.4 +0.38.5 diff --git a/tangostationcontrol/tangostationcontrol/states/hibernate.py b/tangostationcontrol/tangostationcontrol/states/hibernate.py index 196a31a72..70a0de3e8 100644 --- a/tangostationcontrol/tangostationcontrol/states/hibernate.py +++ b/tangostationcontrol/tangostationcontrol/states/hibernate.py @@ -1,7 +1,7 @@ # Copyright (C) 2024 ASTRON (Netherlands Institute for Radio Astronomy) # SPDX-License-Identifier: Apache-2.0 import logging -from tango import DevFailed, Except +from tango import DevFailed from tangostationcontrol.states.station_state import StationState from tangostationcontrol.states.station_state_enum import StationStateEnum @@ -28,12 +28,9 @@ class HibernateState(StationState): from tangostationcontrol.states.off import OffState # not implemented -> call the correct state transition function - self._station_manager.requested_station_state = OffState( - self._station_manager, self._power_hierarchy - ).state.name - self._station_manager.set_station_state( - OffState(self._station_manager, self._power_hierarchy) - ) + new_state = OffState(self._station_manager, self._power_hierarchy) + self._station_manager.requested_station_state = new_state.state.name + self._station_manager.set_station_state(new_state) async def station_standby(self): """Transition HIBERNATE -> STANDBY""" @@ -46,11 +43,7 @@ class HibernateState(StationState): self._power_hierarchy.hibernate_to_standby, ) except DevFailed as exc: - error_string = self.get_transition_error_string(target_state) - logger.exception(error_string) - Except.re_throw_exception( - exc, "DevFailed", error_string, str(self._station_manager) - ) + self.generate_transition_error(target_state, logger, exc) self._station_manager.set_station_state( StandbyState(self._station_manager, self._power_hierarchy) ) diff --git a/tangostationcontrol/tangostationcontrol/states/off.py b/tangostationcontrol/tangostationcontrol/states/off.py index 88bd6d491..f345f489e 100644 --- a/tangostationcontrol/tangostationcontrol/states/off.py +++ b/tangostationcontrol/tangostationcontrol/states/off.py @@ -1,7 +1,7 @@ # Copyright (C) 2024 ASTRON (Netherlands Institute for Radio Astronomy) # SPDX-License-Identifier: Apache-2.0 import logging -from tango import DevFailed, Except +from tango import DevFailed from tangostationcontrol.states.station_state import StationState from tangostationcontrol.states.station_state_enum import StationStateEnum @@ -37,11 +37,7 @@ class OffState(StationState): self._power_hierarchy.off_to_hibernate, ) except DevFailed as exc: - error_string = self.get_transition_error_string(target_state) - logger.exception(error_string) - Except.re_throw_exception( - exc, "DevFailed", error_string, str(self._station_manager) - ) + self.generate_transition_error(target_state, logger, exc) self._station_manager.set_station_state( HibernateState(self._station_manager, self._power_hierarchy) ) diff --git a/tangostationcontrol/tangostationcontrol/states/on.py b/tangostationcontrol/tangostationcontrol/states/on.py index 7e322d239..65647698f 100644 --- a/tangostationcontrol/tangostationcontrol/states/on.py +++ b/tangostationcontrol/tangostationcontrol/states/on.py @@ -1,7 +1,7 @@ # Copyright (C) 2024 ASTRON (Netherlands Institute for Radio Astronomy) # SPDX-License-Identifier: Apache-2.0 import logging -from tango import DevFailed, Except +from tango import DevFailed from tangostationcontrol.states.station_state import StationState from tangostationcontrol.states.station_state_enum import StationStateEnum @@ -38,11 +38,7 @@ class OnState(StationState): self._power_hierarchy.on_to_standby, ) except DevFailed as exc: - error_string = self.get_transition_error_string(target_state) - logger.exception(error_string) - Except.re_throw_exception( - exc, "DevFailed", error_string, str(self._station_manager) - ) + self.generate_transition_error(target_state, logger, exc) self._station_manager.set_station_state( StandbyState(self._station_manager, self._power_hierarchy) ) diff --git a/tangostationcontrol/tangostationcontrol/states/standby.py b/tangostationcontrol/tangostationcontrol/states/standby.py index 5f28f2d96..9e946218b 100644 --- a/tangostationcontrol/tangostationcontrol/states/standby.py +++ b/tangostationcontrol/tangostationcontrol/states/standby.py @@ -1,7 +1,7 @@ # Copyright (C) 2024 ASTRON (Netherlands Institute for Radio Astronomy) # SPDX-License-Identifier: Apache-2.0 import logging -from tango import DevFailed, Except +from tango import DevFailed from tangostationcontrol.states.station_state import StationState from tangostationcontrol.states.station_state_enum import StationStateEnum @@ -34,11 +34,7 @@ class StandbyState(StationState): self._power_hierarchy.standby_to_hibernate, ) except DevFailed as exc: - error_string = self.get_transition_error_string(target_state) - logger.exception(error_string) - Except.re_throw_exception( - exc, "DevFailed", error_string, str(self._station_manager) - ) + self.generate_transition_error(target_state, logger, exc) self._station_manager.set_station_state( HibernateState(self._station_manager, self._power_hierarchy) ) @@ -54,11 +50,7 @@ class StandbyState(StationState): self._power_hierarchy.standby_to_on, ) except DevFailed as exc: - error_string = self.get_transition_error_string(target_state) - logger.exception(error_string) - Except.re_throw_exception( - exc, "DevFailed", error_string, str(self._station_manager) - ) + self.generate_transition_error(target_state, logger, exc) self._station_manager.set_station_state( OnState(self._station_manager, self._power_hierarchy) ) diff --git a/tangostationcontrol/tangostationcontrol/states/station_state.py b/tangostationcontrol/tangostationcontrol/states/station_state.py index b13773aec..ebf359fc7 100644 --- a/tangostationcontrol/tangostationcontrol/states/station_state.py +++ b/tangostationcontrol/tangostationcontrol/states/station_state.py @@ -5,7 +5,8 @@ import logging from abc import ABC, abstractmethod from typing import Callable, Awaitable from functools import wraps -from tango import DevState, DeviceProxy + +from tango import DevState, DeviceProxy, Except, DevFailed from tangostationcontrol.states.station_state_enum import StationStateEnum @@ -71,11 +72,17 @@ class StationState(ABC): """Return the timeout for a given station state""" return cls.TIMEOUT_DICT[state] - def get_transition_error_string(self, target_state: StationStateEnum) -> str: - """Print standard transition error string""" - return f"Station {self._station_manager.Station_Name} \ + def generate_transition_error( + self, target_state: StationStateEnum, log: logging.Logger, exc: DevFailed + ): + """Generate standardized error for state transistions""" + error_string = f"Station {self._station_manager.Station_Name} \ can not transition to {target_state.name} state. \ Current state is {self.state.name}" + log.exception(error_string) + Except.re_throw_exception( + exc, "DevFailed", error_string, str(self._station_manager) + ) def get_transition_current_state_error(self) -> None: """Log a warning message after performing a transition to -- GitLab