in pkg/k8s/events/events.go [23:64]
func NewRecorder(ctx context.Context, k *k8s.ClientSet) (EventRecorder, error) {
clientset := k.Interface
inPod := k.InPod
var objRef *v1.ObjectReference
if !inPod {
node, err := clientset.CoreV1().Nodes().Get(ctx, k.Name, metav1.GetOptions{})
if err != nil {
return nil, err
}
objRef = &v1.ObjectReference{
Kind: "Node",
Name: node.Name,
UID: node.UID,
APIVersion: node.APIVersion,
}
} else {
pod, err := clientset.CoreV1().Pods(k.Namespace).Get(ctx, k.Name, metav1.GetOptions{})
if err != nil {
return nil, err
}
objRef = &v1.ObjectReference{
Kind: "Pod",
Name: pod.Name,
Namespace: pod.Namespace,
UID: pod.UID,
APIVersion: pod.APIVersion,
}
}
broadcaster := record.NewBroadcaster()
broadcaster.StartStructuredLogging(4)
broadcaster.StartRecordingToSink(&typedv1core.EventSinkImpl{Interface: clientset.CoreV1().Events(k.Namespace)})
return &eventRecorder{
recorder: broadcaster.NewRecorder(
scheme.Scheme,
v1.EventSource{},
),
objRef: objRef,
}, nil
}