github.com/gocrane/crane@v0.11.0/pkg/recommendation/recommender/resource/filter.go (about)

     1  package resource
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/gocrane/crane/pkg/recommendation/framework"
     7  )
     8  
     9  // Filter out k8s resources that are not supported by the recommender.
    10  func (rr *ResourceRecommender) Filter(ctx *framework.RecommendationContext) error {
    11  	var err error
    12  
    13  	// filter resource that not match objectIdentity
    14  	if err = rr.BaseRecommender.Filter(ctx); err != nil {
    15  		return err
    16  	}
    17  
    18  	if err = framework.RetrievePodTemplate(ctx); err != nil {
    19  		return err
    20  	}
    21  
    22  	if err = framework.RetrieveScale(ctx); err != nil {
    23  		return err
    24  	}
    25  
    26  	if err = framework.RetrievePods(ctx); err != nil {
    27  		return err
    28  	}
    29  
    30  	// filter workloads that are downing
    31  	if len(ctx.Pods) == 0 {
    32  		return fmt.Errorf("pod not found")
    33  	}
    34  
    35  	pod := ctx.Pods[0]
    36  	if len(pod.OwnerReferences) == 0 {
    37  		return fmt.Errorf("owner reference not found")
    38  	}
    39  
    40  	return nil
    41  }