2
0
mirror of https://opendev.org/x/pyghmi synced 2026-01-07 08:42:32 +00:00

Add OEM firmware retrieval to SR635/SR655

This provides more detail on core firmware on the TSM
servers.

Change-Id: If9fad33d1d512ac7f9b70cc971e84eae1c3ad74e
This commit is contained in:
Jarrod Johnson
2019-09-20 15:59:54 -04:00
parent a981b4067c
commit 6d7231ff41
2 changed files with 30 additions and 0 deletions

View File

@@ -632,6 +632,8 @@ class OEMHandler(generic.OEMHandler):
elif self.is_fpc:
return nextscale.get_fpc_firmware(bmcver, self.ipmicmd,
self._fpc_variant)
elif self.has_tsma:
return self.tsmahandler.get_firmware_inventory(components, raisebypass=False)
return super(OEMHandler, self).get_oem_firmware(bmcver, components)
def get_diagnostic_data(self, savefile, progress):

View File

@@ -15,6 +15,7 @@
# limitations under the License.
import pyghmi.redfish.oem.generic as generic
import pyghmi.exceptions as exc
import pyghmi.util.webclient as webclient
import struct
import time
@@ -78,6 +79,33 @@ class TsmHandler(generic.OEMHandler):
self.tsm = webclient.thehost
self._certverify = webclient._certverify
def get_firmware_inventory(self, components, raisebypass=True):
wc = self.wc
fwinf = wc.grab_json_response('/api/DeviceVersion')
for biosinf in fwinf:
if biosinf['device'] != 1:
continue
biosinf = fwinf[1]
biosres = {
'version': '{0}.{1}'.format(
biosinf['main'][0], biosinf['main'][1:]),
'build': biosinf['buildname']
}
yield ('UEFI', biosres)
break
name = 'TSM'
fwinf = wc.grab_json_response('/api/get-sysfwinfo')
for cinf in fwinf:
bmcinf = {
'version': cinf['fw_ver'],
'build': cinf['buildname'],
'date': cinf['builddate'],
}
yield (name, bmcinf)
name += ' Backup'
if raisebypass:
raise exc.BypassGenericBehavior()
@property
def wc(self):
self.fwid = None