diff --git a/xCAT-server/lib/xcat/plugins/xnba.pm b/xCAT-server/lib/xcat/plugins/xnba.pm index 467ba9a2c..d3b4c4d51 100644 --- a/xCAT-server/lib/xcat/plugins/xnba.pm +++ b/xCAT-server/lib/xcat/plugins/xnba.pm @@ -18,7 +18,7 @@ my $globaltftpdir = xCAT::TableUtils->getTftpDir(); #my $dhcpver = 3; my %usage = ( - "nodeset" => "Usage: nodeset [shell|boot|runcmd=bmcsetup|iscsiboot|osimage[=]|offline]", + "nodeset" => "Usage: nodeset [shell|boot|runcmd=bmcsetup|osimage[=]|offline]", ); sub handled_commands { return { @@ -76,7 +76,8 @@ sub getstate { chomp($headline); return $headline; } else { - return "boot"; + # There is no boot configuration file, node must be offline + return "offline"; } } else { return "discover"; @@ -531,6 +532,7 @@ sub process_request { my $linuximgtab=xCAT::Table->new('linuximage',-create=>1); my %machash = %{$mactab->getNodesAttribs(\@nodes,[qw(mac)])}; + my @makedhcp_nodes; foreach (@nodes) { my $tftpdir; if ($nrhash{$_}->[0] and $nrhash{$_}->[0]->{tftpdir}) { @@ -565,9 +567,14 @@ sub process_request { unlink($tftpdir."/xcat/xnba/nodes/".$_.".pxelinux"); unlink($tftpdir."/xcat/xnba/nodes/".$_.".uefi"); unlink($tftpdir."/xcat/xnba/nodes/".$_.".elilo"); + push(@makedhcp_nodes, $_); } } } + # for offline operation, remove the dhcp entries + if ($args[0] eq 'offline') { + $sub_req->({ command => ['makedhcp'],arg=>['-d'],node => \@makedhcp_nodes }, $::XNBA_callback); + } #dhcp stuff -- inittime is set when xcatd on sn is started