-Fix xen cons error output formatting
-Change ipmi cons method to not query tables directly. This dramatically decreases DB load. git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2032 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
c997b1663d
commit
e98cd07abe
@ -24,6 +24,7 @@ our @EXPORT = qw(
|
||||
sub handled_commands {
|
||||
return {
|
||||
rpower => 'nodehm:power,mgt',
|
||||
getipmicons => 'ipmi',
|
||||
rspconfig => 'nodehm:mgt',
|
||||
rvitals => 'nodehm:mgt',
|
||||
rinv => 'nodehm:mgt',
|
||||
@ -4694,6 +4695,18 @@ sub preprocess_request {
|
||||
}
|
||||
|
||||
|
||||
sub getipmicons {
|
||||
my $argr=shift;
|
||||
#$argr is [$node,$nodeip,$nodeuser,$nodepass];
|
||||
my $cb = shift;
|
||||
my $ipmicons={node=>[{name=>[$argr->[0]]}]};
|
||||
$ipmicons->{node}->[0]->{bmcaddr}->[0]=$argr->[1];
|
||||
$ipmicons->{node}->[0]->{bmcuser}->[0]=$argr->[2];
|
||||
$ipmicons->{node}->[0]->{bmcpass}->[0]=$argr->[3];
|
||||
$cb->($ipmicons);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
sub process_request {
|
||||
@ -4750,6 +4763,14 @@ sub process_request {
|
||||
}
|
||||
push @donargs,[$node,$nodeip,$nodeuser,$nodepass];
|
||||
}
|
||||
if ($request->{command}->[0] eq "getipmicons") {
|
||||
foreach (@donargs) {
|
||||
getipmicons($_,$callback);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
my $children = 0;
|
||||
$SIG{CHLD} = sub {my $kpid; do { $kpid = waitpid(-1, WNOHANG); if ($kpid > 0) { delete $bmc_comm_pids{$kpid}; $children--; } } while $kpid > 0; };
|
||||
my $sub_fds = new IO::Select;
|
||||
|
@ -10,31 +10,52 @@ BEGIN
|
||||
}
|
||||
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
|
||||
use lib "$::XCATROOT/lib/perl";
|
||||
require xCAT::Table;
|
||||
require xCAT::Utils;
|
||||
my $dba;
|
||||
my $ipmitab = xCAT::Table->new('ipmi');
|
||||
unless ($ipmitab) { die "Unable to open IPMI table"; }
|
||||
my $passtab = xCAT::Table->new('passwd');
|
||||
$ENV{HOME}='/root/';
|
||||
require xCAT::Client;
|
||||
my $username = 'USERID';
|
||||
my $password = 'PASSW0RD';
|
||||
my $node = $ARGV[0];
|
||||
my $bmc = $node;
|
||||
if ($passtab) {
|
||||
($dba) = $passtab->getAttribs({key=>'ipmi'},qw(username password));
|
||||
if ($dba) {
|
||||
if ($dba->{username}) { $username = $dba->{username}; }
|
||||
if ($dba->{password}) { $password = $dba->{password}; }
|
||||
}
|
||||
my $bmc;
|
||||
sub getans {
|
||||
my $rsp = shift;
|
||||
if ($rsp->{node}) {
|
||||
$bmc = $rsp->{node}->[0]->{bmcaddr}->[0];
|
||||
$username = $rsp->{node}->[0]->{bmcuser}->[0];
|
||||
$password = $rsp->{node}->[0]->{bmcpass}->[0];
|
||||
}
|
||||
}
|
||||
my $cmdref={
|
||||
command=>"getipmicons",
|
||||
arg=>"text",
|
||||
noderange=>$ARGV[0]
|
||||
};
|
||||
xCAT::Client::submit_request($cmdref,\&getans);
|
||||
until ($username and $password and $bmc) {
|
||||
print "console not ready\n";
|
||||
sleep 5+int(rand(10));
|
||||
xCAT::Client::submit_request($cmdref,\&getans);
|
||||
}
|
||||
#require xCAT::Table;
|
||||
#require xCAT::Utils;
|
||||
#my $dba;
|
||||
#my $ipmitab = xCAT::Table->new('ipmi');
|
||||
#unless ($ipmitab) { die "Unable to open IPMI table"; }
|
||||
#my $passtab = xCAT::Table->new('passwd');
|
||||
#if ($passtab) {
|
||||
# ($dba) = $passtab->getAttribs({key=>'ipmi'},qw(username password));
|
||||
# if ($dba) {
|
||||
# if ($dba->{username}) { $username = $dba->{username}; }
|
||||
# if ($dba->{password}) { $password = $dba->{password}; }
|
||||
# }
|
||||
#}
|
||||
|
||||
$dba = $ipmitab->getNodeAttribs($ARGV[0],[qw(bmc username password)]);
|
||||
if ($dba) {
|
||||
if ($dba->{bmc}) { $bmc = $dba->{bmc}; }
|
||||
if ($dba->{username}) { $username = $dba->{username}; }
|
||||
if ($dba->{password}) { $password = $dba->{password}; }
|
||||
}
|
||||
xCAT::Utils::close_all_dbhs;
|
||||
#$dba = $ipmitab->getNodeAttribs($ARGV[0],[qw(bmc username password)]);
|
||||
#if ($dba) {
|
||||
# if ($dba->{bmc}) { $bmc = $dba->{bmc}; }
|
||||
# if ($dba->{username}) { $username = $dba->{username}; }
|
||||
# if ($dba->{password}) { $password = $dba->{password}; }
|
||||
#}
|
||||
#xCAT::Utils::close_all_dbhs;
|
||||
#my $isintel = system "ipmitool -I lanplus -U $username -P $password -H $bmc chassis status > /dev/null 2>&1";
|
||||
my $isintel = system "ipmitool -I lan -U $username -P $password -H $bmc mc info| grep 'Manufacturer ID : 343' > /dev/null 2>&1";
|
||||
$isintel = not $isintel;
|
||||
|
@ -35,7 +35,7 @@ sub getans {
|
||||
}
|
||||
xCAT::Client::submit_request($cmdref,\&getans);
|
||||
until ($dsthost and $speed and $dstty) {
|
||||
print "console not ready";
|
||||
print "console not ready\n";
|
||||
sleep 5+int(rand(10));
|
||||
xCAT::Client::submit_request($cmdref,\&getans);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user