Have getbmcconfig use the refactored password retrieval function, get ready for remoteimmsetup

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@14481 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
jbjohnso 2012-11-29 20:30:22 +00:00
parent bbda4fdff2
commit 3df2492e9d

View File

@ -4,6 +4,7 @@ use Data::Dumper;
use xCAT::Table;
use xCAT::MsgUtils;
use xCAT::Utils;
use xCAT::PasswordUtils;
use xCAT::TableUtils;
use IO::Select;
use Socket;
@ -11,6 +12,7 @@ use Socket;
sub handled_commands {
return {
getbmcconfig => 'bmcconfig',
remoteimmsetup => 'bmcconfig',
};
}
@ -95,44 +97,27 @@ sub process_request {
}
#my $sitetable = xCAT::Table->new('site');
my $ipmitable = xCAT::Table->new('ipmi');
my $passtable = xCAT::Table->new('passwd');
my $tmphash;
my $username = 'USERID';
my $username;
my $gennedpassword=0;
my $bmc;
my $password = 'PASSW0RD';
if ($passtable) { ($tmphash)=$passtable->getAttribs({key=>'ipmi'},'username','password'); }
#Check for generics, can grab for both user and pass with a query
#since they cannot be in disparate records in passwd tab
if ($tmphash->{username}) {
$username=$tmphash->{username};
}
if ($tmphash->{password}) { #It came for free with the last query
$password=$tmphash->{password};
}
#$tmphash=($sitetable->getAttribs({key=>'genpasswords'},'value'))[0];
my @entries = xCAT::TableUtils->get_site_attribute("genpasswords");
my $site_entry = $entries[0];
if ($site_entry eq "1" or $site_entry =~ /y(es)?/i) {
my $password;
$tmphash=$ipmitable->getNodesAttribs([$node],['bmc','username','bmcport','password','taggedvlan']);
my $authmap = xCAT::PasswordUtils::getIPMIAuth(noderange=>[$node],ipmihash=>$tmphash);
if ($::XCATSITEVALS{genpasswords} eq "1" or $::XCATSITEVALS{genpasswords} =~ /y(es)?/i) {
$password = genpassword(10)."1cA!";
$gennedpassword=1;
$tmphash=$ipmitable->getNodeAttribs($node,['bmc','username','bmcport','taggedvlan']);
} else {
$tmphash=$ipmitable->getNodeAttribs($node,['bmc','username','bmcport','password','taggedvlan']);
if ($tmphash->{password}) {
$password = $tmphash->{password};
}
$password = $authmap->{$node}->{password};
}
my $bmcport;
if (defined $tmphash->{bmcport}) {
$bmcport = $tmphash->{bmcport};
if (defined $tmphash->{$node}->[0]->{bmcport}) {
$bmcport = $tmphash->{$node}->[0]->{bmcport};
}
if ($tmphash->{bmc} ) {
$bmc=$tmphash->{bmc};
}
if ($tmphash->{username}) {
$username = $tmphash->{username};
if ($tmphash->{$node}->[0]->{bmc} ) {
$bmc=$tmphash->{$node}->[0]->{bmc};
}
$username = $authmap->{$node}->{username};
unless (defined $bmc) {
xCAT::MsgUtils->message('S',"Unable to identify bmc for $node, refusing to give config data");
$callback->({error=>["Invalid table configuration for bmcconfig"],errorcode=>[1]});
@ -141,7 +126,7 @@ sub process_request {
foreach my $sbmc (split /,/,$bmc) {
(my $ip,my $mask,my $gw) = net_parms($sbmc);
unless ($ip and $mask and $username and $password) {
xCAT::MsgUtils->message('S',"Unable to determine IP, netmask, username, and/or pasword for $sbmc, ensure that host resolution is working. Best guess parameters would have been: IP: '$ip', netmask: '$netmask', username: '$username', password: '$password'", );
xCAT::MsgUtils->message('S',"Unable to determine IP, netmask, username, and/or pasword for $sbmc, ensure that host resolution is working. Best guess parameters would have been: IP: '$ip', netmask: '$mask', username: '$username', password: '$password'", );
$callback->({error=>["Invalid table configuration for bmcconfig"],errorcode=>[1]});
return 1;
}
@ -149,8 +134,8 @@ sub process_request {
if (defined $bmcport) {
$response->{bmcport}=$bmcport;
}
if (defined $tmphash->{taggedvlan}) {
$response->{taggedvlan}=$tmphash->{taggedvlan};
if (defined $tmphash->{$node}->[0]->{taggedvlan}) {
$response->{taggedvlan}=$tmphash->{$node}->[0]->{taggedvlan};
}
$callback->($response);
}