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
}