Merge pull request #149 from k8sgpt-ai/feat/analysis-speed

feat: analysis speed
This commit is contained in:
Alex Jones
2023-03-30 08:44:03 +01:00
committed by GitHub
2 changed files with 25 additions and 35 deletions

View File

@@ -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 {

View File

@@ -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 {
// 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
}
err = AnalyzeReplicaSet(ctx, config, client, aiClient, analysisResults)
if err != nil {
return err
}
return nil
}
err = AnalyzePersistentVolumeClaim(ctx, config, client, aiClient, analysisResults)
if err != nil {
for _, filter := range filters {
if analyzer, ok := analyzerMap[filter]; ok {
if err := analyzer(ctx, config, client, aiClient, analysisResults); err != nil {
return err
}
err = AnalyzeEndpoints(ctx, config, client, aiClient, analysisResults)
if err != nil {
return err
}
err = AnalyzeIngress(ctx, config, client, aiClient, analysisResults)
if err != nil {
return err
}
return nil
}