Skip to content

Commit ffb181d

Browse files
authored
Using float value > 0 as the activation criterium (#47)
Signed-off-by: Jirka Kremser <jiri.kremser@gmail.com>
1 parent 9e3eafb commit ffb181d

File tree

1 file changed

+28
-35
lines changed

1 file changed

+28
-35
lines changed

scaler/handlers.go

Lines changed: 28 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package scaler
55

66
import (
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

6362
func (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

156146
func (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

Comments
 (0)