fixing bug 3340: add test option for rmkit to list kitcomponents in use
This commit is contained in:
		| @@ -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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user