Skip to content

Commit b5c1110

Browse files
authored
Ignore SOs that doesn't contain such trigger + make it more DRY (#59)
* Ignore SOs that doesn't contain such trigger + make it more DRY Signed-off-by: Jirka Kremser <jiri.kremser@gmail.com> * Comment for enum Signed-off-by: Jirka Kremser <jiri.kremser@gmail.com> --------- Signed-off-by: Jirka Kremser <jiri.kremser@gmail.com>
1 parent 1e78b64 commit b5c1110

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

helmchart/otel-add-on/templates/vap.yaml

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,24 @@ spec:
1818
expression: "object.spec.triggers.filter(t, t.type == 'external' && has(t.metadata.scalerAddress) && t.metadata.scalerAddress.contains('otel'))"
1919
- name: triggers
2020
expression: "variables.otelScalersWithSugar + variables.otelScalersNoSugar"
21-
- name: allowedOperationsOverTime
22-
expression: "['avg', 'count', 'last_one', 'min', 'max', 'rate', 'sum']"
21+
- name: noTriggers
22+
expression: "variables.triggers.size() == 0"
23+
- name: allowedOpsOverTime
24+
expression: "['avg', 'count', 'last_one', 'min', 'max', 'rate']"
25+
- name: allowedOpsOverVectors
26+
expression: "['avg', 'count', 'min', 'max', 'sum']"
27+
- name: mqRegexp
28+
expression: "'^((' + variables.allowedOpsOverVectors.join('|') + ')\\\\()?[a-zA-Z][a-zA-Z0-9-_]*(\\\\{[^,=]+=[^,=]+(,[^,=]+=[^,=]+)*?\\\\})?\\\\)?$'"
2329
validations:
24-
- expression: "variables.triggers.size() > 0 && variables.triggers.all(t, has(t.metadata.targetValue))"
30+
- expression: "variables.noTriggers || variables.triggers.all(t, has(t.metadata.targetValue))"
2531
messageExpression: "'Missing \\'targetValue\\' on ScaledObject\\' otel trigger: ' + object.metadata.name"
26-
- expression: "variables.triggers.size() > 0 && variables.triggers.all(t, !has(t.metadata.operationOverTime) || t.metadata.operationOverTime in variables.allowedOperationsOverTime)"
27-
messageExpression: "'Malformed trigger in ScaledObject: ' + object.metadata.name + ' unsupported operationOverTime: ' + variables.triggers.filter(t, has(t.metadata.operationOverTime) && !(t.metadata.operationOverTime in variables.allowedOperationsOverTime))[0].metadata.operationOverTime"
28-
- expression: "variables.triggers.size() > 0 && variables.triggers.all(t, has(t.metadata.metricQuery) && t.metadata.metricQuery.matches('^((sum|avg|min|max|count)\\\\()?[a-zA-Z][a-zA-Z0-9-_]*(\\\\{[^,=]+=[^,=]+(,[^,=]+=[^,=]+)*?\\\\})?\\\\)?$'))"
29-
messageExpression: "'Malformed trigger in ScaledObject: ' + object.metadata.name + ' unsupported metricQuery: ' + variables.triggers.filter(t, !has(t.metadata.metricQuery) || !t.metadata.metricQuery.matches('^((sum|avg|min|max|count)\\\\()?[a-zA-Z][a-zA-Z0-9-_]*(\\\\{[^,=]+=[^,=]+(,[^,=]+=[^,=]+)*?\\\\})?\\\\)?$'))[0].metadata.metricQuery"
32+
33+
- expression: "variables.noTriggers || variables.triggers.all(t, !has(t.metadata.operationOverTime) || t.metadata.operationOverTime in variables.allowedOpsOverTime)"
34+
messageExpression: "'Malformed trigger in ScaledObject: ' + object.metadata.name + ' unsupported operationOverTime: ' + variables.triggers.filter(t, has(t.metadata.operationOverTime) && !(t.metadata.operationOverTime in variables.allowedOpsOverTime))[0].metadata.operationOverTime + ' supported operations: ' + variables.allowedOpsOverTime.join(', ')"
35+
36+
- expression: "variables.noTriggers || variables.triggers.all(t, has(t.metadata.metricQuery) && t.metadata.metricQuery.matches(variables.mqRegexp))"
37+
messageExpression: "'Malformed trigger in ScaledObject: ' + object.metadata.name + ' unsupported metricQuery: ' + variables.triggers.filter(t, !has(t.metadata.metricQuery) || !t.metadata.metricQuery.matches(variables.mqRegexp)).map(t, has(t.metadata.metricQuery) ? t.metadata.metricQuery : 'missing')[0]"
38+
reason: "MalformedMetricQuery"
3039
---
3140
apiVersion: admissionregistration.k8s.io/v1
3241
kind: ValidatingAdmissionPolicyBinding

types/metrics.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ const (
6363
OpAvg OperationOverTime = "avg"
6464
OpMin OperationOverTime = "min"
6565
OpMax OperationOverTime = "max"
66+
67+
// when adding new AggregationOverVectors or OperationOverTime, don't forget to change also ValidatingAdmissionPolicy
6668
)
6769

6870
type MemStore interface {

0 commit comments

Comments
 (0)