#! /usr/bin/expect
#
# tickle-helper -- watch for reboots and 'tickle' the console during them
#
# Some consoles get broken when the machine reboots.  There are normally
# fixed by trying to use them at or arround the reboot.  Watch for reboots
# and initiate use of the console to trigger a drop/reconnect cycle.
#
# (C) Copyright IBM Corp. 2004, 2005, 2006
# Author: Andy Whitcroft <andyw@uk.ibm.com>
#
# The Console Multiplexor is released under the GNU Public License V2
#
set P "tickle-helper"
log_user 0

if {$argc != 0} {
	puts stderr "Usage: $P"
	exit 1
}

proc note {msg} {
	global P
	puts stderr "$P: $msg"
}
proc warn {msg} {
	global P
	puts stderr "$P: $msg"
	puts "~\$msg $msg"
}

proc tickle {} {
	set timeout 5
	warn "tickling console ..."
	puts ""
	set now [clock seconds]
	expect_user {
		{blade: ERROR: console lost} {
		}
		{Elapsed time since release of system processors:} {
		}
		"*\n" {
			if {([clock seconds] - $now) > 5} {
				set now [clock seconds]
				warn "tickling console ..."
				puts ""
			}
			exp_continue
		}
		timeout {
			set now [clock seconds]
			warn "tickling console ..."
			puts ""
			exp_continue
		}
	}
	set timeout -1
	warn "tickle complete ..."
}

set timeout -1
set likely 0
expect_user {
	{TEST;} {
		warn "test trigger detected"
		exp_continue
	}
	-re {Unmounting file systems|Unmounting local filesystems...} {
		note "controlled reboot in progress ..."
		set likely [clock seconds]
		exp_continue
	}
	-ex {***** REBOOT LINUX *****} {
		note "fsck failure occured ..."
		set likely [clock seconds]
		exp_continue
	}
	-re {HARDBOOT INITIATED|initated a hard reset} {
		tickle
		exp_continue
	}
	-re {Please stand by while rebooting the system|Restarting system} {
		if {$likely != 0} {
			warn "shutdown complete, restart indicated"
			tickle
			set likely 0
		} else {
			warn "likely false positive"
		}
		exp_continue
	}
	"*\n" {
		if {$likely > 0 && ([clock seconds] - $likely) > 60} {
			warn "trigger timeout"
			set likely 0
		}
		exp_continue
	}
}
