mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-03 21:02:34 +00:00 
			
		
		
		
	support service node pool (#3268)
This commit is contained in:
		@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user