func Find()

in pkg/integrations/integrations.go [67:98]


func Find(ctx context.Context, logger *zap.Logger, host ExtensionGetter, integrationName string) (Integration, error) {
	if host == nil {
		logger.Error("received nil host")
		return nil, ErrNotConfigured
	}
	anyExtension := false
	for eid, extension := range host.GetExtensions() {
		finder, ok := extension.(Finder)
		if !ok {
			continue
		}
		anyExtension = true

		integration, err := finder.FindIntegration(ctx, integrationName)
		if errors.Is(ErrNotFound, err) {
			continue
		}
		if err != nil {
			logger.Error("integration finder failed",
				zap.String("component", eid.String()),
				zap.Error(err))
			return nil, err
		}

		return integration, nil
	}
	if !anyExtension {
		return nil, ErrNotConfigured
	}

	return nil, ErrNotFound
}