Fix bug 3494916: getmacs -o has some issue

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@11719 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
yinle 2012-03-01 07:20:29 +00:00
parent 4fc13e90ac
commit a2a499420c

View File

@ -139,7 +139,7 @@ sub run_lssyscfg
arg => ['state']
},
$req, 0, 1);
if ($::RUNCMD_RC ne 0) {
if ($::RUNCMD_RC != 0) {
nc_msg($verbose, "Unable to run rpower $node state.\n");
return undef;
}
@ -745,11 +745,11 @@ sub get_adap_prop {
# decode-string command is sent.
if ( $state eq 5 ) {
if ($result[3] =~/2 > \.s \w+ (\w*)/) {
$state = 2 if ($1 ne 0);
$state = 2 if ($1 != 0);
}
}
}
if (scalar(@adap_prop_array) ne 0) {
if (scalar(@adap_prop_array) != 0) {
return \@adap_prop_array;
} else {
return 0;
@ -1330,14 +1330,14 @@ sub ping_server{
nc_msg($verbose, "Status: Trying connector type $adap_conn\n");
$j++;
}
if ((($tty_do_ping eq 1) && ($state eq 4)) || ($tty_do_ping ne 1) && ($state eq 3) ) {
if ((($tty_do_ping eq 1) && ($state eq 4)) || ($tty_do_ping != 1) && ($state eq 3) ) {
$ping_debug = $result[2];
}
if ( ( ($tty_do_ping eq 1) && ($state eq 5) ) || ($tty_do_ping ne 1) && ($state eq 4) ) {
if ( ( ($tty_do_ping eq 1) && ($state eq 5) ) || ($tty_do_ping != 1) && ($state eq 4) ) {
if ( ($tty_do_ping eq 1) && ($state eq 5) ) {
#$ping_rc = $result[2];
$stack_level = length($result[4]);
} elsif ( ($state eq 4) && ($tty_do_ping ne 1) && ($result[2] =~ /PING SUCCESS/)) {
} elsif ( ($state eq 4) && ($tty_do_ping != 1) && ($result[2] =~ /PING SUCCESS/)) {
$ping_rc = 0;
#} elsif ( $result[2] =~ /unknown word/ ) {
# nc_msg($verbose, "Status: try tty-do-ping.\n");
@ -1382,7 +1382,7 @@ sub ping_server{
# be removed. Check for it, and remove if necessary
my $matchexp = 0;
my @exp_out;
while ( $stack_level ne 0 ) {
while ( $stack_level != 0 ) {
send_command($verbose, $rconsole, ".\r");
@exp_out = $rconsole->expect(
[qr/(\[0-9\]*) ok(.*)(\[0-1\]) >(.*)/s=>
@ -1585,7 +1585,7 @@ sub set_disk_boot {
}
}
$state = $newstate[$state];
if ( ($state ne 8) && ($state ne 9) && ($state ne 10) ) {
if ( ($state != 8) && ($state != 9) && ($state != 10) ) {
$cmd[$state] = "$expect_out[3]\r";
}
}
@ -1613,7 +1613,7 @@ sub set_disk_boot {
return 1;
} else {
return 0;
}
}
}
return 0;
@ -2413,7 +2413,7 @@ sub lparnetbootexp
# process the arguments
####################################
$rc = xCAT::LparNetbootExp->ck_args($opt, $node, $verbose);
if ($rc ne 0) {
if ($rc != 0) {
nc_msg($verbose,, "ck_args failed. \n");
return [1];
}
@ -2511,7 +2511,6 @@ sub lparnetbootexp
}
if ($from_of) {
#unless($output =~ /open-firmware/i){
unless($output =~ /open firmware/i){
nc_msg($verbose,, "You are using the -o option. Please make sure the LPAR's initial state is open firmware.\n");
return [1];
@ -2535,7 +2534,7 @@ sub lparnetbootexp
},
$subreq, 0, 1);
$output = join ',', @$sysoutput;
if ($::RUNCMD_RC ne 0) { #$::RUNCMD_RC will get its value from runxcmd_output
if ($::RUNCMD_RC != 0) { #$::RUNCMD_RC will get its value from runxcmd_output
nc_msg($verbose,, "Unable to run rpower $node off.\n");
return [1];
}
@ -2561,115 +2560,116 @@ sub lparnetbootexp
nc_msg($verbose,, "Power off failed.\n");
return [1];
}
sleep 1;
}
}
#################################################
# if set_boot_order is set, set the boot order
# if not set, power the node to open firmware
#################################################
$done = 0;
$retry_count = 0;
if ($set_boot_order > 1) {
nc_msg($verbose, "Power on $node to SMS.\n");
while (!$done) {
$sysoutput = xCAT::Utils->runxcmd(
{
command => ['rpower'],
node => [$node],
arg => ['sms']
},
$subreq, 0, 1);
$output = join ',', @$sysoutput;
nc_msg($verbose, "Waiting for power on...\n");
if ($::RUNCMD_RC != 0) {
nc_msg($verbose,, "Unable to run rpower $node sms\n");
return [1];
}
unless ($output =~ /Success/) {
if ($retry_count eq 3) {
nc_msg($verbose,, "Power off failed, msg is $output.\n");
return [1];
}
sleep 1;
$retry_count ++;
} else {
$done = 1;
}
}
} else {
nc_msg($verbose, "Power on the $node to the Open Firmware.\n");
while (!$done) {
$sysoutput = xCAT::Utils->runxcmd(
{
command => ['rpower'],
node => [$node],
arg => ['of']
},
$subreq, 0, 1);
$output = join ',', @$sysoutput;
nc_msg($verbose, "Waiting for power on...\n");
if ($::RUNCMD_RC != 0) {
nc_msg($verbose,, "Unable to run rpower $node open firmware.\n");
return [1];
}
unless ($output =~ /Success/) {
if ($retry_count eq 3) {
nc_msg($verbose,, "Power off failed, msg is $output.\n");
return [1];
}
sleep 1;
$retry_count ++;
} else {
$done = 1;
}
}
}
###########################
# Check the node state
###########################
$done = 0;
$query_count = 0;
$timeout = 1;
nc_msg($verbose, "Check the node state again;");
while(!$done) {
$output = xCAT::LparNetbootExp->run_lssyscfg($subreq, $verbose, $node);
nc_msg($verbose, "The node state is $output.\n");
if ($output =~ /Open Firmware/i) {
nc_msg($verbose, "Power on complete.\n");
$done = 1;
next;
}
$query_count++;
# if the node is not in openfirmware state, just wait for it
my @result = $rconsole->expect(
$timeout,
[ qr/(.*)elect this consol(.*)/=>
sub {
$rconsole->send("0\r");
#$rconsole->clear_accum();
#$rconsole->exp_continue();
}
],
);
if ($query_count > 300 ) {
nc_msg($verbose,, "Timed out waiting for power on of $node");
nc_msg($verbose, "error from rpower command : \"$output\" \n");
return [1];
}
sleep 1;
}
}
#################################################
# if set_boot_order is set, set the boot order
# if not set, power the node to open firmware
#################################################
$done = 0;
$retry_count = 0;
if ($set_boot_order) {
nc_msg($verbose, "Power on $node to SMS.\n");
while (!$done) {
$sysoutput = xCAT::Utils->runxcmd(
{
command => ['rpower'],
node => [$node],
arg => ['sms']
},
$subreq, 0, 1);
$output = join ',', @$sysoutput;
nc_msg($verbose, "Waiting for power on...\n");
if ($::RUNCMD_RC ne 0) {
nc_msg($verbose,, "Unable to run rpower $node sms\n");
return [1];
}
unless ($output =~ /Success/) {
if ($retry_count eq 3) {
nc_msg($verbose,, "Power off failed, msg is $output.\n");
return [1];
}
sleep 1;
$retry_count ++;
} else {
$done = 1;
}
}
} else {
nc_msg($verbose, "Power on the $node to the Open Firmware.\n");
while (!$done) {
$sysoutput = xCAT::Utils->runxcmd(
{
command => ['rpower'],
node => [$node],
arg => ['of']
},
$subreq, 0, 1);
$output = join ',', @$sysoutput;
nc_msg($verbose, "Waiting for power on...\n");
if ($::RUNCMD_RC ne 0) {
nc_msg($verbose,, "Unable to run rpower $node open firmware.\n");
return [1];
}
unless ($output =~ /Success/) {
if ($retry_count eq 3) {
nc_msg($verbose,, "Power off failed, msg is $output.\n");
return [1];
}
sleep 1;
$retry_count ++;
} else {
$done = 1;
}
}
}
###########################
# Check the node state
###########################
$done = 0;
$query_count = 0;
$timeout = 1;
nc_msg($verbose, "Check the node state again;");
while(!$done) {
$output = xCAT::LparNetbootExp->run_lssyscfg($subreq, $verbose, $node);
nc_msg($verbose, "The node state is $output.\n");
if ($output =~ /Open Firmware/i) {
nc_msg($verbose, "Power on complete.\n");
$done = 1;
next;
}
$query_count++;
# if the node is not in openfirmware state, just wait for it
my @result = $rconsole->expect(
$timeout,
[ qr/(.*)elect this consol(.*)/=>
sub {
$rconsole->send("0\r");
#$rconsole->clear_accum();
#$rconsole->exp_continue();
}
],
);
if ($query_count > 300 ) {
nc_msg($verbose,, "Timed out waiting for power on of $node");
nc_msg($verbose, "error from rpower command : \"$output\" \n");
return [1];
}
sleep 1;
}
##############################
# Check for active console
##############################
@ -2902,7 +2902,7 @@ sub lparnetbootexp
}
}
}
unless($from_of) {
if ($from_of != 1) {
nc_msg($verbose, "power off the node after noboot eq 1\n");
$sysoutput = xCAT::Utils->runxcmd(
{
@ -2912,7 +2912,7 @@ sub lparnetbootexp
},
$subreq, 0, 1);
$output = join ',', @$sysoutput;
if ($::RUNCMD_RC ne 0) {
if ($::RUNCMD_RC != 0) {
nc_msg($verbose,, "Unable to run rpower $node sms.\n");
nc_msg($verbose, "Status: error from rpower command\n");
nc_msg($verbose,, "Error : $output\n");
@ -3081,7 +3081,7 @@ sub lparnetbootexp
################################################
# mission accomplished, beam me up scotty.
#################################################
unless ($noboot) {
unless ($noboot) { #if do the rnetboot, just return
if ( $rc eq 0) {
nc_msg($verbose, "# Finished.\n" );
$outputarrayindex++;
@ -3091,7 +3091,7 @@ sub lparnetbootexp
$outputarrayindex++;
$outputarray[$outputarrayindex] = "Finished in an error.";
}
} else {
} else { #if not rnetboot, for example, getmacs, power off the node
$done = 0;
$query_count = 0;
while(!$done) {
@ -3100,12 +3100,12 @@ sub lparnetbootexp
##############################################
# separate the nodename from the query status
##############################################
if ($from_of ne 1) {
if ($from_of != 1) {
if (( $output =~ /off/i ) or ($output =~ /Not Activated/i)) {
$done = 1;
}
} else {
if ( $output =~ /open-firmware/i ) {
if ( $output =~ /firmware/i ) {
$done = 1;
}
}