[Cluster-devel] cluster/fence/agents/ilo fence_ilo.pl

rmccabe at sourceware.org rmccabe at sourceware.org
Wed Apr 4 19:15:02 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	rmccabe at sourceware.org	2007-04-04 20:15:01

Modified files:
	fence/agents/ilo: fence_ilo.pl 

Log message:
	Make power on work correctly for RIBCL version 2.22 on both iLO2 and iLO:
	for the former, HOLD_PWR_BTN is used to both power the machine on and off;
	when the power is off, PRESS_PWR_BUTTON has no effect. For the latter,
	HOLD_PWR_BUTTON is used to power the machine off, and PRESS_PWR_BUTTON is
	used to power the machine on; when the power is off, HOLD_PWR_BUTTON
	has no effect.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/ilo/fence_ilo.pl.diff?cvsroot=cluster&r1=1.7&r2=1.8

--- cluster/fence/agents/ilo/fence_ilo.pl	2007/02/19 17:08:59	1.7
+++ cluster/fence/agents/ilo/fence_ilo.pl	2007/04/04 19:15:00	1.8
@@ -279,6 +279,13 @@
 
 	foreach my $line (@response)
 	{
+		if ($line =~ /MANAGEMENT_PROCESSOR\s*=\s*\"(.*)\"/) {
+			if ($1 eq "iLO2") {
+				$ilo_vers = 2;
+				print "power_status: reporting iLO2\n" if ($verbose);
+			}
+		}
+
 		if ($line =~ /MESSAGE='(.*)'/)
 		{
 			my $msg = $1;
@@ -343,18 +350,26 @@
 	sendsock $socket, "<LOGIN USER_LOGIN = \"$username\" PASSWORD = \"$passwd\">\n";
 	sendsock $socket, "<SERVER_INFO MODE = \"write\">\n";
 
+	if ($ilo_vers == 2) {
+		# iLO2 with RIBCL v2.22 behaves differently from
+		# iLO with RIBCL v2.22. For the former, HOLD_PWR_BTN is
+		# used to both power the machine on and off; when the power
+		# is off, PRESS_PWR_BUTTON has no effect. For the latter,
+		# HOLD_PWR_BUTTON is used to power the machine off, and
+		# PRESS_PWR_BUTTON is used to power the machine on;
+		# when the power is off, HOLD_PWR_BUTTON has no effect.
+		sendsock $socket, "<HOLD_PWR_BTN/>\n";
+	}
 	# As of firmware version 1.71 (RIBCL 2.21) The SET_HOST_POWER command
 	# is no longer available.  HOLD_PWR_BTN and PRESS_PWR_BTN are used 
 	# instead now :(
-	if ($ribcl_vers < 2.21)
+	elsif ($ribcl_vers < 2.21)
 	{
 		sendsock $socket, "<SET_HOST_POWER HOST_POWER = \"$state\"/>\n";
 	}
 	else
 	{
-		if ($ribcl_vers > 2.21) {
-			sendsock $socket, "<HOLD_PWR_BTN/>\n";
-		} elsif ($state eq "Y" )
+		if ($state eq "Y" )
 		{ 
 			sendsock $socket, "<PRESS_PWR_BTN/>\n";
 		} 
@@ -403,6 +418,9 @@
 		sendsock $socket, "<RIBCL VERSION=\"2.0\">\n";
 	}
 	sendsock $socket, "<LOGIN USER_LOGIN = \"$username\" PASSWORD = \"$passwd\">\n";
+	if ($ribcl_vers >= 2) {
+	    sendsock $socket, "<RIB_INFO MODE=\"read\"><GET_FW_VERSION/></RIB_INFO>\n";
+	}
 	sendsock $socket, "<SERVER_INFO MODE = \"read\">\n";
 	sendsock $socket, "<GET_HOST_POWER_STATUS/>\n";
 	sendsock $socket, "</SERVER_INFO>\n";
@@ -492,6 +510,7 @@
 
 $action = "reboot";
 $ribcl_vers = undef; # undef = autodetect
+$ilo_vers = 1;
 
 if (@ARGV > 0) {
 	getopts("a:hl:n:o:p:S:r:qvV") || fail_usage ;




More information about the Cluster-devel mailing list