github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/cmd/controller/kube/pod_logreader.go (about)

     1  package kube
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"io"
     7  
     8  	corev1 "k8s.io/api/core/v1"
     9  	"k8s.io/client-go/kubernetes"
    10  )
    11  
    12  type PodLogProvider interface {
    13  	GetLogReader(ctx context.Context, podNs, podName string) (io.ReadCloser, error)
    14  }
    15  
    16  func NewPodLogReader(client kubernetes.Interface) PodLogProvider {
    17  	return &clientsetPodLogsReader{
    18  		client: client,
    19  	}
    20  }
    21  
    22  type clientsetPodLogsReader struct {
    23  	client kubernetes.Interface
    24  }
    25  
    26  func (r clientsetPodLogsReader) GetLogReader(ctx context.Context, podNs, podName string) (io.ReadCloser, error) {
    27  	req := r.client.CoreV1().Pods(podNs).GetLogs(podName, &corev1.PodLogOptions{})
    28  	podLogs, err := req.Stream(ctx)
    29  	if err != nil {
    30  		return nil, fmt.Errorf("error in opening stream: %w", err)
    31  	}
    32  	return podLogs, nil
    33  }