kubelatte-ce
Форк от sbertech/kubelatte-ce
91 строка · 1.7 Кб
1package match2
3import (4"fmt"5"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/api/common"6"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/api/v1alpha1"7"regexp"8)
9
10func existsStringInSlice(rules []string, s string) bool {11for _, rule := range rules {12if s == rule || rule == "*" {13return true14}15}16return false17}
18
19func checkStringsMatchingWithSliceRegexp(rule []string, comparedVal string) bool {20for _, r := range rule {21if r == "*" {22return true23}24
25match, err := regexp.Match(r, []byte(comparedVal))26if err != nil {27continue28}29if match {30return true31}32}33return false34}
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 true42}43case NotIn:44if !in(ex, searchData) {45return true46}47case Exists:48if exists(ex, searchData) {49return true50}51case DoesNotExist:52if !exists(ex, searchData) {53return true54}55}56}57
58return false59}
60
61func in(exp v1alpha1.MatchExpression, searchData map[string]string) bool {62val, ok := searchData[exp.Key]63if !ok {64return false65}66
67for _, v := range exp.Values {68if v == val {69return true70}71}72return false73}
74
75func exists(exp v1alpha1.MatchExpression, searchData map[string]string) bool {76_, ok := searchData[exp.Key]77return ok78}
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] = strValue89}90return mapString91}
92