@@ -42,7 +42,8 @@ def __init__(self, diskdev):
42
42
"InnoDisk" : { "utility" : INNODISK , "parser" : self .parse_innodisk_info },
43
43
"M.2" : { "utility" : INNODISK , "parser" : self .parse_innodisk_info },
44
44
"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 }
46
47
}
47
48
48
49
self .dev = diskdev
@@ -111,6 +112,21 @@ def parse_generic_ssd_info(self):
111
112
self .serial = self ._parse_re ('Serial Number:\s*(.+?)\n ' , self .ssd_info )
112
113
self .firmware = self ._parse_re ('Firmware Version:\s*(.+?)\n ' , self .ssd_info )
113
114
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
+
114
130
def parse_innodisk_info (self ):
115
131
if self .vendor_ssd_info :
116
132
self .health = self ._parse_re ('Health:\s*(.+?)%' , self .vendor_ssd_info )
0 commit comments