diff --git a/perl-xCAT/xCAT/FSPUtils.pm b/perl-xCAT/xCAT/FSPUtils.pm index 8efc2296d..2017093e5 100644 --- a/perl-xCAT/xCAT/FSPUtils.pm +++ b/perl-xCAT/xCAT/FSPUtils.pm @@ -351,6 +351,8 @@ sub fsp_api_action { my $install_dir = xCAT::Utils->getInstallDir(); if( $action =~ /^(code_update|get_compatible_version_from_rpm)$/) { $cmd = "$fsp_api -a $action -T $tooltype -t $type:$fsp_ip:$id:$node_name:$parameter -d $install_dir/packages_fw/"; + } elsif($action =~ /^code_updateD$/) { + $cmd = "$fsp_api -a code_update -D -T $tooltype -t $type:$fsp_ip:$id:$node_name:$parameter -d $install_dir/packages_fw/"; } elsif($action =~ /^add_connection$/) { $cmd = "$fsp_api -a $action -u $user -p $password -T $tooltype -t $type:$fsp_ip:$id:$node_name:"; } elsif ($action =~ /^set_frame_number$/) { diff --git a/perl-xCAT/xCAT/FSPflash.pm b/perl-xCAT/xCAT/FSPflash.pm index c02d140e5..43127e918 100644 --- a/perl-xCAT/xCAT/FSPflash.pm +++ b/perl-xCAT/xCAT/FSPflash.pm @@ -146,9 +146,9 @@ sub get_lic_filenames { # return ("", "","", $msg, -1); # } } else { - $msg = $msg . "Upgrade $mtms disruptively!"; - if($activate ne "disruptive") { - $msg = "Option --activate's value shouldn't be concurrent, and it must be disruptive"; + $msg = $msg . "Upgrade $mtms!"; + if($activate !~ /^(disruptive|deferred)$/) { + $msg = "Option --activate's value shouldn't be $activate, and it must be disruptive or deferred"; return ("", "","", $msg, -1); } } @@ -261,7 +261,7 @@ sub rflash { my $frame = $$d[5]; my $type = xCAT::DBobjUtils->getnodetype($frame); - if ( ( $frame ne $name ) && ( $type eq "frame" ) ){ + if ( ( $frame ne $name ) && ( $type eq "frame" ) && $activate !~ /^deferred$/){ my @frame_d = (0, 0, 0, $frame, "frame", 0); $action = "list_firmware_level"; @@ -327,11 +327,14 @@ sub rflash { if($housekeeping =~ /^commit$/) { $action = "code_commit"} if($housekeeping =~ /^recover$/) { $action = "code_reject"} - if($activate =~ /^disruptive$/) { + if($housekeeping =~ /^bpa_acdl$/) { $action = "acdl"} + if($activate eq "disruptive") { $action = "code_update"; - } - if($activate =~ /^concurrent$/) { - my $res = "\'concurrent\' option not supported in FSPflash.Please use disruptive mode"; + } elsif ($activate eq "deferred") { + $action = "code_updateD"; + } elsif (defined($activate)){ + #if($activate =~ /^concurrent$/) { + my $res = "\'$activate\' option not supported in FSPflash. Please use disruptive or deferred mode"; push @value, [$name, $res, -1]; next; } @@ -349,7 +352,11 @@ sub rflash { } my $res = xCAT::FSPUtils::fsp_api_action($request, $name, $d, $action, 0, $request->{opt}->{d} ); - push(@value,[$name, @$res[1], @$res[2]]); + if ($action eq "acdl" && @$res[2] eq '0') { + push(@value, [$name, "Success", '0']); + } else { + push(@value,[$name, @$res[1], @$res[2]]); + } return (\@value); } diff --git a/perl-xCAT/xCAT/PPCrflash.pm b/perl-xCAT/xCAT/PPCrflash.pm index db5fec182..232e5821d 100644 --- a/perl-xCAT/xCAT/PPCrflash.pm +++ b/perl-xCAT/xCAT/PPCrflash.pm @@ -94,7 +94,7 @@ sub parse_args { $Getopt::Long::ignorecase = 0; Getopt::Long::Configure( "bundling" ); - if ( !GetOptions( \%opt, qw(h|help v|version V|verbose p=s d=s activate=s commit recover) )) { + if ( !GetOptions( \%opt, qw(h|help v|version V|verbose p=s d=s activate=s commit recover bpa_acdl) )) { return( usage() ); } @@ -102,7 +102,10 @@ sub parse_args { # Option -v for version #################################### if ( exists( $opt{v} )) { - return( \$::VERSION ); + if (!defined($::VERSION)) { + return ([xCAT::Usage->getVersion($cmd)]); + } + return( [$::VERSION] ); } if ( exists( $opt{h}) || $opt{help}) { @@ -112,6 +115,11 @@ sub parse_args { ################################# #Option --activate not valid with --commit or --recover ################################# + if (exists($opt{bpa_acdl}) && (exists($opt{activate}) || exists($opt{commit}) || + exists($opt{recover}) || exists($opt{p}) || exists($opt{d}))) { + return ( usage("Option --bpa_acdl not valid with other options ")); + } + if( exists( $opt{activate} ) && (exists( $opt{commit}) || exists( $opt{recover}))) { return( usage("Option --activate not valid with --commit or --recover ") ); } @@ -149,8 +157,8 @@ sub parse_args { #--activate's value only can be concurrent and disruptive ################################ if(exists($opt{activate})) { - if( ($opt{activate} ne "concurrent") && ($opt{activate} ne "disruptive")) { - return (usage("--activate's value can only be concurrent or disruptive")); + if( ($opt{activate} ne "deferred") && ($opt{activate} ne "disruptive")) { + return (usage("--activate's value can only be deferred or disruptive")); } if(!exists( $opt{d} )) { @@ -181,6 +189,9 @@ sub parse_args { } elsif( defined( $opt{ recover }) ) { print "recover flag\n"; $housekeeping = "recover"; + } elsif (defined( $opt{ bpa_acdl})) { + print "bpa_acdl flag\n"; + $housekeeping = "bpa_acdl"; } else { print "no housekeeping - update mode\n"; $housekeeping = undef; @@ -198,7 +209,7 @@ sub parse_args { #################### #suport for "rflash", copy the rpm and xml packages from user-spcefied-directory to /install/packages_fw ##################### - if ( (!exists($opt{commit})) && (!exists($opt{ recover }))) { + if ( (!exists($opt{commit})) && (!exists($opt{ recover })) && (!exists($opt{bpa_acdl}))) { if( preprocess_for_rflash($request, \%opt) == -1) { return( usage() ); } @@ -526,9 +537,9 @@ sub get_lic_filenames { # return ("", "","", $msg, -1); # } } else { - $msg = $msg . "Upgrade $mtms disruptively!"; - if($activate ne "disruptive") { - $msg = "Option --activate's value shouldn't be concurrent, and it must be disruptive"; + $msg = $msg . "Upgrade $mtms!"; + if($activate !~ /^(disruptive|deferred)$/) { + $msg = "Option --activate's value shouldn't be $activate, and it must be disruptive or deferred"; return ("", "","", $msg, -1); } } diff --git a/perl-xCAT/xCAT/Usage.pm b/perl-xCAT/xCAT/Usage.pm index 078e9df52..c2ceb4a77 100644 --- a/perl-xCAT/xCAT/Usage.pm +++ b/perl-xCAT/xCAT/Usage.pm @@ -78,6 +78,8 @@ my %usage = ( rinv [deconfig [-x]] Blade specific: rinv [mtm|serial|mac|bios|diag|mprom|mparom|firm|all] + IBM Flex System Compute Node specific: + rinv [firm] VMware specific: rinv zVM specific: @@ -268,8 +270,9 @@ my %usage = ( rflash -p [--activate concurrent | disruptive][-V|--verbose] rflash [--commit | --recover] [-V|--verbose] PPC (using Direct FSP Management) specific: - rflash -p --activate disruptive [-d ] - rflash [--commit | --recover] [-V|--verbose]", + rflash -p --activate [-d ] + rflash [--commit | --recover] [-V|--verbose] + rflash [--bpa_acdl]", "mkhwconn" => "Usage: mkhwconn [-h|--help]