Hardware Health Check
Power Supply Status per Device
let devices = merge(`analytics:/tags/labels/devices/pod_name/value/<_POD_NAME>/elements`)
let devicesSwitchLabel = merge(`analytics:/tags/labels/devices/switch_role/value/<_SWITCH_ROLE>/elements`)
let powerSupply = `*:/Sysdb/environment/archer/power/status/powerSupply/*`
let filteredPsuStats = powerSupply | where(dictHasKey(powerSupply, _key) == true) | recmap(2, (merge(_value)["state"]["Name"]))
if str(_POD_NAME) == "" && str(_SWITCH_ROLE) == "" {
let result = filteredPsuStats
} else {
if str(_SWITCH_ROLE) == "" {
let result = filteredPsuStats | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")))
} else {
if str(_POD_NAME) == "" {
let result = filteredPsuStats | where(dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
} else {
let result = filteredPsuStats | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")) && dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
}
}
}
for deviceKey, deviceValue in result{
for powerSupplyKey, powerSupplyValue in deviceValue{
if powerSupplyValue=="ok"{
result[deviceKey][powerSupplyKey]="✔️"
} else{
result[deviceKey][powerSupplyKey]="❌"
}
}
}
result
Fan Status per Device
let devices = merge(`analytics:/tags/labels/devices/pod_name/value/<_POD_NAME>/elements`)
let devicesSwitchLabel = merge(`analytics:/tags/labels/devices/switch_role/value/<_SWITCH_ROLE>/elements`)
let fans = `*:/Sysdb/environment/archer/cooling/status/*`
let fansHwStatus = fans | where(dictHasKey(fans, _key) == true) | recmap(2, (merge(_value)["hwStatus"]["Name"]))
if str(_POD_NAME) == "" && str(_SWITCH_ROLE) == "" {
let result = fansHwStatus
} else {
if str(_SWITCH_ROLE) == "" {
let result = fansHwStatus | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")))
} else {
if str(_POD_NAME) == "" {
let result = fansHwStatus | where(dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
} else {
let result = fansHwStatus | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")) && dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
}
}
}
for deviceKey, deviceValue in result{
for fansKey, fansValue in deviceValue{
if fansValue=="ok"{
result[deviceKey][fansKey]="✔️"
} else{
result[deviceKey][fansKey]="❌"
}
}
}
result
Temperature Sensors per Device
let devices = merge(`analytics:/tags/labels/devices/pod_name/value/<_POD_NAME>/elements`)
let devicesSwitchLabel = merge(`analytics:/tags/labels/devices/switch_role/value/<_SWITCH_ROLE>/elements`)
let temperature = `*:/Sysdb/environment/archer/temperature/status/cell/1/*`
let filteredTemperatureStats = temperature | where(dictHasKey(temperature, _key) == true) | recmap(2, (merge(_value)["alertRaised"]))
if str(_POD_NAME) == "" && str(_SWITCH_ROLE) == "" {
let result = filteredTemperatureStats
} else {
if str(_SWITCH_ROLE) == "" {
let result = filteredTemperatureStats | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")))
} else {
if str(_POD_NAME) == "" {
let result = filteredTemperatureStats | where(dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
} else {
let result = filteredTemperatureStats | where(dictHasKey(devices, complexKey("{\"deviceID\": \""+_key+"\"}")) && dictHasKey(devicesSwitchLabel, complexKey("{\"deviceID\": \""+_key+"\"}")))
}
}
}
for deviceKey, deviceValue in result{
for sensorKey, sensorValue in deviceValue{
if sensorValue==false{
result[deviceKey][sensorKey]="✔️"
} else{
result[deviceKey][sensorKey]="❌"
}
}
}
result