From 38703acefae17868947f15366279d2f1ea1bb94d Mon Sep 17 00:00:00 2001 From: yinle Date: Wed, 7 Dec 2011 10:27:06 +0000 Subject: [PATCH] Fix the mistake that lsslp can't get hmc's mtms git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@11161 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-server/lib/xcat/plugins/lsslp.pm | 85 ++++++++++++++------------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/lsslp.pm b/xCAT-server/lib/xcat/plugins/lsslp.pm index 3982b734a..7e1003e55 100644 --- a/xCAT-server/lib/xcat/plugins/lsslp.pm +++ b/xCAT-server/lib/xcat/plugins/lsslp.pm @@ -2558,47 +2558,56 @@ sub parse_responses { ########################################################## # begin to find fsp/bpa's parent ########################################################## - next unless ( $type eq TYPE_BPA or $type eq TYPE_FSP ); - foreach my $h1 ( keys %hash ) { - my $data1 = $hash{$h1}; - my $type1 = @$data1[0]; - my $mtm1 = @$data1[1]; - my $sn1 = @$data1[2]; - if ((( $type1 eq TYPE_FRAME and $type eq TYPE_BPA) or ($type1 eq TYPE_CEC and $type eq TYPE_FSP)) and ($mtm1 eq $mtm and $sn1 eq $sn) ) { - $parent = $h1; # FSP's parent is CEC - last; - } else { - $parent = undef; # Frame and HMC have no parent + if ( $type eq TYPE_BPA or $type eq TYPE_FSP) { + foreach my $h1 ( keys %hash ) { + my $data1 = $hash{$h1}; + my $type1 = @$data1[0]; + my $mtm1 = @$data1[1]; + my $sn1 = @$data1[2]; + if ((( $type1 eq TYPE_FRAME and $type eq TYPE_BPA) or ($type1 eq TYPE_CEC and $type eq TYPE_FSP)) and ($mtm1 eq $mtm and $sn1 eq $sn) ) { + $parent = $h1; # FSP's parent is CEC + last; + } else { + $parent = undef; # HMC have no parent + } } + push @$data, $parent; #This is for $data[8]; + trace ( $request, " Find the $h parent $parent.", 1); + } else { + push @$data, undef; } - push @$data, $parent; #This is for $data[8]; - trace ( $request, " Find the $h parent $parent.", 1); ########################################################## # match fsp/bpa nodes with the definition made by xcatsetup # keep the otherinterfaces for the nodes. ########################################################## - $newhostname = match_hosts_defined_by_xcatsetup($h, $type, $mtm, $sn, $side, $ip0, $cagenum, $bpamtm, $bpasn, $parent); - if ($newhostname) { - trace ( $request, " Find the new hostname $newhostname.", 1); - $hash{$newhostname} = $data; - push @matchnodes, $newhostname; - $otherinterfacehash{$newhostname}{otherinterfaces} = $ip0; - trace( $request, " Keep the node ip $ip0 in $newhostname otherinterfaces" , 1); - } else { - $hash{$h} = $data; - $otherinterfacehash{$h}{otherinterfaces} = $ip0; - trace( $request, " Keep the node ip $ip0 in $h otherinterfaces" , 1); - } + if ( $type eq TYPE_BPA or $type eq TYPE_FSP) { + $newhostname = match_hosts_defined_by_xcatsetup($h, $type, $mtm, $sn, $side, $ip0, $cagenum, $bpamtm, $bpasn, $parent); + if ($newhostname) { + trace ( $request, " Find the new hostname $newhostname.", 1); + $hash{$newhostname} = $data; + push @matchnodes, $newhostname; + $otherinterfacehash{$newhostname}{otherinterfaces} = $ip0; + trace( $request, " Keep the node ip $ip0 in $newhostname otherinterfaces" , 1); + } else { + $hash{$h} = $data; + $otherinterfacehash{$h}{otherinterfaces} = $ip0; + trace( $request, " Keep the node ip $ip0 in $h otherinterfaces" , 1); + } + } ########################################################## - # find the mac address for the fsp/bpa nodes. + # find the mac address for the fsp/bpa/hmc nodes. ########################################################## - $mac = match_ip_mac( $ip0 ); - # This is originally used to check the invalid mac address in AIX, but failed to do it. - #unless ( $mac =~ /\w+\:\w+\:\w+\:\w+\:\w+\:\w+/ ) { $mac = undef;} - push @$data, $mac; #This is for $data[9], which is mac address; - trace ( $request, " Find the $h mac $mac.", 1); + if ( $type eq TYPE_BPA or $type eq TYPE_FSP or $type eq TYPE_HMC) { + $mac = match_ip_mac( $ip0 ); + # This is originally used to check the invalid mac address in AIX, but failed to do it. + #unless ( $mac =~ /\w+\:\w+\:\w+\:\w+\:\w+\:\w+/ ) { $mac = undef;} + push @$data, $mac; #This is for $data[9], which is mac address; + trace ( $request, " Find the $h mac $mac.", 1); + } else { + push @$data, undef; + } } ########################################################## @@ -2712,7 +2721,7 @@ sub xCATdB { ######################################## # HMC: name=hostname, ip=ip, mac=mac ######################################## - xCAT::PPCdb::add_ppchcp( lc($type), "$name,$mac,$ip",1 ); + xCAT::PPCdb::add_ppchcp( lc($type), "$name,$mac,$model,$serial,$ip",1 ); } elsif ( $type =~ /^FSP$/ ) { ######################################## @@ -4115,16 +4124,8 @@ sub match_hosts_defined_by_xcatsetup { return $oldnode; } } - if ($type eq TYPE_BPA or $type eq TYPE_FSP) - { - if ($pname eq $tmpparent and $side eq $tmpside and $type eq $tmptype) { - $$flagref = 1; - print "23 got old name $oldnode\n" if($DEBUG_MATCH eq 1); - return $oldnode; - } - } - } - + } + return undef; } ##########################################################################