Add redfish host force restart boot type

Changes:
      - Added code to support new boot keyword.

Change-Id: Ic51ce535a09432dae653723f8ce852bc85e65763
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/data/boot_lists/All b/data/boot_lists/All
index b285de2..b44e899 100755
--- a/data/boot_lists/All
+++ b/data/boot_lists/All
@@ -62,6 +62,7 @@
 Host Reboot (mfg)
 Redfish Host Reboot
 Redfish Host Reboot (mfg)
+RF SYS ForceRestart
 pflash
 Out of Band Code Update
 OS Code Update
diff --git a/data/boot_lists/Manufacturing b/data/boot_lists/Manufacturing
index c837437..51143b3 100755
--- a/data/boot_lists/Manufacturing
+++ b/data/boot_lists/Manufacturing
@@ -30,3 +30,4 @@
 Auto Reboot (mfg)
 Host Reboot (mfg)
 Redfish Host Reboot (mfg)
+RF SYS ForceRestart (mfg)
diff --git a/data/boot_lists/OS_reboot b/data/boot_lists/OS_reboot
index e3387de..28eaec6 100755
--- a/data/boot_lists/OS_reboot
+++ b/data/boot_lists/OS_reboot
@@ -10,3 +10,4 @@
 Host Reboot (mfg)
 Redfish Host Reboot
 Redfish Host Reboot (mfg)
+RF SYS ForceRestart
diff --git a/data/boot_table.json b/data/boot_table.json
index df1a4b2..3b049f8 100644
--- a/data/boot_table.json
+++ b/data/boot_table.json
@@ -764,5 +764,32 @@
         "method_type": "keyword",
         "method": "Redfish Power Operation  GracefulRestart",
         "lib_file_path": "bmc_redfish_utils.robot"
+    },
+    # Initiate host reboot using the Redfish API interface (ForceRestart).
+    "RF SYS ForceRestart": {
+        "start": {
+            "rest": "^1$",
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS|OSStart$",
+            "operating_system": "^BootComplete$",
+            "host": "^Running$",
+            "os_ping": "^1$",
+            "os_login": "^1$",
+            "os_run_cmd": "^1$"
+        },
+        "end": {
+            "rest": "^1$",
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS|OSStart$",
+            "operating_system": "^BootComplete$",
+            "host": "^Running$",
+            "os_ping": "^1$",
+            "os_login": "^1$",
+            "os_run_cmd": "^1$"
+        },
+        "bmc_reboot": 0,
+        "method_type": "keyword",
+        "method": "Redfish Power Operation  ForceRestart",
+        "lib_file_path": "bmc_redfish_utils.robot"
     }
 }
diff --git a/lib/boot_utils.robot b/lib/boot_utils.robot
index 361f977..61bc876 100644
--- a/lib/boot_utils.robot
+++ b/lib/boot_utils.robot
@@ -850,6 +850,32 @@
     Run Key U  ${cmd_buf}
 
 
+RF SYS ForceRestart
+    [Documentation]  Do "RF SYS ForceRestart" boot test.
+    [Arguments]  ${stack_mode}=${stack_mode}  ${quiet}=${quiet}
+
+    # Description of argument(s):
+    # stack_mode                    If stack_mode is set to "skip", each test
+    #                               specified in the boot_stack is only
+    #                               performed if the machine is not already in
+    #                               the state that would normally result from
+    #                               running the given boot test.  Otherwise,
+    #                               the test is skipped.  If stack_mode is set
+    #                               to "normal", all tests from the boot_stack
+    #                               are performed.  "skip" mode is useful when
+    #                               you simply want the machine in a desired
+    #                               state.  The default value is the global
+    #                               value of "${stack_mode}"
+    # quiet                         If this parameter is set to ${1}, this
+    #                               keyword will print only essential
+    #                               information.  The default value is the
+    #                               global value of "${quiet}"
+
+    ${cmd_buf}  Catenate  OBMC Boot Test \ loc_boot_stack=RF SYS ForceRestart
+    ...  \ loc_stack_mode=${stack_mode} \ loc_quiet=${quiet}
+    Run Key U  ${cmd_buf}
+
+
 Smart Power Off
     [Documentation]  Do a smart power off.
     [Arguments]  ${quiet}=${QUIET}