github.com/gocrane/crane@v0.11.0/pkg/recommendation/recommender/service/recommend.go (about) 1 package service 2 3 import ( 4 "fmt" 5 6 "github.com/gocrane/crane/pkg/recommendation/framework" 7 ) 8 9 func (s *ServiceRecommender) PreRecommend(ctx *framework.RecommendationContext) error { 10 return nil 11 } 12 13 func (s *ServiceRecommender) Recommend(ctx *framework.RecommendationContext) error { 14 if len(ctx.Pods) == 0 { 15 ctx.Recommendation.Status.Action = "Delete" 16 ctx.Recommendation.Status.Description = "It is a Orphan Service, Pod count is 0" 17 return nil 18 } 19 20 // check if pod net receive percentile bytes lt config value 21 if s.netReceiveBytes != 0 { 22 netReceiveBytes, err := s.BaseRecommender.GetPercentile(s.netReceivePercentile, ctx.InputValue(netReceiveBytesKey)) 23 if err != nil { 24 return err 25 } 26 if netReceiveBytes > s.netReceiveBytes { 27 return fmt.Errorf("Service %s is not a Orphan Service, because the config value is %f, but the net receive %f percentile bytes is %f ", 28 ctx.Object.GetName(), s.netReceiveBytes, s.netReceivePercentile, netReceiveBytes) 29 } 30 } 31 32 // check if pod net transfer percentile bytes lt config value 33 if s.netTransferBytes != 0 { 34 netTransferBytes, err := s.BaseRecommender.GetPercentile(s.netTransferPercentile, ctx.InputValue(netTransferBytesKey)) 35 if err != nil { 36 return err 37 } 38 if netTransferBytes > s.netTransferBytes { 39 return fmt.Errorf("Service %s is not a Orphan Service, because the config value is %f, but the net transfer %f percentile bytes is %f ", 40 ctx.Object.GetName(), s.netTransferBytes, s.netTransferPercentile, netTransferBytes) 41 } 42 } 43 44 ctx.Recommendation.Status.Action = "Delete" 45 ctx.Recommendation.Status.Description = "It is a Orphan Service, Pod net bytes low" 46 return nil 47 } 48 49 // Policy add some logic for result of recommend phase. 50 func (s *ServiceRecommender) Policy(ctx *framework.RecommendationContext) error { 51 return nil 52 }