kubelatte-ce
Форк от sbertech/kubelatte-ce
91 строка · 1.7 Кб
1package match
2
3import (
4"fmt"
5"gitverse.ru/synapse/kubelatte/pkg/api/common"
6"gitverse.ru/synapse/kubelatte/pkg/api/v1alpha1"
7"regexp"
8)
9
10func existsStringInSlice(rules []string, s string) bool {
11for _, rule := range rules {
12if s == rule || rule == "*" {
13return true
14}
15}
16return false
17}
18
19func checkStringsMatchingWithSliceRegexp(rule []string, comparedVal string) bool {
20for _, r := range rule {
21if r == "*" {
22return true
23}
24
25match, err := regexp.Match(r, []byte(comparedVal))
26if err != nil {
27continue
28}
29if match {
30return true
31}
32}
33return false
34}
35
36func doesMatchExpressionsMatch(searchData map[string]string, matchExp []v1alpha1.MatchExpression) bool {
37for _, ex := range matchExp {
38switch selOperator(ex.Operator) {
39case In:
40if in(ex, searchData) {
41return true
42}
43case NotIn:
44if !in(ex, searchData) {
45return true
46}
47case Exists:
48if exists(ex, searchData) {
49return true
50}
51case DoesNotExist:
52if !exists(ex, searchData) {
53return true
54}
55}
56}
57
58return false
59}
60
61func in(exp v1alpha1.MatchExpression, searchData map[string]string) bool {
62val, ok := searchData[exp.Key]
63if !ok {
64return false
65}
66
67for _, v := range exp.Values {
68if v == val {
69return true
70}
71}
72return false
73}
74
75func exists(exp v1alpha1.MatchExpression, searchData map[string]string) bool {
76_, ok := searchData[exp.Key]
77return ok
78}
79
80func isNamespaced(ar common.ARFields) bool {
81return ar.Namespace != ""
82}
83
84func parseMapValuesToString(mapInterface map[string]interface{}) map[string]string {
85var mapString = make(map[string]string)
86for key, value := range mapInterface {
87strValue := fmt.Sprintf("%v", value)
88mapString[key] = strValue
89}
90return mapString
91}
92