Switched back to int keys for SMART attributes

* Allows for easier sorting
This commit is contained in:
2Shirt 2018-12-11 20:40:57 -07:00
parent a3f7e5ad89
commit a967a5c425
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C

View file

@ -17,17 +17,19 @@ ATTRIBUTES = {
'unsafe_shutdowns': {'Warning': 1}, 'unsafe_shutdowns': {'Warning': 1},
}, },
'SMART': { 'SMART': {
'5': {'Hex': '05', 'Error': 1, 'Critical': True}, 5: {'Hex': '05', 'Error': 1, 'Critical': True},
'9': {'Hex': '09', 'Warning': 12000, 'Error': 26298, 'Ignore': True}, 9: {'Hex': '09', 'Warning': 12000, 'Error': 26298, 'Ignore': True},
'10': {'Hex': '0A', 'Error': 1}, 10: {'Hex': '0A', 'Error': 1},
'184': {'Hex': 'B8', 'Error': 1}, 184: {'Hex': 'B8', 'Error': 1},
'187': {'Hex': 'BB', 'Error': 1}, 187: {'Hex': 'BB', 'Error': 1},
'188': {'Hex': 'BC', 'Error': 1}, 188: {'Hex': 'BC', 'Error': 1},
'196': {'Hex': 'C4', 'Error': 1}, 196: {'Hex': 'C4', 'Error': 1},
'197': {'Hex': 'C5', 'Error': 1, 'Critical': True}, 197: {'Hex': 'C5', 'Error': 1, 'Critical': True},
'198': {'Hex': 'C6', 'Error': 1, 'Critical': True}, 198: {'Hex': 'C6', 'Error': 1, 'Critical': True},
'199': {'Hex': 'C7', 'Error': 1, 'Ignore': True}, 199: {'Hex': 'C7', 'Error': 1, 'Ignore': True},
'201': {'Hex': 'C9', 'Error': 1}, 201: {'Hex': 'C9', 'Error': 1},
# TODO: Delete below
177: {'Hex': 'FF', 'Error': 1},
}, },
} }
IO_VARS = { IO_VARS = {
@ -161,19 +163,21 @@ class DiskObj():
self.nvme_attributes.update(self.smartctl[KEY_NVME]) self.nvme_attributes.update(self.smartctl[KEY_NVME])
elif KEY_SMART in self.smartctl: elif KEY_SMART in self.smartctl:
for a in self.smartctl[KEY_SMART].get('table', {}): for a in self.smartctl[KEY_SMART].get('table', {}):
_id = str(a.get('id', 'UNKNOWN')) try:
_id = int(a.get('id', -1))
except ValueError:
# Ignoring invalid attribute
continue
_name = str(a.get('name', 'UNKNOWN')) _name = str(a.get('name', 'UNKNOWN'))
_raw = a.get('raw', {}).get('value', -1) _raw = int(a.get('raw', {}).get('value', -1))
_raw_str = a.get('raw', {}).get('string', 'UNKNOWN') _raw_str = a.get('raw', {}).get('string', 'UNKNOWN')
# Fix power-on time # Fix power-on time
_r = re.match(r'^(\d+)[Hh].*', _raw_str) _r = re.match(r'^(\d+)[Hh].*', _raw_str)
if _id == '9' and _r: if _id == 9 and _r:
try: _raw = int(_r.group(1))
_raw = int(_r.group(1))
except ValueError: # Add to dict
# That's fine
pass
self.smart_attributes[_id] = { self.smart_attributes[_id] = {
'name': _name, 'raw': _raw, 'raw_str': _raw_str} 'name': _name, 'raw': _raw, 'raw_str': _raw_str}
@ -1056,7 +1060,7 @@ def update_progress_pane(state):
if k != 'Prime95': if k != 'Prime95':
output.append('{BLUE}{name}{CLEAR}'.format(name=k, **COLORS)) output.append('{BLUE}{name}{CLEAR}'.format(name=k, **COLORS))
if 'SMART' in k and state.quick_mode: if 'SMART' in k and state.quick_mode:
output[-1] += ' {YELLOW}(Quick){CLEAR}'.format(**COLORS) output[-1] += ' {}'.format(QUICK_LABEL)
# Add status from test object(s) # Add status from test object(s)
for test in v['Objects']: for test in v['Objects']: