support for FSP redundancy.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@8722 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
3b9fe409bf
commit
ce669cd25d
@ -97,7 +97,8 @@ sub enumerate {
|
||||
my $d = $node_hash->{$node_name};
|
||||
if($$d[4] =~ /^lpar$/ || $$d[4] =~ /^bpa$/) {
|
||||
$data = "please check the $node_name; the noderange of rscan couldn't be LPAR or BPA. ";
|
||||
push @output, [$node_name,$data,$Rc];
|
||||
#push @output, [$node_name,$data,$Rc];
|
||||
push @values, $data;
|
||||
next;
|
||||
}
|
||||
my $stat = xCAT::FSPUtils::fsp_api_action ($node_name, $d, "query_connection");
|
||||
@ -108,12 +109,14 @@ sub enumerate {
|
||||
# Output error
|
||||
##################################
|
||||
if ( $Rc != SUCCESS ) {
|
||||
push @output, [$node_name,$data,$Rc];
|
||||
#push @output, [$node_name,$data,$Rc];
|
||||
push @values, $data;
|
||||
next;
|
||||
}
|
||||
if($data !~ "LINE UP") {
|
||||
$data = "please check the $node_name is coneected to the hardware server";
|
||||
push @output, [$node_name,$data,$Rc];
|
||||
if($data !~ "Connected") {
|
||||
$data = "please check if the $node_name is coneected to the hardware server";
|
||||
#push @output, [$node_name,$data,$Rc];
|
||||
push @values, $data;
|
||||
next;
|
||||
}
|
||||
|
||||
@ -132,7 +135,8 @@ sub enumerate {
|
||||
$fname = $fsp;
|
||||
my $ips ="$7,$8";
|
||||
push @values, join( ",",
|
||||
"fsp",$node_name,$cageid,$model,$serial,$side, $server,$prof,$fname, $7);
|
||||
$$d[4],$node_name,$cageid,$model,$serial,$side, $server,$prof,$fname, $7);
|
||||
# "fsp",$node_name,$cageid,$model,$serial,$side, $server,$prof,$fname, $7);
|
||||
#"fsp",$fsp,$cageid,$model,$serial,$side,$server,$prof,$fname,$ips );
|
||||
|
||||
#####################################
|
||||
@ -146,7 +150,8 @@ sub enumerate {
|
||||
# Output error
|
||||
##################################
|
||||
if ( $Rc != SUCCESS ) {
|
||||
push @output, [$node_name,$data,$Rc];
|
||||
#push @output, [$node_name,$data,$Rc];
|
||||
push @values, $data;
|
||||
next;
|
||||
}
|
||||
my @list = split(/\n/,$data);
|
||||
@ -172,238 +177,11 @@ sub enumerate {
|
||||
}
|
||||
|
||||
}
|
||||
return(\@values);
|
||||
#return(\@values);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#########################################
|
||||
# Get hardware control point info
|
||||
#########################################
|
||||
{
|
||||
my $hcp = xCAT::PPCcli::lshmc( $exp );
|
||||
$Rc = shift(@$hcp);
|
||||
|
||||
#########################################
|
||||
# Return error
|
||||
#########################################
|
||||
if ( $Rc != SUCCESS ) {
|
||||
return( @$hcp[0] );
|
||||
}
|
||||
#########################################
|
||||
# Success
|
||||
#########################################
|
||||
my ($model,$serial) = split /,/, @$hcp[0];
|
||||
my $id = "";
|
||||
my $prof = "";
|
||||
my $ips = "";
|
||||
my $bpa = "";
|
||||
my $side = "";
|
||||
|
||||
push @values, join( ",",
|
||||
$hwtype,$server,$id,$model,$serial,$side,$server,$prof,$bpa,$ips );
|
||||
}
|
||||
|
||||
#########################################
|
||||
# Save hardware connections
|
||||
#########################################
|
||||
$filter = "type_model_serial_num,ipaddr,sp,side";
|
||||
my $conns = xCAT::PPCcli::lssysconn( $exp, "alls", $filter );
|
||||
$Rc = shift(@$conns);
|
||||
|
||||
#########################################
|
||||
# Return error
|
||||
#########################################
|
||||
if ( $Rc != SUCCESS ) {
|
||||
return( @$conns[0] );
|
||||
}
|
||||
|
||||
foreach my $con ( @$conns ) {
|
||||
my ($mtms,$ipaddr,$sp,$side) = split /,/,$con;
|
||||
my $value = undef;
|
||||
|
||||
if ( $sp =~ /^primary$/ or $side =~ /^a$/ ) {
|
||||
$value = "A";
|
||||
} elsif ($sp =~ /^secondary$/ or $side =~ /^b$/ ) {
|
||||
$value = "B";
|
||||
}
|
||||
|
||||
$hwconn{$ipaddr} = "$mtms,$value";
|
||||
}
|
||||
|
||||
#########################################
|
||||
# Enumerate frames (IVM has no frame)
|
||||
#########################################
|
||||
if ( $hwtype ne "ivm" ) {
|
||||
$filter = "type_model,serial_num,name,frame_num,ipaddr_a,ipaddr_b";
|
||||
my $frames = xCAT::PPCcli::lssyscfg( $exp, "bpas", $filter );
|
||||
$Rc = shift(@$frames);
|
||||
|
||||
#####################################
|
||||
# Expect error
|
||||
#####################################
|
||||
if ( $Rc == EXPECT_ERROR ) {
|
||||
return( @$frames[0] );
|
||||
}
|
||||
#####################################
|
||||
# CLI error
|
||||
#####################################
|
||||
if ( $Rc == RC_ERROR ) {
|
||||
return( @$frames[0] );
|
||||
}
|
||||
#####################################
|
||||
# If frames found, enumerate cages
|
||||
#####################################
|
||||
if ( $Rc != NR_ERROR ) {
|
||||
$filter = "cage_num,type_model_serial_num";
|
||||
|
||||
foreach my $val ( @$frames ) {
|
||||
my ($model,$serial) = split /,/, $val;
|
||||
my $mtms = "$model*$serial";
|
||||
|
||||
my $cages = xCAT::PPCcli::lssyscfg($exp,"cage",$mtms,$filter);
|
||||
$Rc = shift(@$cages);
|
||||
|
||||
#############################
|
||||
# Skip...
|
||||
# Frame in bad state
|
||||
#############################
|
||||
if ( $Rc != SUCCESS ) {
|
||||
push @values, "# $mtms: ERROR @$cages[0]";
|
||||
next;
|
||||
}
|
||||
#############################
|
||||
# Success
|
||||
#############################
|
||||
foreach ( @$cages ) {
|
||||
my ($cageid,$mtms) = split /,/;
|
||||
$cage{$mtms} = "$cageid,$val";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#########################################
|
||||
# Enumerate CECs
|
||||
#########################################
|
||||
$filter = "name,type_model,serial_num,ipaddr";
|
||||
my $cecs = xCAT::PPCcli::lssyscfg( $exp, "fsps", $filter );
|
||||
$Rc = shift(@$cecs);
|
||||
|
||||
#########################################
|
||||
# Return error
|
||||
#########################################
|
||||
if ( $Rc != SUCCESS ) {
|
||||
return( @$cecs[0] );
|
||||
}
|
||||
foreach ( @$cecs ) {
|
||||
#####################################
|
||||
# Get CEC information
|
||||
#####################################
|
||||
my ($fsp,$model,$serial,$ips) = split /,/;
|
||||
my $mtms = "$model*$serial";
|
||||
my $cageid = "";
|
||||
my $fname = "";
|
||||
|
||||
#####################################
|
||||
# Get cage CEC is in
|
||||
#####################################
|
||||
my $frame = $cage{$mtms};
|
||||
|
||||
#####################################
|
||||
# Save frame information
|
||||
#####################################
|
||||
if ( defined($frame) ) {
|
||||
my ($cage,$model,$serial,$name,$id,$ipa,$ipb) = split /,/, $frame;
|
||||
my $prof = "";
|
||||
my $bpa = "";
|
||||
$cageid = $cage;
|
||||
$fname = $name;
|
||||
|
||||
#######################################
|
||||
# Convert IP-A to short-hostname.
|
||||
# If fails, use user-defined FSP name
|
||||
#######################################
|
||||
my $host = getshorthost( $ipa );
|
||||
if ( defined($host) ) {
|
||||
$fname = $host;
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Save two sides of BPA seperately
|
||||
#######################################
|
||||
my $bpastr = join( ",","bpa",$fname,$id,$model,$serial,"A",$server,$prof,$bpa,$ipa);
|
||||
if ( !grep /^\Q$bpastr\E$/, @values)
|
||||
{
|
||||
push @values, join( ",",
|
||||
"bpa",$fname,$id,$model,$serial,"A",$server,$prof,$bpa,$ipa);
|
||||
}
|
||||
$bpastr = join( ",","bpa",$fname,$id,$model,$serial,"B",$server,$prof,$bpa,$ipb);
|
||||
if ( !grep /^\Q$bpastr\E$/, @values)
|
||||
{
|
||||
push @values, join( ",",
|
||||
"bpa",$fname,$id,$model,$serial,"B",$server,$prof,$bpa,$ipb);
|
||||
}
|
||||
}
|
||||
#####################################
|
||||
# Save CEC information
|
||||
#####################################
|
||||
my $prof = "";
|
||||
|
||||
#######################################
|
||||
# Convert IP to short-hostname.
|
||||
# If fails, use user-defined FSP name
|
||||
#######################################
|
||||
my $host = getshorthost( $ips );
|
||||
if ( defined($host) ) {
|
||||
$fsp = $host;
|
||||
}
|
||||
|
||||
my $mtmss = $hwconn{$ips};
|
||||
my ($mtms,$side) = split /,/, $mtmss;
|
||||
push @values, join( ",",
|
||||
"fsp",$fsp,$cageid,$model,$serial,$side,$server,$prof,$fname,$ips );
|
||||
|
||||
#####################################
|
||||
# Enumerate LPARs
|
||||
#####################################
|
||||
$filter = "name,lpar_id,default_profile,curr_profile";
|
||||
my $lpars = xCAT::PPCcli::lssyscfg( $exp, "lpar", $mtms, $filter );
|
||||
$Rc = shift(@$lpars);
|
||||
|
||||
####################################
|
||||
# Expect error
|
||||
####################################
|
||||
if ( $Rc == EXPECT_ERROR ) {
|
||||
return( @$lpars[0] );
|
||||
}
|
||||
####################################
|
||||
# Skip...
|
||||
# CEC could be "Incomplete" state
|
||||
####################################
|
||||
if ( $Rc == RC_ERROR ) {
|
||||
push @values, "# $mtms: ERROR @$lpars[0]";
|
||||
next;
|
||||
}
|
||||
####################################
|
||||
# No results found
|
||||
####################################
|
||||
if ( $Rc == NR_ERROR ) {
|
||||
next;
|
||||
}
|
||||
foreach ( @$lpars ) {
|
||||
my ($name,$lparid,$dprof,$curprof) = split /,/;
|
||||
my $prof = (length($curprof) && ($curprof !~ /^none$/)) ? $curprof : $dprof;
|
||||
my $ips = "";
|
||||
my $port = "";
|
||||
|
||||
#####################################
|
||||
# Save LPAR information
|
||||
#####################################
|
||||
push @values, join( ",",
|
||||
"lpar",$name,$lparid,$model,$serial,$port,$server,$prof,$fsp,$ips );
|
||||
}
|
||||
}
|
||||
return( \@values );
|
||||
return( \@values );
|
||||
}
|
||||
|
||||
|
||||
@ -549,7 +327,7 @@ sub format_stanza {
|
||||
#####################################
|
||||
# Skip hardware control point
|
||||
#####################################
|
||||
#shift(@$values);
|
||||
shift(@$values);
|
||||
|
||||
foreach ( sort @$values ) {
|
||||
my @data = split /,/;
|
||||
|
Loading…
Reference in New Issue
Block a user