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
}