func NewRecorder()

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
}