func()

in ingestor/storage/kql_functions.go [79:129]


func (f *functions) List(ctx context.Context) ([]*adxmonv1.Function, error) {
	if f.Client == nil {
		return nil, fmt.Errorf("no client provided")
	}

	if f.Elector != nil && !f.Elector.IsLeader() {
		return nil, nil
	}

	list := &adxmonv1.FunctionList{}
	if err := f.Client.List(ctx, list); err != nil {
		if errors.Is(err, &meta.NoKindMatchError{}) || errors.Is(err, &meta.NoResourceMatchError{}) {
			return nil, nil
		}
		return nil, fmt.Errorf("failed to list functions: %w", err)
	}

	var fns []*adxmonv1.Function
	for _, fn := range list.Items {
		if fn.Spec.Suspend != nil && *fn.Spec.Suspend {
			// Skip suspended functions
			continue
		}

		if !fn.GetDeletionTimestamp().IsZero() {
			fn.Status.Reason = "Function deleted"

		} else {

			switch fn.GetGeneration() {
			case fn.Status.ObservedGeneration:
				// Skip functions that are up to date
				continue

			case 1:
				fn.Status.Reason = "Function created"

			default:
				fn.Status.Reason = "Function updated"
			}

			if err := f.ensureFinalizer(ctx, &fn); err != nil {
				logger.Errorf("Failed to ensure finalizer for function %s: %v", fn.Name, err)
			}
		}

		fns = append(fns, &fn)
	}

	return fns, nil
}