mirror of
https://github.com/kyverno/kyverno.git
synced 2024-12-15 17:51:20 +00:00
73 lines
2.3 KiB
Go
73 lines
2.3 KiB
Go
package generate
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/go-logr/logr"
|
|
kyverno "github.com/nirmata/kyverno/pkg/api/kyverno/v1"
|
|
"github.com/nirmata/kyverno/pkg/event"
|
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
)
|
|
|
|
func reportEvents(log logr.Logger, err error, eventGen event.Interface, gr kyverno.GenerateRequest, resource unstructured.Unstructured) {
|
|
if err == nil {
|
|
// Success Events
|
|
// - resource -> policy rule applied successfully
|
|
// - policy -> rule successfully applied on resource
|
|
events := successEvents(gr, resource)
|
|
eventGen.Add(events...)
|
|
return
|
|
}
|
|
events := failedEvents(err, gr, resource)
|
|
eventGen.Add(events...)
|
|
}
|
|
|
|
func failedEvents(err error, gr kyverno.GenerateRequest, resource unstructured.Unstructured) []event.Info {
|
|
var events []event.Info
|
|
// Cluster Policy
|
|
pe := event.Info{}
|
|
pe.Kind = "ClusterPolicy"
|
|
// cluserwide-resource
|
|
pe.Name = gr.Spec.Policy
|
|
pe.Reason = event.PolicyFailed.String()
|
|
pe.Source = event.GeneratePolicyController
|
|
pe.Message = fmt.Sprintf("policy failed to apply on resource %s/%s/%s: %v", resource.GetKind(), resource.GetNamespace(), resource.GetName(), err)
|
|
events = append(events, pe)
|
|
|
|
// Resource
|
|
re := event.Info{}
|
|
re.Kind = resource.GetKind()
|
|
re.Namespace = resource.GetNamespace()
|
|
re.Name = resource.GetName()
|
|
re.Reason = event.PolicyFailed.String()
|
|
re.Source = event.GeneratePolicyController
|
|
re.Message = fmt.Sprintf("policy %s failed to apply: %v", gr.Spec.Policy, err)
|
|
events = append(events, re)
|
|
|
|
return events
|
|
}
|
|
|
|
func successEvents(gr kyverno.GenerateRequest, resource unstructured.Unstructured) []event.Info {
|
|
var events []event.Info
|
|
// Cluster Policy
|
|
pe := event.Info{}
|
|
pe.Kind = "ClusterPolicy"
|
|
// clusterwide-resource
|
|
pe.Name = gr.Spec.Policy
|
|
pe.Reason = event.PolicyApplied.String()
|
|
pe.Source = event.GeneratePolicyController
|
|
pe.Message = fmt.Sprintf("applied successfully on resource %s/%s/%s", resource.GetKind(), resource.GetNamespace(), resource.GetName())
|
|
events = append(events, pe)
|
|
|
|
// Resource
|
|
re := event.Info{}
|
|
re.Kind = resource.GetKind()
|
|
re.Namespace = resource.GetNamespace()
|
|
re.Name = resource.GetName()
|
|
re.Reason = event.PolicyApplied.String()
|
|
re.Source = event.GeneratePolicyController
|
|
re.Message = fmt.Sprintf("policy %s successfully applied", gr.Spec.Policy)
|
|
events = append(events, re)
|
|
|
|
return events
|
|
}
|