Changes to boot data structures.

- Added new boot test types.
- Changed the order of boot tests for clarity.
- Removed Power_cycle list.
- Created OBMC_reboot and OS_reboot lists.
- Added new boot test types to boot_table.json.

Change-Id: I2ef60d4cc2567cb00fa9f768915f3e8146863e06
Signed-off-by: Michael Walsh <micwalsh@us.ibm.com>
diff --git a/data/boot_table.json b/data/boot_table.json
index 0c69f2b..b2fd517 100644
--- a/data/boot_table.json
+++ b/data/boot_table.json
@@ -1,7 +1,6 @@
-# 2017/02/20 Note: Commenting out 'boot_progress' requirements until they are working in product code.
-# TODO:  Uncomment the boot_progress lines when support is re-introduced.
 {
-    # Note: "IPMI Power On" will be added soon.
+    # Power on boot types:
+
     # Initiate a power on using the REST API interface.
     "REST Power On": {
         "start": {
@@ -21,6 +20,29 @@
         "method_type": "keyword",
         "method": "Initiate Power On  wait=${0}"
     },
+    # Initiate a power on using the IPMI interface.
+    "IPMI Power On": {
+        "start": {
+            "chassis": "^Off$",
+            "boot_progress": "^Off$",
+            "host": "^Off$"
+        },
+        "end": {
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS$",
+            "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",
+        "lib_file_path": "ipmi_client.robot"
+    },
+
+    # Power off boot types:
+
     # Initiate a power off using the REST API interface.
     "REST Power Off": {
         "start": {
@@ -40,42 +62,45 @@
         "method_type": "keyword",
         "method": "Initiate Power Off"
     },
-    # Run a "reboot" on the OBMC..
-    "OBMC Reboot": {
+    # Initiate a power off using the IPMI interface.
+    "IPMI Power Off": {
         "start": {
-            "chassis": "^Off$"
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS$",
+            "host": "^Running$"
         },
         "end": {
             "chassis": "^Off$",
             "boot_progress": "^Off$",
-            "host": "^Off$"
-        },
-        "bmc_reboot": 1,
-        "method_type": "keyword",
-        "method": "Open Connection And Log In ; Start Command  /sbin/reboot"
-    },
-    # Run a "reboot" command on the OS_HOST.
-    "Host Reboot": {
-        "start": {
-            "chassis": "^On$",
-            "boot_progress": "^FW Progress, Starting OS$",
-            "host": "^Running$",
-            "os_ping": "^1$",
-            "os_login": "^1$",
-            "os_run_cmd": "^1$"
-        },
-        "end": {
-            "chassis": "^On$",
-            "boot_progress": "^FW Progress, Starting OS$",
-            "host": "^Running$",
-            "os_ping": "^1$",
-            "os_login": "^1$",
-            "os_run_cmd": "^1$"
+            "host": "^Off$",
+            "os_ping": "^0$",
+            "os_login": "^0$",
+            "os_run_cmd": "^0$"
         },
         "bmc_reboot": 0,
         "method_type": "keyword",
-        "method": "utils.Initiate OS Host Reboot",
-        "lib_file_path": "utils.robot"
+        "method": "Run External IPMI Standard Command  power off",
+        "lib_file_path": "ipmi_client.robot"
+    },
+    # Initiate a power soft using the IPMI interface.
+    "IPMI Power Soft": {
+        "start": {
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS$",
+            "host": "^Running$"
+        },
+        "end": {
+            "chassis": "^Off$",
+            "boot_progress": "^Off$",
+            "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",
+        "lib_file_path": "ipmi_client.robot"
     },
     # Run a "shutdown" command on the OS_HOST.
     "Host Power Off": {
@@ -100,6 +125,103 @@
         "method": "utils.Initiate OS Host Power Off",
         "lib_file_path": "utils.robot"
     },
+
+    # OBMC re-boot boot types:
+
+    # Run a "reboot" on the OBMC.
+    "OBMC Reboot": {
+        "start": {
+            "chassis": "^Off$"
+        },
+        "end": {
+            "chassis": "^Off$",
+            "boot_progress": "^Off$",
+            "host": "^Off$"
+        },
+        "bmc_reboot": 1,
+        "method_type": "keyword",
+        "method": "Open Connection And Log In ; Start Command  /sbin/reboot"
+    },
+    # Cycle AC via the PDU.
+    "PDU AC Cycle": {
+        "start": {
+            "chassis": "^Off$"
+        },
+        "end": {
+            "chassis": "^Off$",
+            "boot_progress": "^Off$",
+            "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.
+    "IPMI MC Reset Warm": {
+        "start": {
+            "chassis": "^Off$"
+        },
+        "end": {
+            "chassis": "^Off$",
+            "boot_progress": "^Off$",
+            "host": "^Off$"
+        },
+        "bmc_reboot": 1,
+        "method_type": "keyword",
+        "method": "Run External IPMI Standard Command  mc reset warm ; 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": {
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS$",
+            "host": "^Running$",
+            "os_ping": "^1$",
+            "os_login": "^1$",
+            "os_run_cmd": "^1$"
+        },
+        "end": {
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS$",
+            "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",
+        "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": {
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS$",
+            "host": "^Running$",
+            "os_ping": "^1$",
+            "os_login": "^1$",
+            "os_run_cmd": "^1$"
+        },
+        "end": {
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS$",
+            "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",
+        "lib_file_path": "ipmi_client.robot"
+    },
     # Do an auto reboot by setting auto reboot to "yes" and going to quiesce state.
     "Auto Reboot": {
         "start": {
@@ -122,5 +244,28 @@
         "method_type": "keyword",
         "method": "utils.Initiate Auto Reboot",
         "lib_file_path": "utils.robot"
+    },
+    # Run a "reboot" command on the OS_HOST.
+    "Host Reboot": {
+        "start": {
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS$",
+            "host": "^Running$",
+            "os_ping": "^1$",
+            "os_login": "^1$",
+            "os_run_cmd": "^1$"
+        },
+        "end": {
+            "chassis": "^On$",
+            "boot_progress": "^FW Progress, Starting OS$",
+            "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"
     }
 }