in internal/stackdiag.go [406:437]
func scheduleJobs(k *Kubectl, ns string, recordErr func(error), state *diagJobState, typ string, filters internal_filters.Filters) error {
resources, err := k.getResources(typ, ns)
if err != nil {
return err // not recoverable
}
return resources.Visit(func(resourceInfo *resource.Info, err error) error {
if err != nil {
// record error but continue trying for other resources
recordErr(err)
}
isTLS, esName, err := extractEsInfo(typ, ns, resourceInfo)
if err != nil {
recordErr(err)
}
resourceName := resourceInfo.Name
if !filters.Empty() && !filters.Contains(resourceName, typ) {
return nil
}
esSecretName, esSecretKey, err := determineESCredentialsSecret(k, ns, esName)
if err != nil {
// If no credentials secret was found attempt to continue with the next resource
recordErr(fmt.Errorf("while determining Elasticsearch credentials secret: %w", err))
return nil
}
recordErr(state.scheduleJob(typ, esSecretName, esSecretKey, resourceName, isTLS))
return nil
})
}