Fix bug 3527505: lsslp -V gives no verbose information

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.7@12780 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
yinle 2012-05-18 03:13:30 +00:00
parent 3f7ed4dc69
commit e4243312d5

View File

@ -318,9 +318,9 @@ sub parse_args {
if ( $globalopt{time_out} !~ /^\d+$/ ) {
return( usage( "Invalid timeout value, should be number" ));
}
if (!exists( $opt{C} )) {
return ( usage( "-T should be used with -C" ));
}
#if (!exists( $opt{C} )) {
# return ( usage( "-T should be used with -C" ));
#}
}
#############################################
@ -426,7 +426,7 @@ sub trace {
send_msg( $request, 0, $msg );
}
} else {
if ( exists($globalopt{verbose}) ) {
if ( $globalopt{verbose}) {
my ($sec,$min,$hour,$mday,$mon,$yr,$wday,$yday,$dst) = localtime(time);
my $msg = sprintf "%02d:%02d:%02d %5d %s", $hour,$min,$sec,$$,$msg;
send_msg( $request, 0, $msg );
@ -851,11 +851,9 @@ sub get_host_from_url {
if (scalar(@validip) == 0) {
if ($globalopt{verbose}) {
trace( $request, "Invalid IP address in URL" );
}
return undef;
}
trace( $request, "Invalid IP address in URL" );
return undef;
}
#######################################
@ -913,7 +911,7 @@ sub parse_responses {
my $nettab = xCAT::Table->new('networks');
my @nets = $nettab->getAllAttribs('netname', 'net','mask','mgtifname');
if (scalar(@nets) == 0) {
trace( $request, "Can't get networks information from networks table" , 1);
send_msg( $request, 0, "Can't get networks information from networks table" );
} else {
foreach my $enet (@nets) {
next if ($enet->{'net'} =~ /:/);
@ -927,15 +925,13 @@ sub parse_responses {
$addr{$netref->{$entry}}{netmask} = $net{$entry}{netmask};
}
trace( $request, "Now lsslp begin to parse its response: " , 1);
trace( $request, "Now lsslp begin to parse its response...");
foreach my $rsp ( keys(%searchmacs) ) {
###########################################
# attribute not found
###########################################
if ( !exists(${$searchmacs{$rsp}}{attributes} )) {
if ( $globalopt{verbose} ) {
trace( $request, "Attribute not found for: $rsp" );
}
trace( $request, "Attribute not found for $rsp" );
next;
}
###########################################
@ -944,11 +940,11 @@ sub parse_responses {
my $attributes = ${$searchmacs{$rsp}}{attributes};
my $type = ${$attributes->{'type'}}[0] ;
if ( !exists($service_slp{$type} )) {
if ( $globalopt{verbose} ) {
trace( $request, "Discarding unsupported type: $type" );
}
trace( $request, "Discarding unsupported type $type" );
next;
}
###########################################
# Define nodes
###########################################
@ -966,6 +962,10 @@ sub parse_responses {
$atthash{url} = ${$searchmacs{$rsp}}{payload};
$outhash{'Server-'.$atthash{mtm}.'-SN'.$atthash{serial}} = \%atthash;
$$length = length( $atthash{ip}) if ( length( $atthash{ip} ) > $$length );
trace( $request, "Discover node $atthash{hostname}: type is $atthash{type}, \
mtm is $atthash{mtm}, sn is $atthash{serial}, slot is $atthash{slot}, \
ip is $atthash{ip}, mac is $atthash{mac}, otheringerfaces is $atthash{otherinterfaces}" );
} elsif ($type eq SERVICE_CMM) {
$atthash{type} = $service_slp{$type};
$atthash{mtm} = ${$attributes->{'enclosure-mtm'}}[0];
@ -980,6 +980,11 @@ sub parse_responses {
$atthash{otherinterfaces} = ${$attributes->{'ipv4-address'}}[0];
$outhash{'Server-'.$atthash{mtm}.'-SN'.$atthash{serial}} = \%atthash;
$$length = length( $atthash{ip}) if ( length( $atthash{ip} ) > $$length );
trace( $request, "Discover node $atthash{hostname}: type is $atthash{type}, \
mtm is $atthash{mtm}, sn is $atthash{serial}, side is $atthash{side}, \
ip is $atthash{ip}, mac is $atthash{mac}, mname is $atthash{mname},\
mpa is $atthash{mpa}, otheringerfaces is $atthash{otherinterfaces}" );
} elsif ($type eq SERVICE_HMC) {
$atthash{type} = $service_slp{$type};
$atthash{mtm} = ${$attributes->{'machinetype-model'}}[0];
@ -999,6 +1004,9 @@ sub parse_responses {
$atthash{otherinterfaces} = ${$attributes->{'ip-address'}}[0];
$outhash{'Server-'.$atthash{mtm}.'-SN'.$atthash{serial}} = \%atthash;
$$length = length( $atthash{ip}) if ( length( $atthash{ip} ) > $$length );
trace( $request, "Discover node $atthash{hostname}: type is $atthash{type},\
mtm is $atthash{mtm},sn is $atthash{serial}, ip is $atthash{ip},\
mac is $atthash{mac}, otheringerfaces is $atthash{otherinterfaces}" );
}else {
#begin to define fsp and bpa
my %tmphash;
@ -1018,6 +1026,10 @@ sub parse_responses {
$tmphash{cid} = int(${$attributes->{'cage-number'}}[0]);
$outhash{$tmphash{ip}} = \%tmphash;
$$length = length( $tmphash{ip}) if ( length( $tmphash{ip} ) > $$length );
trace( $request, "Discover node $atthash{hostname}:type is $tmphash{type}, mtm is $tmphash{mtm}, \
sn is $tmphash{serial}, side is $tmphash{side},parent is $tmphash{parent},ip is $tmphash{ip}, \
cec id is $tmphash{cid} , frame id is $tmphash{fid},mac is $tmphash{side}, \
otheringerfaces is $atthash{otherinterfaces}" );
#begin to define frame and cec
$atthash{type} = $service_slp{$type};
$atthash{mtm} = ${$attributes->{'machinetype-model'}}[0];
@ -1041,6 +1053,9 @@ sub parse_responses {
${$outhash{$name}}{fid} = int(${$attributes->{'frame-number'}}[0]) if(int(${$attributes->{'frame-number'}}[0]) != 0);
${$outhash{$name}}{cid} = int(${$attributes->{'cage-number'}}[0]) if(int(${$attributes->{'cage-number'}}[0]) != 0);
}
trace( $request, "Discover node $atthash{hostname}: type is $atthash{type}, mtm is $atthash{mtm},\
sn is $atthash{serial}, mac is $atthash{mac}, children is $atthash{children}, frame id is $atthash{fid}, \
cec id is $atthash{cid}, otheringerfaces is $atthash{otherinterfaces}" );
}
}
@ -1051,17 +1066,18 @@ sub parse_responses {
# and can't be done together
###########################################################
my $newhostname;
trace( $request, "\n\n\nBegin to find find frame's hostname", 1);
trace( $request, "\n\n\nBegin to find find frame's hostname");
foreach my $h ( keys %outhash ) {
if(${$outhash{$h}}{type} eq TYPE_FRAME) {
$newhostname = $::OLD_DATA_CACHE{"frame*".${$outhash{$h}}{mtm}."*".${$outhash{$h}}{serial}};
if ($newhostname) {
${$outhash{$h}}{hostname} = $newhostname ;
trace ( $request, "$h find hostname $newhostname");
push @matchnode, $h;
}
}
}
trace( $request, "\n\n\nBegin to find cec's parent, adjust cec id", 1);
trace( $request, "\n\n\nBegin to find cec's parent");
foreach my $h ( keys %outhash ) {
next unless (${$outhash{$h}}{type} eq TYPE_CEC);
my $parent;
@ -1078,10 +1094,10 @@ sub parse_responses {
$parent = $existing_node if ($existing_node);
}
${$outhash{$h}}{parent} = $parent;
trace( $request, "$h find parent $parent") if ($parent);
}
}
trace( $request, "\n\n\nBegin to find cec hostname", 1);
trace( $request, "\n\n\nBegin to find cec hostname");
foreach my $h ( keys %outhash ) {
if(${$outhash{$h}}{type} eq TYPE_CEC) {
my $newhostname1 = $::OLD_DATA_CACHE{"cec*".${$outhash{$h}}{mtm}.'*'.${$outhash{$h}}{serial}};
@ -1097,16 +1113,18 @@ sub parse_responses {
}
}
trace( $request, "\n\n\nBegin to find fsp/bpa's hostname and parent", 1);
trace( $request, "\n\n\nBegin to find fsp/bpa's hostname and parent");
foreach my $h ( keys %outhash ) {
if(${$outhash{$h}}{type} eq TYPE_FSP or ${$outhash{$h}}{type} eq TYPE_BPA) {
$newhostname = $::OLD_DATA_CACHE{${$outhash{$h}}{type}."*".${$outhash{$h}}{mtm}.'*'.${$outhash{$h}}{serial}.'*'.${$outhash{$h}}{side}};
if ($newhostname){
${$outhash{$h}}{hostname} = $newhostname ;
trace( $request, "$h find hostname $newhostname");
push @matchnode, $h;
}
my $ptmp = ${$outhash{$h}}{parent};
${$outhash{$h}}{parent} = ${$outhash{$ptmp}}{hostname};
trace( $request, "$h find parent ${$outhash{$ptmp}}{hostname}");
#check if fsp/bpa's ip is valid
my $vip = check_ip(${$outhash{$h}}{ip});
unless ( $vip ) { #which means the ip is a valid one
@ -1119,38 +1137,37 @@ sub parse_responses {
# If there is -n flag, skip the matched nodes
##########################################################
if (exists($globalopt{n})) {
trace( $request, "\n\n\nThere is -n flag, skip these nodes:\n", 1);
trace( $request, "\n\n\nThere is -n flag, skip these nodes:\n");
for my $matchednode (@matchnode) {
if ($outhash{$matchednode}) {
trace( $request, "$matchednode,", 1);
trace( $request, "skip the node $matchednode\n");
delete $outhash{$matchednode};
}
}
}
if (exists($globalopt{I})) {
my %existsnodes;
my $nodelisttab = xCAT::Table->new('nodelist');
unless ( $nodelisttab ) {
return( "Error opening 'nodelisttable'" );
}
my @nodes = $nodelisttab->getAllNodeAttribs([qw(node)]);
my $notdisnode;
for my $enode (@nodes) {
for my $mnode (@matchnode) {
if ($enode->{node} eq ${$outhash{$mnode}}{hostname}) {
$existsnodes{$enode->{node}} = 1;
last;
}
my $nodelisttab = xCAT::Table->new('nodelist');
unless ( $nodelisttab ) {
return( "Error opening 'nodelisttable'" );
}
my @nodes = $nodelisttab->getAllNodeAttribs([qw(node)]);
my $notdisnode;
for my $enode (@nodes) {
for my $mnode (@matchnode) {
if ($enode->{node} eq ${$outhash{$mnode}}{hostname}) {
$existsnodes{$enode->{node}} = 1;
last;
}
}
for my $enode (@nodes) {
unless ($existsnodes{$enode->{node}}) {
$notdisnode .= $enode->{node}.",";
}
}
for my $enode (@nodes) {
unless ($existsnodes{$enode->{node}}) {
$notdisnode .= $enode->{node}.",";
}
trace ( $request, "These nodes defined in database but can't be discovered: $notdisnode \n", 1);
}
send_msg ( $request, 0, "These nodes defined in database but can't be discovered: $notdisnode \n");
}
return \%outhash;
@ -1464,28 +1481,18 @@ sub process_request {
return(1);
}
###########################################
# do discover
###########################################
my $start;
if ( exists($globalopt{verbose}) ) {
#######################################
# Write header for trace
#######################################
my $tm = localtime( time );
my $msg = "\n-------- $tm\nTime PID";
trace( $req, $msg );
}
#######################################
# Write header for trace
#######################################
my $tm = localtime( time );
my $msg = "\n-------- $tm\nTime PID";
trace( \%request, $msg );
###########################################
# Record begin time
###########################################
if ( exists($globalopt{verbose}) ) {
$start = Time::HiRes::gettimeofday();
}
my $start = Time::HiRes::gettimeofday();
############################################
## Fork one process per adapter
############################################
@ -1517,11 +1524,10 @@ sub process_request {
###########################################
# Record ending time
###########################################
if ( exists($globalopt{verbose}) ) {
my $elapsed = Time::HiRes::gettimeofday() - $start;
my $msg = sprintf( "Total SLP Time: %.3f sec\n", $elapsed );
trace( $req, $msg );
}
my $elapsed = Time::HiRes::gettimeofday() - $start;
my $msg2 = sprintf( "Total SLP Time: %.3f sec\n", $elapsed );
trace( \%request, $msg2 );
###########################################
# Combined responses from all children
###########################################