[Cluster-devel] cluster/fence/agents/ilo fence_ilo.pl
rmccabe at sourceware.org
rmccabe at sourceware.org
Mon Jun 25 21:48:26 UTC 2007
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2007-06-25 21:48:26
Modified files:
fence/agents/ilo: fence_ilo.pl
Log message:
HP changed the iLO 2 interface again in the latest firmware revision, 1.30 (released on 2007-06-01)
I tested this on iLO 2 firmware revisions 1.26, 1.29, and 1.30
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/ilo/fence_ilo.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.1&r2=1.5.2.2
--- cluster/fence/agents/ilo/fence_ilo.pl 2007/05/10 19:42:24 1.5.2.1
+++ cluster/fence/agents/ilo/fence_ilo.pl 2007/06/25 21:48:26 1.5.2.2
@@ -1,4 +1,17 @@
#!/usr/bin/perl
+
+###############################################################################
+###############################################################################
+##
+## Copyright (C) 2006-2007 Red Hat, Inc. All rights reserved.
+##
+## This copyrighted material is made available to anyone wishing to use,
+## modify, copy, or redistribute it subject to the terms and conditions
+## of the GNU General Public License v.2.
+##
+###############################################################################
+###############################################################################
+
$|=1;
eval { $ssl_mod="Net::SSL" if require Net::SSL} ||
@@ -14,6 +27,9 @@
# "#END_VERSION_GENERATION" It is generated by the Makefile
#BEGIN_VERSION_GENERATION
+$FENCE_RELEASE_NAME="";
+$REDHAT_COPYRIGHT="";
+$BUILD_DATE="";
#END_VERSION_GENERATION
# Get the program name from $0 and strip directory names
@@ -35,6 +51,7 @@
print " -l <name> Login name\n";
print " -o <string> Action: reboot (default), off, on or status\n";
print " -p <string> Login password\n";
+ print " -S <path> Script to run to retrieve login password\n";
print " -q quiet mode\n";
print " -V version\n";
print " -v verbose\n";
@@ -62,7 +79,7 @@
sub version
{
print "$pname $FENCE_RELEASE_NAME $BUILD_DATE\n";
- print "$SISTINA_COPYRIGHT\n" if ( $SISTINA_COPYRIGHT );
+ print "$REDHAT_COPYRIGHT\n" if ( $REDHAT_COPYRIGHT );
exit 0;
}
@@ -262,10 +279,13 @@
foreach my $line (@response)
{
+ if ($line =~ /FIRMWARE_VERSION\s*=\s*\"(.*)\"/) {
+ $firmware_rev = $1;
+ }
if ($line =~ /MANAGEMENT_PROCESSOR\s*=\s*\"(.*)\"/) {
if ($1 eq "iLO2") {
$ilo_vers = 2;
- print "power_status: reporting iLO2\n" if ($verbose);
+ print "power_status: reporting iLO2 $firmware_rev\n" if ($verbose);
}
}
@@ -341,7 +361,11 @@
# 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";
+ if ($firmware_rev > 1.29) {
+ sendsock $socket, "<HOLD_PWR_BTN TOGGLE=\"Yes\" />\n";
+ } else {
+ 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
@@ -472,6 +496,10 @@
{
$passwd = $val;
}
+ elsif ($name eq "passwd_script" )
+ {
+ $passwd_script = $val;
+ }
elsif ($name eq "ribcl" )
{
$ribcl_vers = $val;
@@ -490,9 +518,10 @@
$action = "reboot";
$ribcl_vers = undef; # undef = autodetect
$ilo_vers = 1;
+$firmware_rev = 0;
if (@ARGV > 0) {
- getopts("a:hl:n:o:p:r:qvV") || fail_usage ;
+ getopts("a:hl:n:o:p:S:r:qvV") || fail_usage ;
usage if defined $opt_h;
version if defined $opt_V;
@@ -505,7 +534,15 @@
fail_usage "No '-l' flag specified." unless defined $opt_l;
$username = $opt_l;
- fail_usage "No '-p' flag specified." unless defined $opt_p;
+ if (defined $opt_S) {
+ $pwd_script_out = `$opt_S`;
+ chomp($pwd_script_out);
+ if ($pwd_script_out) {
+ $opt_p = $pwd_script_out;
+ }
+ }
+
+ fail_usage "No '-p' or '-S' flag specified." unless defined $opt_p;
$passwd = $opt_p;
$action = $opt_o if defined $opt_o;
@@ -525,6 +562,15 @@
fail "no host\n" unless defined $hostname;
fail "no login name\n" unless defined $username;
+
+ if (defined $passwd_script) {
+ $pwd_script_out = `$passwd_script`;
+ chomp($pwd_script_out);
+ if ($pwd_script_out) {
+ $passwd = $pwd_script_out;
+ }
+ }
+
fail "no password\n" unless defined $passwd;
fail "unrecognised action: $action\n"
More information about the Cluster-devel
mailing list