diff --git a/cmd/analyze/analyze.go b/cmd/analyze/analyze.go index 028a497619..9a1c08d489 100644 --- a/cmd/analyze/analyze.go +++ b/cmd/analyze/analyze.go @@ -77,23 +77,11 @@ var AnalyzeCmd = &cobra.Command{ } var analysisResults *[]analyzer.Analysis = &[]analyzer.Analysis{} - if err := analyzer.RunAnalysis(ctx, config, client, + if err := analyzer.RunAnalysis(ctx, filters, config, client, aiClient, analysisResults); err != nil { color.Red("Error: %v", err) os.Exit(1) } - // Removed filtered results from slice - if len(filters) > 0 { - var filteredResults []analyzer.Analysis - for _, analysis := range *analysisResults { - for _, filter := range filters { - if strings.Contains(analysis.Kind, filter) { - filteredResults = append(filteredResults, analysis) - } - } - } - analysisResults = &filteredResults - } var bar *progressbar.ProgressBar if len(*analysisResults) > 0 { diff --git a/pkg/analyzer/analyzer.go b/pkg/analyzer/analyzer.go index 627928b361..89bfaed065 100644 --- a/pkg/analyzer/analyzer.go +++ b/pkg/analyzer/analyzer.go @@ -11,33 +11,35 @@ import ( "github.com/spf13/viper" ) -func RunAnalysis(ctx context.Context, config *AnalysisConfiguration, +var analyzerMap = map[string]func(ctx context.Context, config *AnalysisConfiguration, + client *kubernetes.Client, aiClient ai.IAI, analysisResults *[]Analysis) error{ + "Pod": AnalyzePod, + "ReplicaSet": AnalyzeReplicaSet, + "PersistentVolumeClaim": AnalyzePersistentVolumeClaim, + "Service": AnalyzeEndpoints, + "Ingress": AnalyzeIngress, +} + +func RunAnalysis(ctx context.Context, filters []string, config *AnalysisConfiguration, client *kubernetes.Client, aiClient ai.IAI, analysisResults *[]Analysis) error { - err := AnalyzePod(ctx, config, client, aiClient, analysisResults) - if err != nil { - return err - } - - err = AnalyzeReplicaSet(ctx, config, client, aiClient, analysisResults) - if err != nil { - return err - } - - err = AnalyzePersistentVolumeClaim(ctx, config, client, aiClient, analysisResults) - if err != nil { - return err - } - - err = AnalyzeEndpoints(ctx, config, client, aiClient, analysisResults) - if err != nil { - return err + // if there are no filters selected then run all of them + if len(filters) == 0 { + for _, analyzer := range analyzerMap { + if err := analyzer(ctx, config, client, aiClient, analysisResults); err != nil { + return err + } + } + return nil } - err = AnalyzeIngress(ctx, config, client, aiClient, analysisResults) - if err != nil { - return err + for _, filter := range filters { + if analyzer, ok := analyzerMap[filter]; ok { + if err := analyzer(ctx, config, client, aiClient, analysisResults); err != nil { + return err + } + } } return nil }