Automate testcase to verify BIOS attribute using pldmtool.
- Verify SetBIOSAttributeCurrentValue
- Verify GetBIOSAttributeCurrentValueByHandle
Change-Id: Ib9d6cbbcd2f34a9904b08fa72549822b54291be1
Signed-off-by: Sridevi Ramesh <sridevra@in.ibm.com>
diff --git a/lib/pldm_utils.py b/lib/pldm_utils.py
index 9008d57..e22af25 100644
--- a/lib/pldm_utils.py
+++ b/lib/pldm_utils.py
@@ -44,3 +44,63 @@
stdout, stderr, rc = bsu.bmc_execute_command('pldmtool ' + option_string, **bsu_options)
return json.loads(stdout)
+
+
+def GenerateBIOSAttrHandleValueDict(attr_val_table_data):
+ """
+ From pldmtool bios GetBIOSTable of AttributeValueTable generate dictionary of
+ for BIOS attribute and its value.
+
+ Description of argument(s):
+ attr_val_table_data pldmtool output from GetBIOSTable table type AttributeValueTable
+ e.g.
+ [{
+ "AttributeHandle": 20,
+ "AttributeNameHandle": "23(pvm-pcie-error-inject)",
+ "AttributeType": "BIOSEnumeration",
+ "NumberOfPossibleValues": 2,
+ "PossibleValueStringHandle[0]": "3(Disabled)",
+ "PossibleValueStringHandle[1]": "4(Enabled)",
+ "NumberOfDefaultValues": 1,
+ "DefaultValueStringHandleIndex[0]": 1,
+ "StringHandle": "4(Enabled)"
+ },
+ {
+ "AttributeHandle": 26,
+ "AttributeNameHandle": "28(pvm_fw_boot_side)",
+ "AttributeType": "BIOSEnumeration",
+ "NumberOfPossibleValues": 2,
+ "PossibleValueStringHandle[0]": "11(Perm)",
+ "PossibleValueStringHandle[1]": "15(Temp)",
+ "NumberOfDefaultValues": 1,
+ "DefaultValueStringHandleIndex[0]": 1,
+ "StringHandle": "15(Temp)"
+ }]
+
+ @return Dictionary of BIOS attribute and its value.
+ e.g. {
+ 'pvm_pcie_error_inject': ['Disabled', 'Enabled'],
+ 'pvm-fw-boot-side': ['Perm', 'Temp']
+ }
+ """
+
+ attr_val_data_dict = {}
+ for item in attr_val_table_data:
+ for attr in item:
+ if (attr == "NumberOfPossibleValues"):
+ value_list = []
+ for i in range(0, int(item[attr])):
+ attr_values = item["PossibleValueStringHandle[" + str(i) + "]"]
+ value = re.search(r'\((.*?)\)', attr_values).group(1)
+ if value:
+ # Example:
+ # value = '"Power Off"'
+ if ' ' in value:
+ value = '"' + value + '"'
+ value_list.append(value)
+ else:
+ value_list.append('')
+
+ attr_handle = re.findall(r'\(.*?\)', item["AttributeNameHandle"])
+ attr_val_data_dict[attr_handle[0][1:-1]] = value_list
+ return attr_val_data_dict