diff --git a/systest/Generate_OS_Inventory.robot b/systest/Generate_OS_Inventory.robot
new file mode 100644
index 0000000..ced7b75
--- /dev/null
+++ b/systest/Generate_OS_Inventory.robot
@@ -0,0 +1,118 @@
+***Settings***
+Documentation      This module is for generating 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.
+
+Library            String
+Library            Collections
+Library            OperatingSystem
+
+***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_file_path}  inventory.json
+${yaml_file_path}  inventory.yaml
+
+***Test Case***
+
+Create YAML Inventory File
+    [Documentation]  Create a JSON inventory file, and make a YAML copy.
+    [Tags]  Create_YAML_Inventory_File
+    Compile Inventory JSON
+    RUN  json2yaml ${json_file_path} ${yaml_file_path}
+
+***Keywords***
+
+Compile Inventory JSON
+    [Documentation]  Compile the Inventory into a JSON file.
+    Create File  ${json_file_path}
+    Write New JSON List  ${json_file_path}  Inventory
+    Retrieve HW Info And Write  processor  ${json_file_path}
+    Retrieve HW Info And Write  memory  ${json_file_path}
+    Retrieve HW Info And Write List  ${I/O}  ${json_file_path}  I/O  last
+    Close New JSON List  ${json_file_path}
+
+Write New JSON List
+    [Documentation]  Start a new JSON list element in file.
+    [Arguments]  ${json_file_path}  ${json_field_name}
+    # Description of argument(s):
+    # json_file_path   Name of file to write to.
+    # json_field_name  Name to give json list element.
+    Append to File  ${json_file_path}  { "${json_field_name}" : [
+
+Close New JSON List
+    [Documentation]  Close JSON list element in file.
+    [Arguments]  ${json_file_path}
+    # Description of argument(s):
+    # json_file_path  Path of file to write to.
+    Append to File  ${json_file_path}  ]}
+
+Retrieve HW Info And Write
+    [Documentation]  Retrieve and write info, add a comma if not last item.
+    [Arguments]  ${class}  ${json_file_path}  ${last}=false
+    # Description of argument(s):
+    # class           Device class to retrieve with lshw.
+    # json_file_path  Path of file to write to.
+    # last            Is this the last element in the parent JSON?
+    Write New JSON List  ${json_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_file_path}  ${output}
+    Close New JSON List  ${json_file_path}
+    Run Keyword if  '${last}' == 'false'
+    ...  Append to File  ${json_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_file_path}  ${json_field_name}  ${last}=false
+    # Description of argument(s):
+    # list             The list of devices classes to retrieve with lshw.
+    # json_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_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_file_path}  true
+    \  ...  ELSE  Retrieve HW Info And Write  ${class}  ${json_file_path}
+    Close New JSON List  ${json_file_path}
+    Run Keyword if  '${last}' == 'false'
+    ...  Append to File  ${json_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} =  Run  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}
\ No newline at end of file
