func scheduleJobs()

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
	})
}