1. update node's status while replace mac address. 2. set blades rack info while import/discover

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@14637 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
leiaibj 2012-12-13 03:32:16 +00:00
parent dd8fc76f6f
commit 28257de1fd
2 changed files with 46 additions and 0 deletions

View File

@ -457,6 +457,29 @@ sub get_all_rack
#-------------------------------------------------------------------------------
=head3 get_racks_for_chassises
Description : Get rack info for a chassis list.
Arguments : $chassislistref - chassis list reference.
Returns : A dict ref. keys are chassis name, values are rack name for each chassis.
=cut
#-------------------------------------------------------------------------------
sub get_racks_for_chassises
{
my $class = shift;
my $chassislistref = shift;
my %rackinfodict = ();
my $nodepostab = xCAT::Table->new('nodepos');
my $racksref = $nodepostab->getNodesAttribs($chassislistref, ['rack']);
foreach (@$chassislistref){
$rackinfodict{$_} = $racksref->{$_}->[0]->{'rack'};
}
return \%rackinfodict;
}
#-------------------------------------------------------------------------------
=head3 get_allnode_singleattrib_hash
Description : Get all records of a column from a table, then return a hash.
The return hash's keys are the records of this attribute

View File

@ -709,6 +709,20 @@ Usage:
setrsp_progress("Warning: failed to call kit commands.");
}
# Update node's status.
setrsp_progress("Updating node status...");
my $nodelisttab = xCAT::Table->new('nodelist',-create=>1);
my (
$sec, $min, $hour, $mday, $mon,
$year, $wday, $yday, $isdst
) = localtime(time);
my $currtime = sprintf("%02d-%02d-%04d %02d:%02d:%02d",
$mon + 1, $mday, $year + 1900,
$hour, $min, $sec);
$nodelisttab->setNodeAttribs($hostname, {status=>'defined', statustime=>$currtime});
$nodelisttab->close();
setrsp_progress("Updated MAC address.");
}
@ -1370,6 +1384,10 @@ sub parse_hosts_string{
my @allknownips = keys %allips;
my $freeprovipsref = xCAT::ProfiledNodeUtils->get_allocable_staticips_innet($provnet);
# get all chassis's rack info.
my @chassislist = keys %allchassis;
my $chassisrackref = xCAT::ProfiledNodeUtils->get_racks_for_chassises(\@chassislist);
foreach my $attr (keys %::FILEATTRS){
my $errmsg = validate_node_entry($attr, $::FILEATTRS{$attr});
# Check whether specified IP is in our prov network, static range.
@ -1378,6 +1396,11 @@ sub parse_hosts_string{
$errmsg .= "Specified IP address $::FILEATTRS{$attr}->{'ip'} not in static range of provision network $provnet";
}
}
# Set rack info for blades too.
if ($::FILEATTRS{$attr}->{'chassis'}){
$::FILEATTRS{$attr}->{'rack'} = $chassisrackref->{$::FILEATTRS{$attr}->{'chassis'}};
}
if ($errmsg) {
if ($attr =~ /^TMPHOSTS/){
push @invalid_records, ["__hostname__", $errmsg];