In imgcapture, added option for specifying device to capture (only s390x). In rmimage, added support to remove provmethod = raw (native SCSI/FCP) images. In imgimport and imgexport, added remote host option to download from a node not managed by xCAT, fixed indentation issues, and added support for provmethod = raw (native SCSI/FCP device image)

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@16693 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
phamt 2013-06-19 16:01:18 +00:00
parent 69f6fa5693
commit 4ce4e7c0fd
3 changed files with 1120 additions and 904 deletions

View File

@ -46,10 +46,11 @@ sub process_request {
@ARGV = @{$request->{arg}} if (defined $request->{arg});
my $argc = scalar @ARGV;
my $usage = "Usage: imgcapture <node> -t|--type diskless [-p | --profile <profile>] [-o|--osimage <osimage>] [-i <nodebootif>] [-n <nodenetdrivers>] [-V | --verbose] \n imgcapture <node> -t|--type sysclone -o|--osimage <osimage> [-V | --verbose] \n imgcapture [-h|--help] \n imgcapture [-v|--version]";
my $usage = "Usage: imgcapture <node> -t|--type diskless [-p | --profile <profile>] [-o|--osimage <osimage>] [-i <nodebootif>] [-n <nodenetdrivers>] [-d | --device <devicesToCapture>] [-V | --verbose] \n imgcapture <node> -t|--type sysclone -o|--osimage <osimage> [-V | --verbose] \n imgcapture [-h|--help] \n imgcapture [-v|--version]";
my $os;
my $arch;
my $device;
my $profile;
my $bootif;
my $netdriver;
@ -63,6 +64,7 @@ sub process_request {
"i=s" => \$bootif,
'n=s' => \$netdriver,
'osimage|o=s' => \$osimg,
"device|d=s" => \$device,
"help|h" => \$help,
"version|v" => \$version,
"verbose|V" => \$verbose,
@ -76,6 +78,7 @@ sub process_request {
xCAT::MsgUtils->message("D", $rsp, $callback);
return 0;
}
if($version) {
my $version = xCAT::Utils->Version();
my $rsp = {};
@ -105,9 +108,25 @@ sub process_request {
xCAT::MsgUtils->message("E", $rsp, $callback);
return 1;
}
my $nodetypetab = xCAT::Table->new("nodetype");
my $ref_nodetype = $nodetypetab->getNodeAttribs($node, ['os','arch','profile']);
$os = $ref_nodetype->{os};
$arch = $ref_nodetype->{arch};
unless($profile) {
$profile = $ref_nodetype->{profile};
}
# sysclone
unless($type =~ /diskless/)
{
# Handle image capture separately for s390x
if ($arch eq 's390x') {
eval { require xCAT_plugin::zvm; }; # Load z/VM plugin dynamically
xCAT_plugin::zvm->imageCapture($callback, $node, $os, $arch, $profile, $osimg, $device);
return;
}
my $shortname = xCAT::InstUtils->myxCATname();
my $rc;
@ -143,24 +162,14 @@ sub process_request {
return 1;
}
return;
}
my $nodetypetab = xCAT::Table->new("nodetype");
my $ref_nodetype = $nodetypetab->getNodeAttribs($node, ['os','arch','profile']);
$os = $ref_nodetype->{os};
$arch = $ref_nodetype->{arch};
unless($profile) {
$profile = $ref_nodetype->{profile};
}
# -i flag is required with sles genimage
if (!$bootif && $os =~ /^sles/) {
$bootif = "eth0";
}
# check whether the osimage exists or not
if($osimg) {
my $osimgtab=xCAT::Table->new('osimage', -create=>1);

File diff suppressed because it is too large Load Diff

View File

@ -105,8 +105,8 @@ sub process_request {
if($verbose) {
$callback->({info=>["For osimage $imagename: osver = $osver, arch = $arch, profile = $profile, method = $method in osimage table"]});
}
if (($method) && ($method ne "netboot") && ($method ne "statelite")) {
$callback->({error=>["Invalid method \"$method\", the rmimage command can only be used to remove the netboot or statelite image files"],errorcode=>[1]});
if (($method) && ($method ne "netboot") && ($method ne "statelite") && ($method ne "raw")) {
$callback->({error=>["Invalid method \"$method\", the rmimage command can only be used to remove the netboot, statelite, or raw image files"], errorcode=>[1]});
return;
}
@ -136,15 +136,24 @@ sub process_request {
$callback->({error=>["Invalid image name $imagename"],errorcode=>[1]});
return;
}
if (($method ne "netboot") && ($method ne "statelite")) {
$callback->({error=>["Invalid method \"$method\", the rmimage command can only be used to remove the netboot or statelite image files"],errorcode=>[1]});
if (($method ne "netboot") && ($method ne "statelite") && ($method ne "raw")) {
$callback->({error=>["Invalid method \"$method\", the rmimage command can only be used to remove the netboot, statelite, or raw image files"], errorcode=>[1]});
return;
}
}
$imagedir = "$installroot/netboot/$osver/$arch/$profile";
if ($method eq "raw") {
$imagedir = "$installroot/$method/$osver/$arch/$profile";
} else {
$imagedir = "$installroot/netboot/$osver/$arch/$profile";
}
}
} else { # imagename is not specified
$imagedir = "$installroot/netboot/$osver/$arch/$profile";
if ($method eq "raw") {
$imagedir = "$installroot/$method/$osver/$arch/$profile";
} else {
$imagedir = "$installroot/netboot/$osver/$arch/$profile";
}
}
if($verbose) {
@ -156,7 +165,6 @@ sub process_request {
return;
}
my @filestoremove = ("$imagedir/rootimg.gz", "$imagedir/kernel", "$imagedir/initrd-stateless.gz", "$imagedir/initrd-statelite.gz");
#some rpms like atftp mount the rootimg/proc to /proc, we need to make sure rootimg/proc is free of junk
@ -186,6 +194,12 @@ sub process_request {
$callback->({info=>["Removing directory $tftpdir"]});
rmtree "$tftpdir";
}
# For s390x, remove the image directory.
if (($arch eq "s390x") && (-d "$imagedir") && (($method eq "raw") || ($method eq "netboot"))) {
$callback->({info=>["Removing directory $imagedir"]});
rmtree "$imagedir";
}
$callback->({info=>["Image files have been removed successfully from this management node."]});