diff --git a/bin/plug_ins/Auto_reboot/cp_cleanup b/bin/plug_ins/Auto_reboot/cp_cleanup
new file mode 120000
index 0000000..2cb0b31
--- /dev/null
+++ b/bin/plug_ins/Auto_reboot/cp_cleanup
@@ -0,0 +1 @@
+cp_master
\ No newline at end of file
diff --git a/bin/plug_ins/Auto_reboot/cp_master b/bin/plug_ins/Auto_reboot/cp_master
new file mode 100755
index 0000000..36d40f2
--- /dev/null
+++ b/bin/plug_ins/Auto_reboot/cp_master
@@ -0,0 +1,121 @@
+#!/usr/bin/env python
+
+r"""
+Set the auto_boot policy according to the caller's wishes.
+"""
+
+import os
+import sys
+
+save_path_0 = sys.path[0]
+del sys.path[0]
+
+from gen_print import *
+from gen_valid import *
+from gen_arg import *
+from gen_misc import *
+from gen_cmd import *
+from gen_plug_in_utils import *
+from gen_call_robot import *
+
+# Restore sys.path[0].
+sys.path.insert(0, save_path_0)
+
+# Set exit_on_error for gen_valid functions.
+set_exit_on_error(True)
+
+parser = argparse.ArgumentParser(
+    usage='%(prog)s [OPTIONS]',
+    description="%(prog)s will set the auto_boot policy according to the"
+        + " user's wishes.",
+    formatter_class=argparse.RawTextHelpFormatter,
+    prefix_chars='-+')
+
+
+# Populate stock_list with options we want.
+stock_list = [("test_mode", get_plug_default("test_mode", 0)),
+              ("quiet", get_plug_default("quiet", 0)),
+              ("debug", get_plug_default("debug", 0))]
+
+AUTO_REBOOT_DISABLE = "1"
+
+def exit_function(signal_number=0,
+                  frame=None):
+    r"""
+    Execute whenever the program ends normally or with the signals that we
+    catch (i.e. TERM, INT).
+    """
+
+    dprint_executing()
+    dprint_var(signal_number)
+
+    # Your cleanup code here.
+
+    qprint_pgm_footer()
+
+
+def signal_handler(signal_number,
+                   frame):
+    r"""
+    Handle signals.  Without a function to catch a SIGTERM or SIGINT, our
+    program would terminate immediately with return code 143 and without
+    calling our exit_function.
+    """
+
+    # Our convention is to set up exit_function with atexit.register() so
+    # there is no need to explicitly call exit_function from here.
+
+    dprint_executing()
+
+    # Calling exit prevents us from returning to the code that was running
+    # when we received the signal.
+    exit(0)
+
+
+def validate_parms():
+
+    r"""
+    Validate program parameters, etc.  Return True or False (i.e. pass/fail)
+    accordingly.
+    """
+
+    get_plug_vars()
+
+    valid_value(AUTOBOOT_OPENBMC_HOST, ["", None])
+    global AUTO_REBOOT_DISABLE
+    if pgm_name == "cp_cleanup":
+        AUTO_REBOOT_DISABLE = 0
+    else:
+        valid_value(AUTO_REBOOT_DISABLE, valid_values=["0", "1"])
+        AUTO_REBOOT_DISABLE = int(AUTO_REBOOT_DISABLE)
+
+    gen_post_validation(exit_function, signal_handler)
+
+
+def main():
+
+    gen_get_options(parser, stock_list)
+
+    validate_parms()
+
+    qprint_pgm_header()
+
+    dprint_plug_vars()
+
+    init_robot_out_parms(get_plug_in_package_name() + "." + pgm_name + ".")
+
+    lib_file_path = init_robot_file_path("lib/utils.robot")
+
+    keyword_string = "Set Auto Reboot  ${%i}" % AUTO_REBOOT_DISABLE
+
+    cmd_buf = create_robot_cmd_string("extended/run_keyword.robot",
+                                      OPENBMC_HOST, REST_USERNAME,
+                                      REST_PASSWORD, keyword_string,
+                                      lib_file_path, quiet, test_mode, debug,
+                                      outputdir, output, log, report)
+    if not robot_cmd_fnc(cmd_buf):
+        print_error_report("Robot command execution failed.")
+        exit(1)
+
+
+main()
diff --git a/bin/plug_ins/Auto_reboot/cp_post_reboot b/bin/plug_ins/Auto_reboot/cp_post_reboot
new file mode 120000
index 0000000..2cb0b31
--- /dev/null
+++ b/bin/plug_ins/Auto_reboot/cp_post_reboot
@@ -0,0 +1 @@
+cp_master
\ No newline at end of file
diff --git a/bin/plug_ins/Auto_reboot/cp_pre_boot b/bin/plug_ins/Auto_reboot/cp_pre_boot
new file mode 120000
index 0000000..2cb0b31
--- /dev/null
+++ b/bin/plug_ins/Auto_reboot/cp_pre_boot
@@ -0,0 +1 @@
+cp_master
\ No newline at end of file
diff --git a/bin/plug_ins/Auto_reboot/cp_setup b/bin/plug_ins/Auto_reboot/cp_setup
new file mode 120000
index 0000000..2cb0b31
--- /dev/null
+++ b/bin/plug_ins/Auto_reboot/cp_setup
@@ -0,0 +1 @@
+cp_master
\ No newline at end of file
diff --git a/bin/plug_ins/Auto_reboot/integrated b/bin/plug_ins/Auto_reboot/integrated
new file mode 100755
index 0000000..050dfc4
--- /dev/null
+++ b/bin/plug_ins/Auto_reboot/integrated
@@ -0,0 +1,2 @@
+# The presence of this file tells our software that this plug-in is
+# integrated.  In other words, the user can't choose to unselect it.
diff --git a/bin/plug_ins/Auto_reboot/parm_def b/bin/plug_ins/Auto_reboot/parm_def
new file mode 100755
index 0000000..748be18
--- /dev/null
+++ b/bin/plug_ins/Auto_reboot/parm_def
@@ -0,0 +1,2 @@
+# Indicates whether auto_boot should be disabled.
+disable=boolean
diff --git a/bin/plug_ins/Auto_reboot/supports_obmc b/bin/plug_ins/Auto_reboot/supports_obmc
new file mode 100755
index 0000000..ffa0963
--- /dev/null
+++ b/bin/plug_ins/Auto_reboot/supports_obmc
@@ -0,0 +1,2 @@
+# The presence of this file tells programs like validate_plug_ins.py that
+# this plug-in supports OBMC.
diff --git a/bin/process_plug_in_packages.py b/bin/process_plug_in_packages.py
index fc9f64b..900dd31 100755
--- a/bin/process_plug_in_packages.py
+++ b/bin/process_plug_in_packages.py
@@ -238,7 +238,13 @@
         status_dir_path =\
             add_trailing_slash(os.environ.get("STATUS_DIR_PATH",
                                               os.environ['HOME']
-                                              + "/autoipl/status/"))
+                                              + "/status/"))
+        if not os.path.isdir(status_dir_path):
+            AUTOBOOT_EXECDIR = \
+                add_trailing_slash(os.environ.get("AUTOBOOT_EXECDIR", ""))
+            status_dir_path = AUTOBOOT_EXECDIR + "logs/"
+            if not os.path.exists(status_dir_path):
+                os.makedirs(status_dir_path)
         status_file_name = autoscript_prefix + "." + file_date_time_stamp() \
             + ".status"
         autoscript_subcmd = "autoscript --status_dir_path=" + status_dir_path\
diff --git a/extended/obmc_boot_test_resource.robot b/extended/obmc_boot_test_resource.robot
index 9c9dbc6..8fc3907 100644
--- a/extended/obmc_boot_test_resource.robot
+++ b/extended/obmc_boot_test_resource.robot
@@ -13,20 +13,24 @@
 # Create parm_list containing all of our program parameters.  This is used by
 # 'Rqprint Pgm Header'
 @{parm_list}                openbmc_nickname  openbmc_host  openbmc_username
-...  openbmc_password  os_host  os_username  os_password  pdu_host
-...  pdu_username  pdu_password  pdu_slot_no  openbmc_serial_host
-...  openbmc_serial_port  stack_mode  boot_stack  boot_list  max_num_tests
-...  plug_in_dir_paths  status_file_path  openbmc_model  boot_pass  boot_fail
-...  ffdc_dir_path_style  ffdc_check  ffdc_only  ffdc_function_list
-...  state_change_timeout  power_on_timeout  power_off_timeout
-...  boot_fail_threshold  delete_errlogs  call_post_stack_plug  test_mode
-...  quiet  debug
+...  openbmc_password  rest_username  rest_password  ipmi_username
+...  ipmi_password  os_host  os_username  os_password  pdu_host  pdu_username
+...  pdu_password  pdu_slot_no  openbmc_serial_host  openbmc_serial_port
+...  stack_mode  boot_stack  boot_list  max_num_tests  plug_in_dir_paths
+...  status_file_path  openbmc_model  boot_pass  boot_fail  ffdc_dir_path_style
+...  ffdc_check  ffdc_only  ffdc_function_list  state_change_timeout
+...  power_on_timeout  power_off_timeout  boot_fail_threshold  delete_errlogs
+...  call_post_stack_plug  test_mode  quiet  debug
 
 # Initialize each program parameter.
 ${openbmc_host}             ${EMPTY}
 ${openbmc_nickname}         ${openbmc_host}
 ${openbmc_username}         root
 ${openbmc_password}         0penBmc
+${rest_username}            ${openbmc_username}
+${rest_password}            ${openbmc_password}
+${ipmi_username}            ${openbmc_username}
+${ipmi_password}            ${openbmc_password}
 ${os_host}                  ${EMPTY}
 ${os_username}              root
 ${os_password}              P@ssw0rd
diff --git a/lib/gen_call_robot.py b/lib/gen_call_robot.py
index e336229..3944c79 100755
--- a/lib/gen_call_robot.py
+++ b/lib/gen_call_robot.py
@@ -50,7 +50,7 @@
         os.environ.get("TMP_ROBOT_DIR_PATH",
                        os.environ.get("STATUS_DIR_PATH",
                                       os.environ.get("HOME", ".")
-                                      + "/autoipl/status"))
+                                      + "/status"))
     outputdir = gm.add_trailing_slash(outputdir)
     seconds = time.time()
     loc_time = time.localtime(seconds)
@@ -259,7 +259,7 @@
 
     Would return a string something like this.
     robot -v OPENBMC_HOST:beye6 -v quiet:0 -v test_mode:1 -v debug:1
-    --outputdir=/gsa/ausgsa/projects/a/autoipl/status
+    --outputdir=/gsa/ausgsa/projects/a/status
     --output=beye6.OS_Console.output.xml --log=beye6.OS_Console.log.html
     --report=beye6.OS_Console.report.html tools/start_sol_console.robot
     """
@@ -370,7 +370,7 @@
     # to FFDC cleanup.
     target_dir_path = os.environ.get("FFDC_DIR_PATH",
                                      os.environ.get("HOME", ".")
-                                     + "/autoipl/ffdc")
+                                     + "/ffdc")
     target_dir_path = gm.add_trailing_slash(target_dir_path)
 
     targ_file_list = [re.sub(".*/", target_dir_path, x)
@@ -440,6 +440,10 @@
         PATH_LIST = os.environ.get("PATH", "").split(":")
         if python27_path in PATH_LIST:
             NEW_PATH_LIST.append(python27_path)
+        # Make sure robot can be found in robot jail.
+        robot_dir_path = os.path.dirname(gm.which('robot'))
+        if robot_dir_path in PATH_LIST:
+            NEW_PATH_LIST.append(robot_dir_path)
         NEW_PATH_LIST.extend(["/usr/local/sbin", "/usr/local/bin", "/usr/sbin",
                               "/usr/bin", "/sbin", "/bin"])
         PATH = ":".join(NEW_PATH_LIST)
diff --git a/lib/gen_robot_plug_in.py b/lib/gen_robot_plug_in.py
index a89e07c..31236c4 100755
--- a/lib/gen_robot_plug_in.py
+++ b/lib/gen_robot_plug_in.py
@@ -213,6 +213,8 @@
 
     if proc_plug_pkg_rc != 0:
         hex = 1
+        if quiet:
+            os.system("cat " + temp_file_path + " >&2")
         if grep_rc != 0:
             gp.print_varx("grep_rc", grep_rc, hex)
         gp.print_varx("proc_plug_pkg_rc", proc_plug_pkg_rc, hex)
diff --git a/lib/obmc_boot_test.py b/lib/obmc_boot_test.py
index 4aa63cd..f0b6ad3 100755
--- a/lib/obmc_boot_test.py
+++ b/lib/obmc_boot_test.py
@@ -242,7 +242,7 @@
     additional_values = ["program_pid", "master_pid", "ffdc_dir_path",
                          "status_dir_path", "base_tool_dir_path",
                          "ffdc_list_file_path", "ffdc_report_list_path",
-                         "ffdc_summary_list_path"]
+                         "ffdc_summary_list_path", "execdir"]
 
     plug_in_vars = parm_list + additional_values
 
@@ -417,6 +417,10 @@
     grv.rvalid_value("openbmc_host")
     grv.rvalid_value("openbmc_username")
     grv.rvalid_value("openbmc_password")
+    grv.rvalid_value("rest_username")
+    grv.rvalid_value("rest_password")
+    grv.rvalid_value("ipmi_username")
+    grv.rvalid_value("ipmi_password")
     if os_host != "":
         grv.rvalid_value("os_username")
         grv.rvalid_value("os_password")
@@ -677,7 +681,8 @@
         gp.qprintn(more_header_info)
     gp.qpvars(host_name, host_ip, openbmc_nickname, openbmc_host,
               openbmc_host_name, openbmc_ip, openbmc_username,
-              openbmc_password, os_host, os_host_name, os_ip, os_username,
+              openbmc_password, rest_username, rest_password, ipmi_username,
+              ipmi_password, os_host, os_host_name, os_ip, os_username,
               os_password, pdu_host, pdu_host_name, pdu_ip, pdu_username,
               pdu_password, pdu_slot_no, openbmc_serial_host,
               openbmc_serial_host_name, openbmc_serial_ip, openbmc_serial_port)
