Skip to content

Commit e19f696

Browse files
yurixsightz80x1
authored andcommitted
added support for WDC SDASN8Y1T00 SSD health
1 parent 912797e commit e19f696

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

sonic_platform_base/sonic_ssd/ssd_generic.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ def __init__(self, diskdev):
4242
"InnoDisk" : { "utility" : INNODISK, "parser" : self.parse_innodisk_info },
4343
"M.2" : { "utility" : INNODISK, "parser" : self.parse_innodisk_info },
4444
"StorFly" : { "utility" : VIRTIUM, "parser" : self.parse_virtium_info },
45-
"Virtium" : { "utility" : VIRTIUM, "parser" : self.parse_virtium_info }
45+
"Virtium" : { "utility" : VIRTIUM, "parser" : self.parse_virtium_info },
46+
"WDC" : { "utility" : SMARTCTL, "parser" : self.parse_wdc_ssd_info }
4647
}
4748

4849
self.dev = diskdev
@@ -111,6 +112,21 @@ def parse_generic_ssd_info(self):
111112
self.serial = self._parse_re('Serial Number:\s*(.+?)\n', self.ssd_info)
112113
self.firmware = self._parse_re('Firmware Version:\s*(.+?)\n', self.ssd_info)
113114

115+
def parse_wdc_ssd_info(self):
116+
self.model = self._parse_re('Device Model:\s*(.+?)\n', self.ssd_info)
117+
self.serial = self._parse_re('Serial Number:\s*(.+?)\n', self.ssd_info)
118+
self.firmware = self._parse_re('Firmware Version:\s*(.+?)\n', self.ssd_info)
119+
try:
120+
if ("SDASN8Y1T00" == self.model.split(' ')[3]):
121+
self.nand_endurance = 400 * 1000
122+
parsed_total_lbas_written = self._parse_re('Total_LBAs_Written\s*.*Offline\s*-\s*\d*', self.vendor_ssd_info)
123+
total_lbas_written = int(self._parse_re('\s{7}\d*', parsed_total_lbas_written).split(' ')[7])
124+
self.health = int(100.0 - (total_lbas_written * 100) / self.nand_endurance)
125+
celsius_str = self._parse_re('Temperature_Celsius\s*.*', self.vendor_ssd_info)
126+
self.temperature = self._parse_re('\d*\s\(Min.*', celsius_str)
127+
except (ValueError, IndexError):
128+
pass
129+
114130
def parse_innodisk_info(self):
115131
if self.vendor_ssd_info:
116132
self.health = self._parse_re('Health:\s*(.+?)%', self.vendor_ssd_info)

0 commit comments

Comments
 (0)