mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-15 20:20:22 +00:00
fix: simplify cli autogen and labels selector check (#8325)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
parent
5beaec677f
commit
74fed89a17
2 changed files with 35 additions and 37 deletions
|
@ -57,42 +57,9 @@ func (p *PolicyProcessor) ApplyPolicyOnResource() ([]engineapi.EngineResponse, e
|
||||||
if p.Variables["request.operation"] == "DELETE" {
|
if p.Variables["request.operation"] == "DELETE" {
|
||||||
operation = kyvernov1.Delete
|
operation = kyvernov1.Delete
|
||||||
}
|
}
|
||||||
|
rules := autogen.ComputeRules(p.Policy)
|
||||||
|
|
||||||
policyWithNamespaceSelector := false
|
if needsNamespaceLabels(rules...) {
|
||||||
OuterLoop:
|
|
||||||
for _, p := range autogen.ComputeRules(p.Policy) {
|
|
||||||
if p.MatchResources.ResourceDescription.NamespaceSelector != nil ||
|
|
||||||
p.ExcludeResources.ResourceDescription.NamespaceSelector != nil {
|
|
||||||
policyWithNamespaceSelector = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
for _, m := range p.MatchResources.Any {
|
|
||||||
if m.ResourceDescription.NamespaceSelector != nil {
|
|
||||||
policyWithNamespaceSelector = true
|
|
||||||
break OuterLoop
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, m := range p.MatchResources.All {
|
|
||||||
if m.ResourceDescription.NamespaceSelector != nil {
|
|
||||||
policyWithNamespaceSelector = true
|
|
||||||
break OuterLoop
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, e := range p.ExcludeResources.Any {
|
|
||||||
if e.ResourceDescription.NamespaceSelector != nil {
|
|
||||||
policyWithNamespaceSelector = true
|
|
||||||
break OuterLoop
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, e := range p.ExcludeResources.All {
|
|
||||||
if e.ResourceDescription.NamespaceSelector != nil {
|
|
||||||
policyWithNamespaceSelector = true
|
|
||||||
break OuterLoop
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if policyWithNamespaceSelector {
|
|
||||||
resourceNamespace := p.Resource.GetNamespace()
|
resourceNamespace := p.Resource.GetNamespace()
|
||||||
namespaceLabels = p.NamespaceSelectorMap[p.Resource.GetNamespace()]
|
namespaceLabels = p.NamespaceSelectorMap[p.Resource.GetNamespace()]
|
||||||
if resourceNamespace != "default" && len(namespaceLabels) < 1 {
|
if resourceNamespace != "default" && len(namespaceLabels) < 1 {
|
||||||
|
@ -195,7 +162,7 @@ OuterLoop:
|
||||||
}
|
}
|
||||||
|
|
||||||
var policyHasValidate bool
|
var policyHasValidate bool
|
||||||
for _, rule := range autogen.ComputeRules(p.Policy) {
|
for _, rule := range rules {
|
||||||
if rule.HasValidate() || rule.HasVerifyImageChecks() {
|
if rule.HasValidate() || rule.HasVerifyImageChecks() {
|
||||||
policyHasValidate = true
|
policyHasValidate = true
|
||||||
}
|
}
|
||||||
|
@ -214,7 +181,7 @@ OuterLoop:
|
||||||
}
|
}
|
||||||
|
|
||||||
var policyHasGenerate bool
|
var policyHasGenerate bool
|
||||||
for _, rule := range autogen.ComputeRules(p.Policy) {
|
for _, rule := range rules {
|
||||||
if rule.HasGenerate() {
|
if rule.HasGenerate() {
|
||||||
policyHasGenerate = true
|
policyHasGenerate = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package processor
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
|
||||||
engineapi "github.com/kyverno/kyverno/pkg/engine/api"
|
engineapi "github.com/kyverno/kyverno/pkg/engine/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -77,3 +78,33 @@ func combineRuleResponses(imageResponse engineapi.EngineResponse) engineapi.Engi
|
||||||
imageResponse.PolicyResponse.Rules = combineRuleResponses
|
imageResponse.PolicyResponse.Rules = combineRuleResponses
|
||||||
return imageResponse
|
return imageResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func needsNamespaceLabels(rules ...kyvernov1.Rule) bool {
|
||||||
|
for _, p := range rules {
|
||||||
|
if p.MatchResources.ResourceDescription.NamespaceSelector != nil ||
|
||||||
|
p.ExcludeResources.ResourceDescription.NamespaceSelector != nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
for _, m := range p.MatchResources.Any {
|
||||||
|
if m.ResourceDescription.NamespaceSelector != nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, m := range p.MatchResources.All {
|
||||||
|
if m.ResourceDescription.NamespaceSelector != nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, e := range p.ExcludeResources.Any {
|
||||||
|
if e.ResourceDescription.NamespaceSelector != nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, e := range p.ExcludeResources.All {
|
||||||
|
if e.ResourceDescription.NamespaceSelector != nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue