FSPAPI supports for lshwconn
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@5964 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
c4128bec5a
commit
21632360ab
@ -13,7 +13,7 @@ use xCAT::Utils;
|
||||
##############################################
|
||||
my %method = (
|
||||
mkhwconn => \&mkhwconn_parse_args,
|
||||
# lshwconn => \&lshwconn_parse_args,
|
||||
lshwconn => \&lshwconn_parse_args,
|
||||
rmhwconn => \&rmhwconn_parse_args,
|
||||
);
|
||||
##########################################################################
|
||||
@ -279,11 +279,10 @@ sub lshwconn_parse_args
|
||||
{
|
||||
return( ["Failed to get nodehm.mgt value for node $node.\n"]);
|
||||
}
|
||||
if ( $ent->{nodetype} ne 'hmc'
|
||||
and $ent->{nodetype} ne 'fsp'
|
||||
if ( $ent->{nodetype} ne 'fsp'
|
||||
and $ent->{nodetype} ne 'bpa')
|
||||
{
|
||||
return( ["Node type $ent->{nodetype} is not supported for this command.\n"]);
|
||||
return( ["Node type $ent->{nodetype} is not supported for this command in FSPAPI\n"]);
|
||||
}
|
||||
if ( ! $nodetype)
|
||||
{
|
||||
@ -455,7 +454,7 @@ sub mkhwconn
|
||||
return \@value;
|
||||
}
|
||||
##########################################################################
|
||||
# List connection status for CECs/BPAs -- This function isn't impletmented and used.
|
||||
# List connection status for CECs/BPAs through FSPAPI
|
||||
##########################################################################
|
||||
sub lshwconn
|
||||
{
|
||||
@ -466,108 +465,68 @@ sub lshwconn
|
||||
my $opt = $request->{opt};
|
||||
my @value = ();
|
||||
my $Rc = undef;
|
||||
my $res = undef;
|
||||
|
||||
|
||||
my $hosttab = xCAT::Table->new( 'hosts' );
|
||||
my $res = xCAT::PPCcli::lssysconn( $exp, "all" );
|
||||
$Rc = shift @$res;
|
||||
if ( $request->{nodetype} eq 'hmc')
|
||||
for my $cec_bpa ( keys %$hash)
|
||||
{
|
||||
if ( $Rc)
|
||||
{
|
||||
push @value, [$exp->[3], $res->[0], $Rc];
|
||||
return \@value;
|
||||
}
|
||||
my $vpdtab = xCAT::Table->new('vpd');
|
||||
my @vpdentries = $vpdtab->getAllAttribs(qw(node serial mtm));
|
||||
my %node_vpd_hash;
|
||||
for my $vpdent ( @vpdentries)
|
||||
{
|
||||
if ( $vpdent->{node} and $vpdent->{serial} and $vpdent->{mtm})
|
||||
{
|
||||
$node_vpd_hash{"$vpdent->{mtm}*$vpdent->{serial}"} = $vpdent->{node};
|
||||
}
|
||||
}
|
||||
my %node_ppc_hash;
|
||||
my $ppctab = xCAT::Table->new('ppc');
|
||||
for my $node ( values %node_vpd_hash)
|
||||
{
|
||||
my $node_parent_hash = $ppctab->getNodeAttribs( $node, [qw(parent)]);
|
||||
$node_ppc_hash{$node} = $node_parent_hash->{parent};
|
||||
}
|
||||
|
||||
for my $r ( @$res)
|
||||
{
|
||||
$r =~ s/type_model_serial_num=([^,]*),//;
|
||||
my $mtms = $1;
|
||||
$r =~ s/resource_type=([^,]*),//;
|
||||
$r =~ s/sp=.*?,//;
|
||||
$r =~ s/sp_phys_loc=.*?,//;
|
||||
my $node_name;
|
||||
if ( exists $node_vpd_hash{$mtms})
|
||||
{
|
||||
$node_name = $node_vpd_hash{$mtms};
|
||||
$r = "hcp=$exp->[3],parent=$node_ppc_hash{$node_name}," . $r;
|
||||
}
|
||||
else
|
||||
{
|
||||
$node_name = $mtms;
|
||||
$r = "hcp=$exp->[3],parent=," . $r;
|
||||
}
|
||||
push @value, [ $node_name, $r, $Rc];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for my $cec_bpa ( keys %$hash)
|
||||
{
|
||||
my $node_hash = $hash->{$cec_bpa};
|
||||
for my $node_name (keys %$node_hash)
|
||||
{
|
||||
############################################
|
||||
# If lssysconn failed, put error into all
|
||||
# nodes' return values
|
||||
############################################
|
||||
if ( $Rc )
|
||||
{
|
||||
push @value, [$node_name, @$res[0], $Rc];
|
||||
my $node_hash = $hash->{$cec_bpa};
|
||||
for my $node_name (keys %$node_hash)
|
||||
{
|
||||
my $d = $node_hash->{$node_name};
|
||||
my $action = "query_connection";
|
||||
my $res = xCAT::Utils::fsp_api_action ($node_name, $d, $action);
|
||||
#print "in lshwconn:\n";
|
||||
#print Dumper($res);
|
||||
my $Rc = @$res[2];
|
||||
my $data = @$res[1];
|
||||
|
||||
############################################
|
||||
# If lssysconn failed, put error into all
|
||||
# nodes' return values
|
||||
############################################
|
||||
if ( $Rc )
|
||||
{
|
||||
push @value, [$node_name, $data, $Rc];
|
||||
next;
|
||||
}
|
||||
|
||||
############################
|
||||
# Get IP address
|
||||
############################
|
||||
my $node_ip = undef;
|
||||
if ( $hosttab)
|
||||
{
|
||||
my $node_ip_hash = $hosttab->getNodeAttribs( $node_name,[qw(ip)]);
|
||||
$node_ip = $node_ip_hash->{ip};
|
||||
}
|
||||
if (!$node_ip)
|
||||
{
|
||||
push @value, [$node_name, $node_ip, $Rc];
|
||||
next;
|
||||
}
|
||||
|
||||
if ( my @res_matched = grep /\Qipaddr=$node_ip,\E/, @$res)
|
||||
{
|
||||
for my $r ( @res_matched)
|
||||
{
|
||||
$r =~ s/\Qtype_model_serial_num=$cec_bpa,\E//;
|
||||
# $r =~ s/\Qresource_type=$type,\E//;
|
||||
$r =~ s/sp=.*?,//;
|
||||
$r =~ s/sp_phys_loc=.*?,//;
|
||||
push @value, [$node_name, $r, $Rc];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
push @value, [$node_name, 'Connection not found', 1];
|
||||
}
|
||||
}
|
||||
|
||||
my $node_ip = xCAT::Utils::getNodeIPaddress( $node_name );
|
||||
if(!defined($node_ip)) {
|
||||
$data = "Failed to get the $node_name\'s ip";
|
||||
push @value, [$node_name, $data, -1];
|
||||
next;
|
||||
}
|
||||
if( $data =~ /state/) {
|
||||
$data =~ /state=([\w\s]+),\(type=([\w-]+)\),\(serial-number=([\w]+)\),\(machinetype-model=([\w-]+)\),sp=([\w]+),\(ip-address=([\w.]+),([\w.]+)\)/ ;
|
||||
print "parsing: $1,$2,$3,$4,$5,$6,$7\n";
|
||||
my $state = $1;
|
||||
my $type = $2;
|
||||
my $sn = $3;
|
||||
my $mtm = $4;
|
||||
my $sp = $5;
|
||||
my $ipadd = $6;
|
||||
my $alt_ipaddr = $7;
|
||||
if($ipadd ne $node_ip) {
|
||||
$ipadd=$7;
|
||||
$alt_ipaddr = $6;
|
||||
}
|
||||
$data = "sp=$sp,ipadd=$node_ip,alt_ipadd=$alt_ipaddr,state=$state";
|
||||
#my $s;
|
||||
#foreach my $val ( @infomap ) {
|
||||
# if ( $data =~ /@$val[0]=([\w.\-\s]+)/ ) {
|
||||
# print "$1\n";
|
||||
# $s = $s + "@$val[1]=$1";
|
||||
# }
|
||||
#}
|
||||
#$data = $s;
|
||||
}
|
||||
push @value, [$node_name, $data, $Rc];
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return \@value;
|
||||
|
||||
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
|
@ -70,8 +70,8 @@ my %modules = (
|
||||
bpa => "xCAT::FSPconn",
|
||||
},
|
||||
lshwconn => { hmc => "xCAT::PPCconn",
|
||||
fsp => "xCAT::PPCconn",
|
||||
bpa => "xCAT::PPCconn",
|
||||
fsp => "xCAT::FSPconn",
|
||||
bpa => "xCAT::FSPconn",
|
||||
},
|
||||
renergy => { hmc => "xCAT::PPCenergy",
|
||||
},
|
||||
@ -168,7 +168,7 @@ sub process_command {
|
||||
if($fsp_api == 0 &&
|
||||
($request->{command} =~ /^(rpower)$/ || $request->{command} =~ /^rinv$/ || $request->{command} =~ /^rflash$/
|
||||
|| $request->{command} =~ /^getmacs$/ || $request->{command} =~ /^rnetboot$/ || $request->{command} =~ /^rvitals$/
|
||||
|| $request->{command} =~ /^mkhwconn$/ || $request->{command} =~ /^rmhwconn$/
|
||||
|| $request->{command} =~ /^mkhwconn$/ || $request->{command} =~ /^rmhwconn$/ || $request->{command} =~ /^lshwconn$/
|
||||
)
|
||||
) {
|
||||
#support FSPpower, FSPinv and FSPrflash
|
||||
|
Loading…
Reference in New Issue
Block a user