From 65bbc300c66a1d769d8723af258abdda95c0d673 Mon Sep 17 00:00:00 2001 From: jbjohnso Date: Fri, 11 Jun 2010 18:24:29 +0000 Subject: [PATCH] -Add rsetboot -p and -u for persitent and uefi requests git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@6441 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-server/lib/xcat/plugins/ipmi.pm | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/ipmi.pm b/xCAT-server/lib/xcat/plugins/ipmi.pm index 546172481..e4afb0b02 100644 --- a/xCAT-server/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server/lib/xcat/plugins/ipmi.pm @@ -77,7 +77,6 @@ my $timeout; my $port; my $debug; my $ndebug = 0; -my @cmdargv; my $sock; my $noclose; my %sessiondata; #hold per session variables, in preparation for single-process strategy @@ -450,7 +449,6 @@ sub on_bmc_connect { my $status = shift; my $sessdata = shift; my $command = $sessdata->{command}; - @cmdargv = @{$sessdata->{extraargs}}; if ($status =~ /ERROR:/) { sendmsg([1,$status],$sessdata->{node}); return; @@ -886,7 +884,6 @@ sub setboot { sub setboot_timerdisabled { my $rsp = shift; my $sessdata = shift; - my $subcommand=$sessdata->{subcommand}; if ($rsp->{error}) { sendmsg([1,$rsp->{error}],$sessdata->{node}); return; @@ -900,25 +897,38 @@ sub setboot_timerdisabled { return; } my $error; + @ARGV=@{$sessdata->{extraargs}}; + my $persistent=0; + my $uefi=0; + use Getopt::Long; + unless(GetOptions( + 'o' => \$persistent, + 'u' => \$uefi, + )) { + sendmsg([1,"Error parsing arguments"],$sessdata->{node}); + return; + } + my $subcommand=shift @ARGV; my @cmd; + my $overbootflags=0x80 | $persistent<<6|$uefi << 5; if ($subcommand eq "net") { - @cmd=(0x5,0x80,0x4,0x0,0x0,0x0); + @cmd=(0x5,$overbootflags,0x4,0x0,0x0,0x0); } elsif ($subcommand eq "hd" ) { - @cmd=(0x5,0x80,0x8,0x0,0x0,0x0); + @cmd=(0x5,$overbootflags,0x8,0x0,0x0,0x0); } elsif ($subcommand eq "cd" ) { - @cmd=(0x5,0x80,0x14,0x0,0x0,0x0); + @cmd=(0x5,$overbootflags,0x14,0x0,0x0,0x0); } elsif ($subcommand eq "floppy" ) { - @cmd=(0x5,0x80,0x3c,0x0,0x0,0x0); + @cmd=(0x5,$overbootflags,0x3c,0x0,0x0,0x0); } elsif ($subcommand =~ m/^def/) { @cmd=(0x5,0x0,0x0,0x0,0x0,0x0); } elsif ($subcommand eq "setup" ) { #Not supported by BMCs I've checked so far.. - @cmd=(0x5,0x18,0x0,0x0,0x0,0x0); + @cmd=(0x5,$overbootflags,0x18,0x0,0x0,0x0); } elsif ($subcommand =~ m/^stat/) { setboot_stat("NOQUERY",$sessdata);