diff --git a/CHANGELOG.md b/CHANGELOG.md index b47a94fef9d..eb4b8d2d533 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,7 @@ To learn more about active deprecations, we recommend checking [GitHub Discussio - **Governance**: KEDA transitioned to CNCF Graduated project ([#63](https://github.com/kedacore/governance/issues/63)) ### Improvements +- **General**: Add parameter queryParameters in prometheus-scaler (N/A) - **General**: Add more events for user checking ([#796](https://github.com/kedacore/keda/issues/3764)) - **General**: Add ScaledObject/ScaledJob names to output of `kubectl get triggerauthentication/clustertriggerauthentication` ([#796](https://github.com/kedacore/keda/issues/796)) - **General**: Add standalone CRD generation to release workflow ([#2726](https://github.com/kedacore/keda/issues/2726)) diff --git a/pkg/scalers/prometheus_scaler.go b/pkg/scalers/prometheus_scaler.go index 4cde60ec88c..569117460ca 100644 --- a/pkg/scalers/prometheus_scaler.go +++ b/pkg/scalers/prometheus_scaler.go @@ -25,6 +25,7 @@ import ( const ( promServerAddress = "serverAddress" promQuery = "query" + promQueryParameters = "queryParameters" promThreshold = "threshold" promActivationThreshold = "activationThreshold" promNamespace = "namespace" @@ -48,6 +49,7 @@ type prometheusScaler struct { type prometheusMetadata struct { serverAddress string query string + queryParameters map[string]string threshold float64 activationThreshold float64 prometheusAuth *authentication.AuthMeta @@ -151,6 +153,15 @@ func parsePrometheusMetadata(config *ScalerConfig) (meta *prometheusMetadata, er return nil, fmt.Errorf("no %s given", promQuery) } + if val, ok := config.TriggerMetadata[promQueryParameters]; ok && val != "" { + queryParameters, err := kedautil.ParseStringList(val) + if err != nil { + return nil, fmt.Errorf("error parsing %s: %w", promQueryParameters, err) + } + + meta.queryParameters = queryParameters + } + if val, ok := config.TriggerMetadata[promThreshold]; ok && val != "" { t, err := strconv.ParseFloat(val, 64) if err != nil { @@ -262,6 +273,10 @@ func (s *prometheusScaler) ExecutePromQuery(ctx context.Context) (float64, error url = fmt.Sprintf("%s&namespace=%s", url, s.metadata.namespace) } + if len(s.metadata.queryParameters) > 0 { + url = fmt.Sprintf("%s&%s", url, s.metadata.queryParameters) + } + req, err := http.NewRequestWithContext(ctx, "GET", url, nil) if err != nil { return -1, err