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

rmccabe at sourceware.org rmccabe at sourceware.org
Mon Apr 9 15:20:09 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL50
Changes by:	rmccabe at sourceware.org	2007-04-09 16:20:09

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

Log message:
	Fix for bz235271: Regression in fence_ilo

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

--- cluster/fence/agents/ilo/fence_ilo.pl	2006/08/16 19:11:49	1.5
+++ cluster/fence/agents/ilo/fence_ilo.pl	2007/04/09 15:20:09	1.5.4.1
@@ -262,6 +262,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;
@@ -326,10 +333,20 @@
 	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";
 	}
@@ -384,6 +401,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";
@@ -469,6 +489,7 @@
 
 $action = "reboot";
 $ribcl_vers = undef; # undef = autodetect
+$ilo_vers = 1;
 
 if (@ARGV > 0) {
 	getopts("a:hl:n:o:p:r:qvV") || fail_usage ;




More information about the Cluster-devel mailing list