func()

in runner/group/handler.go [178:212]


func (h *Handler) Pods(ctx context.Context) ([]*corev1.Pod, error) {
	selector, err := metav1.LabelSelectorAsSelector(
		&metav1.LabelSelector{
			MatchLabels: map[string]string{
				"batch.kubernetes.io/job-name": h.name,
				"job-name":                     h.name,
			},
		},
	)
	if err != nil {
		return nil, fmt.Errorf("failed to create label selector: %w", err)
	}

	opts := metav1.ListOptions{
		LabelSelector: selector.String(),
		// NOTE:
		//
		// List pods from cache to prevent apiserver from list all
		// items from ETCD cluster.
		ResourceVersion: "0",
	}

	pods, err := h.clientset.CoreV1().Pods(h.namespace).List(ctx, opts)
	if err != nil {
		return nil, fmt.Errorf("failed to list pods created by jobs %s: %w",
			h.name, err)
	}

	res := make([]*corev1.Pod, 0, len(pods.Items))
	for idx := range pods.Items {
		pod := pods.Items[idx]
		res = append(res, &pod)
	}
	return res, nil
}