2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-21 19:22:05 +00:00

support service node pool (#3268)

This commit is contained in:
yangsong 2017-06-22 05:04:55 -05:00 committed by Bin Xu
parent c94be14d08
commit 6ed46ff77f
3 changed files with 32 additions and 18 deletions

View File

@ -502,7 +502,7 @@ sub addnode
if ($nrhash)
{
$nrent = $nrhash->{$node}->[0];
if ($nrent and $nrent->{tftpserver})
if ($nrent and $nrent->{tftpserver} and $nrent->{tftpserver} ne '<xcatmaster>')
{
#check the value of inet_ntoa(inet_aton("")),if the hostname cannot be resolved,
#the value of inet_ntoa() will be "undef", which will cause fatal error
@ -531,9 +531,7 @@ sub addnode
my $node_server = undef;
if ($nrent->{xcatmaster}) {
$node_server = $nrent->{xcatmaster};
} elsif ($nrent->{servicenode}) {
$node_server = $nrent->{servicenode};
}
}
unless ($node_server) {
my @nxtsrvd = xCAT::NetworkUtils->my_ip_facing($node);
unless ($nxtsrvd[0]) { $nxtsrv = $nxtsrvd[1]; }

View File

@ -218,21 +218,36 @@ sub setstate {
} elsif (defined($nrhash{$node}->[0]) && $nrhash{$node}->[0]->{'xcatmaster'}) {
$tftpserver = $nrhash{$node}->[0]->{'xcatmaster'};
} else {
my @master = xCAT::TableUtils->get_site_attribute("master");
$tftpserver = $master[0];
}
my $serverip;
if (defined($tftpserverip{$tftpserver})) {
$serverip = $tftpserverip{$tftpserver};
} else {
$serverip = xCAT::NetworkUtils->getipaddr($tftpserver);
unless ($serverip) {
syslog("local1|err", "xCAT unable to resolve $tftpserver");
return;
}
$tftpserverip{$tftpserver} = $serverip;
$tftpserver = "<xcatmaster>";
}
my $serverip;
if($tftpserver eq "<xcatmaster>"){
my @nxtsrvd = xCAT::NetworkUtils->my_ip_facing($node);
unless ($nxtsrvd[0]) {
$serverip = $nxtsrvd[1];
} else {
$callback->({ error => [ $nxtsrvd[1] ], errorcode => [1] });
return;
}
}else{
if (defined($tftpserverip{$tftpserver})) {
$serverip = $tftpserverip{$tftpserver};
} else {
$serverip = xCAT::NetworkUtils->getipaddr($tftpserver);
unless ($serverip) {
syslog("local1|err", "xCAT unable to resolve $tftpserver");
return;
}
$tftpserverip{$tftpserver} = $serverip;
}
}
unless($serverip){
$callback->({ error => ["Unable to determine the tftpserver for $node"], errorcode => [1] });
return;
}
my $grub2protocol = "tftp";
if (defined($nrhash{$node}->[0]) && $nrhash{$node}->[0]->{'netboot'}
&& ($nrhash{$node}->[0]->{'netboot'} =~ /grub2-(.*)/)) {

View File

@ -549,6 +549,7 @@ sub donets
}
}
my $tent=$nethash{$netname};
unless ($tent and $tent->{tftpserver})
{
my $netdev = $ent[7];
@ -577,7 +578,7 @@ sub donets
push @{ $rsp->{data} }, " tftpserver=$ipaddr";
} else {
if (!$foundmatch) {
$nettab->setAttribs({ 'net' => $net, 'mask' => $mask }, { tftpserver => $ipaddr });
$nettab->setAttribs({ 'net' => $net, 'mask' => $mask }, { tftpserver => "<xcatmaster>" });
}
}
last;