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_lists/All b/data/boot_lists/All
index 3bc25c4..b36bd36 100755
--- a/data/boot_lists/All
+++ b/data/boot_lists/All
@@ -2,13 +2,27 @@
 Out of Band Code Update
 REST Power On
 REST Power On (mfg)
-Host Reboot
-Host Reboot (mfg)
-Auto Reboot
-Auto Reboot (mfg)
+IPMI Power On
+IPMI Power On (mfg)
 REST Power Off
 REST Power Off (mfg)
+IPMI Power Off
+IPMI Power Off (mfg)
+IPMI Power Soft
+IPMI Power Soft (mfg)
 Host Power Off
 Host Power Off (mfg)
 OBMC Reboot
 OBMC Reboot (mfg)
+PDU AC Cycle
+PDU AC Cycle (mfg)
+IPMI MC Reset Warm
+IPMI MC Reset Warm (mfg)
+IPMI Power Cycle
+IPMI Power Cycle (mfg)
+IPMI Power Reset
+IPMI Power Reset (mfg)
+Auto Reboot
+Auto Reboot (mfg)
+Host Reboot
+Host Reboot (mfg)
diff --git a/data/boot_lists/Manufacturing b/data/boot_lists/Manufacturing
index de522ae..bc50bf1 100755
--- a/data/boot_lists/Manufacturing
+++ b/data/boot_lists/Manufacturing
@@ -1,6 +1,13 @@
 REST Power On (mfg)
+IPMI Power On (mfg)
 REST Power Off (mfg)
-OBMC Reboot (mfg)
-Host Reboot (mfg)
+IPMI Power Off (mfg)
+IPMI Power Soft (mfg)
 Host Power Off (mfg)
+OBMC Reboot (mfg)
+PDU AC Cycle (mfg)
+IPMI MC Reset Warm (mfg)
+IPMI Power Cycle (mfg)
+IPMI Power Reset (mfg)
 Auto Reboot (mfg)
+Host Reboot (mfg)
diff --git a/data/boot_lists/OBMC_reboot b/data/boot_lists/OBMC_reboot
new file mode 100755
index 0000000..f234706
--- /dev/null
+++ b/data/boot_lists/OBMC_reboot
@@ -0,0 +1,4 @@
+OBMC Reboot
+OBMC Reboot (mfg)
+PDU AC Cycle
+PDU AC Cycle (mfg)
diff --git a/data/boot_lists/OS_reboot b/data/boot_lists/OS_reboot
new file mode 100755
index 0000000..6a531d8
--- /dev/null
+++ b/data/boot_lists/OS_reboot
@@ -0,0 +1,10 @@
+IPMI MC Reset Warm
+IPMI MC Reset Warm (mfg)
+IPMI Power Cycle
+IPMI Power Cycle (mfg)
+IPMI Power Reset
+IPMI Power Reset (mfg)
+Auto Reboot
+Auto Reboot (mfg)
+Host Reboot
+Host Reboot (mfg)
diff --git a/data/boot_lists/Power_cycle b/data/boot_lists/Power_cycle
deleted file mode 100755
index 9046f11..0000000
--- a/data/boot_lists/Power_cycle
+++ /dev/null
@@ -1,6 +0,0 @@
-BMC Host Reboot
-BMC Host Reboot (mfg)
-BMC Power Reset
-BMC Power Reset (mfg)
-BMC Power Cycle
-BMC Power Cycle (mfg)
diff --git a/data/boot_lists/Power_off b/data/boot_lists/Power_off
index e5f9193..268b8da 100755
--- a/data/boot_lists/Power_off
+++ b/data/boot_lists/Power_off
@@ -1,2 +1,8 @@
 REST Power Off
+REST Power Off (mfg)
+IPMI Power Off
+IPMI Power Off (mfg)
+IPMI Power Soft
+IPMI Power Soft (mfg)
 Host Power Off
+Host Power Off (mfg)
diff --git a/data/boot_lists/Power_on b/data/boot_lists/Power_on
index ab99f2e..ff4a0e6 100755
--- a/data/boot_lists/Power_on
+++ b/data/boot_lists/Power_on
@@ -1 +1,4 @@
 REST Power On
+REST Power On (mfg)
+IPMI Power On
+IPMI Power On (mfg)
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"
     }
 }