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:
parent
c94be14d08
commit
6ed46ff77f
@ -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]; }
|
||||
|
@ -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-(.*)/)) {
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user