From c3caaab4fd1fc86e94f8c64dafccd7e43e666e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmetcan=20=C3=96ZCAN?= Date: Tue, 27 Aug 2024 14:12:13 +0300 Subject: [PATCH] refactor(otel): Update otel submodules #25 --- .../client-server-with-otel/client/main.go | 7 +++-- .../client-server-with-otel/server/main.go | 7 +++-- example/consumer-with-otel/main.go | 5 ++-- example/server-with-newrelic/main.go | 5 ++-- example/server-with-otel/main.go | 5 ++-- example/server-with-postgres/main.go | 5 ++-- modules/otel/client/module.go | 8 +++--- modules/otel/kafka/module.go | 11 +++----- modules/otel/module.go | 2 ++ modules/otel/option.go | 28 +++++++++++++------ modules/otel/server/module.go | 8 +++--- 11 files changed, 53 insertions(+), 38 deletions(-) diff --git a/example/client-server-with-otel/client/main.go b/example/client-server-with-otel/client/main.go index e697bd9..e4af20b 100644 --- a/example/client-server-with-otel/client/main.go +++ b/example/client-server-with-otel/client/main.go @@ -21,9 +21,10 @@ func main() { app.Use( client.Module(), server.Module(), - otel.Module(), - otelclient.Module(), - otelserver.Module(), + otel.Module( + otelclient.WithClient(), + otelserver.WithServer(), + ), ) app.Provide( diff --git a/example/client-server-with-otel/server/main.go b/example/client-server-with-otel/server/main.go index b531eb4..06e860b 100644 --- a/example/client-server-with-otel/server/main.go +++ b/example/client-server-with-otel/server/main.go @@ -18,9 +18,10 @@ func main() { app.Use( server.Module(), - otel.Module(), - otelclient.Module(), - otelserver.Module(), + otel.Module( + otelclient.WithClient(), + otelserver.WithServer(), + ), ) app.Provide( diff --git a/example/consumer-with-otel/main.go b/example/consumer-with-otel/main.go index 9b90db7..fc100f8 100644 --- a/example/consumer-with-otel/main.go +++ b/example/consumer-with-otel/main.go @@ -17,8 +17,9 @@ func main() { ) app.Use( - otel.Module(), - otelkafka.Module(), + otel.Module( + otelkafka.WithKafka(), + ), kafka.Module(), ) diff --git a/example/server-with-newrelic/main.go b/example/server-with-newrelic/main.go index ca04375..17e2c47 100644 --- a/example/server-with-newrelic/main.go +++ b/example/server-with-newrelic/main.go @@ -30,9 +30,10 @@ func main() { ) app.Use( - otel.Module(), + otel.Module( + otelserver.WithServer(), + ), orm.Module(postgresdriver.New()), - otelserver.Module(), server.Module(), swagger.Module(), diff --git a/example/server-with-otel/main.go b/example/server-with-otel/main.go index 776074d..27aa8d1 100644 --- a/example/server-with-otel/main.go +++ b/example/server-with-otel/main.go @@ -21,8 +21,9 @@ func main() { ) app.Use( - otel.Module(), - otelserver.Module(), + otel.Module( + otelserver.WithServer(), + ), server.Module(), ) diff --git a/example/server-with-postgres/main.go b/example/server-with-postgres/main.go index d5b0d2d..ffb9b6c 100644 --- a/example/server-with-postgres/main.go +++ b/example/server-with-postgres/main.go @@ -24,9 +24,10 @@ func main() { ) app.Use( - otel.Module(), + otel.Module( + otelserver.WithServer(), + ), orm.Module(postgresdriver.New()), - otelserver.Module(), server.Module(), swagger.Module(), ) diff --git a/modules/otel/client/module.go b/modules/otel/client/module.go index 6134432..8078bce 100644 --- a/modules/otel/client/module.go +++ b/modules/otel/client/module.go @@ -5,15 +5,15 @@ import ( "github.com/Trendyol/chaki/module" clientcommon "github.com/Trendyol/chaki/modules/client/common" + otelmodule "github.com/Trendyol/chaki/modules/otel" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/trace" ) -const ModuleName = "chaki-otel-client" - -func Module() *module.Module { - return module.New(ModuleName).Provide(newClientRoundTripperWrapper) +func WithClient() otelmodule.Option { + m := module.NewSubModule().Provide(newClientRoundTripperWrapper) + return otelmodule.WithSubModule(m) } func newClientRoundTripperWrapper(tp trace.TracerProvider, tmp propagation.TextMapPropagator) clientcommon.RoundTripperWrapper { diff --git a/modules/otel/kafka/module.go b/modules/otel/kafka/module.go index 5741f7f..43af4b1 100644 --- a/modules/otel/kafka/module.go +++ b/modules/otel/kafka/module.go @@ -7,22 +7,19 @@ import ( "github.com/Trendyol/chaki/module" "github.com/Trendyol/chaki/modules/kafka/consumer" "github.com/Trendyol/chaki/modules/kafka/producer" + otelmodule "github.com/Trendyol/chaki/modules/otel" "go.opentelemetry.io/otel/trace" ) -const moduleName = "chaki-otel-kafka" - -func Module() *module.Module { - m := module.New(moduleName) - - m.Provide( +func WithKafka() otelmodule.Option { + m := module.NewSubModule().Provide( newSpanBuilder, newConsumerInterceptor, newProducerInterceptor, newBatchConsumerInterceptor, ) - return m + return otelmodule.WithSubModule(m) } func newConsumerInterceptor(sb *spanBuilder) consumer.Interceptor { diff --git a/modules/otel/module.go b/modules/otel/module.go index 008f0bf..3b73b72 100644 --- a/modules/otel/module.go +++ b/modules/otel/module.go @@ -21,6 +21,8 @@ func Module(opts ...Option) *module.Module { startOtel, ) + m.Merge(o.subModules...) + return m } diff --git a/modules/otel/option.go b/modules/otel/option.go index b0b29e3..92f0cba 100644 --- a/modules/otel/option.go +++ b/modules/otel/option.go @@ -1,31 +1,41 @@ package otel -import "context" +import ( + "context" + + "github.com/Trendyol/chaki/module" +) type CloseFunc func(context.Context) error type InitFunc func() CloseFunc type options struct { - initFunc InitFunc + initFunc InitFunc + subModules []*module.SubModule } type Option interface { - Apply(*options) *options + Apply(*options) } -type withOption func(*options) *options +type withOption func(*options) -func (wf withOption) Apply(opts *options) *options { - return wf(opts) +func (wf withOption) Apply(opts *options) { + wf(opts) } var _ Option = withOption(nil) func WithInitFunc(f InitFunc) Option { - return withOption(func(o *options) *options { + return withOption(func(o *options) { o.initFunc = f - return o + }) +} + +func WithSubModule(sub ...*module.SubModule) Option { + return withOption(func(o *options) { + o.subModules = append(o.subModules, sub...) }) } @@ -33,7 +43,7 @@ func applyOptions(opts ...Option) *options { o := &options{} for _, opt := range opts { - o = opt.Apply(o) + opt.Apply(o) } return o diff --git a/modules/otel/server/module.go b/modules/otel/server/module.go index e812acb..429eb36 100644 --- a/modules/otel/server/module.go +++ b/modules/otel/server/module.go @@ -2,6 +2,7 @@ package otelserver import ( "github.com/Trendyol/chaki/module" + otelmodule "github.com/Trendyol/chaki/modules/otel" otelcommon "github.com/Trendyol/chaki/modules/otel/common" servercommon "github.com/Trendyol/chaki/modules/server/common" "github.com/gofiber/contrib/otelfiber/v2" @@ -9,10 +10,9 @@ import ( "go.opentelemetry.io/otel/trace" ) -const ModuleName = "chaki-otel-server" - -func Module() *module.Module { - return module.New(ModuleName).Provide(newMiddlewareGroup) +func WithServer() otelmodule.Option { + m := module.NewSubModule().Provide(newMiddlewareGroup) + return otelmodule.WithSubModule(m) } func newMiddlewareGroup() servercommon.MiddlewareGroup {