mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-30 01:26:38 +00:00
204 lines
4.7 KiB
Perl
Executable File
204 lines
4.7 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Getopt::Long;
|
|
use Data::Dumper;
|
|
use Term::ANSIColor;
|
|
use Time::Local;
|
|
BEGIN
|
|
{
|
|
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : -d '/opt/xcat' ? '/opt/xcat' : '/usr';
|
|
}
|
|
use lib "$::XCATROOT/lib/perl";
|
|
my $osver;
|
|
my $log="/tmp/pkg.log";
|
|
my $needhelp = 0;
|
|
my $setupenv = 0;
|
|
my $clearenv = 0;
|
|
my $setupenvinclude = 0;
|
|
my $removerpm = 0;
|
|
my $ospkg = 0;
|
|
my $osimg;
|
|
my $attr;
|
|
my $int;
|
|
if (
|
|
!GetOptions("h|?" => \$needhelp,
|
|
"s" => \$setupenv,
|
|
"c"=>\$clearenv,
|
|
"i"=>\$setupenvinclude,
|
|
"r"=>\$removerpm,
|
|
"o"=>\$ospkg,
|
|
"g=s"=>\$::OSIMG,
|
|
"t=s"=>\$::ATTR,
|
|
"v=s"=>\$::OSVERSION)
|
|
)
|
|
{
|
|
&usage;
|
|
exit 1;
|
|
}
|
|
|
|
sub usage
|
|
{
|
|
print "Usage:pkgtest.pl - Run xcat pkg test cases.\n";
|
|
print " pkgtest.pl [-?|-h]\n";
|
|
print " pkgtest.pl [-s] [-g osimage] [-t attribute] [-v os] set up package test environment \n";
|
|
print " pkgtest.pl [-i] [-g osimage] [-t attribute] [-v os] set up package test environment using include package list\n";
|
|
print " pkgtest.pl [-r] [-g osimage] [-t attribute] [-v os] remove package \n";
|
|
print " pkgtest.pl [-c] [-g osimage] [-t attribute] [-v os] clear package test environment \n";
|
|
print " pkgtest.pl [-o] [-g osimage] [-t attribute] [-v os] other package test \n";
|
|
print "\n";
|
|
return;
|
|
}
|
|
|
|
sub getimgattr
|
|
{
|
|
my @output = `lsdef -t osimage -o $osimg -i $attr`;
|
|
my $pkglistvalue;
|
|
print " output is @output \n";
|
|
if($?){
|
|
print "unkonw";
|
|
return "Unknown";
|
|
}
|
|
if($? == 0){
|
|
foreach my $output1 (@output){
|
|
if($output1 =~ /$attr=(.*)/){
|
|
print "output1 is $output1 ,attrs is value is $1 \n";
|
|
$pkglistvalue = $1 ;
|
|
}
|
|
} }
|
|
return $pkglistvalue;
|
|
}
|
|
|
|
sub setupenv
|
|
{
|
|
my $int = shift;
|
|
if ($ospkg){
|
|
`mkdir -p $int`;
|
|
`cp -rf /xcat-core/* $int`;
|
|
}else{
|
|
`cat "$int" >> /tmp/pkgtest.bak`;
|
|
}
|
|
if (($osver =~ /ubuntu/)&&($ospkg ==0)){
|
|
`echo "rpm" >>/tmp/pkgtest.bak `;
|
|
}else{
|
|
`echo "xCAT-test" >>/tmp/pkgtest.bak `;
|
|
}
|
|
}
|
|
sub clearenv
|
|
{
|
|
my $int = shift;
|
|
if ($ospkg ==0){
|
|
`rm -rf /tmp/pkgtest.* `;
|
|
`rm -rf /install/pkgtest`;
|
|
}else{
|
|
`rm -rf /tmp/pkgtest.* `;
|
|
`rm -rf $int`;
|
|
}
|
|
}
|
|
|
|
sub setupenvinclude
|
|
{
|
|
my $int = shift;
|
|
if ($ospkg){
|
|
`mkdir -p $int`;
|
|
`cp -rf /xcat-core/* $int`;
|
|
}else{
|
|
` cat $int >> /tmp/pkgtest.bak`;
|
|
}
|
|
if (($osver =~ /ubuntu/)&&($ospkg ==0)){
|
|
`echo "rpm" >>/tmp/pkgtest.bak `;
|
|
}else{
|
|
`echo "xCAT-test" >> /tmp/pkgtest.includelist `;
|
|
}
|
|
`echo "#INCLUDE:/tmp/pkgtest.includelist#">>/tmp/pkgtest.bak `;
|
|
}
|
|
sub removerpm
|
|
{
|
|
my $int = shift;
|
|
if ($ospkg){
|
|
`mkdir -p $int`;
|
|
`cp -rf /xcat-core/* $int`;
|
|
}else{
|
|
`cat "$int" >> /tmp/pkgtest.bak`;
|
|
}
|
|
if (($osver =~ /ubuntu/)&&($ospkg ==0)){
|
|
`echo "-rpm" >>/tmp/pkgtest.bak `;
|
|
}elsif(($osver =~ /ubuntu/)&&($ospkg !=0)){
|
|
`echo "-xcat-test">>/tmp/pkgtest.bak`;
|
|
}else{
|
|
`echo "-xCAT-test" >>/tmp/pkgtest.bak`;
|
|
}
|
|
}
|
|
|
|
if ($needhelp)
|
|
{
|
|
&usage;
|
|
exit 0;
|
|
}
|
|
if($::OSIMG)
|
|
{
|
|
$osimg = $::OSIMG;
|
|
}
|
|
if($::ATTR)
|
|
{
|
|
$attr = $::ATTR;
|
|
}
|
|
if($::OSVERSION)
|
|
{
|
|
$osver = $::OSVERSION;
|
|
}
|
|
$int = getimgattr;
|
|
if ( ($setupenv) || ($setupenvinclude) ||($removerpm))
|
|
{
|
|
if (! -f "/tmp/int"){
|
|
`echo $int >> /tmp/int`;
|
|
}else{
|
|
print "please clear the pkg test environment first \n";
|
|
exit 1;
|
|
}
|
|
}
|
|
if ($setupenv)
|
|
{
|
|
&setupenv($int);
|
|
}
|
|
if ($setupenvinclude)
|
|
{
|
|
&setupenvinclude($int);
|
|
}
|
|
if ($removerpm)
|
|
{
|
|
&removerpm($int);
|
|
}
|
|
if ($clearenv)
|
|
{
|
|
if (-f "/tmp/int"){
|
|
my $int=`cat /tmp/int`;
|
|
&clearenv($int);
|
|
`rm -rf /tmp/int`;
|
|
exit 0;
|
|
}else{
|
|
print "please set the pkg test environment first \n";
|
|
exit 1;
|
|
}
|
|
}
|
|
if (($setupenv) || ($setupenvinclude) ||($removerpm))
|
|
{
|
|
`mkdir -p /install/pkgtest`;
|
|
`cp -rf /xcat-core/* /install/pkgtest`;
|
|
if (($osver !~ /ubuntu/)&&($ospkg ==0)){
|
|
`chdef -t osimage -o $osimg pkgdir=/install/pkgtest pkglist=/tmp/pkgtest.bak `;
|
|
}elsif (($osver !~ /ubuntu/)&&($ospkg !=0)){
|
|
`chdef -t osimage -o $osimg otherpkglist=/tmp/pkgtest.bak`;
|
|
}elsif(($osver =~ /ubuntu/)&&($ospkg !=0)){
|
|
`chdef -t osimage -o $osimg otherpkglist="/tmp/pkgtest.bak" otherpkgdir="http://xcat.org/files/xcat/repos/apt/2.12/xcat-core trusty main"`;
|
|
}elsif(($osver =~ /ubuntu/)&&($ospkg ==0)){
|
|
`chdef -t osimage -o $osimg pkglist=/tmp/pkgtest.bak`;
|
|
}
|
|
}
|
|
if ($?)
|
|
{
|
|
return 0;
|
|
}
|