From e92405041ef5364ad404bc98418ce901f5b289be Mon Sep 17 00:00:00 2001 From: shuting Date: Fri, 3 Mar 2023 18:51:34 +0800 Subject: [PATCH] cherry-pick #6459 (#6468) Signed-off-by: ShutingZhao --- pkg/event/events.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pkg/event/events.go b/pkg/event/events.go index 151ac8b4b6..919adeba44 100644 --- a/pkg/event/events.go +++ b/pkg/event/events.go @@ -127,12 +127,12 @@ func NewBackgroundSuccessEvent(policy, rule string, source Source, r *unstructur func NewPolicyExceptionEvents(source Source, engineResponse *response.EngineResponse, ruleResp *response.RuleResponse) []Info { exceptionName, exceptionNamespace := getExceptionEventInfoFromRuleResponseMsg(ruleResp.Message) - policyMessage := fmt.Sprintf("resource %s was skipped from rule %s due to policy exception %s/%s", engineResponse.PatchedResource.GetName(), ruleResp.Name, exceptionNamespace, exceptionName) + policyMessage := fmt.Sprintf("resource %s was skipped from rule %s due to policy exception %s/%s", resourceKey(engineResponse.PatchedResource), ruleResp.Name, exceptionNamespace, exceptionName) var exceptionMessage string if engineResponse.PolicyResponse.Policy.Namespace == "" { - exceptionMessage = fmt.Sprintf("resource %s was skipped from policy rule %s/%s", engineResponse.PatchedResource.GetName(), engineResponse.PolicyResponse.Policy.Name, ruleResp.Name) + exceptionMessage = fmt.Sprintf("resource %s was skipped from policy rule %s/%s", resourceKey(engineResponse.PatchedResource), engineResponse.PolicyResponse.Policy.Name, ruleResp.Name) } else { - exceptionMessage = fmt.Sprintf("resource %s was skipped from policy rule %s/%s/%s", engineResponse.PatchedResource.GetName(), engineResponse.PolicyResponse.Policy.Namespace, engineResponse.PolicyResponse.Policy.Name, ruleResp.Name) + exceptionMessage = fmt.Sprintf("resource %s was skipped from policy rule %s/%s/%s", resourceKey(engineResponse.PatchedResource), engineResponse.PolicyResponse.Policy.Namespace, engineResponse.PolicyResponse.Policy.Name, ruleResp.Name) } policyEvent := Info{ Kind: getPolicyKind(engineResponse.Policy), @@ -164,6 +164,13 @@ func getExceptionEventInfoFromRuleResponseMsg(message string) (name string, name namespace = "" name = arr[0] } - return name, namespace } + +func resourceKey(resource unstructured.Unstructured) string { + if resource.GetNamespace() != "" { + return strings.Join([]string{resource.GetKind(), resource.GetNamespace(), resource.GetName()}, "/") + } + + return strings.Join([]string{resource.GetKind(), resource.GetName()}, "/") +}