New x86 boot table and required changes
Changes:
- New boot table for x86 OpenBMC build which doesn't support
BootProgress.
- Initialize state.py boot_progress to make it optional if it
fails in state URI enumeration.
Note: We don't have x86 setup to test the changes.
To test use bellow option in robot CLI
-v BOOT_TABLE_PATH:data/boot_table_x86.json
Change-Id: I74e334ab30e4b2e35f2520870f6a002d9b5bf6b8
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/data/boot_table_x86.json b/data/boot_table_x86.json
new file mode 100644
index 0000000..412a5cf
--- /dev/null
+++ b/data/boot_table_x86.json
@@ -0,0 +1,768 @@
+{
+ # Power on boot types:
+
+ # Initiate a power on using the REST API interface.
+ "REST Power On": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Initiate Host Boot wait=${0}",
+ "lib_file_path": "state_manager.robot"
+ },
+ # Initiate a power on using the Redfish API interface.
+ "Redfish Power On": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "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 On",
+ "lib_file_path": "bmc_redfish_utils.robot"
+ },
+ # Initiate a power on using the IPMI interface.
+ "IPMI Power On": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Run External IPMI Standard Command power on -N 10 -R 1",
+ "lib_file_path": "ipmi_client.robot"
+ },
+
+ # Power off boot types:
+
+ # Initiate a power off using the REST API interface.
+ "REST Power Off": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$",
+ "os_ping": "^0$",
+ "os_login": "^0$",
+ "os_run_cmd": "^0$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Initiate Host PowerOff wait=${0}",
+ "lib_file_path": "state_manager.robot"
+ },
+ # Initiate a power off using the Redfish API interface.
+ "Redfish Power Off": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$",
+ "os_ping": "^0$",
+ "os_login": "^0$",
+ "os_run_cmd": "^0$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Redfish Power Operation GracefulShutdown",
+ "lib_file_path": "bmc_redfish_utils.robot"
+ },
+ # Initiate a hard power off using the REST API interface.
+ "REST Hard Power Off": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$",
+ "os_ping": "^0$",
+ "os_login": "^0$",
+ "os_run_cmd": "^0$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Hard Power Off wait=${0}",
+ "lib_file_path": "state_manager.robot"
+ },
+ # Initiate a hard power off using the Redfish API interface.
+ "Redfish Hard Power Off": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$",
+ "os_ping": "^0$",
+ "os_login": "^0$",
+ "os_run_cmd": "^0$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Redfish Power Operation ForceOff",
+ "lib_file_path": "bmc_redfish_utils.robot"
+ },
+ # Initiate a power off using the IPMI interface.
+ "IPMI Power Off": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$",
+ "os_ping": "^0$",
+ "os_login": "^0$",
+ "os_run_cmd": "^0$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Run External IPMI Standard Command power off -N 10 -R 1",
+ "lib_file_path": "ipmi_client.robot"
+ },
+ # Initiate a power soft using the IPMI interface.
+ "IPMI Power Soft": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$",
+ "os_ping": "^0$",
+ "os_login": "^0$",
+ "os_run_cmd": "^0$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Run External IPMI Standard Command power soft -N 10 -R 1",
+ "lib_file_path": "ipmi_client.robot"
+ },
+ # Run a "shutdown" command on the OS_HOST.
+ "Host Power Off": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$",
+ "os_ping": "^0$",
+ "os_login": "^0$",
+ "os_run_cmd": "^0$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "utils.Initiate OS Host Power Off",
+ "lib_file_path": "utils.robot"
+ },
+
+ # OBMC re-boot boot types:
+
+ # APOR - Auto Power On Restart - Note that this is functionally equivalent
+ # to 'PDU AC Cycle (run)'.
+ "APOR": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Set Global Variable ${PDU_TYPE} pdu ; Set Global Variable ${PDU_IP} ${PDU_HOST} ; PDU Power Cycle",
+ "lib_file_path": "pdu/pdu.robot:pdu/synaccess.robot"
+ },
+ # Run a "reboot" on the OBMC while host is running.
+ "OBMC Reboot (run)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "BMC Execute Command /sbin/reboot fork=${1}"
+ },
+ # Run a REST "reboot" on the OBMC while host is running.
+ "REST OBMC Reboot (run)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Initiate BMC Reboot wait=${0}",
+ "lib_file_path": "state_manager.robot"
+ },
+ # Run a Redfish "reboot" on the OBMC while host is running.
+ "Redfish OBMC Reboot (run)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Redfish BMC Reset Operation",
+ "lib_file_path": "bmc_redfish_utils.robot"
+ },
+ # Run a "reboot" on the OBMC while host is off.
+ "OBMC Reboot (off)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "BMC Execute Command /sbin/reboot fork=${1}"
+ },
+ # Run a "reboot" on the OBMC while host is off.
+ "REST OBMC Reboot (off)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Initiate BMC Reboot wait=${0}",
+ "lib_file_path": "state_manager.robot"
+ },
+ # Run a "reboot" on the OBMC while host is off.
+ "Redfish OBMC Reboot (off)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Redfish BMC Reset Operation",
+ "lib_file_path": "bmc_redfish_utils.robot"
+ },
+ # Cycle AC via the PDU while host is off.
+ "PDU AC Cycle (run)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Set Global Variable ${PDU_TYPE} pdu ; Set Global Variable ${PDU_IP} ${PDU_HOST} ; PDU Power Cycle",
+ "lib_file_path": "pdu/pdu.robot:pdu/synaccess.robot"
+ },
+ # Cycle AC via the PDU while host is off.
+ "PDU AC Cycle (off)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Set Global Variable ${PDU_TYPE} pdu ; Set Global Variable ${PDU_IP} ${PDU_HOST} ; PDU Power Cycle",
+ "lib_file_path": "pdu/pdu.robot:pdu/synaccess.robot"
+ },
+ # Initiate an mc reset warm using the IPMI interface while chassis is
+ # powered on.
+ "IPMI MC Reset Warm (run)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Run External IPMI Standard Command mc reset warm -N 10 -R 1 ; Printn",
+ "lib_file_path": "ipmi_client.robot:gen_print.py"
+ },
+ # Initiate an mc reset warm using the IPMI interface while chassis is
+ # powered off.
+ "IPMI MC Reset Warm (off)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Run External IPMI Standard Command mc reset warm -N 10 -R 1 ; Printn",
+ "lib_file_path": "ipmi_client.robot:gen_print.py"
+ },
+ # Initiate an mc reset cold using the IPMI interface while chassis is
+ # powered on.
+ "IPMI MC Reset Cold (run)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Run External IPMI Standard Command mc reset cold -N 10 -R 1 ; Printn",
+ "lib_file_path": "ipmi_client.robot:gen_print.py"
+ },
+ # Initiate an mc reset cold using the IPMI interface while chassis is
+ # powered off.
+ "IPMI MC Reset Cold (off)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Run External IPMI Standard Command mc reset cold -N 10 -R 1 ; Printn",
+ "lib_file_path": "ipmi_client.robot:gen_print.py"
+ },
+ # Initiate an mc reset warm using the IPMI standard interface while chassis
+ # is powered on.
+ "IPMI Std MC Reset Warm (run)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Run IPMI Standard Command mc reset warm -N 10 -R 1 ; Printn",
+ "lib_file_path": "ipmi_client.robot:gen_print.py"
+ },
+ # Initiate an mc reset warm using the IPMI standard interface while chassis
+ # is powered off.
+ "IPMI Std MC Reset Warm (off)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Run IPMI Standard Command mc reset warm -N 10 -R 1 ; Printn",
+ "lib_file_path": "ipmi_client.robot:gen_print.py"
+ },
+ # Initiate an mc reset cold using the IPMI standard interface while chassis
+ # is powered on.
+ "IPMI Std MC Reset Cold (run)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Run IPMI Standard Command mc reset cold -N 10 -R 1 ; Printn",
+ "lib_file_path": "ipmi_client.robot:gen_print.py"
+ },
+ # Initiate an mc reset cold using the IPMI standard interface while chassis
+ # is powered off.
+ "IPMI Std MC Reset Cold (off)": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^Off$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^Off$",
+ "operating_system": "^Inactive$",
+ "host": "^Off$"
+ },
+ "bmc_reboot": 1,
+ "method_type": "keyword",
+ "method": "Run IPMI Standard Command mc reset cold -N 10 -R 1 ; Printn",
+ "lib_file_path": "ipmi_client.robot:gen_print.py"
+ },
+
+ # Host OS re-boot boot types:
+
+ # Initiate a power cycle using the IPMI interface (equivalent to off/on).
+ "IPMI Power Cycle": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Run External IPMI Standard Command power cycle -N 10 -R 1",
+ "lib_file_path": "ipmi_client.robot"
+ },
+ # Initiate a power reset using the IPMI interface (equivalent to off/on).
+ # Functionally equivalent to "IPMI Power Cycle".
+ "IPMI Power Reset": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Run External IPMI Standard Command power reset -N 10 -R 1",
+ "lib_file_path": "ipmi_client.robot"
+ },
+ # Do an auto reboot by setting auto reboot to "yes" and going to quiesce state.
+ "Auto Reboot": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "utils.Initiate Auto Reboot 1000",
+ "lib_file_path": "utils.robot"
+ },
+ # Run a "reboot" command on the OS_HOST.
+ "Host Reboot": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "utils.Initiate OS Host Reboot",
+ "lib_file_path": "utils.robot"
+ },
+ # Initiate host reboot using the Redfish API interface (GracefulRestart).
+ "RF SYS GracefulRestart": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "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 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$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "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"
+ },
+ # OPAL Terminate Immediate.
+ "OPAL TI": {
+ "start": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "end": {
+ "rest": "^1$",
+ "chassis": "^On$",
+ "operating_system": "^BootComplete$",
+ "host": "^Running$",
+ "os_ping": "^1$",
+ "os_login": "^1$",
+ "os_run_cmd": "^1$"
+ },
+ "bmc_reboot": 0,
+ "method_type": "keyword",
+ "method": "Inject OPAL TI",
+ "lib_file_path": "open_power_utils.robot"
+ }
+}
diff --git a/lib/state.py b/lib/state.py
index d13e50a..02eb2bd 100755
--- a/lib/state.py
+++ b/lib/state.py
@@ -576,7 +576,10 @@
requested_chassis = ''
bmc = ''
requested_bmc = ''
- boot_progress = ''
+ # BootProgress state will get populated when state logic enumerates the
+ # state URI. This is to prevent state dictionary boot_progress value
+ # getting empty when the BootProgress is NOT found, making it optional.
+ boot_progress = 'NA'
operating_system = ''
host = ''
requested_host = ''