2023-01-10 21:16:59 +01:00
|
|
|
package match
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/kyverno/kyverno/pkg/engine/wildcards"
|
|
|
|
"github.com/kyverno/kyverno/pkg/logging"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
|
|
"k8s.io/apimachinery/pkg/labels"
|
|
|
|
)
|
|
|
|
|
|
|
|
func CheckSelector(expected *metav1.LabelSelector, actual map[string]string) (bool, error) {
|
2023-01-18 05:21:34 -05:00
|
|
|
if expected == nil {
|
|
|
|
return false, nil
|
|
|
|
}
|
2023-09-19 01:01:49 -07:00
|
|
|
expected = wildcards.ReplaceInSelector(expected, actual)
|
2023-01-10 21:16:59 +01:00
|
|
|
selector, err := metav1.LabelSelectorAsSelector(expected)
|
|
|
|
if err != nil {
|
|
|
|
logging.Error(err, "failed to build label selector")
|
|
|
|
return false, err
|
|
|
|
}
|
|
|
|
if selector.Matches(labels.Set(actual)) {
|
|
|
|
return true, nil
|
|
|
|
}
|
|
|
|
return false, nil
|
|
|
|
}
|