From 29f1d0a89d24dc17b2d5d6aa0a78c7a7d1c3d598 Mon Sep 17 00:00:00 2001 From: Tomek Urbaszek Date: Tue, 25 Aug 2020 14:20:37 +0200 Subject: [PATCH] Fix isActive function Signed-off-by: Tomek Urbaszek --- .../{http_scaler.go => metrics_api_scaler.go} | 12 ++++-------- ...ttp_scaler_test.go => metrics_api_scaler_test.go} | 0 pkg/scaling/scale_handler.go | 4 ++-- 3 files changed, 6 insertions(+), 10 deletions(-) rename pkg/scalers/{http_scaler.go => metrics_api_scaler.go} (93%) rename pkg/scalers/{http_scaler_test.go => metrics_api_scaler_test.go} (100%) diff --git a/pkg/scalers/http_scaler.go b/pkg/scalers/metrics_api_scaler.go similarity index 93% rename from pkg/scalers/http_scaler.go rename to pkg/scalers/metrics_api_scaler.go index 42611cf0619..7720f4eb2e1 100644 --- a/pkg/scalers/http_scaler.go +++ b/pkg/scalers/metrics_api_scaler.go @@ -72,11 +72,6 @@ func parseHTTPMetadata(resolvedEnv, metadata, authParams map[string]string) (*ht return &meta, nil } -func (s *httpScaler) checkHealth() error { - u := fmt.Sprintf("%s/health/", s.metadata.apiURL) - _, err := http.Get(u) - return err -} func (s *httpScaler) getMetricInfo() (*metric, error) { var m *metric @@ -104,18 +99,19 @@ func (s *httpScaler) Close() error { // IsActive returns true if there are pending messages to be processed func (s *httpScaler) IsActive(ctx context.Context) (bool, error) { - err := s.checkHealth() + m, err := s.getMetricInfo() if err != nil { httpLog.Error(err, fmt.Sprintf("Error when checking API health: %s", err)) return false, err } - return true, nil + + return m.Value > 0.0, nil } // GetMetricSpecForScaling returns the MetricSpec for the Horizontal Pod Autoscaler func (s *httpScaler) GetMetricSpecForScaling() []v2beta2.MetricSpec { targetValue := resource.NewQuantity(int64(s.metadata.targetValue), resource.DecimalSI) - metricName := fmt.Sprintf("%s-%s", "http", kedautil.NormalizeString(s.metadata.apiURL), s.metadata.metricName) + metricName := fmt.Sprintf("%s-%s-%s", "http", kedautil.NormalizeString(s.metadata.apiURL), s.metadata.metricName) externalMetric := &v2beta2.ExternalMetricSource{ Metric: v2beta2.MetricIdentifier{ Name: metricName, diff --git a/pkg/scalers/http_scaler_test.go b/pkg/scalers/metrics_api_scaler_test.go similarity index 100% rename from pkg/scalers/http_scaler_test.go rename to pkg/scalers/metrics_api_scaler_test.go diff --git a/pkg/scaling/scale_handler.go b/pkg/scaling/scale_handler.go index 29aa8079f89..b8160367254 100644 --- a/pkg/scaling/scale_handler.go +++ b/pkg/scaling/scale_handler.go @@ -396,6 +396,8 @@ func buildScaler(name, namespace, triggerType string, resolvedEnv, triggerMetada return scalers.NewKafkaScaler(resolvedEnv, triggerMetadata, authParams) case "liiklus": return scalers.NewLiiklusScaler(resolvedEnv, triggerMetadata) + case "metrics-api": + return scalers.NewHTTPScaler(resolvedEnv, triggerMetadata, authParams) case "mysql": return scalers.NewMySQLScaler(resolvedEnv, triggerMetadata, authParams) case "postgresql": @@ -410,8 +412,6 @@ func buildScaler(name, namespace, triggerType string, resolvedEnv, triggerMetada return scalers.NewRedisStreamsScaler(resolvedEnv, triggerMetadata, authParams) case "stan": return scalers.NewStanScaler(resolvedEnv, triggerMetadata) - case "external-metric-source": - return scalers.NewHTTPScaler(resolvedEnv, triggerMetadata, authParams) default: return nil, fmt.Errorf("no scaler found for type: %s", triggerType) }