@@ -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