Hello, Yes, it works on a DRAC 5 in a 1950 too. Yay! I'm going to resend my patch in a mo- I've added a bit to the documentation. David 2008/7/30 jim parsons <jparsons@xxxxxxxxxx>: > On Wed, 2008-07-30 at 16:37 +0100, David J Craigon wrote: >> It turns out that the right way to do this is use what Dell call >> "CMC"- a device that manages all the blades, not just one (just like >> the DRAC/MC). This is like a mix of the Dell DRAC/MC and DRAC 5 in >> fence_drac. >> >> I've written a patch that adds support for the CMC to fence_drac. This >> is my first patch ever using git, so hopefully it's good for you. >> >> This has been tested on a CMC, but it also changes the code for a Dell >> 1950. I'm going to get a 1950 and test it tomorrow. >> >> Feedback welcomed! > THANK YOU. SINCERELY. Please update us with test results. If no > regressions pop up, this is going into the agent ASAP. > > THANK YOU. > > :) > > -Jim, who often feels fenced in > >> >> David >> >> --- >> fence/agents/drac/fence_drac.pl | 36 +++++++++++++++++++++++++++++------- >> 1 files changed, 29 insertions(+), 7 deletions(-) >> >> diff --git a/fence/agents/drac/fence_drac.pl b/fence/agents/drac/fence_drac.pl >> index f199814..f96ef22 100644 >> --- a/fence/agents/drac/fence_drac.pl >> +++ b/fence/agents/drac/fence_drac.pl >> @@ -38,6 +38,7 @@ my $DRAC_VERSION_MC = 'DRAC/MC'; >> my $DRAC_VERSION_4I = 'DRAC 4/I'; >> my $DRAC_VERSION_4P = 'DRAC 4/P'; >> my $DRAC_VERSION_5 = 'DRAC 5'; >> +my $DRAC_VERSION_CMC = 'CMC'; >> >> my $PWR_CMD_SUCCESS = "/^OK/"; >> my $PWR_CMD_SUCCESS_DRAC5 = "/^Server power operation successful$/"; >> @@ -192,10 +193,15 @@ sub login >> # DRAC5 prints version controller version info >> # only after you've logged in. >> if ($drac_version eq $DRAC_VERSION_UNKNOWN) { >> - if ($t->waitfor(Match => "/.*\($DRAC_VERSION_5\)/m")) { >> + >> + if (my ($prematch,$match)=$t->waitfor(Match => >> "/.*(\($DRAC_VERSION_5\)|$DRAC_VERSION_CMC)/m")) { >> + if ($match=~/$DRAC_VERSION_CMC/) { >> + $drac_version = $DRAC_VERSION_CMC; >> + } else { >> $drac_version = $DRAC_VERSION_5; >> + } >> $cmd_prompt = "/\\\$ /"; >> - $PWR_CMD_SUCCESS = $PWR_CMD_SUCCESS_DRAC5; >> + $PWR_CMD_SUCCESS = $PWR_CMD_SUCCESS_DRAC5; >> } else { >> print "WARNING: unable to detect DRAC version '$_'\n"; >> } >> @@ -228,8 +234,10 @@ sub set_power_status >> } >> elsif ($drac_version eq $DRAC_VERSION_5) { >> $cmd = "racadm serveraction $svr_action"; >> - } else >> - { >> + } >> + elsif ($drac_version eq $DRAC_VERSION_CMC) { >> + $cmd = "racadm serveraction -m $modulename $svr_action"; >> + } else { >> $cmd = "serveraction -d 0 $svr_action"; >> } >> >> @@ -271,6 +279,11 @@ sub set_power_status >> } >> } >> fail "failed: unexpected response: '$err'" if defined $err; >> + >> + # on M600 blade systems, after power on or power off, status takes a >> couple of seconds to report correctly. Wait here before checking >> status again >> + sleep 5; >> + >> + >> } >> >> >> @@ -285,6 +298,8 @@ sub get_power_status >> >> if ($drac_version eq $DRAC_VERSION_5) { >> $cmd = "racadm serveraction powerstatus"; >> + } elsif ($drac_version eq $DRAC_VERSION_CMC) { >> + $cmd = "racadm serveraction powerstatus -m $modulename"; >> } else { >> $cmd = "getmodinfo"; >> } >> @@ -306,7 +321,7 @@ sub get_power_status >> >> fail "failed: unkown dialog exception: '$_'" unless (/^$cmd$/); >> >> - if ($drac_version ne $DRAC_VERSION_5) { >> + if ($drac_version ne $DRAC_VERSION_5 && $drac_version ne $DRAC_VERSION_CMC) { >> #Expect: >> # #<group> <module> <presence> <pwrState> <health> <svcTag> >> # 1 ----> chassis Present ON Normal CQXYV61 >> @@ -335,6 +350,11 @@ sub get_power_status >> if(m/^Server power status: (\w+)/) { >> $status = lc($1); >> } >> + } >> + elsif ($drac_version eq $DRAC_VERSION_CMC) { >> + if(m/^(\w+)/) { >> + $status = lc($1); >> + } >> } else { >> my ($group,$arrow,$module,$presence,$pwrstate,$health, >> $svctag,$junk) = split /\s+/; >> @@ -364,7 +384,8 @@ sub get_power_status >> } >> >> $_=$status; >> - if(/^(on|off)$/i) >> + >> + if (/^(on|off)$/i) >> { >> # valid power states >> } >> @@ -440,6 +461,7 @@ sub do_action >> } >> >> set_power_status on; >> + >> fail "failed: $_" unless wait_power_status on; >> >> msg "success: powered on"; >> @@ -641,7 +663,7 @@ if ($drac_version eq $DRAC_VERSION_III_XT) >> fail "failed: option 'modulename' not compatilble with DRAC version >> '$drac_version'" >> if defined $modulename; >> } >> -elsif ($drac_version eq $DRAC_VERSION_MC) >> +elsif ($drac_version eq $DRAC_VERSION_MC || $drac_version eq $DRAC_VERSION_CMC) >> { >> fail "failed: option 'modulename' required for DRAC version '$drac_version'" >> unless defined $modulename; >> -- >> 1.5.5.1 >> >> >> >From 2899ae4468a69b89346cafba13022a9b214404f2 Mon Sep 17 00:00:00 2001 >> From: David J Craigon <david@xxxxxxxxxxxxx> >> Date: Wed, 30 Jul 2008 16:34:24 +0100 >> Subject: Add a comment to state the CMC version this script works on >> >> --- >> fence/agents/drac/fence_drac.pl | 1 + >> 1 files changed, 1 insertions(+), 0 deletions(-) >> >> diff --git a/fence/agents/drac/fence_drac.pl b/fence/agents/drac/fence_drac.pl >> index f96ef22..11cc771 100644 >> --- a/fence/agents/drac/fence_drac.pl >> +++ b/fence/agents/drac/fence_drac.pl >> @@ -13,6 +13,7 @@ >> # PowerEdge 1850 DRAC 4/I 1.35 (Build 09.27) >> # PowerEdge 1850 DRAC 4/I 1.40 (Build 08.24) >> # PowerEdge 1950 DRAC 5 1.0 (Build 06.05.12) >> +# PowerEdge M600 CMC 1.01.A05.200803072107 >> # >> >> use Getopt::Std; > > -- > Linux-cluster mailing list > Linux-cluster@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/linux-cluster > -- Linux-cluster mailing list Linux-cluster@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/linux-cluster