diff --git a/xCAT-server/lib/xcat/plugins/anaconda.pm b/xCAT-server/lib/xcat/plugins/anaconda.pm index 5099d9e4b..1a1d4088c 100644 --- a/xCAT-server/lib/xcat/plugins/anaconda.pm +++ b/xCAT-server/lib/xcat/plugins/anaconda.pm @@ -549,10 +549,11 @@ sub mknetboot $xcatmaster = '!myipfn!'; #allow service nodes to dynamically nominate themselves as a good contact point, this is of limited use in the event that xcat is not the dhcp/tftp server } - if ($ient and $ient->{tftpserver} and $ient->{tftpserver} ne '') { + if ($ient and $ient->{nfsserver} and $ient->{nfsserver} ne '') { + $imgsrv = $ient->{nfsserver}; + }elsif ($ient and $ient->{tftpserver} and $ient->{tftpserver} ne '') { $imgsrv = $ient->{tftpserver}; } else { - $ient = $reshash->{$node}->[0]; $imgsrv = $xcatmaster; } @@ -591,11 +592,8 @@ sub mknetboot # get entry for nfs root if it exists: # have to get nfssvr and nfsdir from noderes table - my $nfssrv = $imgsrv; + my $nfssrv = $imgsrvip; my $nfsdir = $rootimgdir; - if ($ient->{nfsserver}) { - $nfssrv = $ient->{nfsserver}; - } if ($ient->{nfsdir} ne '') { $nfsdir = $ient->{nfsdir} . "/netboot/$osver/$arch/$profile"; diff --git a/xCAT-server/lib/xcat/plugins/debian.pm b/xCAT-server/lib/xcat/plugins/debian.pm index 72b795efe..eb0281b4e 100644 --- a/xCAT-server/lib/xcat/plugins/debian.pm +++ b/xCAT-server/lib/xcat/plugins/debian.pm @@ -1267,44 +1267,24 @@ sub mknetboot my $xcatmaster; $ient = $reshash->{$node}->[0]; #$restab->getNodeAttribs($node, ['tftpserver']); - - if ($ient and $ient->{xcatmaster}) - { + if ($ient and $ient->{xcatmaster}) { $xcatmaster = $ient->{xcatmaster}; } else { $xcatmaster = '!myipfn!'; #allow service nodes to dynamically nominate themselves as a good contact point, this is of limited use in the event that xcat is not the dhcp/tftp server } - if ($ient and $ient->{tftpserver}) - { + if ($ient and $ient->{nfsserver} and $ient->{nfsserver} ne '') { + $imgsrv = $ient->{nfsserver}; + }elsif ($ient and $ient->{tftpserver} and $ient->{tftpserver} ne '') { $imgsrv = $ient->{tftpserver}; - } - else - { - $ient = $reshash->{$node}->[0]; #$restab->getNodeAttribs($node, ['xcatmaster']); - #if ($ient and $ient->{xcatmaster}) - #{ - # $imgsrv = $ient->{xcatmaster}; - #} - #else - #{ - # master not correct for service node pools - #$ient = $sitetab->getAttribs({key => master}, value); - #if ($ient and $ient->{value}) - #{ - # $imgsrv = $ient->{value}; - #} - #else - #{ - # $imgsrv = '!myipfn!'; - #} - #} + } else { $imgsrv = $xcatmaster; } unless ($imgsrv) { xCAT::MsgUtils->report_node_error($callback, $node, "Unable to determine or reasonably guess the image server for $node"); next; } + my $kcmdline; if ($statelite) { if (rootfstype ne "ramdisk") { @@ -1313,9 +1293,6 @@ sub mknetboot # have to get nfssvr and nfsdir from noderes table my $nfssrv = $imgsrv; my $nfsdir = $rootimgdir; - if ($ient->{nfsserver}) { - $nfssrv = $ient->{nfsserver}; - } if ($ient->{nfsdir} ne '') { $nfsdir = $ient->{nfsdir} . "/netboot/$osver/$arch/$profile"; diff --git a/xCAT-server/lib/xcat/plugins/petitboot.pm b/xCAT-server/lib/xcat/plugins/petitboot.pm index e6707b7e5..ec53c84b0 100644 --- a/xCAT-server/lib/xcat/plugins/petitboot.pm +++ b/xCAT-server/lib/xcat/plugins/petitboot.pm @@ -94,8 +94,8 @@ sub setstate { if ($kern->{kernel} !~ /^$tftpdir/) { my $nodereshash = $nrhash{$node}->[0]; my $installsrv; - if ($nodereshash and $nodereshash->{nfsserver}) { - $installsrv = $nodereshash->{nfsserver}; + if ($nodereshash and $nodereshash->{tftpserver}) { + $installsrv = $nodereshash->{tftpserver}; } elsif ($nodereshash->{xcatmaster}) { $installsrv = $nodereshash->{xcatmaster}; } else { @@ -574,7 +574,7 @@ sub process_request { my $chaintab = xCAT::Table->new('chain', -create => 1); my $chainhash = $chaintab->getNodesAttribs(\@nodes, ['currstate']); my $noderestab = xCAT::Table->new('noderes', -create => 1); - my $nodereshash = $noderestab->getNodesAttribs(\@nodes, [ 'tftpdir', 'xcatmaster', 'nfsserver', 'servicenode' ]); + my $nodereshash = $noderestab->getNodesAttribs(\@nodes, [ 'tftpdir', 'xcatmaster', 'tftpserver', 'servicenode' ]); my $typetab = xCAT::Table->new('nodetype', -create => 1); my $typehash = $typetab->getNodesAttribs(\@nodes, [ 'os', 'provmethod', 'arch', 'profile' ]); my $linuximgtab = xCAT::Table->new('linuximage', -create => 1); diff --git a/xCAT-server/lib/xcat/plugins/sles.pm b/xCAT-server/lib/xcat/plugins/sles.pm index b8bcc50c1..fe288bd0f 100644 --- a/xCAT-server/lib/xcat/plugins/sles.pm +++ b/xCAT-server/lib/xcat/plugins/sles.pm @@ -411,41 +411,21 @@ sub mknetboot my $ient; my $xcatmaster; - $ient = $restab->getNodeAttribs($node, ['xcatmaster']); - if ($ient and $ient->{xcatmaster}) - { + $ient = $reshash->{$node}->[0]; #$restab->getNodeAttribs($node, ['tftpserver']); + if ($ient and $ient->{xcatmaster}) { $xcatmaster = $ient->{xcatmaster}; } else { $xcatmaster = '!myipfn!'; #allow service nodes to dynamically nominate themselves as a good contact point, this is of limited use in the event that xcat is not the dhcp/tftp server } - $ient = $restab->getNodeAttribs($node, ['tftpserver']); - if ($ient and $ient->{tftpserver}) - { + if ($ient and $ient->{nfsserver} and $ient->{nfsserver} ne '') { + $imgsrv = $ient->{nfsserver}; + }elsif ($ient and $ient->{tftpserver} and $ient->{tftpserver} ne '') { $imgsrv = $ient->{tftpserver}; - } - else - { - # $ient = $restab->getNodeAttribs($node, ['xcatmaster']); - # if ($ient and $ient->{xcatmaster}) - # { - # $imgsrv = $ient->{xcatmaster}; - # } - # else - # { - # # master removed, does not work for servicenode pools - # #$ient = $sitetab->getAttribs({key => master}, value); - # #if ($ient and $ient->{value}) - # #{ - # # $imgsrv = $ient->{value}; - # #} - # #else - # #{ - # $imgsrv = '!myipfn!'; - # #} - # } + } else { $imgsrv = $xcatmaster; } + unless ($imgsrv) { xCAT::MsgUtils->report_node_error($callback, $node, "Unable to determine or reasonably guess the image server for $node"); @@ -463,14 +443,8 @@ sub mknetboot my $nfssrv = $imgsrv; my $nfsdir = $rootimgdir; - if ($restab) { - my $resHash = $restab->getNodeAttribs($node, [ 'nfsserver', 'nfsdir' ]); - if ($resHash and $resHash->{nfsserver}) { - $nfssrv = $resHash->{nfsserver}; - } - if ($resHash and $resHash->{nfsdir} ne '') { - $nfsdir = $resHash->{nfsdir} . "/netboot/$osver/$arch/$profile"; - } + if ($ient->{nfsdir} ne '') { + $nfsdir = $ient->{nfsdir} . "/netboot/$osver/$arch/$profile"; } if (&using_dracut($rootimgdir)) { $kcmdline = "root=nfs:$nfssrv:$nfsdir/rootimg:ro STATEMNT=";