diff --git a/api/proto/v1/config-service.proto b/api/proto/v1/config-service.proto index 57abccf6ab09df2957cfabfd4b9c2eaa98b2d687..e2d672376ce929f5c4b4121027302a89dff1ae2d 100644 --- a/api/proto/v1/config-service.proto +++ b/api/proto/v1/config-service.proto @@ -25,6 +25,7 @@ message Credentials { message PodInfo { string name = 1; string displayName = 2; + repeated string containers = 3; } message InstanceRequest { diff --git a/pkg/service/v1/config-service.go b/pkg/service/v1/config-service.go index 0e02e16b2dba17a6ffc34c3e9f32ad31e5c31afb..32df2e910842696edea4c3d9c6360abd3ae089ac 100644 --- a/pkg/service/v1/config-service.go +++ b/pkg/service/v1/config-service.go @@ -640,7 +640,10 @@ func (s *podServiceServer) RetrievePodList(ctx context.Context, req *v1.Instance logLine(fmt.Sprintf("Filtering pods by deployment %s", depl.Uid)) for _, pod := range allPods.Items { if (strings.HasPrefix(pod.Name, depl.Uid + "-")) { - newPod := &v1.PodInfo{Name: pod.Name, DisplayName: pod.Name,} + newPod := &v1.PodInfo{Name: pod.Name, DisplayName: pod.Name, Containers: make([]string, 0)} + for container := range pod.Spec.Containers { + newPod.Containers = append(newPod.Containers, pod.Spec.Containers[container].Name) + } matchingPods = append(matchingPods, newPod) } } @@ -672,8 +675,15 @@ func (s *podServiceServer) RetrievePodLogs(ctx context.Context, req *v1.PodReque } //collecting logs from given pod - logLine(fmt.Sprintf("Collecting logs from pod %s in namespace %s", pod.Name, depl.Namespace)) - logsRequest := s.kubeAPI.CoreV1().Pods(depl.Namespace).GetLogs(pod.Name, &apiv1.PodLogOptions{}) + var opts apiv1.PodLogOptions + if len(pod.Containers) == 0 { + opts = apiv1.PodLogOptions{} + } else { + opts = apiv1.PodLogOptions{Container: pod.Containers[0]} + } + logLine(fmt.Sprintf("Collecting logs from pod/container %s/%s in namespace %s", pod.Name, opts.Container, depl.Namespace)) + + logsRequest := s.kubeAPI.CoreV1().Pods(depl.Namespace).GetLogs(pod.Name, &opts) podLogs, err := logsRequest.Stream(ctx) if err != nil {