Add JSON inventory to hardbootme test
In utils_keywords.py: Minor change in comment block.
In htx_hardbootme_test: Fail message to comply with standards.
test results:
/gsa/ausgsa/home/s/s/ssombar/bmctest/openbmc-test-automation
file out*xml
solves openbmc-test-automation/issues/626
Change-Id: I0882ee4994230d743b22e40d21132182fe8bc95d
Signed-off-by: Steven Sombar <ssombar@us.ibm.com>
diff --git a/systest/Generate_OS_Inventory.robot b/systest/Generate_OS_Inventory.robot
old mode 100644
new mode 100755
index 733fabe..c63696d
--- a/systest/Generate_OS_Inventory.robot
+++ b/systest/Generate_OS_Inventory.robot
@@ -1,6 +1,6 @@
***Settings***
-Documentation This module is for generating an inventory file using lshw
-... commands. It will create a JSON file and a YAML file. it
+Documentation This module generates an inventory file using lshw
+... commands. It will create a JSON file and a YAML file. It
... will get the processor, memory and specified I/O devices.
... Requires access to lshw, and json2yaml OS commands. This
... robot file should be run as root or sudo for lshw.
@@ -11,114 +11,13 @@
Resource ../syslib/utils_os.robot
***Variables***
-# List of I/O Devices to Collect
-@{I/O} communication disk display generic input multimedia
-... network printer tape
-# Paths of the JSON and YAML files
-${json_tmp_file_path} ${EXECDIR}${/}inventory.json
-${json_file_path} ${EXECDIR}${/}data${/}os_inventory.json
-${yaml_file_path} ${EXECDIR}${/}inventory.yaml
+# Path of the JSON Inventory file
+${json_inventory_file_path} ${EXECDIR}${/}data${/}os_inventory.json
***Test Case***
-Create YAML Inventory File
- [Documentation] Create a JSON inventory file, and make a YAML copy.
- [Tags] Create_YAML_Inventory_File
- Login To OS
- Compile Inventory JSON
- Run json2yaml ${json_tmp_file_path} ${yaml_file_path}
- # Format to JSON pretty print to file.
- Run python -m json.tool ${json_tmp_file_path} > ${json_file_path}
-
-***Keywords***
-
-Compile Inventory JSON
- [Documentation] Compile the Inventory into a JSON file.
- Create File ${json_tmp_file_path}
- Write New JSON List ${json_tmp_file_path} Inventory
- Retrieve HW Info And Write processor ${json_tmp_file_path}
- Retrieve HW Info And Write memory ${json_tmp_file_path}
- Retrieve HW Info And Write List ${I/O} ${json_tmp_file_path} I/O last
- Close New JSON List ${json_tmp_file_path}
-
-Write New JSON List
- [Documentation] Start a new JSON list element in file.
- [Arguments] ${json_tmp_file_path} ${json_field_name}
- # Description of argument(s):
- # json_tmp_file_path Name of file to write to.
- # json_field_name Name to give json list element.
- Append to File ${json_tmp_file_path} { "${json_field_name}" : [
-
-Close New JSON List
- [Documentation] Close JSON list element in file.
- [Arguments] ${json_tmp_file_path}
- # Description of argument(s):
- # json_tmp_file_path Path of file to write to.
- Append to File ${json_tmp_file_path} ]}
-
-Retrieve HW Info And Write
- [Documentation] Retrieve and write info, add a comma if not last item.
- [Arguments] ${class} ${json_tmp_file_path} ${last}=false
- # Description of argument(s):
- # class Device class to retrieve with lshw.
- # json_tmp_file_path Path of file to write to.
- # last Is this the last element in the parent JSON?
- Write New JSON List ${json_tmp_file_path} ${class}
- ${output} = Retrieve Hardware Info ${class}
- ${output} = Clean Up String ${output}
- Run Keyword if ${output.__class__ is not type(None)}
- ... Append To File ${json_tmp_file_path} ${output}
- Close New JSON List ${json_tmp_file_path}
- Run Keyword if '${last}' == 'false'
- ... Append to File ${json_tmp_file_path} ,
-
-Retrieve HW Info And Write List
- [Documentation] Does a Retrieve/Write with a list of classes and
- ... encapsulates them into one large JSON element.
- [Arguments] ${list} ${json_tmp_file_path} ${json_field_name}
- ... ${last}=false
- # Description of argument(s):
- # list The list of devices classes to retrieve with lshw.
- # json_tmp_file_path Path of file to write to.
- # json_field_name Name of the JSON element to encapsulate this list.
- # last Is this the last element in the parent JSON?
- Write New JSON List ${json_tmp_file_path} ${json_field_name}
- : FOR ${class} IN @{list}
- \ ${tail} Get From List ${list} -1
- \ Run Keyword if '${tail}' == '${class}'
- \ ... Retrieve HW Info And Write ${class} ${json_tmp_file_path} true
- \ ... ELSE Retrieve HW Info And Write ${class} ${json_tmp_file_path}
- Close New JSON List ${json_tmp_file_path}
- Run Keyword if '${last}' == 'false'
- ... Append to File ${json_tmp_file_path} ,
-
-Retrieve Hardware Info
- [Documentation] Retrieves the lshw output of the device class as JSON.
- [Arguments] ${class}
- # Description of argument(s):
- # class Device class to retrieve with lshw.
- ${output} = Execute Command On OS lshw -c ${class} -json
- ${output} = Verify JSON string ${output}
- [Return] ${output}
-
-Verify JSON String
- [Documentation] Ensure the JSON string content is seperated by commas.
- [Arguments] ${unver_string}
- # Description of argument(s):
- # unver_string JSON String we will be checking for lshw comma errors.
- ${unver_string} = Convert to String ${unver_string}
- ${ver_string} = Replace String Using Regexp ${unver_string} }\\s*{ },{
- [Return] ${ver_string}
-
-Clean Up String
- [Documentation] Remove extra whitespace and trailing commas.
- [Arguments] ${dirty_string}
- # Description of argument(s):
- # dirty_string String that will be space stripped and have comma removed.
- ${clean_string} = Strip String ${dirty_string}
- ${last_char} = Get Substring ${clean_string} -1
- ${trimmed_string} = Get Substring ${clean_string} 0 -1
- ${clean_string} = Set Variable If '${last_char}' == ','
- ... ${trimmed_string} ${clean_string}
- [Return] ${clean_string}
+Create An Inventory
+ [Documentation] Snapshot system inventory to a JSON file.
+ [Tags] Inventory Test
+ Create JSON Inventory File ${json_inventory_file_path}