func()

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
}