On the server side, we should log both the start of a reboot and the
successful completion, and failures should be logged as ABORT messages
followed by an exception.
From: John Admanski <jadmanski@google.com>
Signed-off-by: Martin Bligh <mbligh@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@907 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/server/hosts/ssh_host.py b/server/hosts/ssh_host.py
index b79f63f..5b291a9 100644
--- a/server/hosts/ssh_host.py
+++ b/server/hosts/ssh_host.py
@@ -192,12 +192,15 @@
def _wait_for_restart(self, timeout):
if not self.wait_down(300): # Make sure he's dead, Jim
- self.__record("FAIL", None, "reboot")
- raise errors.AutoservRebootError("Host would not shut down")
+ self.__record("ABORT", None, "reboot", "failed")
+ raise errors.AutoservRebootError("Host did not shut down")
self.wait_up(timeout)
time.sleep(2) # this is needed for complete reliability
- if not self.wait_up(timeout):
- self.__record("FAIL", None, "reboot")
+ if self.wait_up(timeout):
+ self.__record("GOOD", None, "reboot", "complete")
+ else:
+ self.__record("ABORT", None, "reboot", "failed")
+ raise errors.AutoservRebootError("Host did not return from reboot")
print "Reboot complete"
@@ -363,8 +366,12 @@
label = self.bootloader.get_titles()[default]
self.bootloader.add_args(label, kernel_args)
print "Reboot: initiating reboot"
- self.__record("GOOD", None, "reboot")
- self.run('(sleep 5; reboot) >/dev/null 2>&1 &')
+ self.__record("GOOD", None, "reboot", "started")
+ try:
+ self.run('(sleep 5; reboot) >/dev/null 2>&1 &')
+ except AutoservRunError:
+ self.__record("ABORT", None, "reboot", "failed")
+ raise
if wait:
self._wait_for_restart(timeout)
self.__load_netconsole_module() # if the builtin fails
diff --git a/server/status.py b/server/status.py
index 04804da..78fd3ff 100644
--- a/server/status.py
+++ b/server/status.py
@@ -18,9 +18,13 @@
def _update_details(status, details):
if details == "----\trun starting":
return "Running test"
- elif details == "----\treboot":
+ elif details.startswith("----\treboot\t"):
+ msg = details.split("\t")[2]
if _worst_status("GOOD", status) == "GOOD":
- return "Rebooting"
+ if msg == "started":
+ return "Rebooting"
+ elif msg == "complete":
+ return "Reboot complete - machine ready"
else:
return "Reboot failed - machine dead"
# if we don't have a better message, just use the raw details