From 3e6626f22d7b504076695aa43daa830f27b9893c Mon Sep 17 00:00:00 2001 From: zhaoertao Date: Mon, 17 Oct 2011 05:54:07 +0000 Subject: [PATCH] add BSR, failover item git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.6@10786 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- perl-xCAT/xCAT/FSPcfg.pm | 47 ++++++++++++++++++++++++++++++++++++---- perl-xCAT/xCAT/Usage.pm | 7 +++++- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/perl-xCAT/xCAT/FSPcfg.pm b/perl-xCAT/xCAT/FSPcfg.pm index 74f95d627..75cd7cc30 100644 --- a/perl-xCAT/xCAT/FSPcfg.pm +++ b/perl-xCAT/xCAT/FSPcfg.pm @@ -74,7 +74,10 @@ sub parse_args { "cec_off_policy", "resetnet", "sysname", - "pending_power_on_side" + "pending_power_on_side", + "BSR", + "setup_failover", + "force_failover" ); my @frame = ( "frame", @@ -233,7 +236,8 @@ sub parse_args { $request->{method} = "resetnet"; return( \%opt ); } - if(exists($cmds{sysname}) or exists($cmds{pending_power_on_side})) { + if(exists($cmds{sysname}) or exists($cmds{pending_power_on_side}) or exists($cmds{BSR}) + or exists($cmds{setup_failover}) or exists($cmds{force_failover})) { $request->{hcp} = $request->{hwtype} eq 'frame' ? "bpa":"fsp"; $request->{method} = "do_fspapi_function"; return (\%opt); @@ -308,6 +312,14 @@ sub parse_option { return ("Invalid pending_power_on_side param '$value'"); } } + if ($command eq 'setup_failover') { + if ($value !~ /^(enable|disable)$/) { + return ("Invalid setup_failover param '$value'"); + } + } + if ($command =~ /^(BSR|force_failover)$/ ) { + return ("BSR value can not be set"); + } return undef; } sub check_node_info { @@ -345,6 +357,24 @@ my %fspapi_action = ( frame => "set_ipl_param" } }, + BSR => { + query => { + cec => "get_cec_bsr" + } + }, + setup_failover => { + query => { + cec => "cec_setup_failover" + }, + set => { + cec => "cec_setup_failover" + } + }, + force_failover => { + query => { + cec => "cec_force_failover" + } + } ); sub do_process_query_res { my $name = shift; @@ -367,6 +397,13 @@ sub do_process_query_res { return "Error"; } } + } elsif ($cmd =~ /^BSR$/) { + my @values = split(/\n/, @$res[1]); + foreach my $v (@values) { + push @$result, [$name, $v, '0']; + } + } else { + push @$result, $res; } return undef; } @@ -396,6 +433,8 @@ sub do_set_get_para { return (($value eq '*') ? $node_name : $value); } elsif ($cmd =~ /^pending_power_on_side$/){ return ($value =~ /^perm$/) ? '0' : '1'; + } elsif ($cmd =~ /^setup_failover$/) { + return ($value =~ /^enable$/) ? '1' : '0'; } } @@ -422,7 +461,7 @@ sub do_set { my $action = $fspapi_action{$cmd}{set}{@$d[4]}; my $para = &do_set_get_para($name, $cmd, $value); my $values = xCAT::FSPUtils::fsp_api_action($name, $d, $action, 0, $para); - #print Dumper($values); +# print Dumper($values); &do_process_set_res($name, $cmd, \@result, $values); #my $res = &do_process_set_res($name, $cmd, \@result, $values); #if (defined($res)) { @@ -439,7 +478,7 @@ sub do_fspapi_function { my @ret = (); my $res; my $args = $request->{arg}; - my @fspapi_array = qw/sysname pending_power_on_side/; + my @fspapi_array = qw/sysname pending_power_on_side BSR setup_failover force_failover/; my $invalid_node = &check_node_info($hash); if (defined($invalid_node)) { return ([[$invalid_node, "Node must be CEC or Frame", '1']]); diff --git a/perl-xCAT/xCAT/Usage.pm b/perl-xCAT/xCAT/Usage.pm index c7169feaf..627ec12bc 100644 --- a/perl-xCAT/xCAT/Usage.pm +++ b/perl-xCAT/xCAT/Usage.pm @@ -69,7 +69,8 @@ my %usage = ( PPC specific(with HMC): rinv [bus|config|serial|model|firm|all] PPC specific(using Direct FSP Management): - rinv [firm|deconfig] + rinv [firm] + rinv [deconfig [-x]] Blade specific: rinv [mtm|serial|mac|bios|diag|mprom|mparom|firm|all] VMware specific: @@ -140,6 +141,10 @@ my %usage = ( rspconfig [pending_power_on_side=] rspconfig [cec_off_policy] rspconfig [cec_off_policy=] + rspconfig [BSR] + rspconfig [setup_failover] + rspconfig [setup_failover=] + rspconfig [force_failover] rspconfig --resetnet BPA/Frame (using Direct FSP Management)specific: rspconfig HMC_passwd=