Skip to content

Commit

Permalink
fix formatting:
Browse files Browse the repository at this point in the history
  • Loading branch information
yocalebo committed Sep 30, 2024
1 parent ca0c446 commit e1f8008
Showing 1 changed file with 24 additions and 22 deletions.
46 changes: 24 additions & 22 deletions src/middlewared/middlewared/alert/source/enclosure_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,13 @@
# See the file LICENSE.IX for complete terms and conditions
from dataclasses import dataclass

from middlewared.alert.base import AlertClass, AlertCategory, AlertLevel, Alert, AlertSource
from middlewared.alert.base import (
AlertClass,
AlertCategory,
AlertLevel,
Alert,
AlertSource,
)


@dataclass(slots=True, frozen=True, kw_only=True)
Expand All @@ -16,20 +22,14 @@ class BadElement:
value_raw: int

def args(self):
return [
self.enc_name,
self.descriptor,
self.status,
self.value,
self.value_raw
]
return [self.enc_name, self.descriptor, self.status, self.value, self.value_raw]


class EnclosureUnhealthyAlertClass(AlertClass):
category = AlertCategory.HARDWARE
level = AlertLevel.CRITICAL
title = "Enclosure Status Is Not Healthy"
text = "Enclosure (%s): Element \"%s\" is reporting a status of \"%s\" with a value of \"%s\". (raw value \"%s\")"
text = 'Enclosure (%s): Element "%s" is reporting a status of "%s" with a value of "%s". (raw value "%s")'
products = ("SCALE_ENTERPRISE",)


Expand All @@ -45,37 +45,37 @@ class EnclosureStatusAlertSource(AlertSource):
products = ("SCALE_ENTERPRISE",)
failover_related = True
run_on_backup_node = False
bad = ('critical', 'noncritical', 'unknown', 'unrecoverable')
bad = ("critical", "noncritical", "unknown", "unrecoverable")
bad_elements: list | list[tuple[BadElement, int]] = list()

async def should_report(self, ele_type: str, ele_value: dict[str]):
"""We only want to raise an alert for an element's status
if it meets a certain criteria"""
if not ele_value['value']:
if not ele_value["value"]:
# if we don't have an actual value, doesn't
# matter what status the element is reporting
# we'll skip it so we don't raise alarm to
# end-user unnecessarily
return False
elif ele_value['status'].lower() not in self.bad:
elif ele_value["status"].lower() not in self.bad:
return False

return True

async def check(self):
good_enclosures, bad_elements = [], []
for enc in await self.middleware.call('enclosure2.query'):
good_enclosures.append([enc['name']])
enc['elements'].pop('Array Device Slot') # dont care about disk slots
for element_type, element_values in enc['elements'].items():
for enc in await self.middleware.call("enclosure2.query"):
good_enclosures.append([enc["name"]])
enc["elements"].pop("Array Device Slot") # dont care about disk slots
for element_type, element_values in enc["elements"].items():
for ele_value in element_values.values():
if await self.should_report(element_type, ele_value):
current_bad_element = BadElement(
enc_name=enc['name'],
descriptor=ele_value['descriptor'],
status=ele_value['status'],
value=ele_value['value'],
value_raw=ele_value['value_raw']
enc_name=enc["name"],
descriptor=ele_value["descriptor"],
status=ele_value["status"],
value=ele_value["value"],
value_raw=ele_value["value_raw"],
)
for previous_bad_element, count in self.bad_elements:
if previous_bad_element == current_bad_element:
Expand All @@ -96,7 +96,9 @@ async def check(self):
except ValueError:
pass

alerts.append(Alert(EnclosureUnhealthyAlertClass, args=current_bad_element.args()))
alerts.append(
Alert(EnclosureUnhealthyAlertClass, args=current_bad_element.args())
)

for enclosure in good_enclosures:
alerts.append(Alert(EnclosureHealthyAlertClass, args=enclosure))
Expand Down

0 comments on commit e1f8008

Please sign in to comment.