From 35c7e5dbe4d41d7204d0034ad7a3c96f102da45c Mon Sep 17 00:00:00 2001 From: wanghuaz Date: Mon, 1 Jun 2009 16:45:16 +0000 Subject: [PATCH] added fail-retry to lpar_netboot git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@3473 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- perl-xCAT/xCAT/PPCboot.pm | 55 ++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/perl-xCAT/xCAT/PPCboot.pm b/perl-xCAT/xCAT/PPCboot.pm index f8f1ae9a7..9817b612f 100644 --- a/perl-xCAT/xCAT/PPCboot.pm +++ b/perl-xCAT/xCAT/PPCboot.pm @@ -191,29 +191,42 @@ sub do_rnetboot { ####################################### $cmd.= " -t ent -f \"$name\" \"$pprofile\" \"$fsp\" $id $hcp \"$node\""; - ####################################### - # Execute command - ####################################### - if ( !open( OUTPUT, "$cmd 2>&1 |")) { - return( [RC_ERROR,"$cmd fork error: $!"] ); - } - ####################################### - # Get command output - ####################################### - while ( ) { - $result.=$_; - } - close OUTPUT; - - ####################################### - # Get command exit code - ####################################### + my $done = 0; my $Rc = SUCCESS; + while ( $done < 2 ) { + ####################################### + # Execute command + ####################################### + if ( !open( OUTPUT, "$cmd 2>&1 |")) { + return( [RC_ERROR,"$cmd fork error: $!"] ); + } + ####################################### + # Get command output + ####################################### + while ( ) { + $result.=$_; + } + close OUTPUT; - foreach ( split /\n/, $result ) { - if ( /^lpar_netboot: / ) { - $Rc = RC_ERROR; - last; + ####################################### + # Get command exit code + ####################################### + + foreach ( split /\n/, $result ) { + if ( /^lpar_netboot: / ) { + $Rc = RC_ERROR; + last; + } + } + + if ( $Rc == SUCCESS ) { + $done = 2; + } else { + if ( !exists( $opt->{f} )) { + $cmd.= " -i"; + } + $done = $done + 1; + sleep 1; } } return( [$Rc,$result] );