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 }