kubelatte-ce

Форк
2
Форк от sbertech/kubelatte-ce
/
helpers.go 
91 строка · 1.7 Кб
1
package match
2

3
import (
4
	"fmt"
5
	"gitverse.ru/synapse/kubelatte/pkg/api/common"
6
	"gitverse.ru/synapse/kubelatte/pkg/api/v1alpha1"
7
	"regexp"
8
)
9

10
func existsStringInSlice(rules []string, s string) bool {
11
	for _, rule := range rules {
12
		if s == rule || rule == "*" {
13
			return true
14
		}
15
	}
16
	return false
17
}
18

19
func checkStringsMatchingWithSliceRegexp(rule []string, comparedVal string) bool {
20
	for _, r := range rule {
21
		if r == "*" {
22
			return true
23
		}
24

25
		match, err := regexp.Match(r, []byte(comparedVal))
26
		if err != nil {
27
			continue
28
		}
29
		if match {
30
			return true
31
		}
32
	}
33
	return false
34
}
35

36
func doesMatchExpressionsMatch(searchData map[string]string, matchExp []v1alpha1.MatchExpression) bool {
37
	for _, ex := range matchExp {
38
		switch selOperator(ex.Operator) {
39
		case In:
40
			if in(ex, searchData) {
41
				return true
42
			}
43
		case NotIn:
44
			if !in(ex, searchData) {
45
				return true
46
			}
47
		case Exists:
48
			if exists(ex, searchData) {
49
				return true
50
			}
51
		case DoesNotExist:
52
			if !exists(ex, searchData) {
53
				return true
54
			}
55
		}
56
	}
57

58
	return false
59
}
60

61
func in(exp v1alpha1.MatchExpression, searchData map[string]string) bool {
62
	val, ok := searchData[exp.Key]
63
	if !ok {
64
		return false
65
	}
66

67
	for _, v := range exp.Values {
68
		if v == val {
69
			return true
70
		}
71
	}
72
	return false
73
}
74

75
func exists(exp v1alpha1.MatchExpression, searchData map[string]string) bool {
76
	_, ok := searchData[exp.Key]
77
	return ok
78
}
79

80
func isNamespaced(ar common.ARFields) bool {
81
	return ar.Namespace != ""
82
}
83

84
func parseMapValuesToString(mapInterface map[string]interface{}) map[string]string {
85
	var mapString = make(map[string]string)
86
	for key, value := range mapInterface {
87
		strValue := fmt.Sprintf("%v", value)
88
		mapString[key] = strValue
89
	}
90
	return mapString
91
}
92

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.