fixing bug 3340: add test option for rmkit to list kitcomponents in use

This commit is contained in:
wanghuaz 2013-12-09 21:27:28 -08:00
parent 389396a5f5
commit 044febc97d

View File

@ -1430,7 +1430,7 @@ sub rmkit
push@{ $rsp{data} }, "Usage: rmkit - Remove Kits from xCAT.";
push@{ $rsp{data} }, "\trmkit [-h|--help]";
push@{ $rsp{data} }, "\trmkit [-v|--version]";
push@{ $rsp{data} }, "\trmkit [-V|--verbose] [-f|--force] <kitlist>] [-V]";
push@{ $rsp{data} }, "\trmkit [-V|--verbose] [-f|--force] [-t|--test] <kitlist>] [-V]";
xCAT::MsgUtils->message( "I", \%rsp, $callback );
};
@ -1453,6 +1453,7 @@ sub rmkit
'h|help' => \$help,
'V|verbose' => \$::VERBOSE,
'v|version' => \$vers,
't|test' => \$test,
'f|force' => \$force
);
@ -1521,12 +1522,15 @@ sub rmkit
my @entries = $tabs{'osimage'}->getAllAttribs( 'imagename', 'kitcomponents' );
my @kitlist;
my $hasplugin;
my @kpinuse;
foreach my $kitname (keys %kitnames) {
my %rsp;
push@{ $rsp{data} }, "Removing kit $kitname";
xCAT::MsgUtils->message( "I", \%rsp, $callback );
if ( !$test ) {
my %rsp;
push@{ $rsp{data} }, "Removing kit $kitname";
xCAT::MsgUtils->message( "I", \%rsp, $callback );
}
# Remove osimage.kitcomponents.
@ -1536,7 +1540,7 @@ sub rmkit
if (@entries && (@entries > 0)) {
if($::VERBOSE){
if($::VERBOSE and !$test){
my %rsp;
push@{ $rsp{data} }, "Removing kit components from osimage.kitcomponents";
xCAT::MsgUtils->message( "I", \%rsp, $callback );
@ -1547,12 +1551,18 @@ sub rmkit
my @kitcomponents = split ',', $entry->{kitcomponents};
foreach my $kitcomponent ( @kitcomponents ) {
chomp $kitcomponent;
# Compare with each component in osimage.kitcomponents list.
foreach my $kitcomp ( @kitcomphash ) {
my $kitcompname = $kitcomp->{kitcompname};
# Remove this component from osimage.kitcomponents if -f option.
if ("$kitcompname" =~ /^$kitcomponent$/) {
if ( $test ) {
push @kpinuse, $kitcomponent;
my %rsp;
push@{ $rsp{data} }, "$kitcomponent is being used by osimage $entry->{imagename}";
xCAT::MsgUtils->message( "I", \%rsp, $callback );
next;
}
unless ($force) {
my %rsp;
push@{ $rsp{data} }, "Failed to remove kit component $kitcomponent because:$kitcomponent is being used by osimage $entry->{imagename}";
@ -1574,6 +1584,10 @@ sub rmkit
}
}
if ( $test ) {
next;
}
my $kitdir;
(my $ref1) = $tabs{kit}->getAttribs({kitname => $kitname }, 'kitdir');
if ( $ref1 and $ref1->{'kitdir'}){
@ -1671,6 +1685,20 @@ sub rmkit
push @kitlist, $kitname;
}
if ( $test ) {
if ( scalar(@kpinuse) ) {
my $kp = join ',', @kpinuse;
my %rsp;
push @{ $rsp{data} }, "Following kitcomponents are in use: $kp";
xCAT::MsgUtils->message( "I", \%rsp, $callback );
} else {
my %rsp;
push @{ $rsp{data} }, "No kitcomponents are in use";
xCAT::MsgUtils->message( "I", \%rsp, $callback );
}
return 0;
}
my $kits = join ',', @kitlist;
my %rsp;