github.com/gocrane/crane@v0.11.0/pkg/utils/vpa.go (about) 1 package utils 2 3 import ( 4 "context" 5 6 corev1 "k8s.io/api/core/v1" 7 "sigs.k8s.io/controller-runtime/pkg/client" 8 9 autoscalingapi "github.com/gocrane/api/autoscaling/v1alpha1" 10 ) 11 12 func GetEVPAFromScaleTarget(context context.Context, kubeClient client.Client, namespace string, objRef corev1.ObjectReference) (*autoscalingapi.EffectiveVerticalPodAutoscaler, error) { 13 evpaList := &autoscalingapi.EffectiveVerticalPodAutoscalerList{} 14 opts := []client.ListOption{ 15 client.InNamespace(namespace), 16 } 17 err := kubeClient.List(context, evpaList, opts...) 18 if err != nil { 19 return nil, err 20 } 21 22 for _, evpa := range evpaList.Items { 23 if evpa.Spec.TargetRef.Name == objRef.Name && 24 evpa.Spec.TargetRef.Kind == objRef.Kind && 25 evpa.Spec.TargetRef.APIVersion == objRef.APIVersion { 26 return &evpa, nil 27 } 28 } 29 30 return nil, nil 31 }