Have offline remove UEFI related files

Do not attempt UEFI px if currstate is set to 'boot'
Implement ESXi5 UEFI PXE boot


git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@10554 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
jbjohnso 2011-09-19 19:11:10 +00:00
parent 1201990fc6
commit a824514ce8
2 changed files with 13 additions and 1 deletions

View File

@ -392,7 +392,7 @@ sub addnode
$lstatements = 'if option client-architecture = 00:00 and not gpxe.bus-id { filename = \"xcat/xnba.kpxe\"; } else { filename = \"\"; } '.$lstatements;
} else {
#TODO: if windows uefi, do vendor-class-identifier of "PXEClient" to bump it over to proxydhcp.c
if ($douefi) {
if ($douefi and $chainent->{currstate} ne "boot" and $chainent->{currstate} ne "iscsiboot") {
$lstatements = 'if option user-class-identifier = \"xNBA\" and option client-architecture = 00:00 { always-broadcast on; filename = \"http://'.$nxtsrv.'/tftpboot/xcat/xnba/nodes/'.$node.'\"; } else if option user-class-identifier = \"xNBA\" and option client-architecture = 00:09 { filename = \"http://'.$nxtsrv.'/tftpboot/xcat/xnba/nodes/'.$node.'.uefi\"; } else if option client-architecture = 00:07 { filename = \"xcat/xnba.efi\"; } else if option client-architecture = 00:00 { filename = \"xcat/xnba.kpxe\"; } else { filename = \"\"; }'.$lstatements; #Only PXE compliant clients should ever receive xNBA
} else {
$lstatements = 'if option user-class-identifier = \"xNBA\" and option client-architecture = 00:00 { filename = \"http://'.$nxtsrv.'/tftpboot/xcat/xnba/nodes/'.$node.'\"; } else if option client-architecture = 00:00 { filename = \"xcat/xnba.kpxe\"; } else { filename = \"\"; }'.$lstatements; #Only PXE compliant clients should ever receive xNBA

View File

@ -199,6 +199,16 @@ sub setstate {
print $pcfg "\n";
}
print $pcfg "IPAPPEND 2\n";
if ($kern->{kernel} =~ /esxi5/) { #Make uefi boot provisions
my $ucfg;
open($ucfg,'>',$tftpdir."/xcat/xnba/nodes/".$node.".uefi");
if ($kern->{kcmdline} =~ / xcat\/netboot/) {
$kern->{kcmdline} =~ s/xcat\/netboot/\/tftpboot\/xcat\/netboot/;
}
print $ucfg "#!gpxe\n";
print $ucfg 'chain http://${next-server}/tftpboot/xcat/esxboot-x64.efi '.$kern->{kcmdline}."\n";
close($ucfg);
}
} else { #other than comboot/multiboot, we won't have need of pxelinux
print $pcfg "imgfetch -n kernel http://".'${next-server}/tftpboot/'.$kern->{kernel}."\n";
print $pcfg "imgload kernel\n";
@ -533,6 +543,8 @@ sub process_request {
if($args[0] eq 'offline') {
unlink($tftpdir."/xcat/xnba/nodes/".$_);
unlink($tftpdir."/xcat/xnba/nodes/".$_.".pxelinux");
unlink($tftpdir."/xcat/xnba/nodes/".$_.".uefi");
unlink($tftpdir."/xcat/xnba/nodes/".$_.".elilo");
}
}
}