Add function to determine virtual FD support
iRMC dropped support of virtual floppy disk at specific iRMC firmware version. iRMC S4 supports virtual FD till version 9.21F and deprecates it from version 9.62F iRMC S5 supports virtual FD till version 1.25P and deprecates it from version 1.60P This commit adds functions which determine whether iRMC supports virtual floppy disk based on iRMC firmware version. Change-Id: I024b6fb09ebe3c3ffe7ccfff5cf8b2e5b844be94
This commit is contained in:
parent
6c3487815b
commit
a28eb28775
@ -17,6 +17,7 @@ SCCI functionalities shared between different iRMC modules.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import functools
|
import functools
|
||||||
|
import re
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import defusedxml.ElementTree as ET
|
import defusedxml.ElementTree as ET
|
||||||
@ -28,6 +29,14 @@ from scciclient.irmc import snmp
|
|||||||
|
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
|
||||||
|
S4_PATTERN = re.compile(r"^iRMC\s*S4$")
|
||||||
|
S5_PATTERN = re.compile(r"^iRMC\s*S5$")
|
||||||
|
FW_VERSION_HEAD_PATTERN = re.compile(r"^\d[\d.]*")
|
||||||
|
FW_VERSION_TAIL_PATTERN = re.compile(r"[a-zA-Z]*$")
|
||||||
|
|
||||||
|
S4_FD_SUPPORT_UPPER = 9.21
|
||||||
|
S5_FD_SUPPORT_UPPER = 1.25
|
||||||
|
|
||||||
|
|
||||||
class SCCIError(Exception):
|
class SCCIError(Exception):
|
||||||
"""SCCI Error
|
"""SCCI Error
|
||||||
@ -90,6 +99,14 @@ OpCode SCCI Command String Description
|
|||||||
0x0203 ResetFirmware Perform a BMC Reset
|
0x0203 ResetFirmware Perform a BMC Reset
|
||||||
0x0251 ConnectRemoteFdImage Connect or Disconnect a Floppy Disk image on a
|
0x0251 ConnectRemoteFdImage Connect or Disconnect a Floppy Disk image on a
|
||||||
Remote Image Mount (NFS or CIFS Share )
|
Remote Image Mount (NFS or CIFS Share )
|
||||||
|
|
||||||
|
This command was deprecated at following
|
||||||
|
version:
|
||||||
|
iRMC S4: 9.62F
|
||||||
|
(9.21F still supports virtual FD)
|
||||||
|
iRMC S5: 1.60P
|
||||||
|
(1.25P still supports virtual FD)
|
||||||
|
|
||||||
0x0252 ConnectRemoteCdImage Connect or Disconnect a CD/DVD .iso image on a
|
0x0252 ConnectRemoteCdImage Connect or Disconnect a CD/DVD .iso image on a
|
||||||
Remote Image Mount (NFS or CIFS Share )
|
Remote Image Mount (NFS or CIFS Share )
|
||||||
0x0253 ConnectRemoteHdImage Connect or Disconnect a Hard Disk image on a
|
0x0253 ConnectRemoteHdImage Connect or Disconnect a Hard Disk image on a
|
||||||
@ -627,6 +644,53 @@ def get_irmc_version(report):
|
|||||||
return version
|
return version
|
||||||
|
|
||||||
|
|
||||||
|
def get_irmc_version_str(report):
|
||||||
|
"""extract iRMC OS and iRMC firmware version from SCCI report
|
||||||
|
|
||||||
|
This function returns iRMC OS name and iRMC firmware version
|
||||||
|
:param report: SCCI report element
|
||||||
|
:returns: a tuple of string (iRMC OS name, iRMC FW version)
|
||||||
|
"""
|
||||||
|
|
||||||
|
version = get_irmc_version(report)
|
||||||
|
return version.get('Name'), version.find('Firmware').text
|
||||||
|
|
||||||
|
|
||||||
|
def support_virtual_fd_str(irmc_os, fw_version):
|
||||||
|
"""determine iRMC supports virtual floppy disk
|
||||||
|
|
||||||
|
This function determines whether iRMC supports virtual floppy disk
|
||||||
|
based on provided iRMC OS & iRMC firmware version
|
||||||
|
:param irmc_os: string representing iRMC OS
|
||||||
|
:param fw_version: string representing iRMC firmware version
|
||||||
|
:returns: boolean
|
||||||
|
"""
|
||||||
|
|
||||||
|
version_head = FW_VERSION_HEAD_PATTERN.match(fw_version)
|
||||||
|
|
||||||
|
if S4_PATTERN.match(irmc_os):
|
||||||
|
if version_head and float(version_head.group()) <= S4_FD_SUPPORT_UPPER:
|
||||||
|
return True
|
||||||
|
elif S5_PATTERN.match(irmc_os):
|
||||||
|
if version_head and float(version_head.group()) <= S5_FD_SUPPORT_UPPER:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def support_virtual_fd(report):
|
||||||
|
"""determine iRMC supports virtual floppy disk
|
||||||
|
|
||||||
|
This function determines whether iRMC supports virtual floppy disk
|
||||||
|
based on SCCI report
|
||||||
|
:param report: SCCI report element
|
||||||
|
:returns: boolean
|
||||||
|
"""
|
||||||
|
|
||||||
|
irmc_os, fwv = get_irmc_version_str(report)
|
||||||
|
return support_virtual_fd_str(irmc_os, fwv)
|
||||||
|
|
||||||
|
|
||||||
def get_essential_properties(report, prop_keys):
|
def get_essential_properties(report, prop_keys):
|
||||||
"""get essential properties
|
"""get essential properties
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user