-Add 'nodeset winshell' to be like nodeset shell, but start an inferior OS

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2217 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
jbjohnso 2008-09-20 22:26:48 +00:00
parent 3c3c75d237
commit 4b0e3db9ea
2 changed files with 46 additions and 10 deletions

View File

@ -82,7 +82,7 @@ sub setdestiny {
if ($ient->{kcmdline}) { $hash->{kcmdline} = $ient->{kcmdline} }
$bptab->setNodeAttribs($_,$hash);
}
} elsif ($state =~ /^install$/ or $state eq "install" or $state eq "netboot" or $state eq "image") {
} elsif ($state =~ /^install$/ or $state eq "install" or $state eq "netboot" or $state eq "image" or $state eq "winshell") {
chomp($state);
$subreq->({command=>["mk$state"],
node=>$req->{node}}, \&relay_response);

View File

@ -28,6 +28,7 @@ sub handled_commands
return {
copycd => "windows",
mkinstall => "nodetype:os=(win.*|imagex)",
mkwinshell => "windows",
mkimage => "nodetype:os=imagex",
};
}
@ -46,6 +47,9 @@ sub process_request
{
return copycd($request, $callback, $doreq);
}
elsif ($request->{command}->[0] eq 'mkwinshell') {
return winshell($request,$callback,$doreq);
}
elsif ($request->{command}->[0] eq 'mkinstall')
{
return mkinstall($request, $callback, $doreq);
@ -102,17 +106,50 @@ sub mkimage {
print $shandle ":END\r\n";
print $shandle "pause\r\n";
close($shandle);
foreach (getips($node)) {
link "$installroot/autoinst/$node.cmd","$installroot/autoinst/$_.cmd";
unlink "/tftpboot/Boot/BCD.$_";
if ($ent->{arch} =~ /64/) {
link "/tftpboot/Boot/BCD.64","/tftpboot/Boot/BCD.$_";
} else {
link "/tftpboot/Boot/BCD.32","/tftpboot/Boot/BCD.$_";
}
mkwinlinks($node,$ent);
}
}
sub mkwinlinks {
my $node = shift;
my $ent = shift;
foreach (getips($node)) {
link "$installroot/autoinst/$node.cmd","$installroot/autoinst/$_.cmd";
unlink "/tftpboot/Boot/BCD.$_";
if ($ent->{arch} =~ /64/) {
link "/tftpboot/Boot/BCD.64","/tftpboot/Boot/BCD.$_";
} else {
link "/tftpboot/Boot/BCD.32","/tftpboot/Boot/BCD.$_";
}
}
}
sub winshell {
my $installroot = "/install";
my $request = shift;
my $script = "cmd";
my @nodes = @{$request->{node}};
my $node;
my $ostab = xCAT::Table->new('nodetype');
my $oshash = $ostab->getNodesAttribs(\@nodes,['profile','arch']);
foreach $node (@nodes) {
open($shandle,">","$installroot/autoinst/$node.cmd");
print $shandle $script;
close $shandle;
mkwinlinks($node,$oshash->{$node}->[0]);
my $bptab = xCAT::Table->new('bootparams',-create=>1);
$bptab->setNodeAttribs(
$node,
{
kernel => "Boot/pxeboot.0",
initrd => "",
kcmdline => ""
}
);
}
}
sub applyimagescript {
}
#Don't sweat os type as for mkimage it is always 'imagex' if it got here
sub mkinstall
{
@ -295,7 +332,6 @@ sub copycd
if ($sitetab)
{
(my $ref) = $sitetab->getAttribs({key => installdir}, value);
print Dumper($ref);
if ($ref and $ref->{value})
{
$installroot = $ref->{value};