1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-06 16:06:56 +00:00
kyverno/pkg/engine/operator/operator.go

62 lines
1.4 KiB
Go
Raw Normal View History

package operator
import (
"regexp"
)
// Operator is string alias that represents selection operators enum
type Operator string
const (
// Equal stands for ==
Equal Operator = ""
// MoreEqual stands for >=
MoreEqual Operator = ">="
// LessEqual stands for <=
LessEqual Operator = "<="
// NotEqual stands for !
NotEqual Operator = "!"
// More stands for >
More Operator = ">"
// Less stands for <
Less Operator = "<"
// InRange stands for -
InRange Operator = "-"
// NotInRange stands for !-
NotInRange Operator = "!-"
)
fix: change inrange operator regexs (#5962) * fix inrange operator regexs Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add support for + sign Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add support for leftEndpoint + sign Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * update regexs Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add range operator tests in client code Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * extract range values Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add cases Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add test Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * fix test Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add cli test Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * clean up code Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * fix lint error Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * fix kuttl test Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * regex nits Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * fix Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * fix Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> Signed-off-by: damilola olayinka <holayinkajr@gmail.com> Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> Co-authored-by: Charles-Edouard Brétéché <charled.breteche@gmail.com> Co-authored-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2023-01-16 16:23:36 +01:00
var (
InRangeRegex = regexp.MustCompile(`^([-|\+]?\d+(?:\.\d+)?[A-Za-z]*)-([-|\+]?\d+(?:\.\d+)?[A-Za-z]*)$`)
NotInRangeRegex = regexp.MustCompile(`^([-|\+]?\d+(?:\.\d+)?[A-Za-z]*)!-([-|\+]?\d+(?:\.\d+)?[A-Za-z]*)$`)
)
// GetOperatorFromStringPattern parses opeartor from pattern
func GetOperatorFromStringPattern(pattern string) Operator {
if len(pattern) < 2 {
return Equal
}
if pattern[:len(MoreEqual)] == string(MoreEqual) {
return MoreEqual
}
if pattern[:len(LessEqual)] == string(LessEqual) {
return LessEqual
}
if pattern[:len(More)] == string(More) {
return More
}
if pattern[:len(Less)] == string(Less) {
return Less
}
if pattern[:len(NotEqual)] == string(NotEqual) {
return NotEqual
}
fix: change inrange operator regexs (#5962) * fix inrange operator regexs Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add support for + sign Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add support for leftEndpoint + sign Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * update regexs Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add range operator tests in client code Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * extract range values Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add cases Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add test Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * fix test Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add cli test Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * clean up code Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * fix lint error Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * fix kuttl test Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * regex nits Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * fix Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * fix Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> Signed-off-by: damilola olayinka <holayinkajr@gmail.com> Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> Co-authored-by: Charles-Edouard Brétéché <charled.breteche@gmail.com> Co-authored-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2023-01-16 16:23:36 +01:00
if match := NotInRangeRegex.Match([]byte(pattern)); match {
return NotInRange
}
fix: change inrange operator regexs (#5962) * fix inrange operator regexs Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add support for + sign Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add support for leftEndpoint + sign Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * update regexs Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add range operator tests in client code Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * extract range values Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add cases Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add test Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * fix test Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * add cli test Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * clean up code Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * fix lint error Signed-off-by: damilola olayinka <holayinkajr@gmail.com> * fix kuttl test Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * regex nits Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * fix Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * fix Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> Signed-off-by: damilola olayinka <holayinkajr@gmail.com> Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> Co-authored-by: Charles-Edouard Brétéché <charled.breteche@gmail.com> Co-authored-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2023-01-16 16:23:36 +01:00
if match := InRangeRegex.Match([]byte(pattern)); match {
return InRange
}
return Equal
}