2019-08-13 13:15:04 -07:00
|
|
|
package policy
|
|
|
|
|
|
|
|
import (
|
2020-03-17 16:25:34 -07:00
|
|
|
"github.com/go-logr/logr"
|
2020-10-07 11:12:31 -07:00
|
|
|
"github.com/kyverno/kyverno/pkg/engine/response"
|
|
|
|
"github.com/kyverno/kyverno/pkg/event"
|
2019-08-13 13:15:04 -07:00
|
|
|
)
|
|
|
|
|
2021-06-30 00:43:11 +03:00
|
|
|
func generateSuccessEvents(log logr.Logger, ers []*response.EngineResponse) (eventInfos []event.Info) {
|
2019-11-12 14:41:29 -08:00
|
|
|
for _, er := range ers {
|
2021-06-30 00:43:11 +03:00
|
|
|
logger := log.WithValues("policy", er.PolicyResponse.Policy, "kind", er.PolicyResponse.Resource.Kind, "namespace", er.PolicyResponse.Resource.Namespace, "name", er.PolicyResponse.Resource.Name)
|
|
|
|
if !er.IsFailed() {
|
|
|
|
logger.V(4).Info("generating event on policy for success rules")
|
2022-05-01 22:14:32 -07:00
|
|
|
e := event.NewPolicyAppliedEvent(event.PolicyController, er)
|
2022-06-22 09:37:46 -07:00
|
|
|
eventInfos = append(eventInfos, e)
|
2019-11-12 14:41:29 -08:00
|
|
|
}
|
|
|
|
}
|
2022-05-01 22:14:32 -07:00
|
|
|
|
2019-11-12 14:41:29 -08:00
|
|
|
return eventInfos
|
|
|
|
}
|
2019-08-13 13:15:04 -07:00
|
|
|
|
2021-06-30 00:43:11 +03:00
|
|
|
func generateFailEvents(log logr.Logger, ers []*response.EngineResponse) (eventInfos []event.Info) {
|
|
|
|
for _, er := range ers {
|
|
|
|
eventInfos = append(eventInfos, generateFailEventsPerEr(log, er)...)
|
|
|
|
}
|
|
|
|
return eventInfos
|
|
|
|
}
|
|
|
|
|
|
|
|
func generateFailEventsPerEr(log logr.Logger, er *response.EngineResponse) []event.Info {
|
2019-11-12 14:41:29 -08:00
|
|
|
var eventInfos []event.Info
|
2022-05-01 22:14:32 -07:00
|
|
|
logger := log.WithValues("policy", er.PolicyResponse.Policy.Name,
|
|
|
|
"kind", er.PolicyResponse.Resource.Kind, "namespace", er.PolicyResponse.Resource.Namespace,
|
|
|
|
"name", er.PolicyResponse.Resource.Name)
|
2020-07-20 08:00:02 -07:00
|
|
|
|
2022-05-01 22:14:32 -07:00
|
|
|
for i, rule := range er.PolicyResponse.Rules {
|
2022-10-13 14:02:20 +05:30
|
|
|
if rule.Status != response.RuleStatusPass && rule.Status != response.RuleStatusSkip {
|
2022-07-28 11:31:50 +05:30
|
|
|
eventResource := event.NewResourceViolationEvent(event.PolicyController, event.PolicyViolation, er, &er.PolicyResponse.Rules[i])
|
|
|
|
eventInfos = append(eventInfos, eventResource)
|
2022-05-01 22:14:32 -07:00
|
|
|
|
2022-07-28 11:31:50 +05:30
|
|
|
eventPolicy := event.NewPolicyFailEvent(event.PolicyController, event.PolicyViolation, er, &er.PolicyResponse.Rules[i], false)
|
|
|
|
eventInfos = append(eventInfos, eventPolicy)
|
|
|
|
}
|
2019-11-12 14:41:29 -08:00
|
|
|
}
|
|
|
|
|
2022-05-01 22:14:32 -07:00
|
|
|
if len(eventInfos) > 0 {
|
|
|
|
logger.V(4).Info("generating events for policy", "events", eventInfos)
|
2021-06-30 00:43:11 +03:00
|
|
|
}
|
2022-05-01 22:14:32 -07:00
|
|
|
|
2019-11-12 14:41:29 -08:00
|
|
|
return eventInfos
|
2019-08-13 13:15:04 -07:00
|
|
|
}
|