diff --git a/pkg/app/app.go b/pkg/app/app.go index 88781d3..4ee6f8d 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -17,8 +17,6 @@ func (a *App) Done() <-chan any { func (a *App) MustRun() { if a.cfg != nil { panic(errors.New("already ran app trying to run")) - } else if !a.cfg.HTTP.Enabled && !a.cfg.GRPC.Enabled { - panic(errors.New("neither http nor grpc enabled, nothing to do")) } // Set up app @@ -28,17 +26,23 @@ func (a *App) MustRun() { a.appDone = make(chan any) a.HTTP.HTTPDone = make(chan any) + if !a.cfg.HTTPEnabled() && !a.cfg.GRPCEnabled() { + panic(errors.New("neither http nor grpc enabled, nothing to do")) + } + if len(a.HTTP.Funcs) < 1 { a.l.Warn().Msg("no http funcs provided, only serving health and metrics") } // Start OTEL + // Registers a NO-OP provider if not enabled a.initOTEL() + ctx, initSpan := a.tracer.Start(a.AppContext, "init") defer initSpan.End() // Start HTTP (does not block) - if a.cfg.HTTP.Enabled { + if a.cfg.HTTPEnabled() { if err := a.initHTTP(ctx); err != nil { initSpan.RecordError(err) initSpan.SetStatus(codes.Error, err.Error()) @@ -48,7 +52,7 @@ func (a *App) MustRun() { } // Start GRPC (does not block) - if a.cfg.GRPC.Enabled { + if a.cfg.GRPCEnabled() { if err := a.initGRPC(ctx); err != nil { initSpan.RecordError(err) initSpan.SetStatus(codes.Error, err.Error()) diff --git a/pkg/config/types.go b/pkg/config/types.go index d227302..fa940dc 100644 --- a/pkg/config/types.go +++ b/pkg/config/types.go @@ -22,3 +22,24 @@ type AppConfig struct { OTEL *OTELConfig `yaml:"otel,omitempty"` GRPC *GRPCConfig `yaml:"grpc,omitempty"` } + +func (ac *AppConfig) HTTPEnabled() bool { + if ac.HTTP != nil && ac.HTTP.Enabled { + return true + } + return false +} + +func (ac *AppConfig) GRPCEnabled() bool { + if ac.GRPC != nil && ac.GRPC.Enabled { + return true + } + return false +} + +func (ac *AppConfig) OTELEnabled() bool { + if ac.OTEL != nil && ac.OTEL.Enabled { + return true + } + return false +} diff --git a/pkg/otel/otel.go b/pkg/otel/otel.go index 14e90ab..872ddec 100644 --- a/pkg/otel/otel.go +++ b/pkg/otel/otel.go @@ -44,7 +44,7 @@ func Init(ctx context.Context) (context.Context, func(context.Context) error) { cfg := config.MustFromCtx(ctx) // Nothing to do here if not enabled - if !cfg.OTEL.Enabled { + if !cfg.OTELEnabled() { opentelemetry.SetMeterProvider(noopMetric.NewMeterProvider()) opentelemetry.SetTracerProvider(noop.NewTracerProvider()) // Won't function with noop providers