Skip to content

Commit e601d0e

Browse files
[ssd_generic]Fix ssd no vendor information
The ssd information can show correctly even if can't get model information in generic SSD information. When unknown model name , use Virtuim tool to get SSD Health/Temperature . How has this been Tested ? Manual testing on Edgecore switch (ex AS4630_54PE)
1 parent 030a382 commit e601d0e

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

sonic_platform_base/sonic_ssd/ssd_generic.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ def __init__(self, diskdev):
5757
self.fetch_vendor_ssd_info(diskdev, model_short)
5858
self.parse_vendor_ssd_info(model_short)
5959
else:
60-
# No handler registered for this disk model
61-
pass
60+
# unknown model name , use Virtium to get information
61+
self.vendor_ssd_info =self._execute_shell(self.vendor_ssd_utility["Virtium"]["utility"].format(diskdev))
62+
self.parse_virtium_info()
6263
else:
6364
# Failed to get disk model
6465
self.model = "Unknown"
@@ -124,20 +125,22 @@ def parse_innodisk_info(self):
124125
self.temperature = temp_raw.split()[-6]
125126

126127
def parse_virtium_info(self):
127-
if self.vendor_ssd_info:
128-
self.temperature = self._parse_re('Temperature_Celsius\s*\d*\s*(\d+?)\s+', self.vendor_ssd_info)
128+
self.temperature = self._parse_re('Temperature_Celsius\s*\d*\s*(\d+?)\s+', self.vendor_ssd_info)
129+
self.health = self._parse_re('Remaining_Life_Left\s*\d*\s*(\d+?)\s+', self.vendor_ssd_info)
130+
if self.health == NOT_AVAILABLE:
129131
nand_endurance = self._parse_re('NAND_Endurance\s*\d*\s*(\d+?)\s+', self.vendor_ssd_info)
130132
avg_erase_count = self._parse_re('Average_Erase_Count\s*\d*\s*(\d+?)\s+', self.vendor_ssd_info)
131133
try:
132134
self.health = 100 - (float(avg_erase_count) * 100 / float(nand_endurance))
133-
except (ValueError, ZeroDivisionError):
135+
except ValueError:
134136
pass
135137

136138
def fetch_vendor_ssd_info(self, diskdev, model):
137139
self.vendor_ssd_info = self._execute_shell(self.vendor_ssd_utility[model]["utility"].format(diskdev))
138140

139141
def parse_vendor_ssd_info(self, model):
140-
self.vendor_ssd_utility[model]["parser"]()
142+
if self.vendor_ssd_info:
143+
self.vendor_ssd_utility[model]["parser"]()
141144

142145
def get_health(self):
143146
"""

0 commit comments

Comments
 (0)