add -F option to lskit
This commit is contained in:
parent
c05b7c9a66
commit
899be1a70d
@ -20,6 +20,7 @@ use Getopt::Long;
|
||||
#use Data::Dumper;
|
||||
use File::Basename;
|
||||
use File::Path;
|
||||
use Cwd;
|
||||
|
||||
my $kitconf = "kit.conf";
|
||||
|
||||
@ -3402,10 +3403,10 @@ sub lskit_usage {
|
||||
push @{ $rsp->{data} },
|
||||
"\nUsage: lskit - List infomation for one or more kits.\n";
|
||||
push @{ $rsp->{data} },
|
||||
" lskit [-V|--verbose] [-x|--xml|--XML] [-K|--kitattr kitattr_names] [-R|--repoattr repoattr_names] [-C|--compattr compattr_names] [kit_names]\n ";
|
||||
push @{ $rsp->{data} }, " lskit [-h|--help|-?] \n";
|
||||
push @{ $rsp->{data} },
|
||||
" lskit [-v|--version] \n ";
|
||||
"\tlskit [-V|--verbose] [-x|--xml|--XML] [-K|--kitattr kitattr_names]\n\t[-R|--repoattr repoattr_names] [-C|--compattr compattr_names]\n\t[kit_names]\n ";
|
||||
push @{ $rsp->{data} }, "\tlskit [-h|--help|-?]\n";
|
||||
push @{ $rsp->{data} }, "\tlskit [-v|--version]\n ";
|
||||
push @{ $rsp->{data} }, "\tlskit [-F|--framework] kit_path_name\n ";
|
||||
xCAT::MsgUtils->message( "I", $rsp, $::CALLBACK );
|
||||
return 0;
|
||||
}
|
||||
@ -3514,6 +3515,7 @@ sub lskit_processargs {
|
||||
'kitattr|K=s' => \$::opt_K,
|
||||
'repoattr|R=s' => \$::opt_R,
|
||||
'compattr|C=s' => \$::opt_C,
|
||||
'framework|F=s' => \$::opt_F,
|
||||
'verbose|V' => \$::opt_V,
|
||||
'version|v' => \$::opt_v,
|
||||
'xml|XML|x' => \$::opt_x,
|
||||
@ -3912,9 +3914,12 @@ sub check_attr_values_exist {
|
||||
=cut
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
sub lskit {
|
||||
|
||||
my $request = shift;
|
||||
my $callback = shift;
|
||||
my $request_command = shift;
|
||||
|
||||
my $rc = 0;
|
||||
|
||||
# process the command line
|
||||
@ -3935,6 +3940,99 @@ sub lskit {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ( defined($::opt_F) ) {
|
||||
if ( defined($::opt_x) || defined($::opt_K) || defined($::opt_R) || defined($::opt_C) ) {
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data}}, "\nThe \'-F\' option cannot be used with the x, R, K, or C options.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
|
||||
lskit_usage(1);
|
||||
return 1;
|
||||
}
|
||||
my $tarpathname = $::opt_F;
|
||||
|
||||
# check if full path
|
||||
my $dir = $request->{cwd}; #getcwd;
|
||||
my $cwd = $dir->[0];
|
||||
|
||||
if ($tarpathname !~ /^\//)
|
||||
{
|
||||
my $fullpath = xCAT::Utils->full_path($tarpathname, $cwd);
|
||||
if ($fullpath)
|
||||
{
|
||||
$tarpathname = $fullpath;
|
||||
}
|
||||
}
|
||||
|
||||
unless (-e $tarpathname) {
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data} }, "Could not find $tarpathname.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
|
||||
return 1;
|
||||
}
|
||||
# create a unique /tmp dir name name
|
||||
my $thisdate = `/bin/date +%s`;
|
||||
my $tmp_dir_name = qq~/tmp/tmp_kit_$thisdate~;
|
||||
$tmp_dir_name =~ s/\s*//g; #remove blanks
|
||||
|
||||
# extract the kit.conf file
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data} }, "\nExtracting the kit.conf file from $tarpathname. Please wait.\n";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
|
||||
|
||||
my $tcmd = qq~/bin/mkdir -p $tmp_dir_name;/bin/tar -C $tmp_dir_name -jxvf $tarpathname --wildcards */kit.conf~;
|
||||
my $kitconffile = xCAT::Utils->runcmd("$tcmd", -1);
|
||||
if ($::RUNCMD_RC != 0) {
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data} }, "No kit.conf file was found.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
|
||||
return 1;
|
||||
}
|
||||
|
||||
# get the framework from the file
|
||||
my $fcmd = "/bin/cat $tmp_dir_name/$kitconffile | grep 'kitframework '";
|
||||
my $fline = xCAT::Utils->runcmd("$fcmd", -1);
|
||||
if ($::RUNCMD_RC != 0) {
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data} }, "No kitframework value was found.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
|
||||
return 1;
|
||||
}
|
||||
my ($junk, $kitframework) = split(/=/, $fline);
|
||||
$kitframework =~ s/\s*//g; #remove blanks
|
||||
|
||||
my $cfcmd = "/bin/cat $tmp_dir_name/$kitconffile | grep 'compatible_kitframeworks'";
|
||||
my $cfline = xCAT::Utils->runcmd("$cfcmd", -1);
|
||||
if ($::RUNCMD_RC != 0) {
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data} }, "No compatible_kitframeworks value was found.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
|
||||
return 1;
|
||||
}
|
||||
my ($junk, $compatframework) = split(/=/, $cfline);
|
||||
$compatframework =~ s/\s*//g; #remove blanks
|
||||
|
||||
my $rcmd = qq~/bin/rm -Rf $tmp_dir_name 2>/dev/null~;
|
||||
my $out = xCAT::Utils->runcmd("$rcmd", -1);
|
||||
if ($::RUNCMD_RC != 0) {
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data} }, "Could not remove $tmp_dir_name.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
|
||||
}
|
||||
|
||||
if ($kitframework && $compatframework) {
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data} }, "\tkitframework=$kitframework\n\tcompatible_kitframeworks=$compatframework\n";
|
||||
xCAT::MsgUtils->message("I", $rsp, $::CALLBACK);
|
||||
return 0;
|
||||
} else {
|
||||
my $rsp = {};
|
||||
push @{ $rsp->{data} }, "Could not determine framework values for Kit $tarpathname.\n";
|
||||
xCAT::MsgUtils->message("E", $rsp, $::CALLBACK);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
# Prepare the hash tables to pass to the output routines
|
||||
my $kit_hash = get_kit_hash($::kitnames, $::kitattrs);
|
||||
my $kitrepo_hash = get_kitrepo_hash($::kitnames, $::kitrepoattrs);
|
||||
|
Loading…
Reference in New Issue
Block a user