updated for ESXi and directories for extra tags option

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@6474 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
vallard 2010-06-16 06:23:18 +00:00
parent 5f8822302a
commit d205884db8

View File

@ -452,7 +452,15 @@ sub make_bundle {
mkdir("$tpath/extra");
chmod 0755,"$tpath/extra";
foreach(@{ $attribs->{extra} }){
copy($_->{src}, "$tpath/extra");
my $fromf = $_->{src};
print " $fromf\n";
if(-d $fromf ){
print "fromf is a directory";
mkpath("$tpath/extra/$fromf");
`cp -a $fromf/* $tpath/extra/$fromf/`;
}else{
copy($fromf, "$tpath/extra");
}
}
}
@ -783,7 +791,6 @@ sub make_files {
my $netdir = "$installroot/netboot/$os/$arch/$profile";
mkpath("$netdir", {verbose => 1, mode => 0755 });
# save the old one off
foreach my $f ($kernel, $ramdisk, $rootimg){
if(-r "$netdir/$kernel"){
@ -798,18 +805,66 @@ sub make_files {
if($data->{extra}){
# have to copy extras
print "copying extras...\n" if $::VERBOSE;
foreach(@{ $data->{extra} }) {
my $f = basename($_->{src});
my $dest = $_->{dest};
print "cp $imgdir/extra/$f $dest\n" if $::VERBOSE;
if(-r "$dest/$f"){
$callback->( {data => ["Moving old $dest/$f to $dest/$f.ORIG..."]}) if $::VERBOSE;
move("$dest/$f", "$dest/$f.ORIG");
#if its just a hash then there is only one entry.
if (ref($data->{extra}) eq 'HASH'){
my $ex = $data->{extra};
#my $f = basename($ex->{src});
my $ff = $ex->{src};
my $dest = $ex->{dest};
unless(moveExtra($callback, $ff, $dest, $imgdir)){
return 0;
}
# if its an array go through each item.
}else{
foreach(@{ $data->{extra} }) {
#my $f = basename($_->{src});
my $ff = $_->{src};
my $dest = $_->{dest};
unless(moveExtra($callback, $ff, $dest, $imgdir)){
return 0;
}
}
copy("$imgdir/extra/$f", $dest);
}
}
# return 1 meant everything was successful!
return 1;
}
sub moveExtra {
my $callback = shift;
my $ff = shift;
my $dest = shift;
my $imgdir = shift;
my $f = basename($ff);
if(-r "$dest/$f"){
$callback->( {data => ["Moving old $dest/$f to $dest/$f.ORIG..."]}) if $::VERBOSE;
move("$dest/$f", "$dest/$f.ORIG");
}
# this extra file is a directory, so we are moving the directory over.
print "Is $imgdir/extra/$ff a directory or a file?\n";
if(-d "$imgdir/extra/$ff"){
print "This is a directory\n";
unless(-d $dest){
unless(mkpath($dest)){
$callback->( {error=>["Failed to create $dest"], errorcode => 1});
return 0;
}
}
unless(move("$imgdir/extra/$ff", $dest)){
$callback->( {error=>["Failed to move $imgdir/extra/$ff to $dest"], errorcode => 1});
return 0;
}
}else{
print "This is a file\n";
# this extra file is a file and we can just copy to the destination.
unless(copy("$imgdir/extra/$f", $dest)){
$callback->( {error=>["Failed to copy $imgdir/extra/$f to $dest"], errorcode => 1});
return 0;
}
}
return 1;
}