From d3789253c044e60ae68f57e2e3aaedcf4e45440e Mon Sep 17 00:00:00 2001 From: jjhua Date: Sat, 28 Apr 2012 08:35:40 +0000 Subject: [PATCH] performance enhancement for getIPaddress() git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.7@12380 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-server/lib/perl/xCAT/PPC.pm | 86 ++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 33 deletions(-) diff --git a/xCAT-server/lib/perl/xCAT/PPC.pm b/xCAT-server/lib/perl/xCAT/PPC.pm index 067e79422..c23ab8232 100644 --- a/xCAT-server/lib/perl/xCAT/PPC.pm +++ b/xCAT-server/lib/perl/xCAT/PPC.pm @@ -818,6 +818,11 @@ sub preprocess_nodes { return undef; } } + + if ( $request->{fsp_api} == 1 || $request->{command} =~ /^(mkhwconn|rmhwconn)$/) { + xCAT::FSPUtils::getHcpAttribs($request, \%tabs); + } + ########################################## # Group nodes @@ -840,31 +845,6 @@ sub preprocess_nodes { #@$d[3] = $hcp; my $mtms = @$d[2]; - if( $request->{command} =~ /^(mkhwconn|lshwconn|rmhwconn)$/ && grep (/^-s$/, @{$request->{arg}})) { - my $sfp; - unless ( $request->{sfp} ) { - my $ppctab = xCAT::Table->new('ppc'); - if ( $ppctab ) { - my $ent = $ppctab->getNodeAttribs( $node, [qw(sfp)]); - if( $request->{command} =~ /^(lshwconn|rmhwconn)$/ && !defined($ent)) { - send_msg( $request, 1, "$node: No sfp defined in the ppc table."); - next; - } - $sfp = $ent->{sfp}; - } - } else { - $sfp = $request->{sfp}; - } - if( $request->{command} =~ /^(mkhwconn)$/ && !defined($sfp)) { - send_msg( $request, 1, "$node: Please specify the sfp in the commands or in the ppc table."); - next; - } - $request->{fsp_api} = 0; - $request->{hwtype} = "hmc"; - $hcp = $sfp; - } - - ###################################### # Special case for mkhwconn ###################################### @@ -886,16 +866,30 @@ sub preprocess_nodes { # Get userid and password ########################################## while (my ($hcp,$hash) = each(%nodehash) ) { - if($request->{hwtype} && ($request->{hwtype} eq "blade" )) { - next; - } my @cred; - if ($request->{hcp} && ($request->{hcp} eq "hmc" )) { - @cred = xCAT::PPCdb::credentials( $hcp, $request->{hcp} ); - } else { - @cred = xCAT::PPCdb::credentials( $hcp, $request->{hwtype} ); - } + if( $request->{fsp_api} != 1 ) { + if ($request->{hcp} && ($request->{hcp} eq "hmc" )) { + @cred = xCAT::PPCdb::credentials( $hcp, $request->{hcp} ); + } else { + @cred = xCAT::PPCdb::credentials( $hcp, $request->{hwtype} ); + } $request->{$hcp}{cred} = \@cred; + } + + if( $request->{fsp_api} == 1 && $request->{command} eq "mkhwconn") { + my $user; + if($request->{hwtype} && ($request->{hwtype} eq "blade" )) { + $user = "USERID"; + } + if($request->{hwtype} && ($request->{hwtype} =~ /^(fsp|bpa)$/ )) { + $user = "HMC"; + } + + @cred = xCAT::PPCdb::credentials( $hcp, $request->{hwtype}, $user ); + + $request->{$hcp}{cred} = \@cred; + } + } ########################################## # Group the nodes - we will fork one @@ -1278,6 +1272,32 @@ sub resolve { } } } + + ############################ + #Specail case for mkhwconn/lshwconn/rmhwconn with -s + ############################ + if( $request->{command} =~ /^(mkhwconn|lshwconn|rmhwconn)$/ && grep (/^-s$/, @{$request->{arg}})) { + my $sfp; + unless ( $request->{sfp} ) { + my $ent = $tabs->{ppc}->getNodeAttribs( $node, [qw(sfp)]); + if( $request->{command} =~ /^(lshwconn|rmhwconn)$/ && !defined($ent)) { + return( "$node: No sfp defined in the ppc table."); + + } + $sfp = $ent->{sfp}; + + } else { + $sfp = $request->{sfp}; + } + if( $request->{command} =~ /^(mkhwconn)$/ && !defined($sfp)) { + return("$node: Please specify the sfp in the commands or in the ppc table."); + } + $request->{fsp_api} = 0; + $request->{hwtype} = "hmc"; + $att->{hcp} = $sfp; + } + + ################################# # Build array of data #################################