From 2cd988a153dcae16394a1ae916d3b8b374c0b776 Mon Sep 17 00:00:00 2001 From: Abhinav Sinha <37282098+zeborg@users.noreply.github.com> Date: Tue, 28 Dec 2021 20:42:31 +0530 Subject: [PATCH] Added validation for Condition Operators (#2864) * Added validation for Condition Operators Signed-off-by: Abhinav Sinha * Updated description of `Condition.Operator` with all current valid condition operators` Signed-off-by: Abhinav Sinha * Added `ConditionOperators` map and updated existing `ConditionOperator` type references Signed-off-by: Abhinav Sinha --- api/kyverno/v1/policy_types.go | 86 +-- pkg/engine/variables/evaluate_test.go | 604 +++++++++++----------- pkg/engine/variables/operator/duration.go | 8 +- pkg/engine/variables/operator/numeric.go | 16 +- pkg/engine/variables/operator/operator.go | 36 +- pkg/utils/util.go | 14 + 6 files changed, 390 insertions(+), 374 deletions(-) diff --git a/api/kyverno/v1/policy_types.go b/api/kyverno/v1/policy_types.go index 330dd52914..1e317d03f7 100755 --- a/api/kyverno/v1/policy_types.go +++ b/api/kyverno/v1/policy_types.go @@ -206,8 +206,10 @@ type Condition struct { // +kubebuilder:validation:XPreserveUnknownFields Key apiextensions.JSON `json:"key,omitempty" yaml:"key,omitempty"` - // Operator is the operation to perform. Valid operators - // are Equals, NotEquals, In, AnyIn, AllIn and NotIn, AnyNotIn, AllNotIn. + // Operator is the conditional operation to perform. Valid operators are: + // Equals, NotEquals, In, AnyIn, AllIn, NotIn, AnyNotIn, AllNotIn, GreaterThanOrEquals, + // GreaterThan, LessThanOrEquals, LessThan, DurationGreaterThanOrEquals, DurationGreaterThan, + // DurationLessThanOrEquals, DurationLessThan Operator ConditionOperator `json:"operator,omitempty" yaml:"operator,omitempty"` // Value is the conditional value, or set of values. The values can be fixed set @@ -221,46 +223,46 @@ type Condition struct { // +kubebuilder:validation:Enum=Equals;NotEquals;In;AnyIn;AllIn;NotIn;AnyNotIn;AllNotIn;GreaterThanOrEquals;GreaterThan;LessThanOrEquals;LessThan;DurationGreaterThanOrEquals;DurationGreaterThan;DurationLessThanOrEquals;DurationLessThan type ConditionOperator string -const ( - // Equal evaluates if the key is equal to the value. - // Deprecated. Use Equals instead. - Equal ConditionOperator = "Equal" - // Equals evaluates if the key is equal to the value. - Equals ConditionOperator = "Equals" - // NotEqual evaluates if the key is not equal to the value. - // Deprecated. Use NotEquals instead. - NotEqual ConditionOperator = "NotEqual" - // NotEquals evaluates if the key is not equal to the value. - NotEquals ConditionOperator = "NotEquals" - // In evaluates if the key is contained in the set of values. - In ConditionOperator = "In" - // AnyIn evaluates if any of the keys are contained in the set of values. - AnyIn ConditionOperator = "AnyIn" - // AllIn evaluates if all the keys are contained in the set of values. - AllIn ConditionOperator = "AllIn" - // NotIn evaluates if the key is not contained in the set of values. - NotIn ConditionOperator = "NotIn" - // AnyNotIn evaluates if any of the keys are not contained in the set of values. - AnyNotIn ConditionOperator = "AnyNotIn" - // AllNotIn evaluates if all the keys are not contained in the set of values. - AllNotIn ConditionOperator = "AllNotIn" - // GreaterThanOrEquals evaluates if the key (numeric) is greater than or equal to the value (numeric). - GreaterThanOrEquals ConditionOperator = "GreaterThanOrEquals" - // GreaterThan evaluates if the key (numeric) is greater than the value (numeric). - GreaterThan ConditionOperator = "GreaterThan" - // LessThanOrEquals evaluates if the key (numeric) is less than or equal to the value (numeric). - LessThanOrEquals ConditionOperator = "LessThanOrEquals" - // LessThan evaluates if the key (numeric) is less than the value (numeric). - LessThan ConditionOperator = "LessThan" - // DurationGreaterThanOrEquals evaluates if the key (duration) is greater than or equal to the value (duration) - DurationGreaterThanOrEquals ConditionOperator = "DurationGreaterThanOrEquals" - // DurationGreaterThan evaluates if the key (duration) is greater than the value (duration) - DurationGreaterThan ConditionOperator = "DurationGreaterThan" - // DurationLessThanOrEquals evaluates if the key (duration) is less than or equal to the value (duration) - DurationLessThanOrEquals ConditionOperator = "DurationLessThanOrEquals" - // DurationLessThan evaluates if the key (duration) is greater than the value (duration) - DurationLessThan ConditionOperator = "DurationLessThan" -) +// ConditionOperators stores all the valid ConditionOperator types as key-value pairs. +// +// "Equal" evaluates if the key is equal to the value. (Deprecated; Use Equals instead) +// "Equals" evaluates if the key is equal to the value. +// "NotEqual" evaluates if the key is not equal to the value. (Deprecated; Use NotEquals instead) +// "NotEquals" evaluates if the key is not equal to the value. +// "In" evaluates if the key is contained in the set of values. +// "AnyIn" evaluates if any of the keys are contained in the set of values. +// "AllIn" evaluates if all the keys are contained in the set of values. +// "NotIn" evaluates if the key is not contained in the set of values. +// "AnyNotIn" evaluates if any of the keys are not contained in the set of values. +// "AllNotIn" evaluates if all the keys are not contained in the set of values. +// "GreaterThanOrEquals" evaluates if the key (numeric) is greater than or equal to the value (numeric). +// "GreaterThan" evaluates if the key (numeric) is greater than the value (numeric). +// "LessThanOrEquals" evaluates if the key (numeric) is less than or equal to the value (numeric). +// "LessThan" evaluates if the key (numeric) is less than the value (numeric). +// "DurationGreaterThanOrEquals" evaluates if the key (duration) is greater than or equal to the value (duration) +// "DurationGreaterThan" evaluates if the key (duration) is greater than the value (duration) +// "DurationLessThanOrEquals" evaluates if the key (duration) is less than or equal to the value (duration) +// "DurationLessThan" evaluates if the key (duration) is greater than the value (duration) +var ConditionOperators = map[string]ConditionOperator{ + "Equal": ConditionOperator("Equal"), + "Equals": ConditionOperator("Equals"), + "NotEqual": ConditionOperator("NotEqual"), + "NotEquals": ConditionOperator("NotEquals"), + "In": ConditionOperator("In"), + "AnyIn": ConditionOperator("AnyIn"), + "AllIn": ConditionOperator("AllIn"), + "NotIn": ConditionOperator("NotIn"), + "AnyNotIn": ConditionOperator("AnyNotIn"), + "AllNotIn": ConditionOperator("AllNotIn"), + "GreaterThanOrEquals": ConditionOperator("GreaterThanOrEquals"), + "GreaterThan": ConditionOperator("GreaterThan"), + "LessThanOrEquals": ConditionOperator("LessThanOrEquals"), + "LessThan": ConditionOperator("LessThan"), + "DurationGreaterThanOrEquals": ConditionOperator("DurationGreaterThanOrEquals"), + "DurationGreaterThan": ConditionOperator("DurationGreaterThan"), + "DurationLessThanOrEquals": ConditionOperator("DurationLessThanOrEquals"), + "DurationLessThan": ConditionOperator("DurationLessThan"), +} // MatchResources is used to specify resource and admission review request data for // which a policy rule is applicable. diff --git a/pkg/engine/variables/evaluate_test.go b/pkg/engine/variables/evaluate_test.go index aa16670f6f..aae7ea610c 100644 --- a/pkg/engine/variables/evaluate_test.go +++ b/pkg/engine/variables/evaluate_test.go @@ -16,328 +16,328 @@ func TestEvaluate(t *testing.T) { Result bool }{ // Equals - {kyverno.Condition{Key: "string", Operator: kyverno.Equals, Value: "string"}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.Equals, Value: 1}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.Equals, Value: int64(1)}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.Equals, Value: 1}, true}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.Equals, Value: 1.0}, true}, - {kyverno.Condition{Key: true, Operator: kyverno.Equals, Value: true}, true}, - {kyverno.Condition{Key: false, Operator: kyverno.Equals, Value: false}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.Equals, Value: "1Gi"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.Equals, Value: "1024Mi"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.Equals, Value: "1h"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.Equals, Value: "60m"}, true}, - {kyverno.Condition{Key: map[string]interface{}{"foo": "bar"}, Operator: kyverno.Equals, Value: map[string]interface{}{"foo": "bar"}}, true}, - {kyverno.Condition{Key: []interface{}{"foo", "bar"}, Operator: kyverno.Equals, Value: []interface{}{"foo", "bar"}}, true}, - {kyverno.Condition{Key: []interface{}{map[string]string{"foo": "bar"}}, Operator: kyverno.Equals, Value: []interface{}{map[string]string{"foo": "bar"}}}, true}, - {kyverno.Condition{Key: "string", Operator: kyverno.Equals, Value: "not string"}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.Equals, Value: 2}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.Equals, Value: int64(2)}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.Equals, Value: 2}, false}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.Equals, Value: 2.0}, false}, - {kyverno.Condition{Key: true, Operator: kyverno.Equals, Value: false}, false}, - {kyverno.Condition{Key: false, Operator: kyverno.Equals, Value: true}, false}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.Equals, Value: "10Gi"}, false}, - {kyverno.Condition{Key: "10Gi", Operator: kyverno.Equals, Value: "1024Mi"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.Equals, Value: "5h"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.Equals, Value: "30m"}, false}, - {kyverno.Condition{Key: "string", Operator: kyverno.Equals, Value: 1}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.Equals, Value: "2"}, false}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.Equals, Value: "2.0"}, false}, - {kyverno.Condition{Key: true, Operator: kyverno.Equals, Value: "false"}, false}, - {kyverno.Condition{Key: false, Operator: kyverno.Equals, Value: "true"}, false}, - {kyverno.Condition{Key: map[string]interface{}{"foo": "bar"}, Operator: kyverno.Equals, Value: map[string]interface{}{"bar": "foo"}}, false}, - {kyverno.Condition{Key: []interface{}{"foo", "bar"}, Operator: kyverno.Equals, Value: []interface{}{"bar", "foo"}}, false}, - {kyverno.Condition{Key: []interface{}{map[string]string{"foo": "bar"}}, Operator: kyverno.Equals, Value: []interface{}{map[string]string{"bar": "foo"}}}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.Equals, Value: 3600}, true}, - {kyverno.Condition{Key: "2h", Operator: kyverno.Equals, Value: 3600}, false}, - {kyverno.Condition{Key: "1.5.2", Operator: kyverno.Equals, Value: "1.5.2"}, true}, - {kyverno.Condition{Key: "1.5.2", Operator: kyverno.Equals, Value: "1.5.*"}, true}, - {kyverno.Condition{Key: "1.5.0", Operator: kyverno.Equals, Value: "1.5.5"}, false}, + {kyverno.Condition{Key: "string", Operator: kyverno.ConditionOperators["Equals"], Value: "string"}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["Equals"], Value: 1}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["Equals"], Value: int64(1)}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["Equals"], Value: 1}, true}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["Equals"], Value: 1.0}, true}, + {kyverno.Condition{Key: true, Operator: kyverno.ConditionOperators["Equals"], Value: true}, true}, + {kyverno.Condition{Key: false, Operator: kyverno.ConditionOperators["Equals"], Value: false}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["Equals"], Value: "1Gi"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["Equals"], Value: "1024Mi"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["Equals"], Value: "1h"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["Equals"], Value: "60m"}, true}, + {kyverno.Condition{Key: map[string]interface{}{"foo": "bar"}, Operator: kyverno.ConditionOperators["Equals"], Value: map[string]interface{}{"foo": "bar"}}, true}, + {kyverno.Condition{Key: []interface{}{"foo", "bar"}, Operator: kyverno.ConditionOperators["Equals"], Value: []interface{}{"foo", "bar"}}, true}, + {kyverno.Condition{Key: []interface{}{map[string]string{"foo": "bar"}}, Operator: kyverno.ConditionOperators["Equals"], Value: []interface{}{map[string]string{"foo": "bar"}}}, true}, + {kyverno.Condition{Key: "string", Operator: kyverno.ConditionOperators["Equals"], Value: "not string"}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["Equals"], Value: 2}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["Equals"], Value: int64(2)}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["Equals"], Value: 2}, false}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["Equals"], Value: 2.0}, false}, + {kyverno.Condition{Key: true, Operator: kyverno.ConditionOperators["Equals"], Value: false}, false}, + {kyverno.Condition{Key: false, Operator: kyverno.ConditionOperators["Equals"], Value: true}, false}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["Equals"], Value: "10Gi"}, false}, + {kyverno.Condition{Key: "10Gi", Operator: kyverno.ConditionOperators["Equals"], Value: "1024Mi"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["Equals"], Value: "5h"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["Equals"], Value: "30m"}, false}, + {kyverno.Condition{Key: "string", Operator: kyverno.ConditionOperators["Equals"], Value: 1}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["Equals"], Value: "2"}, false}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["Equals"], Value: "2.0"}, false}, + {kyverno.Condition{Key: true, Operator: kyverno.ConditionOperators["Equals"], Value: "false"}, false}, + {kyverno.Condition{Key: false, Operator: kyverno.ConditionOperators["Equals"], Value: "true"}, false}, + {kyverno.Condition{Key: map[string]interface{}{"foo": "bar"}, Operator: kyverno.ConditionOperators["Equals"], Value: map[string]interface{}{"bar": "foo"}}, false}, + {kyverno.Condition{Key: []interface{}{"foo", "bar"}, Operator: kyverno.ConditionOperators["Equals"], Value: []interface{}{"bar", "foo"}}, false}, + {kyverno.Condition{Key: []interface{}{map[string]string{"foo": "bar"}}, Operator: kyverno.ConditionOperators["Equals"], Value: []interface{}{map[string]string{"bar": "foo"}}}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["Equals"], Value: 3600}, true}, + {kyverno.Condition{Key: "2h", Operator: kyverno.ConditionOperators["Equals"], Value: 3600}, false}, + {kyverno.Condition{Key: "1.5.2", Operator: kyverno.ConditionOperators["Equals"], Value: "1.5.2"}, true}, + {kyverno.Condition{Key: "1.5.2", Operator: kyverno.ConditionOperators["Equals"], Value: "1.5.*"}, true}, + {kyverno.Condition{Key: "1.5.0", Operator: kyverno.ConditionOperators["Equals"], Value: "1.5.5"}, false}, // Not Equals - {kyverno.Condition{Key: "string", Operator: kyverno.NotEquals, Value: "string"}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.NotEquals, Value: 1}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.NotEquals, Value: int64(1)}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.NotEquals, Value: 1}, false}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.NotEquals, Value: 1.0}, false}, - {kyverno.Condition{Key: true, Operator: kyverno.NotEquals, Value: false}, true}, - {kyverno.Condition{Key: false, Operator: kyverno.NotEquals, Value: false}, false}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.NotEquals, Value: "1Gi"}, false}, - {kyverno.Condition{Key: "10Gi", Operator: kyverno.NotEquals, Value: "1024Mi"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.NotEquals, Value: "1h"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.NotEquals, Value: "60m"}, false}, - {kyverno.Condition{Key: map[string]interface{}{"foo": "bar"}, Operator: kyverno.NotEquals, Value: map[string]interface{}{"foo": "bar"}}, false}, - {kyverno.Condition{Key: []interface{}{"foo", "bar"}, Operator: kyverno.NotEquals, Value: []interface{}{"foo", "bar"}}, false}, - {kyverno.Condition{Key: []interface{}{map[string]string{"foo": "bar"}}, Operator: kyverno.NotEquals, Value: []interface{}{map[string]string{"foo": "bar"}}}, false}, - {kyverno.Condition{Key: "string", Operator: kyverno.NotEquals, Value: "not string"}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.NotEquals, Value: 2}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.NotEquals, Value: int64(2)}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.NotEquals, Value: 2}, true}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.NotEquals, Value: 2.0}, true}, - {kyverno.Condition{Key: true, Operator: kyverno.NotEquals, Value: true}, false}, - {kyverno.Condition{Key: false, Operator: kyverno.NotEquals, Value: true}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.NotEquals, Value: "10Gi"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.NotEquals, Value: "1024Mi"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.NotEquals, Value: "5h"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.NotEquals, Value: "30m"}, true}, - {kyverno.Condition{Key: "string", Operator: kyverno.NotEquals, Value: 1}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.NotEquals, Value: "2"}, true}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.NotEquals, Value: "2.0"}, true}, - {kyverno.Condition{Key: true, Operator: kyverno.NotEquals, Value: "false"}, true}, - {kyverno.Condition{Key: false, Operator: kyverno.NotEquals, Value: "true"}, true}, - {kyverno.Condition{Key: map[string]interface{}{"foo": "bar"}, Operator: kyverno.NotEquals, Value: map[string]interface{}{"bar": "foo"}}, true}, - {kyverno.Condition{Key: []interface{}{"foo", "bar"}, Operator: kyverno.NotEquals, Value: []interface{}{"bar", "foo"}}, true}, - {kyverno.Condition{Key: []interface{}{map[string]string{"foo": "bar"}}, Operator: kyverno.NotEquals, Value: []interface{}{map[string]string{"bar": "foo"}}}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.NotEquals, Value: 3600}, false}, - {kyverno.Condition{Key: "2h", Operator: kyverno.NotEquals, Value: 3600}, true}, - {kyverno.Condition{Key: "1.5.2", Operator: kyverno.NotEquals, Value: "1.5.5"}, true}, - {kyverno.Condition{Key: "1.5.2", Operator: kyverno.NotEquals, Value: "1.5.*"}, false}, - {kyverno.Condition{Key: "1.5.0", Operator: kyverno.NotEquals, Value: "1.5.0"}, false}, + {kyverno.Condition{Key: "string", Operator: kyverno.ConditionOperators["NotEquals"], Value: "string"}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["NotEquals"], Value: 1}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["NotEquals"], Value: int64(1)}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["NotEquals"], Value: 1}, false}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["NotEquals"], Value: 1.0}, false}, + {kyverno.Condition{Key: true, Operator: kyverno.ConditionOperators["NotEquals"], Value: false}, true}, + {kyverno.Condition{Key: false, Operator: kyverno.ConditionOperators["NotEquals"], Value: false}, false}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["NotEquals"], Value: "1Gi"}, false}, + {kyverno.Condition{Key: "10Gi", Operator: kyverno.ConditionOperators["NotEquals"], Value: "1024Mi"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["NotEquals"], Value: "1h"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["NotEquals"], Value: "60m"}, false}, + {kyverno.Condition{Key: map[string]interface{}{"foo": "bar"}, Operator: kyverno.ConditionOperators["NotEquals"], Value: map[string]interface{}{"foo": "bar"}}, false}, + {kyverno.Condition{Key: []interface{}{"foo", "bar"}, Operator: kyverno.ConditionOperators["NotEquals"], Value: []interface{}{"foo", "bar"}}, false}, + {kyverno.Condition{Key: []interface{}{map[string]string{"foo": "bar"}}, Operator: kyverno.ConditionOperators["NotEquals"], Value: []interface{}{map[string]string{"foo": "bar"}}}, false}, + {kyverno.Condition{Key: "string", Operator: kyverno.ConditionOperators["NotEquals"], Value: "not string"}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["NotEquals"], Value: 2}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["NotEquals"], Value: int64(2)}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["NotEquals"], Value: 2}, true}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["NotEquals"], Value: 2.0}, true}, + {kyverno.Condition{Key: true, Operator: kyverno.ConditionOperators["NotEquals"], Value: true}, false}, + {kyverno.Condition{Key: false, Operator: kyverno.ConditionOperators["NotEquals"], Value: true}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["NotEquals"], Value: "10Gi"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["NotEquals"], Value: "1024Mi"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["NotEquals"], Value: "5h"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["NotEquals"], Value: "30m"}, true}, + {kyverno.Condition{Key: "string", Operator: kyverno.ConditionOperators["NotEquals"], Value: 1}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["NotEquals"], Value: "2"}, true}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["NotEquals"], Value: "2.0"}, true}, + {kyverno.Condition{Key: true, Operator: kyverno.ConditionOperators["NotEquals"], Value: "false"}, true}, + {kyverno.Condition{Key: false, Operator: kyverno.ConditionOperators["NotEquals"], Value: "true"}, true}, + {kyverno.Condition{Key: map[string]interface{}{"foo": "bar"}, Operator: kyverno.ConditionOperators["NotEquals"], Value: map[string]interface{}{"bar": "foo"}}, true}, + {kyverno.Condition{Key: []interface{}{"foo", "bar"}, Operator: kyverno.ConditionOperators["NotEquals"], Value: []interface{}{"bar", "foo"}}, true}, + {kyverno.Condition{Key: []interface{}{map[string]string{"foo": "bar"}}, Operator: kyverno.ConditionOperators["NotEquals"], Value: []interface{}{map[string]string{"bar": "foo"}}}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["NotEquals"], Value: 3600}, false}, + {kyverno.Condition{Key: "2h", Operator: kyverno.ConditionOperators["NotEquals"], Value: 3600}, true}, + {kyverno.Condition{Key: "1.5.2", Operator: kyverno.ConditionOperators["NotEquals"], Value: "1.5.5"}, true}, + {kyverno.Condition{Key: "1.5.2", Operator: kyverno.ConditionOperators["NotEquals"], Value: "1.5.*"}, false}, + {kyverno.Condition{Key: "1.5.0", Operator: kyverno.ConditionOperators["NotEquals"], Value: "1.5.0"}, false}, // Greater Than - {kyverno.Condition{Key: 10, Operator: kyverno.GreaterThan, Value: 1}, true}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.GreaterThan, Value: 1.0}, true}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.GreaterThan, Value: 1}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThan, Value: 10}, false}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.GreaterThan, Value: 1.5}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThan, Value: 1.5}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThan, Value: 1}, false}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.GreaterThan, Value: 1.0}, false}, - {kyverno.Condition{Key: "10Gi", Operator: kyverno.GreaterThan, Value: "1Gi"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.GreaterThan, Value: "1Mi"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.GreaterThan, Value: "10Gi"}, false}, - {kyverno.Condition{Key: "10Mi", Operator: kyverno.GreaterThan, Value: "10Mi"}, false}, - {kyverno.Condition{Key: "10h", Operator: kyverno.GreaterThan, Value: "1h"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.GreaterThan, Value: "30m"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.GreaterThan, Value: "1h"}, false}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.GreaterThan, Value: "1Gi"}, false}, - {kyverno.Condition{Key: "10", Operator: kyverno.GreaterThan, Value: 1}, true}, - {kyverno.Condition{Key: 100, Operator: kyverno.GreaterThan, Value: "10"}, true}, - {kyverno.Condition{Key: "100", Operator: kyverno.GreaterThan, Value: "10"}, true}, - {kyverno.Condition{Key: "10", Operator: kyverno.GreaterThan, Value: "10"}, false}, - {kyverno.Condition{Key: "1", Operator: kyverno.GreaterThan, Value: "10"}, false}, - {kyverno.Condition{Key: "1", Operator: kyverno.GreaterThan, Value: 10}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThan, Value: "10"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.GreaterThan, Value: 3600}, false}, - {kyverno.Condition{Key: "2h", Operator: kyverno.GreaterThan, Value: 3600}, true}, - {kyverno.Condition{Key: 3600, Operator: kyverno.GreaterThan, Value: "1h"}, false}, - {kyverno.Condition{Key: 3600, Operator: kyverno.GreaterThan, Value: "30m"}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.GreaterThan, Value: int64(1)}, false}, - {kyverno.Condition{Key: int64(10), Operator: kyverno.GreaterThan, Value: int64(1)}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.GreaterThan, Value: int64(10)}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.GreaterThan, Value: 1}, false}, - {kyverno.Condition{Key: int64(10), Operator: kyverno.GreaterThan, Value: 1}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.GreaterThan, Value: 10}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThan, Value: int64(1)}, false}, - {kyverno.Condition{Key: 10, Operator: kyverno.GreaterThan, Value: int64(1)}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThan, Value: int64(10)}, false}, - {kyverno.Condition{Key: -5, Operator: kyverno.GreaterThan, Value: 1}, false}, - {kyverno.Condition{Key: -5, Operator: kyverno.GreaterThan, Value: -10}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThan, Value: -10}, true}, - {kyverno.Condition{Key: "1.5.5", Operator: kyverno.GreaterThan, Value: "1.5.0"}, true}, - {kyverno.Condition{Key: "1.5.0", Operator: kyverno.GreaterThan, Value: "1.5.5"}, false}, + {kyverno.Condition{Key: 10, Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1}, true}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1.0}, true}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThan"], Value: 10}, false}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1.5}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1.5}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1}, false}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1.0}, false}, + {kyverno.Condition{Key: "10Gi", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "1Gi"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "1Mi"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "10Gi"}, false}, + {kyverno.Condition{Key: "10Mi", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "10Mi"}, false}, + {kyverno.Condition{Key: "10h", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "1h"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "30m"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "1h"}, false}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "1Gi"}, false}, + {kyverno.Condition{Key: "10", Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1}, true}, + {kyverno.Condition{Key: 100, Operator: kyverno.ConditionOperators["GreaterThan"], Value: "10"}, true}, + {kyverno.Condition{Key: "100", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "10"}, true}, + {kyverno.Condition{Key: "10", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "10"}, false}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "10"}, false}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["GreaterThan"], Value: 10}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThan"], Value: "10"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["GreaterThan"], Value: 3600}, false}, + {kyverno.Condition{Key: "2h", Operator: kyverno.ConditionOperators["GreaterThan"], Value: 3600}, true}, + {kyverno.Condition{Key: 3600, Operator: kyverno.ConditionOperators["GreaterThan"], Value: "1h"}, false}, + {kyverno.Condition{Key: 3600, Operator: kyverno.ConditionOperators["GreaterThan"], Value: "30m"}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["GreaterThan"], Value: int64(1)}, false}, + {kyverno.Condition{Key: int64(10), Operator: kyverno.ConditionOperators["GreaterThan"], Value: int64(1)}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["GreaterThan"], Value: int64(10)}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1}, false}, + {kyverno.Condition{Key: int64(10), Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["GreaterThan"], Value: 10}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThan"], Value: int64(1)}, false}, + {kyverno.Condition{Key: 10, Operator: kyverno.ConditionOperators["GreaterThan"], Value: int64(1)}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThan"], Value: int64(10)}, false}, + {kyverno.Condition{Key: -5, Operator: kyverno.ConditionOperators["GreaterThan"], Value: 1}, false}, + {kyverno.Condition{Key: -5, Operator: kyverno.ConditionOperators["GreaterThan"], Value: -10}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThan"], Value: -10}, true}, + {kyverno.Condition{Key: "1.5.5", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "1.5.0"}, true}, + {kyverno.Condition{Key: "1.5.0", Operator: kyverno.ConditionOperators["GreaterThan"], Value: "1.5.5"}, false}, // Less Than - {kyverno.Condition{Key: 10, Operator: kyverno.LessThan, Value: 1}, false}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.LessThan, Value: 1.0}, false}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.LessThan, Value: 1}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThan, Value: 10}, true}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.LessThan, Value: 1.5}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThan, Value: 1.5}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThan, Value: 1}, false}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.LessThan, Value: 1.0}, false}, - {kyverno.Condition{Key: "10Gi", Operator: kyverno.LessThan, Value: "1Gi"}, false}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.LessThan, Value: "10Gi"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.LessThan, Value: "1Mi"}, false}, - {kyverno.Condition{Key: "1Mi", Operator: kyverno.LessThan, Value: "1Gi"}, true}, - {kyverno.Condition{Key: "10h", Operator: kyverno.LessThan, Value: "1h"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.LessThan, Value: "30m"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.LessThan, Value: "1h"}, false}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.LessThan, Value: "1Gi"}, false}, - {kyverno.Condition{Key: "10", Operator: kyverno.LessThan, Value: 1}, false}, - {kyverno.Condition{Key: 100, Operator: kyverno.LessThan, Value: "10"}, false}, - {kyverno.Condition{Key: "100", Operator: kyverno.LessThan, Value: "10"}, false}, - {kyverno.Condition{Key: "10", Operator: kyverno.LessThan, Value: "10"}, false}, - {kyverno.Condition{Key: "1", Operator: kyverno.LessThan, Value: "10"}, true}, - {kyverno.Condition{Key: "1", Operator: kyverno.LessThan, Value: 10}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThan, Value: "10"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.LessThan, Value: 3600}, false}, - {kyverno.Condition{Key: "30m", Operator: kyverno.LessThan, Value: 3600}, true}, - {kyverno.Condition{Key: 3600, Operator: kyverno.LessThan, Value: "1h"}, false}, - {kyverno.Condition{Key: 3600, Operator: kyverno.LessThan, Value: "30m"}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.LessThan, Value: int64(1)}, false}, - {kyverno.Condition{Key: int64(10), Operator: kyverno.LessThan, Value: int64(1)}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.LessThan, Value: int64(10)}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.LessThan, Value: 1}, false}, - {kyverno.Condition{Key: int64(10), Operator: kyverno.LessThan, Value: 1}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.LessThan, Value: 10}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThan, Value: int64(1)}, false}, - {kyverno.Condition{Key: 10, Operator: kyverno.LessThan, Value: int64(1)}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThan, Value: int64(10)}, true}, - {kyverno.Condition{Key: -5, Operator: kyverno.LessThan, Value: 1}, true}, - {kyverno.Condition{Key: -5, Operator: kyverno.LessThan, Value: -10}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThan, Value: -10}, false}, - {kyverno.Condition{Key: "1.5.5", Operator: kyverno.LessThan, Value: "1.5.0"}, false}, - {kyverno.Condition{Key: "1.5.0", Operator: kyverno.LessThan, Value: "1.5.5"}, true}, + {kyverno.Condition{Key: 10, Operator: kyverno.ConditionOperators["LessThan"], Value: 1}, false}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["LessThan"], Value: 1.0}, false}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["LessThan"], Value: 1}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThan"], Value: 10}, true}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["LessThan"], Value: 1.5}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThan"], Value: 1.5}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThan"], Value: 1}, false}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["LessThan"], Value: 1.0}, false}, + {kyverno.Condition{Key: "10Gi", Operator: kyverno.ConditionOperators["LessThan"], Value: "1Gi"}, false}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["LessThan"], Value: "10Gi"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["LessThan"], Value: "1Mi"}, false}, + {kyverno.Condition{Key: "1Mi", Operator: kyverno.ConditionOperators["LessThan"], Value: "1Gi"}, true}, + {kyverno.Condition{Key: "10h", Operator: kyverno.ConditionOperators["LessThan"], Value: "1h"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["LessThan"], Value: "30m"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["LessThan"], Value: "1h"}, false}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["LessThan"], Value: "1Gi"}, false}, + {kyverno.Condition{Key: "10", Operator: kyverno.ConditionOperators["LessThan"], Value: 1}, false}, + {kyverno.Condition{Key: 100, Operator: kyverno.ConditionOperators["LessThan"], Value: "10"}, false}, + {kyverno.Condition{Key: "100", Operator: kyverno.ConditionOperators["LessThan"], Value: "10"}, false}, + {kyverno.Condition{Key: "10", Operator: kyverno.ConditionOperators["LessThan"], Value: "10"}, false}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["LessThan"], Value: "10"}, true}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["LessThan"], Value: 10}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThan"], Value: "10"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["LessThan"], Value: 3600}, false}, + {kyverno.Condition{Key: "30m", Operator: kyverno.ConditionOperators["LessThan"], Value: 3600}, true}, + {kyverno.Condition{Key: 3600, Operator: kyverno.ConditionOperators["LessThan"], Value: "1h"}, false}, + {kyverno.Condition{Key: 3600, Operator: kyverno.ConditionOperators["LessThan"], Value: "30m"}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["LessThan"], Value: int64(1)}, false}, + {kyverno.Condition{Key: int64(10), Operator: kyverno.ConditionOperators["LessThan"], Value: int64(1)}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["LessThan"], Value: int64(10)}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["LessThan"], Value: 1}, false}, + {kyverno.Condition{Key: int64(10), Operator: kyverno.ConditionOperators["LessThan"], Value: 1}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["LessThan"], Value: 10}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThan"], Value: int64(1)}, false}, + {kyverno.Condition{Key: 10, Operator: kyverno.ConditionOperators["LessThan"], Value: int64(1)}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThan"], Value: int64(10)}, true}, + {kyverno.Condition{Key: -5, Operator: kyverno.ConditionOperators["LessThan"], Value: 1}, true}, + {kyverno.Condition{Key: -5, Operator: kyverno.ConditionOperators["LessThan"], Value: -10}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThan"], Value: -10}, false}, + {kyverno.Condition{Key: "1.5.5", Operator: kyverno.ConditionOperators["LessThan"], Value: "1.5.0"}, false}, + {kyverno.Condition{Key: "1.5.0", Operator: kyverno.ConditionOperators["LessThan"], Value: "1.5.5"}, true}, // Greater Than or Equal - {kyverno.Condition{Key: 10, Operator: kyverno.GreaterThanOrEquals, Value: 1}, true}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.GreaterThanOrEquals, Value: 1.0}, true}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.GreaterThanOrEquals, Value: 1}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThanOrEquals, Value: 10}, false}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.GreaterThanOrEquals, Value: 1.5}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThanOrEquals, Value: 1.5}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThanOrEquals, Value: 1}, true}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.GreaterThanOrEquals, Value: 1.0}, true}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.GreaterThanOrEquals, Value: 1}, true}, - {kyverno.Condition{Key: "10Gi", Operator: kyverno.GreaterThanOrEquals, Value: "1Gi"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.GreaterThanOrEquals, Value: "1Mi"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.GreaterThanOrEquals, Value: "10Gi"}, false}, - {kyverno.Condition{Key: "10h", Operator: kyverno.GreaterThanOrEquals, Value: "1h"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.GreaterThanOrEquals, Value: "30m"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.GreaterThanOrEquals, Value: "1h"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.GreaterThanOrEquals, Value: "1Gi"}, true}, - {kyverno.Condition{Key: "10", Operator: kyverno.GreaterThanOrEquals, Value: 1}, true}, - {kyverno.Condition{Key: 100, Operator: kyverno.GreaterThanOrEquals, Value: "10"}, true}, - {kyverno.Condition{Key: "100", Operator: kyverno.GreaterThanOrEquals, Value: "10"}, true}, - {kyverno.Condition{Key: "10", Operator: kyverno.GreaterThanOrEquals, Value: "10"}, true}, - {kyverno.Condition{Key: "1", Operator: kyverno.GreaterThanOrEquals, Value: "10"}, false}, - {kyverno.Condition{Key: "1", Operator: kyverno.GreaterThanOrEquals, Value: 10}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThanOrEquals, Value: "10"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.GreaterThanOrEquals, Value: 3600}, true}, - {kyverno.Condition{Key: "2h", Operator: kyverno.GreaterThanOrEquals, Value: 3600}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.GreaterThanOrEquals, Value: int64(1)}, true}, - {kyverno.Condition{Key: int64(10), Operator: kyverno.GreaterThanOrEquals, Value: int64(1)}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.GreaterThanOrEquals, Value: int64(10)}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.GreaterThanOrEquals, Value: 1}, true}, - {kyverno.Condition{Key: int64(10), Operator: kyverno.GreaterThanOrEquals, Value: 1}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.GreaterThanOrEquals, Value: 10}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThanOrEquals, Value: int64(1)}, true}, - {kyverno.Condition{Key: 10, Operator: kyverno.GreaterThanOrEquals, Value: int64(1)}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.GreaterThanOrEquals, Value: int64(10)}, false}, - {kyverno.Condition{Key: "1.5.5", Operator: kyverno.GreaterThanOrEquals, Value: "1.5.5"}, true}, - {kyverno.Condition{Key: "1.5.5", Operator: kyverno.GreaterThanOrEquals, Value: "1.5.0"}, true}, - {kyverno.Condition{Key: "1.5.0", Operator: kyverno.GreaterThanOrEquals, Value: "1.5.5"}, false}, + {kyverno.Condition{Key: 10, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1}, true}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1.0}, true}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 10}, false}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1.5}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1.5}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1}, true}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1.0}, true}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1}, true}, + {kyverno.Condition{Key: "10Gi", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "1Gi"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "1Mi"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "10Gi"}, false}, + {kyverno.Condition{Key: "10h", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "1h"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "30m"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "1h"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "1Gi"}, true}, + {kyverno.Condition{Key: "10", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1}, true}, + {kyverno.Condition{Key: 100, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "10"}, true}, + {kyverno.Condition{Key: "100", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "10"}, true}, + {kyverno.Condition{Key: "10", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "10"}, true}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "10"}, false}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 10}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "10"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 3600}, true}, + {kyverno.Condition{Key: "2h", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 3600}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: int64(1)}, true}, + {kyverno.Condition{Key: int64(10), Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: int64(1)}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: int64(10)}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1}, true}, + {kyverno.Condition{Key: int64(10), Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 1}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: 10}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: int64(1)}, true}, + {kyverno.Condition{Key: 10, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: int64(1)}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: int64(10)}, false}, + {kyverno.Condition{Key: "1.5.5", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "1.5.5"}, true}, + {kyverno.Condition{Key: "1.5.5", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "1.5.0"}, true}, + {kyverno.Condition{Key: "1.5.0", Operator: kyverno.ConditionOperators["GreaterThanOrEquals"], Value: "1.5.5"}, false}, // Less Than or Equal - {kyverno.Condition{Key: 10, Operator: kyverno.LessThanOrEquals, Value: 1}, false}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.LessThanOrEquals, Value: 1.0}, false}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.LessThanOrEquals, Value: 1}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThanOrEquals, Value: 10}, true}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.LessThanOrEquals, Value: 1.5}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThanOrEquals, Value: 1.5}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThanOrEquals, Value: 1}, true}, - {kyverno.Condition{Key: 1.0, Operator: kyverno.LessThanOrEquals, Value: 1.0}, true}, - {kyverno.Condition{Key: "10Gi", Operator: kyverno.LessThanOrEquals, Value: "1Gi"}, false}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.LessThanOrEquals, Value: "10Gi"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.LessThanOrEquals, Value: "1Mi"}, false}, - {kyverno.Condition{Key: "1Mi", Operator: kyverno.LessThanOrEquals, Value: "1Gi"}, true}, - {kyverno.Condition{Key: "10h", Operator: kyverno.LessThanOrEquals, Value: "1h"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.LessThanOrEquals, Value: "30m"}, false}, - {kyverno.Condition{Key: "1h", Operator: kyverno.LessThanOrEquals, Value: "1h"}, true}, - {kyverno.Condition{Key: "1Gi", Operator: kyverno.LessThanOrEquals, Value: "1Gi"}, true}, - {kyverno.Condition{Key: "10", Operator: kyverno.LessThanOrEquals, Value: 1}, false}, - {kyverno.Condition{Key: 100, Operator: kyverno.LessThanOrEquals, Value: "10"}, false}, - {kyverno.Condition{Key: "100", Operator: kyverno.LessThanOrEquals, Value: "10"}, false}, - {kyverno.Condition{Key: "10", Operator: kyverno.LessThanOrEquals, Value: "10"}, true}, - {kyverno.Condition{Key: "1", Operator: kyverno.LessThanOrEquals, Value: "10"}, true}, - {kyverno.Condition{Key: "1", Operator: kyverno.LessThanOrEquals, Value: 10}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThanOrEquals, Value: "10"}, true}, - {kyverno.Condition{Key: "1h", Operator: kyverno.LessThanOrEquals, Value: 3600}, true}, - {kyverno.Condition{Key: "2h", Operator: kyverno.LessThanOrEquals, Value: 3600}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.LessThanOrEquals, Value: int64(1)}, true}, - {kyverno.Condition{Key: int64(10), Operator: kyverno.LessThanOrEquals, Value: int64(1)}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.LessThanOrEquals, Value: int64(10)}, true}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.LessThanOrEquals, Value: 1}, true}, - {kyverno.Condition{Key: int64(10), Operator: kyverno.LessThanOrEquals, Value: 1}, false}, - {kyverno.Condition{Key: int64(1), Operator: kyverno.LessThanOrEquals, Value: 10}, true}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThanOrEquals, Value: int64(1)}, true}, - {kyverno.Condition{Key: 10, Operator: kyverno.LessThanOrEquals, Value: int64(1)}, false}, - {kyverno.Condition{Key: 1, Operator: kyverno.LessThanOrEquals, Value: int64(10)}, true}, - {kyverno.Condition{Key: "1.5.5", Operator: kyverno.LessThanOrEquals, Value: "1.5.5"}, true}, - {kyverno.Condition{Key: "1.5.0", Operator: kyverno.LessThanOrEquals, Value: "1.5.5"}, true}, - {kyverno.Condition{Key: "1.5.5", Operator: kyverno.LessThanOrEquals, Value: "1.5.0"}, false}, + {kyverno.Condition{Key: 10, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1}, false}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1.0}, false}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 10}, true}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1.5}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1.5}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1}, true}, + {kyverno.Condition{Key: 1.0, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1.0}, true}, + {kyverno.Condition{Key: "10Gi", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "1Gi"}, false}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "10Gi"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "1Mi"}, false}, + {kyverno.Condition{Key: "1Mi", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "1Gi"}, true}, + {kyverno.Condition{Key: "10h", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "1h"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "30m"}, false}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "1h"}, true}, + {kyverno.Condition{Key: "1Gi", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "1Gi"}, true}, + {kyverno.Condition{Key: "10", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1}, false}, + {kyverno.Condition{Key: 100, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "10"}, false}, + {kyverno.Condition{Key: "100", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "10"}, false}, + {kyverno.Condition{Key: "10", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "10"}, true}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "10"}, true}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 10}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "10"}, true}, + {kyverno.Condition{Key: "1h", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 3600}, true}, + {kyverno.Condition{Key: "2h", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 3600}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: int64(1)}, true}, + {kyverno.Condition{Key: int64(10), Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: int64(1)}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: int64(10)}, true}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1}, true}, + {kyverno.Condition{Key: int64(10), Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 1}, false}, + {kyverno.Condition{Key: int64(1), Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: 10}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: int64(1)}, true}, + {kyverno.Condition{Key: 10, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: int64(1)}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: int64(10)}, true}, + {kyverno.Condition{Key: "1.5.5", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "1.5.5"}, true}, + {kyverno.Condition{Key: "1.5.0", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "1.5.5"}, true}, + {kyverno.Condition{Key: "1.5.5", Operator: kyverno.ConditionOperators["LessThanOrEquals"], Value: "1.5.0"}, false}, // In - {kyverno.Condition{Key: 1, Operator: kyverno.In, Value: []interface{}{1, 2, 3}}, true}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.In, Value: []interface{}{1, 1.5, 2, 3}}, true}, - {kyverno.Condition{Key: "1", Operator: kyverno.In, Value: []interface{}{"1", "2", "3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.In, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: 5, Operator: kyverno.In, Value: []interface{}{1, 2, 3}}, false}, - {kyverno.Condition{Key: 5.5, Operator: kyverno.In, Value: []interface{}{1, 1.5, 2, 3}}, false}, - {kyverno.Condition{Key: "5", Operator: kyverno.In, Value: []interface{}{"1", "2", "3"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.In, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["In"], Value: []interface{}{1, 2, 3}}, true}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["In"], Value: []interface{}{1, 1.5, 2, 3}}, true}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["In"], Value: []interface{}{"1", "2", "3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.ConditionOperators["In"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: 5, Operator: kyverno.ConditionOperators["In"], Value: []interface{}{1, 2, 3}}, false}, + {kyverno.Condition{Key: 5.5, Operator: kyverno.ConditionOperators["In"], Value: []interface{}{1, 1.5, 2, 3}}, false}, + {kyverno.Condition{Key: "5", Operator: kyverno.ConditionOperators["In"], Value: []interface{}{"1", "2", "3"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.ConditionOperators["In"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, // Not In - {kyverno.Condition{Key: 1, Operator: kyverno.NotIn, Value: []interface{}{1, 2, 3}}, false}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.NotIn, Value: []interface{}{1, 1.5, 2, 3}}, false}, - {kyverno.Condition{Key: "1", Operator: kyverno.NotIn, Value: []interface{}{"1", "2", "3"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.NotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, - {kyverno.Condition{Key: 5, Operator: kyverno.NotIn, Value: []interface{}{1, 2, 3}}, true}, - {kyverno.Condition{Key: 5.5, Operator: kyverno.NotIn, Value: []interface{}{1, 1.5, 2, 3}}, true}, - {kyverno.Condition{Key: "5", Operator: kyverno.NotIn, Value: []interface{}{"1", "2", "3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.NotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["NotIn"], Value: []interface{}{1, 2, 3}}, false}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["NotIn"], Value: []interface{}{1, 1.5, 2, 3}}, false}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["NotIn"], Value: []interface{}{"1", "2", "3"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.ConditionOperators["NotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: 5, Operator: kyverno.ConditionOperators["NotIn"], Value: []interface{}{1, 2, 3}}, true}, + {kyverno.Condition{Key: 5.5, Operator: kyverno.ConditionOperators["NotIn"], Value: []interface{}{1, 1.5, 2, 3}}, true}, + {kyverno.Condition{Key: "5", Operator: kyverno.ConditionOperators["NotIn"], Value: []interface{}{"1", "2", "3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.ConditionOperators["NotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, // Any In - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.AnyIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.AnyIn, Value: "1.1.1.1"}, true}, - {kyverno.Condition{Key: []interface{}{"4.4.4.4", "5.5.5.5"}, Operator: kyverno.AnyIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.AnyIn, Value: []interface{}{"1.1.1.1"}}, true}, - {kyverno.Condition{Key: []interface{}{1, 2}, Operator: kyverno.AnyIn, Value: []interface{}{1, 2, 3, 4}}, true}, - {kyverno.Condition{Key: []interface{}{1, 5}, Operator: kyverno.AnyIn, Value: []interface{}{1, 2, 3, 4}}, true}, - {kyverno.Condition{Key: []interface{}{5}, Operator: kyverno.AnyIn, Value: []interface{}{1, 2, 3, 4}}, false}, - {kyverno.Condition{Key: []interface{}{"1*"}, Operator: kyverno.AnyIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"5*"}, Operator: kyverno.AnyIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2", "5.5.5.5"}, Operator: kyverno.AnyIn, Value: []interface{}{"2*"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2", "5.5.5.5"}, Operator: kyverno.AnyIn, Value: []interface{}{"4*"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AnyIn"], Value: "1.1.1.1"}, true}, + {kyverno.Condition{Key: []interface{}{"4.4.4.4", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{"1.1.1.1"}}, true}, + {kyverno.Condition{Key: []interface{}{1, 2}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{1, 2, 3, 4}}, true}, + {kyverno.Condition{Key: []interface{}{1, 5}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{1, 2, 3, 4}}, true}, + {kyverno.Condition{Key: []interface{}{5}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{1, 2, 3, 4}}, false}, + {kyverno.Condition{Key: []interface{}{"1*"}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"5*"}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{"2*"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AnyIn"], Value: []interface{}{"4*"}}, false}, // All In - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.AllIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.AllIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, - {kyverno.Condition{Key: []interface{}{"4.4.4.4", "5.5.5.5"}, Operator: kyverno.AllIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.AllIn, Value: []interface{}{"1.1.1.1"}}, false}, - {kyverno.Condition{Key: []interface{}{1, 2}, Operator: kyverno.AllIn, Value: []interface{}{1, 2, 3, 4}}, true}, - {kyverno.Condition{Key: []interface{}{1, 5}, Operator: kyverno.AllIn, Value: []interface{}{1, 2, 3, 4}}, false}, - {kyverno.Condition{Key: []interface{}{5}, Operator: kyverno.AllIn, Value: []interface{}{1, 2, 3, 4}}, false}, - {kyverno.Condition{Key: []interface{}{"1*"}, Operator: kyverno.AllIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"5*"}, Operator: kyverno.AllIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, - {kyverno.Condition{Key: []interface{}{"2.1.1.1", "2.2.2.2", "2.5.5.5"}, Operator: kyverno.AllIn, Value: []interface{}{"2*"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2", "5.5.5.5"}, Operator: kyverno.AllIn, Value: []interface{}{"4*"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.AllIn, Value: "5.5.5.5"}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: []interface{}{"4.4.4.4", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{"1.1.1.1"}}, false}, + {kyverno.Condition{Key: []interface{}{1, 2}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{1, 2, 3, 4}}, true}, + {kyverno.Condition{Key: []interface{}{1, 5}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{1, 2, 3, 4}}, false}, + {kyverno.Condition{Key: []interface{}{5}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{1, 2, 3, 4}}, false}, + {kyverno.Condition{Key: []interface{}{"1*"}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"5*"}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: []interface{}{"2.1.1.1", "2.2.2.2", "2.5.5.5"}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{"2*"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AllIn"], Value: []interface{}{"4*"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AllIn"], Value: "5.5.5.5"}, false}, // All Not In - {kyverno.Condition{Key: 1, Operator: kyverno.AllNotIn, Value: []interface{}{1, 2, 3}}, false}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.AllNotIn, Value: []interface{}{1, 1.5, 2, 3}}, false}, - {kyverno.Condition{Key: "1", Operator: kyverno.AllNotIn, Value: []interface{}{"1", "2", "3"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.AllNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, - {kyverno.Condition{Key: 5, Operator: kyverno.AllNotIn, Value: []interface{}{1, 2, 3}}, true}, - {kyverno.Condition{Key: 5.5, Operator: kyverno.AllNotIn, Value: []interface{}{1, 1.5, 2, 3}}, true}, - {kyverno.Condition{Key: "5", Operator: kyverno.AllNotIn, Value: []interface{}{"1", "2", "3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.AllNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.AllNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3", "1.1.1.1"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4", "1.1.1.1"}, Operator: kyverno.AllNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3", "1.1.1.1", "4.4.4.4"}}, false}, - {kyverno.Condition{Key: []interface{}{"5.5.5.5", "4.4.4.4"}, Operator: kyverno.AllNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"7*", "6*", "5*"}, Operator: kyverno.AllNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1*", "2*"}, Operator: kyverno.AllNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "3.3.3.3", "5.5.5.5"}, Operator: kyverno.AllNotIn, Value: []interface{}{"2*"}}, true}, - {kyverno.Condition{Key: []interface{}{"4.1.1.1", "4.2.2.2", "4.5.5.5"}, Operator: kyverno.AllNotIn, Value: []interface{}{"4*"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.AllNotIn, Value: "2.2.2.2"}, true}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{1, 2, 3}}, false}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{1, 1.5, 2, 3}}, false}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"1", "2", "3"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: 5, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{1, 2, 3}}, true}, + {kyverno.Condition{Key: 5.5, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{1, 1.5, 2, 3}}, true}, + {kyverno.Condition{Key: "5", Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"1", "2", "3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3", "1.1.1.1"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4", "1.1.1.1"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3", "1.1.1.1", "4.4.4.4"}}, false}, + {kyverno.Condition{Key: []interface{}{"5.5.5.5", "4.4.4.4"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"7*", "6*", "5*"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1*", "2*"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "3.3.3.3", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"2*"}}, true}, + {kyverno.Condition{Key: []interface{}{"4.1.1.1", "4.2.2.2", "4.5.5.5"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: []interface{}{"4*"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.ConditionOperators["AllNotIn"], Value: "2.2.2.2"}, true}, // Any Not In - {kyverno.Condition{Key: 1, Operator: kyverno.AnyNotIn, Value: []interface{}{1, 2, 3}}, false}, - {kyverno.Condition{Key: 1.5, Operator: kyverno.AnyNotIn, Value: []interface{}{1, 1.5, 2, 3}}, false}, - {kyverno.Condition{Key: "1", Operator: kyverno.AnyNotIn, Value: []interface{}{"1", "2", "3"}}, false}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.AnyNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, - {kyverno.Condition{Key: 5, Operator: kyverno.AnyNotIn, Value: []interface{}{1, 2, 3}}, true}, - {kyverno.Condition{Key: 5.5, Operator: kyverno.AnyNotIn, Value: []interface{}{1, 1.5, 2, 3}}, true}, - {kyverno.Condition{Key: "5", Operator: kyverno.AnyNotIn, Value: []interface{}{"1", "2", "3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.AnyNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"5.5.5.5", "4.4.4.4"}, Operator: kyverno.AnyNotIn, Value: "4.4.4.4"}, true}, - {kyverno.Condition{Key: []interface{}{"5.5.5.5", "4.4.4.4"}, Operator: kyverno.AnyNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1*", "3*", "5*"}, Operator: kyverno.AnyNotIn, Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, - {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2", "5.5.5.5"}, Operator: kyverno.AnyNotIn, Value: []interface{}{"2*"}}, true}, - {kyverno.Condition{Key: []interface{}{"2.2*"}, Operator: kyverno.AnyNotIn, Value: []interface{}{"2.2.2.2"}}, false}, + {kyverno.Condition{Key: 1, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{1, 2, 3}}, false}, + {kyverno.Condition{Key: 1.5, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{1, 1.5, 2, 3}}, false}, + {kyverno.Condition{Key: "1", Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{"1", "2", "3"}}, false}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2"}, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, false}, + {kyverno.Condition{Key: 5, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{1, 2, 3}}, true}, + {kyverno.Condition{Key: 5.5, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{1, 1.5, 2, 3}}, true}, + {kyverno.Condition{Key: "5", Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{"1", "2", "3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "4.4.4.4"}, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"5.5.5.5", "4.4.4.4"}, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: "4.4.4.4"}, true}, + {kyverno.Condition{Key: []interface{}{"5.5.5.5", "4.4.4.4"}, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1*", "3*", "5*"}, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{"1.1.1.1", "2.2.2.2", "3.3.3.3"}}, true}, + {kyverno.Condition{Key: []interface{}{"1.1.1.1", "2.2.2.2", "5.5.5.5"}, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{"2*"}}, true}, + {kyverno.Condition{Key: []interface{}{"2.2*"}, Operator: kyverno.ConditionOperators["AnyNotIn"], Value: []interface{}{"2.2.2.2"}}, false}, } ctx := context.NewContext() @@ -372,7 +372,7 @@ func Test_Eval_Equal_Var_Pass(t *testing.T) { } condition := kyverno.Condition{ Key: "{{request.object.metadata.name}}", - Operator: kyverno.Equal, + Operator: kyverno.ConditionOperators["Equal"], Value: "temp", } @@ -414,7 +414,7 @@ func Test_Eval_Equal_Var_Fail(t *testing.T) { } condition := kyverno.Condition{ Key: "{{request.object.metadata.name}}", - Operator: kyverno.Equal, + Operator: kyverno.ConditionOperators["Equal"], Value: "temp1", } diff --git a/pkg/engine/variables/operator/duration.go b/pkg/engine/variables/operator/duration.go index bec587e36d..cc9861d084 100644 --- a/pkg/engine/variables/operator/duration.go +++ b/pkg/engine/variables/operator/duration.go @@ -28,13 +28,13 @@ type DurationOperatorHandler struct { // durationCompareByCondition compares a time.Duration key with a time.Duration value on the basis of the provided operator func durationCompareByCondition(key time.Duration, value time.Duration, op kyverno.ConditionOperator, log *logr.Logger) bool { switch op { - case kyverno.DurationGreaterThanOrEquals: + case kyverno.ConditionOperators["DurationGreaterThanOrEquals"]: return key >= value - case kyverno.DurationGreaterThan: + case kyverno.ConditionOperators["DurationGreaterThan"]: return key > value - case kyverno.DurationLessThanOrEquals: + case kyverno.ConditionOperators["DurationLessThanOrEquals"]: return key <= value - case kyverno.DurationLessThan: + case kyverno.ConditionOperators["DurationLessThan"]: return key < value default: (*log).Info(fmt.Sprintf("Expected operator, one of [DurationGreaterThanOrEquals, DurationGreaterThan, DurationLessThanOrEquals, DurationLessThan], found %s", op)) diff --git a/pkg/engine/variables/operator/numeric.go b/pkg/engine/variables/operator/numeric.go index 2a505a62fa..194274589c 100644 --- a/pkg/engine/variables/operator/numeric.go +++ b/pkg/engine/variables/operator/numeric.go @@ -30,13 +30,13 @@ type NumericOperatorHandler struct { // compareByCondition compares a float64 key with a float64 value on the basis of the provided operator func compareByCondition(key float64, value float64, op kyverno.ConditionOperator, log *logr.Logger) bool { switch op { - case kyverno.GreaterThanOrEquals: + case kyverno.ConditionOperators["GreaterThanOrEquals"]: return key >= value - case kyverno.GreaterThan: + case kyverno.ConditionOperators["GreaterThan"]: return key > value - case kyverno.LessThanOrEquals: + case kyverno.ConditionOperators["LessThanOrEquals"]: return key <= value - case kyverno.LessThan: + case kyverno.ConditionOperators["LessThan"]: return key < value default: (*log).Info(fmt.Sprintf("Expected operator, one of [GreaterThanOrEquals, GreaterThan, LessThanOrEquals, LessThan, Equals, NotEquals], found %s", op)) @@ -46,13 +46,13 @@ func compareByCondition(key float64, value float64, op kyverno.ConditionOperator func compareVersionByCondition(key semver.Version, value semver.Version, op kyverno.ConditionOperator, log *logr.Logger) bool { switch op { - case kyverno.GreaterThanOrEquals: + case kyverno.ConditionOperators["GreaterThanOrEquals"]: return key.GTE(value) - case kyverno.GreaterThan: + case kyverno.ConditionOperators["GreaterThan"]: return key.GT(value) - case kyverno.LessThanOrEquals: + case kyverno.ConditionOperators["LessThanOrEquals"]: return key.LTE(value) - case kyverno.LessThan: + case kyverno.ConditionOperators["LessThan"]: return key.LT(value) default: (*log).Info(fmt.Sprintf("Expected operator, one of [GreaterThanOrEquals, GreaterThan, LessThanOrEquals, LessThan, Equals, NotEquals], found %s", op)) diff --git a/pkg/engine/variables/operator/operator.go b/pkg/engine/variables/operator/operator.go index 4ab9d5cc88..10bba8adac 100644 --- a/pkg/engine/variables/operator/operator.go +++ b/pkg/engine/variables/operator/operator.go @@ -29,44 +29,44 @@ func CreateOperatorHandler(log logr.Logger, ctx context.EvalInterface, op kyvern str := strings.ToLower(string(op)) switch str { - case strings.ToLower(string(kyverno.Equal)), - strings.ToLower(string(kyverno.Equals)): + case strings.ToLower(string(kyverno.ConditionOperators["Equal"])), + strings.ToLower(string(kyverno.ConditionOperators["Equals"])): return NewEqualHandler(log, ctx) - case strings.ToLower(string(kyverno.NotEqual)), - strings.ToLower(string(kyverno.NotEquals)): + case strings.ToLower(string(kyverno.ConditionOperators["NotEqual"])), + strings.ToLower(string(kyverno.ConditionOperators["NotEquals"])): return NewNotEqualHandler(log, ctx) // deprecated - case strings.ToLower(string(kyverno.In)): + case strings.ToLower(string(kyverno.ConditionOperators["In"])): return NewInHandler(log, ctx) - case strings.ToLower(string(kyverno.AnyIn)): + case strings.ToLower(string(kyverno.ConditionOperators["AnyIn"])): return NewAnyInHandler(log, ctx) - case strings.ToLower(string(kyverno.AllIn)): + case strings.ToLower(string(kyverno.ConditionOperators["AllIn"])): return NewAllInHandler(log, ctx) // deprecated - case strings.ToLower(string(kyverno.NotIn)): + case strings.ToLower(string(kyverno.ConditionOperators["NotIn"])): return NewNotInHandler(log, ctx) - case strings.ToLower(string(kyverno.AnyNotIn)): + case strings.ToLower(string(kyverno.ConditionOperators["AnyNotIn"])): return NewAnyNotInHandler(log, ctx) - case strings.ToLower(string(kyverno.AllNotIn)): + case strings.ToLower(string(kyverno.ConditionOperators["AllNotIn"])): return NewAllNotInHandler(log, ctx) - case strings.ToLower(string(kyverno.GreaterThanOrEquals)), - strings.ToLower(string(kyverno.GreaterThan)), - strings.ToLower(string(kyverno.LessThanOrEquals)), - strings.ToLower(string(kyverno.LessThan)): + case strings.ToLower(string(kyverno.ConditionOperators["GreaterThanOrEquals"])), + strings.ToLower(string(kyverno.ConditionOperators["GreaterThan"])), + strings.ToLower(string(kyverno.ConditionOperators["LessThanOrEquals"])), + strings.ToLower(string(kyverno.ConditionOperators["LessThan"])): return NewNumericOperatorHandler(log, ctx, op) - case strings.ToLower(string(kyverno.DurationGreaterThanOrEquals)), - strings.ToLower(string(kyverno.DurationGreaterThan)), - strings.ToLower(string(kyverno.DurationLessThanOrEquals)), - strings.ToLower(string(kyverno.DurationLessThan)): + case strings.ToLower(string(kyverno.ConditionOperators["DurationGreaterThanOrEquals"])), + strings.ToLower(string(kyverno.ConditionOperators["DurationGreaterThan"])), + strings.ToLower(string(kyverno.ConditionOperators["DurationLessThanOrEquals"])), + strings.ToLower(string(kyverno.ConditionOperators["DurationLessThan"])): log.Info("DEPRECATED: The Duration* operators have been replaced with the other existing operators that now also support duration values", "operator", str) return NewDurationOperatorHandler(log, ctx, op) diff --git a/pkg/utils/util.go b/pkg/utils/util.go index e8ad65dd20..83c4fea5d7 100644 --- a/pkg/utils/util.go +++ b/pkg/utils/util.go @@ -246,6 +246,20 @@ func ApiextensionsJsonToKyvernoConditions(original apiextensions.JSON) (interfac var kyvernoOldConditions []kyverno.Condition if err = json.Unmarshal(jsonByte, &kyvernoOldConditions); err == nil { + var validConditionOperator bool + + for _, jsonOp := range kyvernoOldConditions { + for _, validOp := range kyverno.ConditionOperators { + if jsonOp.Operator == validOp { + validConditionOperator = true + } + } + if !validConditionOperator { + return nil, fmt.Errorf("invalid condition operator: %s", jsonOp.Operator) + } + validConditionOperator = false + } + return kyvernoOldConditions, nil }