in internal/deployers/eksapi/logs.go [223:251]
func (m *logManager) waitForNodeDiagnostics(k8sClient *k8sClient, nodeDiagnostics []unstructured.Unstructured) (map[string][]string, error) {
outcomes := make(map[string][]string)
err := wait.PollUntilContextTimeout(context.Background(), 5*time.Second, logCollectorNodeDiagnosticTimeout, false, func(ctx context.Context) (done bool, err error) {
for _, nodeDiagnostic := range nodeDiagnostics {
objectKey := client.ObjectKeyFromObject(&nodeDiagnostic)
if _, ok := outcomes[objectKey.Name]; ok {
// we already have an outcome for this node diagnostic
continue
}
if err := k8sClient.client.Get(ctx, objectKey, &nodeDiagnostic); err != nil {
return false, fmt.Errorf("failed to get node diagnostic: %+v: %v", objectKey, err)
}
complete, reasons := m.isNodeDiagnosticComplete(&nodeDiagnostic)
if !complete {
continue
}
outcomes[objectKey.Name] = reasons
}
if len(outcomes) == len(nodeDiagnostics) {
// we're done!
return true, nil
}
return false, nil
})
if err != nil {
return nil, err
}
return outcomes, nil
}