@@ -5,7 +5,6 @@ package scaler
55
66import (
77 "context"
8- "errors"
98 "fmt"
109 "math"
1110 "time"
@@ -61,27 +60,18 @@ func (e *impl) Ping(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
6160}
6261
6362func (e * impl ) IsActive (
64- ctx context.Context ,
63+ _ context.Context ,
6564 sor * externalscaler.ScaledObjectRef ,
6665) (* externalscaler.IsActiveResponse , error ) {
6766 lggr := e .lggr .WithName ("IsActive" )
6867
69- gmr , err := e .GetMetrics (ctx , & externalscaler.GetMetricsRequest {
70- ScaledObjectRef : sor ,
71- })
68+ value , err := e .getMetric (sor )
7269 if err != nil {
73- lggr .Error (err , "GetMetrics failed" , "scaledObjectRef" , sor .String ())
74- return nil , err
75- }
76-
77- metricValues := gmr .GetMetricValues ()
78- if err := errors .New ("len(metricValues) != 1" ); len (metricValues ) != 1 {
79- lggr .Error (err , "invalid GetMetricsResponse" , "scaledObjectRef" , sor .String (), "getMetricsResponse" , gmr .String ())
70+ lggr .Error (err , "getMetric failed" , "scaledObjectRef" , sor .String ())
8071 return nil , err
8172 }
82- metricValue := metricValues [0 ].GetMetricValue ()
83- active := metricValue > 0
8473
74+ active := value > 0
8575 return & externalscaler.IsActiveResponse {Result : active }, nil
8676}
8777
@@ -154,41 +144,44 @@ func (e *impl) GetMetricSpec(
154144}
155145
156146func (e * impl ) GetMetrics (
157- ctx context.Context ,
147+ _ context.Context ,
158148 metricRequest * externalscaler.GetMetricsRequest ,
159149) (* externalscaler.GetMetricsResponse , error ) {
160- lggr := e .lggr .WithName ("GetMetrics" )
161150 sor := metricRequest .ScaledObjectRef
162-
163- //namespacedName := k8s.NamespacedNameFromScaledObjectRef(sor)
164- //metricName := namespacedName.Name
165-
166- scalerMetadata := sor .GetScalerMetadata ()
167- metricName , labels , agg , err := util .GetMetricQuery (lggr , scalerMetadata , e .metricParser )
151+ value , err := e .getMetric (sor )
168152 if err != nil {
169153 return nil , err
170154 }
171155
172- opOverTime := util .GetOperationOvertTime (lggr , scalerMetadata )
173- value , found , err := e .metricStore .Get (metricName , labels , opOverTime , agg )
174- lggr .Info ("got metric value: " , "name" , metricName , "labels" , labels , "value" , value , "found" , found , "error" , err )
175- if ! found {
176- return nil , fmt .Errorf ("not found" )
177- }
178- if err != nil {
179- return nil , err
180- }
181- value = util .ClampValue (lggr , value , scalerMetadata )
182- e .metricsExporter .SetMetricValueClamped (string (metricName ), fmt .Sprint (labels ), string (opOverTime ), string (agg ), sor .GetName (), sor .GetNamespace (), value )
183-
184156 res := & externalscaler.GetMetricsResponse {
185157 MetricValues : []* externalscaler.MetricValue {
186158 {
187159 MetricName : metricRequest .GetMetricName (),
188- MetricValue : int64 (math .Round (value )),
160+ MetricValue : int64 (math .Ceil (value )),
189161 },
190162 },
191163 }
192164
193165 return res , nil
194166}
167+
168+ func (e * impl ) getMetric (sor * externalscaler.ScaledObjectRef ) (float64 , error ) {
169+ lggr := e .lggr .WithName ("getMetric" )
170+ metricName , labels , agg , err := util .GetMetricQuery (lggr , sor .GetScalerMetadata (), e .metricParser )
171+ if err != nil {
172+ return - 1 , err
173+ }
174+
175+ opOverTime := util .GetOperationOvertTime (lggr , sor .GetScalerMetadata ())
176+ value , found , err := e .metricStore .Get (metricName , labels , opOverTime , agg )
177+ lggr .Info ("got metric value: " , "name" , metricName , "labels" , labels , "value" , value , "found" , found , "error" , err )
178+ if ! found {
179+ return - 1 , fmt .Errorf ("not found" )
180+ }
181+ if err != nil {
182+ return - 1 , err
183+ }
184+ value = util .ClampValue (lggr , value , sor .GetScalerMetadata ())
185+ e .metricsExporter .SetMetricValueClamped (string (metricName ), fmt .Sprint (labels ), string (opOverTime ), string (agg ), sor .GetName (), sor .GetNamespace (), value )
186+ return value , nil
187+ }
0 commit comments