From 0094d30378f7acf9b710555244fef5aa2250d3be Mon Sep 17 00:00:00 2001 From: Christian Richter Date: Thu, 10 Oct 2024 11:57:59 +0200 Subject: [PATCH] code cleanup & refactoring Signed-off-by: Christian Richter --- services/app-registry/pkg/command/server.go | 1 + services/audit/pkg/command/server.go | 29 ++++------- services/audit/pkg/server/debug/option.go | 50 +++++++++++++++++++ services/audit/pkg/server/debug/server.go | 31 ++++++++++++ services/auth-app/pkg/command/server.go | 1 + services/auth-basic/pkg/command/server.go | 1 + services/auth-bearer/pkg/command/server.go | 1 + services/auth-machine/pkg/command/server.go | 1 + services/auth-service/pkg/command/server.go | 1 + services/clientlog/pkg/command/server.go | 28 ++++------- services/clientlog/pkg/server/debug/option.go | 50 +++++++++++++++++++ services/clientlog/pkg/server/debug/server.go | 31 ++++++++++++ services/eventhistory/pkg/command/server.go | 28 ++++------- .../eventhistory/pkg/server/debug/option.go | 50 +++++++++++++++++++ .../eventhistory/pkg/server/debug/server.go | 31 ++++++++++++ services/frontend/pkg/command/server.go | 1 + services/gateway/pkg/command/server.go | 4 +- services/groups/pkg/command/server.go | 1 + services/idp/pkg/command/server.go | 6 +-- services/invitations/pkg/command/server.go | 7 ++- services/nats/pkg/command/server.go | 29 ++++------- services/nats/pkg/server/debug/option.go | 50 +++++++++++++++++++ services/nats/pkg/server/debug/server.go | 31 ++++++++++++ services/notifications/pkg/command/server.go | 29 ++++------- .../notifications/pkg/server/debug/option.go | 50 +++++++++++++++++++ .../notifications/pkg/server/debug/server.go | 31 ++++++++++++ services/ocm/pkg/command/server.go | 1 + services/policies/pkg/command/server.go | 28 ++++------- services/policies/pkg/server/debug/option.go | 50 +++++++++++++++++++ services/policies/pkg/server/debug/server.go | 31 ++++++++++++ services/postprocessing/pkg/command/server.go | 29 ++++------- .../postprocessing/pkg/server/debug/option.go | 50 +++++++++++++++++++ .../postprocessing/pkg/server/debug/server.go | 31 ++++++++++++ services/proxy/pkg/command/server.go | 6 +-- services/search/pkg/command/server.go | 6 +-- services/settings/pkg/command/server.go | 6 ++- services/sse/pkg/command/server.go | 29 ++++------- services/sse/pkg/server/debug/option.go | 50 +++++++++++++++++++ services/sse/pkg/server/debug/server.go | 31 ++++++++++++ .../storage-publiclink/pkg/command/server.go | 1 + services/storage-shares/pkg/command/server.go | 1 + services/storage-system/pkg/command/server.go | 1 + services/storage-users/pkg/command/server.go | 10 +--- services/thumbnails/pkg/command/server.go | 1 + .../thumbnails/pkg/server/debug/option.go | 10 ++++ services/userlog/pkg/command/server.go | 28 ++++------- services/userlog/pkg/server/debug/option.go | 50 +++++++++++++++++++ services/userlog/pkg/server/debug/server.go | 31 ++++++++++++ services/users/pkg/command/server.go | 1 + services/web/pkg/command/server.go | 6 +-- services/webdav/pkg/command/server.go | 7 ++- services/webfinger/pkg/command/server.go | 7 ++- 52 files changed, 871 insertions(+), 204 deletions(-) create mode 100644 services/audit/pkg/server/debug/option.go create mode 100644 services/audit/pkg/server/debug/server.go create mode 100644 services/clientlog/pkg/server/debug/option.go create mode 100644 services/clientlog/pkg/server/debug/server.go create mode 100644 services/eventhistory/pkg/server/debug/option.go create mode 100644 services/eventhistory/pkg/server/debug/server.go create mode 100644 services/nats/pkg/server/debug/option.go create mode 100644 services/nats/pkg/server/debug/server.go create mode 100644 services/notifications/pkg/server/debug/option.go create mode 100644 services/notifications/pkg/server/debug/server.go create mode 100644 services/policies/pkg/server/debug/option.go create mode 100644 services/policies/pkg/server/debug/server.go create mode 100644 services/postprocessing/pkg/server/debug/option.go create mode 100644 services/postprocessing/pkg/server/debug/server.go create mode 100644 services/sse/pkg/server/debug/option.go create mode 100644 services/sse/pkg/server/debug/server.go create mode 100644 services/userlog/pkg/server/debug/option.go create mode 100644 services/userlog/pkg/server/debug/server.go diff --git a/services/app-registry/pkg/command/server.go b/services/app-registry/pkg/command/server.go index 0a85ce034..b37f29a76 100644 --- a/services/app-registry/pkg/command/server.go +++ b/services/app-registry/pkg/command/server.go @@ -73,6 +73,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/audit/pkg/command/server.go b/services/audit/pkg/command/server.go index 442dbf01f..84bf206bc 100644 --- a/services/audit/pkg/command/server.go +++ b/services/audit/pkg/command/server.go @@ -10,12 +10,10 @@ import ( "github.com/urfave/cli/v2" "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" - "github.com/owncloud/ocis/v2/ocis-pkg/handlers" - "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" - "github.com/owncloud/ocis/v2/ocis-pkg/version" "github.com/owncloud/ocis/v2/services/audit/pkg/config" "github.com/owncloud/ocis/v2/services/audit/pkg/config/parser" "github.com/owncloud/ocis/v2/services/audit/pkg/logging" + "github.com/owncloud/ocis/v2/services/audit/pkg/server/debug" svc "github.com/owncloud/ocis/v2/services/audit/pkg/service" "github.com/owncloud/ocis/v2/services/audit/pkg/types" ) @@ -58,25 +56,18 @@ func Server(cfg *config.Config) *cli.Command { }) { - checkHandler := handlers.NewCheckHandler( - handlers.NewCheckHandlerConfiguration(). - WithLogger(logger), - ) - - server := debug.NewService( + debugServer, err := debug.Server( debug.Logger(logger), - debug.Name(cfg.Service.Name), - debug.Version(version.GetString()), - debug.Address(cfg.Debug.Addr), - debug.Token(cfg.Debug.Token), - debug.Pprof(cfg.Debug.Pprof), - debug.Zpages(cfg.Debug.Zpages), - debug.Health(checkHandler), - debug.Ready(checkHandler), + debug.Context(ctx), + debug.Config(cfg), ) + if err != nil { + logger.Info().Err(err).Str("server", "debug").Msg("Failed to initialize server") + return err + } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/audit/pkg/server/debug/option.go b/services/audit/pkg/server/debug/option.go new file mode 100644 index 000000000..944900624 --- /dev/null +++ b/services/audit/pkg/server/debug/option.go @@ -0,0 +1,50 @@ +package debug + +import ( + "context" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" + "github.com/owncloud/ocis/v2/services/audit/pkg/config" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Context context.Context + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/services/audit/pkg/server/debug/server.go b/services/audit/pkg/server/debug/server.go new file mode 100644 index 000000000..85136a94d --- /dev/null +++ b/services/audit/pkg/server/debug/server.go @@ -0,0 +1,31 @@ +package debug + +import ( + "net/http" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" + "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" + "github.com/owncloud/ocis/v2/ocis-pkg/version" +) + +// Server initializes the debug service and server. +func Server(opts ...Option) (*http.Server, error) { + options := newOptions(opts...) + + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + return debug.NewService( + debug.Logger(options.Logger), + debug.Name(options.Config.Service.Name), + debug.Version(version.GetString()), + debug.Address(options.Config.Debug.Addr), + debug.Token(options.Config.Debug.Token), + debug.Pprof(options.Config.Debug.Pprof), + debug.Zpages(options.Config.Debug.Zpages), + debug.Health(checkHandler), + debug.Ready(checkHandler), + ), nil +} diff --git a/services/auth-app/pkg/command/server.go b/services/auth-app/pkg/command/server.go index f70aa4e8c..00b752887 100644 --- a/services/auth-app/pkg/command/server.go +++ b/services/auth-app/pkg/command/server.go @@ -82,6 +82,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/auth-basic/pkg/command/server.go b/services/auth-basic/pkg/command/server.go index 084fce012..475f5333b 100644 --- a/services/auth-basic/pkg/command/server.go +++ b/services/auth-basic/pkg/command/server.go @@ -87,6 +87,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/auth-bearer/pkg/command/server.go b/services/auth-bearer/pkg/command/server.go index 00652d312..76877780e 100644 --- a/services/auth-bearer/pkg/command/server.go +++ b/services/auth-bearer/pkg/command/server.go @@ -74,6 +74,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/auth-machine/pkg/command/server.go b/services/auth-machine/pkg/command/server.go index d90e68b76..06a315d1d 100644 --- a/services/auth-machine/pkg/command/server.go +++ b/services/auth-machine/pkg/command/server.go @@ -74,6 +74,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/auth-service/pkg/command/server.go b/services/auth-service/pkg/command/server.go index 2f013c829..35816e780 100644 --- a/services/auth-service/pkg/command/server.go +++ b/services/auth-service/pkg/command/server.go @@ -75,6 +75,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/clientlog/pkg/command/server.go b/services/clientlog/pkg/command/server.go index 0c130019e..b2194f792 100644 --- a/services/clientlog/pkg/command/server.go +++ b/services/clientlog/pkg/command/server.go @@ -11,15 +11,14 @@ import ( "github.com/urfave/cli/v2" "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" - "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/registry" - "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" "github.com/owncloud/ocis/v2/ocis-pkg/tracing" "github.com/owncloud/ocis/v2/ocis-pkg/version" "github.com/owncloud/ocis/v2/services/clientlog/pkg/config" "github.com/owncloud/ocis/v2/services/clientlog/pkg/config/parser" "github.com/owncloud/ocis/v2/services/clientlog/pkg/logging" "github.com/owncloud/ocis/v2/services/clientlog/pkg/metrics" + "github.com/owncloud/ocis/v2/services/clientlog/pkg/server/debug" "github.com/owncloud/ocis/v2/services/clientlog/pkg/service" ) @@ -117,25 +116,18 @@ func Server(cfg *config.Config) *cli.Command { } { - checkHandler := handlers.NewCheckHandler( - handlers.NewCheckHandlerConfiguration(). - WithLogger(logger), - ) - - server := debug.NewService( + debugServer, err := debug.Server( debug.Logger(logger), - debug.Name(cfg.Service.Name), - debug.Version(version.GetString()), - debug.Address(cfg.Debug.Addr), - debug.Token(cfg.Debug.Token), - debug.Pprof(cfg.Debug.Pprof), - debug.Zpages(cfg.Debug.Zpages), - debug.Health(checkHandler), - debug.Ready(checkHandler), + debug.Context(ctx), + debug.Config(cfg), ) + if err != nil { + logger.Info().Err(err).Str("server", "debug").Msg("Failed to initialize server") + return err + } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/clientlog/pkg/server/debug/option.go b/services/clientlog/pkg/server/debug/option.go new file mode 100644 index 000000000..1dafbb244 --- /dev/null +++ b/services/clientlog/pkg/server/debug/option.go @@ -0,0 +1,50 @@ +package debug + +import ( + "context" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" + "github.com/owncloud/ocis/v2/services/clientlog/pkg/config" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Context context.Context + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/services/clientlog/pkg/server/debug/server.go b/services/clientlog/pkg/server/debug/server.go new file mode 100644 index 000000000..85136a94d --- /dev/null +++ b/services/clientlog/pkg/server/debug/server.go @@ -0,0 +1,31 @@ +package debug + +import ( + "net/http" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" + "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" + "github.com/owncloud/ocis/v2/ocis-pkg/version" +) + +// Server initializes the debug service and server. +func Server(opts ...Option) (*http.Server, error) { + options := newOptions(opts...) + + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + return debug.NewService( + debug.Logger(options.Logger), + debug.Name(options.Config.Service.Name), + debug.Version(version.GetString()), + debug.Address(options.Config.Debug.Addr), + debug.Token(options.Config.Debug.Token), + debug.Pprof(options.Config.Debug.Pprof), + debug.Zpages(options.Config.Debug.Zpages), + debug.Health(checkHandler), + debug.Ready(checkHandler), + ), nil +} diff --git a/services/eventhistory/pkg/command/server.go b/services/eventhistory/pkg/command/server.go index b098ccb19..7107f8997 100644 --- a/services/eventhistory/pkg/command/server.go +++ b/services/eventhistory/pkg/command/server.go @@ -11,8 +11,6 @@ import ( microstore "go-micro.dev/v4/store" "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" - "github.com/owncloud/ocis/v2/ocis-pkg/handlers" - "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" ogrpc "github.com/owncloud/ocis/v2/ocis-pkg/service/grpc" "github.com/owncloud/ocis/v2/ocis-pkg/tracing" "github.com/owncloud/ocis/v2/ocis-pkg/version" @@ -20,6 +18,7 @@ import ( "github.com/owncloud/ocis/v2/services/eventhistory/pkg/config/parser" "github.com/owncloud/ocis/v2/services/eventhistory/pkg/logging" "github.com/owncloud/ocis/v2/services/eventhistory/pkg/metrics" + "github.com/owncloud/ocis/v2/services/eventhistory/pkg/server/debug" "github.com/owncloud/ocis/v2/services/eventhistory/pkg/server/grpc" ) @@ -94,25 +93,18 @@ func Server(cfg *config.Config) *cli.Command { }) { - checkHandler := handlers.NewCheckHandler( - handlers.NewCheckHandlerConfiguration(). - WithLogger(logger), - ) - - server := debug.NewService( + debugServer, err := debug.Server( debug.Logger(logger), - debug.Name(cfg.Service.Name), - debug.Version(version.GetString()), - debug.Address(cfg.Debug.Addr), - debug.Token(cfg.Debug.Token), - debug.Pprof(cfg.Debug.Pprof), - debug.Zpages(cfg.Debug.Zpages), - debug.Health(checkHandler), - debug.Ready(checkHandler), + debug.Context(ctx), + debug.Config(cfg), ) + if err != nil { + logger.Info().Err(err).Str("server", "debug").Msg("Failed to initialize server") + return err + } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/eventhistory/pkg/server/debug/option.go b/services/eventhistory/pkg/server/debug/option.go new file mode 100644 index 000000000..a3966b315 --- /dev/null +++ b/services/eventhistory/pkg/server/debug/option.go @@ -0,0 +1,50 @@ +package debug + +import ( + "context" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" + "github.com/owncloud/ocis/v2/services/eventhistory/pkg/config" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Context context.Context + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/services/eventhistory/pkg/server/debug/server.go b/services/eventhistory/pkg/server/debug/server.go new file mode 100644 index 000000000..85136a94d --- /dev/null +++ b/services/eventhistory/pkg/server/debug/server.go @@ -0,0 +1,31 @@ +package debug + +import ( + "net/http" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" + "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" + "github.com/owncloud/ocis/v2/ocis-pkg/version" +) + +// Server initializes the debug service and server. +func Server(opts ...Option) (*http.Server, error) { + options := newOptions(opts...) + + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + return debug.NewService( + debug.Logger(options.Logger), + debug.Name(options.Config.Service.Name), + debug.Version(version.GetString()), + debug.Address(options.Config.Debug.Addr), + debug.Token(options.Config.Debug.Token), + debug.Pprof(options.Config.Debug.Pprof), + debug.Zpages(options.Config.Debug.Zpages), + debug.Health(checkHandler), + debug.Ready(checkHandler), + ), nil +} diff --git a/services/frontend/pkg/command/server.go b/services/frontend/pkg/command/server.go index cd22a4be7..8f936935f 100644 --- a/services/frontend/pkg/command/server.go +++ b/services/frontend/pkg/command/server.go @@ -78,6 +78,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/gateway/pkg/command/server.go b/services/gateway/pkg/command/server.go index 01b274259..bafbf7cd8 100644 --- a/services/gateway/pkg/command/server.go +++ b/services/gateway/pkg/command/server.go @@ -75,9 +75,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { - logger.Info(). - Str("server", cfg.Service.Name). - Msg("Shutting down debug erver") + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/groups/pkg/command/server.go b/services/groups/pkg/command/server.go index cdd3db0ec..f79bc953e 100644 --- a/services/groups/pkg/command/server.go +++ b/services/groups/pkg/command/server.go @@ -87,6 +87,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/idp/pkg/command/server.go b/services/idp/pkg/command/server.go index 02bf30eaa..7f02e1bb2 100644 --- a/services/idp/pkg/command/server.go +++ b/services/idp/pkg/command/server.go @@ -94,7 +94,7 @@ func Server(cfg *config.Config) *cli.Command { } { - server, err := debug.Server( + debugServer, err := debug.Server( debug.Logger(logger), debug.Context(ctx), debug.Config(cfg), @@ -104,8 +104,8 @@ func Server(cfg *config.Config) *cli.Command { return err } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/invitations/pkg/command/server.go b/services/invitations/pkg/command/server.go index 0b2b358cd..24f000380 100644 --- a/services/invitations/pkg/command/server.go +++ b/services/invitations/pkg/command/server.go @@ -87,7 +87,7 @@ func Server(cfg *config.Config) *cli.Command { } { - server, err := debug.Server( + debugServer, err := debug.Server( debug.Logger(logger), debug.Context(ctx), debug.Config(cfg), @@ -97,9 +97,8 @@ func Server(cfg *config.Config) *cli.Command { return err } - gr.Add(server.ListenAndServe, func(err error) { - logger.Error().Err(err) - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/nats/pkg/command/server.go b/services/nats/pkg/command/server.go index f0ad16097..c5401b2db 100644 --- a/services/nats/pkg/command/server.go +++ b/services/nats/pkg/command/server.go @@ -11,12 +11,10 @@ import ( "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" pkgcrypto "github.com/owncloud/ocis/v2/ocis-pkg/crypto" - "github.com/owncloud/ocis/v2/ocis-pkg/handlers" - "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" - "github.com/owncloud/ocis/v2/ocis-pkg/version" "github.com/owncloud/ocis/v2/services/nats/pkg/config" "github.com/owncloud/ocis/v2/services/nats/pkg/config/parser" "github.com/owncloud/ocis/v2/services/nats/pkg/logging" + "github.com/owncloud/ocis/v2/services/nats/pkg/server/debug" "github.com/owncloud/ocis/v2/services/nats/pkg/server/nats" ) @@ -38,25 +36,18 @@ func Server(cfg *config.Config) *cli.Command { defer cancel() { - checkHandler := handlers.NewCheckHandler( - handlers.NewCheckHandlerConfiguration(). - WithLogger(logger), - ) - - server := debug.NewService( + debugServer, err := debug.Server( debug.Logger(logger), - debug.Name(cfg.Service.Name), - debug.Version(version.GetString()), - debug.Address(cfg.Debug.Addr), - debug.Token(cfg.Debug.Token), - debug.Pprof(cfg.Debug.Pprof), - debug.Zpages(cfg.Debug.Zpages), - debug.Health(checkHandler), - debug.Ready(checkHandler), + debug.Context(ctx), + debug.Config(cfg), ) + if err != nil { + logger.Info().Err(err).Str("transport", "debug").Msg("Failed to initialize server") + return err + } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/nats/pkg/server/debug/option.go b/services/nats/pkg/server/debug/option.go new file mode 100644 index 000000000..977b85f3b --- /dev/null +++ b/services/nats/pkg/server/debug/option.go @@ -0,0 +1,50 @@ +package debug + +import ( + "context" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" + "github.com/owncloud/ocis/v2/services/nats/pkg/config" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Context context.Context + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/services/nats/pkg/server/debug/server.go b/services/nats/pkg/server/debug/server.go new file mode 100644 index 000000000..85136a94d --- /dev/null +++ b/services/nats/pkg/server/debug/server.go @@ -0,0 +1,31 @@ +package debug + +import ( + "net/http" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" + "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" + "github.com/owncloud/ocis/v2/ocis-pkg/version" +) + +// Server initializes the debug service and server. +func Server(opts ...Option) (*http.Server, error) { + options := newOptions(opts...) + + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + return debug.NewService( + debug.Logger(options.Logger), + debug.Name(options.Config.Service.Name), + debug.Version(version.GetString()), + debug.Address(options.Config.Debug.Addr), + debug.Token(options.Config.Debug.Token), + debug.Pprof(options.Config.Debug.Pprof), + debug.Zpages(options.Config.Debug.Zpages), + debug.Health(checkHandler), + debug.Ready(checkHandler), + ), nil +} diff --git a/services/notifications/pkg/command/server.go b/services/notifications/pkg/command/server.go index 45fc693b8..8aa1e1bec 100644 --- a/services/notifications/pkg/command/server.go +++ b/services/notifications/pkg/command/server.go @@ -12,17 +12,15 @@ import ( "github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool" "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" - "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/registry" - "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" "github.com/owncloud/ocis/v2/ocis-pkg/service/grpc" "github.com/owncloud/ocis/v2/ocis-pkg/tracing" - "github.com/owncloud/ocis/v2/ocis-pkg/version" settingssvc "github.com/owncloud/ocis/v2/protogen/gen/ocis/services/settings/v0" "github.com/owncloud/ocis/v2/services/notifications/pkg/channels" "github.com/owncloud/ocis/v2/services/notifications/pkg/config" "github.com/owncloud/ocis/v2/services/notifications/pkg/config/parser" "github.com/owncloud/ocis/v2/services/notifications/pkg/logging" + "github.com/owncloud/ocis/v2/services/notifications/pkg/server/debug" "github.com/owncloud/ocis/v2/services/notifications/pkg/service" ) @@ -59,25 +57,18 @@ func Server(cfg *config.Config) *cli.Command { defer cancel() { - checkHandler := handlers.NewCheckHandler( - handlers.NewCheckHandlerConfiguration(). - WithLogger(logger), - ) - - server := debug.NewService( + debugServer, err := debug.Server( debug.Logger(logger), - debug.Name(cfg.Service.Name), - debug.Version(version.GetString()), - debug.Address(cfg.Debug.Addr), - debug.Token(cfg.Debug.Token), - debug.Pprof(cfg.Debug.Pprof), - debug.Zpages(cfg.Debug.Zpages), - debug.Health(checkHandler), - debug.Ready(checkHandler), + debug.Context(ctx), + debug.Config(cfg), ) + if err != nil { + logger.Info().Err(err).Str("transport", "debug").Msg("Failed to initialize server") + return err + } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/notifications/pkg/server/debug/option.go b/services/notifications/pkg/server/debug/option.go new file mode 100644 index 000000000..9ecb9364f --- /dev/null +++ b/services/notifications/pkg/server/debug/option.go @@ -0,0 +1,50 @@ +package debug + +import ( + "context" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" + "github.com/owncloud/ocis/v2/services/notifications/pkg/config" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Context context.Context + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/services/notifications/pkg/server/debug/server.go b/services/notifications/pkg/server/debug/server.go new file mode 100644 index 000000000..85136a94d --- /dev/null +++ b/services/notifications/pkg/server/debug/server.go @@ -0,0 +1,31 @@ +package debug + +import ( + "net/http" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" + "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" + "github.com/owncloud/ocis/v2/ocis-pkg/version" +) + +// Server initializes the debug service and server. +func Server(opts ...Option) (*http.Server, error) { + options := newOptions(opts...) + + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + return debug.NewService( + debug.Logger(options.Logger), + debug.Name(options.Config.Service.Name), + debug.Version(version.GetString()), + debug.Address(options.Config.Debug.Addr), + debug.Token(options.Config.Debug.Token), + debug.Pprof(options.Config.Debug.Pprof), + debug.Zpages(options.Config.Debug.Zpages), + debug.Health(checkHandler), + debug.Ready(checkHandler), + ), nil +} diff --git a/services/ocm/pkg/command/server.go b/services/ocm/pkg/command/server.go index 2e28ccced..7e7265b06 100644 --- a/services/ocm/pkg/command/server.go +++ b/services/ocm/pkg/command/server.go @@ -75,6 +75,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/policies/pkg/command/server.go b/services/policies/pkg/command/server.go index 3a68b3512..832909400 100644 --- a/services/policies/pkg/command/server.go +++ b/services/policies/pkg/command/server.go @@ -9,9 +9,7 @@ import ( "github.com/urfave/cli/v2" "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" - "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/log" - "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" "github.com/owncloud/ocis/v2/ocis-pkg/service/grpc" "github.com/owncloud/ocis/v2/ocis-pkg/tracing" "github.com/owncloud/ocis/v2/ocis-pkg/version" @@ -19,6 +17,7 @@ import ( "github.com/owncloud/ocis/v2/services/policies/pkg/config" "github.com/owncloud/ocis/v2/services/policies/pkg/config/parser" "github.com/owncloud/ocis/v2/services/policies/pkg/engine/opa" + "github.com/owncloud/ocis/v2/services/policies/pkg/server/debug" svcEvent "github.com/owncloud/ocis/v2/services/policies/pkg/service/event" svcGRPC "github.com/owncloud/ocis/v2/services/policies/pkg/service/grpc" ) @@ -121,25 +120,18 @@ func Server(cfg *config.Config) *cli.Command { } { - checkHandler := handlers.NewCheckHandler( - handlers.NewCheckHandlerConfiguration(). - WithLogger(logger), - ) - - server := debug.NewService( + debugServer, err := debug.Server( debug.Logger(logger), - debug.Name(cfg.Service.Name), - debug.Version(version.GetString()), - debug.Address(cfg.Debug.Addr), - debug.Token(cfg.Debug.Token), - debug.Pprof(cfg.Debug.Pprof), - debug.Zpages(cfg.Debug.Zpages), - debug.Health(checkHandler), - debug.Ready(checkHandler), + debug.Context(ctx), + debug.Config(cfg), ) + if err != nil { + logger.Info().Err(err).Str("transport", "debug").Msg("Failed to initialize server") + return err + } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/policies/pkg/server/debug/option.go b/services/policies/pkg/server/debug/option.go new file mode 100644 index 000000000..aaf0a8d7a --- /dev/null +++ b/services/policies/pkg/server/debug/option.go @@ -0,0 +1,50 @@ +package debug + +import ( + "context" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" + "github.com/owncloud/ocis/v2/services/policies/pkg/config" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Context context.Context + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/services/policies/pkg/server/debug/server.go b/services/policies/pkg/server/debug/server.go new file mode 100644 index 000000000..85136a94d --- /dev/null +++ b/services/policies/pkg/server/debug/server.go @@ -0,0 +1,31 @@ +package debug + +import ( + "net/http" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" + "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" + "github.com/owncloud/ocis/v2/ocis-pkg/version" +) + +// Server initializes the debug service and server. +func Server(opts ...Option) (*http.Server, error) { + options := newOptions(opts...) + + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + return debug.NewService( + debug.Logger(options.Logger), + debug.Name(options.Config.Service.Name), + debug.Version(version.GetString()), + debug.Address(options.Config.Debug.Addr), + debug.Token(options.Config.Debug.Token), + debug.Pprof(options.Config.Debug.Pprof), + debug.Zpages(options.Config.Debug.Zpages), + debug.Health(checkHandler), + debug.Ready(checkHandler), + ), nil +} diff --git a/services/postprocessing/pkg/command/server.go b/services/postprocessing/pkg/command/server.go index a51289783..8527b71dc 100644 --- a/services/postprocessing/pkg/command/server.go +++ b/services/postprocessing/pkg/command/server.go @@ -11,13 +11,11 @@ import ( "github.com/urfave/cli/v2" microstore "go-micro.dev/v4/store" - "github.com/owncloud/ocis/v2/ocis-pkg/handlers" - "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" "github.com/owncloud/ocis/v2/ocis-pkg/tracing" - "github.com/owncloud/ocis/v2/ocis-pkg/version" "github.com/owncloud/ocis/v2/services/postprocessing/pkg/config" "github.com/owncloud/ocis/v2/services/postprocessing/pkg/config/parser" "github.com/owncloud/ocis/v2/services/postprocessing/pkg/logging" + "github.com/owncloud/ocis/v2/services/postprocessing/pkg/server/debug" "github.com/owncloud/ocis/v2/services/postprocessing/pkg/service" ) @@ -87,25 +85,18 @@ func Server(cfg *config.Config) *cli.Command { } { - checkHandler := handlers.NewCheckHandler( - handlers.NewCheckHandlerConfiguration(). - WithLogger(logger), - ) - - server := debug.NewService( + debugServer, err := debug.Server( debug.Logger(logger), - debug.Name(cfg.Service.Name), - debug.Version(version.GetString()), - debug.Address(cfg.Debug.Addr), - debug.Token(cfg.Debug.Token), - debug.Pprof(cfg.Debug.Pprof), - debug.Zpages(cfg.Debug.Zpages), - debug.Health(checkHandler), - debug.Ready(checkHandler), + debug.Context(ctx), + debug.Config(cfg), ) + if err != nil { + logger.Info().Err(err).Str("transport", "debug").Msg("Failed to initialize server") + return err + } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/postprocessing/pkg/server/debug/option.go b/services/postprocessing/pkg/server/debug/option.go new file mode 100644 index 000000000..da002867f --- /dev/null +++ b/services/postprocessing/pkg/server/debug/option.go @@ -0,0 +1,50 @@ +package debug + +import ( + "context" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" + "github.com/owncloud/ocis/v2/services/postprocessing/pkg/config" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Context context.Context + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/services/postprocessing/pkg/server/debug/server.go b/services/postprocessing/pkg/server/debug/server.go new file mode 100644 index 000000000..85136a94d --- /dev/null +++ b/services/postprocessing/pkg/server/debug/server.go @@ -0,0 +1,31 @@ +package debug + +import ( + "net/http" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" + "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" + "github.com/owncloud/ocis/v2/ocis-pkg/version" +) + +// Server initializes the debug service and server. +func Server(opts ...Option) (*http.Server, error) { + options := newOptions(opts...) + + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + return debug.NewService( + debug.Logger(options.Logger), + debug.Name(options.Config.Service.Name), + debug.Version(version.GetString()), + debug.Address(options.Config.Debug.Addr), + debug.Token(options.Config.Debug.Token), + debug.Pprof(options.Config.Debug.Pprof), + debug.Zpages(options.Config.Debug.Zpages), + debug.Health(checkHandler), + debug.Ready(checkHandler), + ), nil +} diff --git a/services/proxy/pkg/command/server.go b/services/proxy/pkg/command/server.go index ae17b743a..7dd1673be 100644 --- a/services/proxy/pkg/command/server.go +++ b/services/proxy/pkg/command/server.go @@ -214,7 +214,7 @@ func Server(cfg *config.Config) *cli.Command { } { - server, err := debug.Server( + debugServer, err := debug.Server( debug.Logger(logger), debug.Context(ctx), debug.Config(cfg), @@ -224,8 +224,8 @@ func Server(cfg *config.Config) *cli.Command { return err } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/search/pkg/command/server.go b/services/search/pkg/command/server.go index 1e823e42e..f098602a6 100644 --- a/services/search/pkg/command/server.go +++ b/services/search/pkg/command/server.go @@ -70,7 +70,7 @@ func Server(cfg *config.Config) *cli.Command { cancel() }) - server, err := debug.Server( + debugServer, err := debug.Server( debug.Logger(logger), debug.Context(ctx), debug.Config(cfg), @@ -80,8 +80,8 @@ func Server(cfg *config.Config) *cli.Command { return err } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/settings/pkg/command/server.go b/services/settings/pkg/command/server.go index 5b11f00a5..1e442ab6f 100644 --- a/services/settings/pkg/command/server.go +++ b/services/settings/pkg/command/server.go @@ -94,7 +94,11 @@ func Server(cfg *config.Config) *cli.Command { }) // prepare a debug server and add it to the group run. - debugServer, err := debug.Server(debug.Logger(logger), debug.Context(ctx), debug.Config(cfg)) + debugServer, err := debug.Server( + debug.Logger(logger), + debug.Context(ctx), + debug.Config(cfg), + ) if err != nil { logger.Error().Err(err).Str("server", "debug").Msg("Failed to initialize server") return err diff --git a/services/sse/pkg/command/server.go b/services/sse/pkg/command/server.go index cbac80f3e..722eb3970 100644 --- a/services/sse/pkg/command/server.go +++ b/services/sse/pkg/command/server.go @@ -10,13 +10,11 @@ import ( "github.com/urfave/cli/v2" "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" - "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/log" - "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" "github.com/owncloud/ocis/v2/ocis-pkg/tracing" - "github.com/owncloud/ocis/v2/ocis-pkg/version" "github.com/owncloud/ocis/v2/services/sse/pkg/config" "github.com/owncloud/ocis/v2/services/sse/pkg/config/parser" + "github.com/owncloud/ocis/v2/services/sse/pkg/server/debug" "github.com/owncloud/ocis/v2/services/sse/pkg/server/http" ) @@ -77,25 +75,18 @@ func Server(cfg *config.Config) *cli.Command { } { - checkHandler := handlers.NewCheckHandler( - handlers.NewCheckHandlerConfiguration(). - WithLogger(logger), - ) - - server := debug.NewService( + debugServer, err := debug.Server( debug.Logger(logger), - debug.Name(cfg.Service.Name), - debug.Version(version.GetString()), - debug.Address(cfg.Debug.Addr), - debug.Token(cfg.Debug.Token), - debug.Pprof(cfg.Debug.Pprof), - debug.Zpages(cfg.Debug.Zpages), - debug.Health(checkHandler), - debug.Ready(checkHandler), + debug.Context(ctx), + debug.Config(cfg), ) + if err != nil { + logger.Info().Err(err).Str("transport", "debug").Msg("Failed to initialize server") + return err + } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/sse/pkg/server/debug/option.go b/services/sse/pkg/server/debug/option.go new file mode 100644 index 000000000..03d14d82f --- /dev/null +++ b/services/sse/pkg/server/debug/option.go @@ -0,0 +1,50 @@ +package debug + +import ( + "context" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" + "github.com/owncloud/ocis/v2/services/sse/pkg/config" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Context context.Context + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/services/sse/pkg/server/debug/server.go b/services/sse/pkg/server/debug/server.go new file mode 100644 index 000000000..85136a94d --- /dev/null +++ b/services/sse/pkg/server/debug/server.go @@ -0,0 +1,31 @@ +package debug + +import ( + "net/http" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" + "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" + "github.com/owncloud/ocis/v2/ocis-pkg/version" +) + +// Server initializes the debug service and server. +func Server(opts ...Option) (*http.Server, error) { + options := newOptions(opts...) + + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + return debug.NewService( + debug.Logger(options.Logger), + debug.Name(options.Config.Service.Name), + debug.Version(version.GetString()), + debug.Address(options.Config.Debug.Addr), + debug.Token(options.Config.Debug.Token), + debug.Pprof(options.Config.Debug.Pprof), + debug.Zpages(options.Config.Debug.Zpages), + debug.Health(checkHandler), + debug.Ready(checkHandler), + ), nil +} diff --git a/services/storage-publiclink/pkg/command/server.go b/services/storage-publiclink/pkg/command/server.go index 184254cb9..d15dac8ce 100644 --- a/services/storage-publiclink/pkg/command/server.go +++ b/services/storage-publiclink/pkg/command/server.go @@ -74,6 +74,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/storage-shares/pkg/command/server.go b/services/storage-shares/pkg/command/server.go index bdeabf0e2..41757ff57 100644 --- a/services/storage-shares/pkg/command/server.go +++ b/services/storage-shares/pkg/command/server.go @@ -74,6 +74,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/storage-system/pkg/command/server.go b/services/storage-system/pkg/command/server.go index 5195280e4..2b50a59a0 100644 --- a/services/storage-system/pkg/command/server.go +++ b/services/storage-system/pkg/command/server.go @@ -74,6 +74,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/storage-users/pkg/command/server.go b/services/storage-users/pkg/command/server.go index df7fca8a4..f88ed590c 100644 --- a/services/storage-users/pkg/command/server.go +++ b/services/storage-users/pkg/command/server.go @@ -76,15 +76,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(err error) { - logger.Error().Err(err).Str("server", cfg.Service.Name). - Msg("Shutting down debug server") - if err := debugServer.Shutdown(context.Background()); err != nil { - logger.Error(). - Err(err). - Str("server", cfg.Service.Name). - Msg("Error during debug server shutdown") - } - + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/thumbnails/pkg/command/server.go b/services/thumbnails/pkg/command/server.go index cc671f74f..4ad5ae0fd 100644 --- a/services/thumbnails/pkg/command/server.go +++ b/services/thumbnails/pkg/command/server.go @@ -74,6 +74,7 @@ func Server(cfg *config.Config) *cli.Command { server, err := debug.Server( debug.Logger(logger), debug.Config(cfg), + debug.Context(ctx), ) if err != nil { logger.Info().Err(err).Str("transport", "debug").Msg("Failed to initialize server") diff --git a/services/thumbnails/pkg/server/debug/option.go b/services/thumbnails/pkg/server/debug/option.go index 534a47f1c..fdc0fe6bc 100644 --- a/services/thumbnails/pkg/server/debug/option.go +++ b/services/thumbnails/pkg/server/debug/option.go @@ -1,6 +1,8 @@ package debug import ( + "context" + "github.com/owncloud/ocis/v2/ocis-pkg/log" "github.com/owncloud/ocis/v2/services/thumbnails/pkg/config" ) @@ -13,6 +15,7 @@ type Options struct { Name string Address string Logger log.Logger + Context context.Context Config *config.Config } @@ -34,6 +37,13 @@ func Logger(val log.Logger) Option { } } +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + // Config provides a function to set the config option. func Config(val *config.Config) Option { return func(o *Options) { diff --git a/services/userlog/pkg/command/server.go b/services/userlog/pkg/command/server.go index 50c134d7d..566c5f76e 100644 --- a/services/userlog/pkg/command/server.go +++ b/services/userlog/pkg/command/server.go @@ -13,9 +13,7 @@ import ( microstore "go-micro.dev/v4/store" "github.com/owncloud/ocis/v2/ocis-pkg/config/configlog" - "github.com/owncloud/ocis/v2/ocis-pkg/handlers" "github.com/owncloud/ocis/v2/ocis-pkg/registry" - "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" ogrpc "github.com/owncloud/ocis/v2/ocis-pkg/service/grpc" "github.com/owncloud/ocis/v2/ocis-pkg/tracing" "github.com/owncloud/ocis/v2/ocis-pkg/version" @@ -25,6 +23,7 @@ import ( "github.com/owncloud/ocis/v2/services/userlog/pkg/config/parser" "github.com/owncloud/ocis/v2/services/userlog/pkg/logging" "github.com/owncloud/ocis/v2/services/userlog/pkg/metrics" + "github.com/owncloud/ocis/v2/services/userlog/pkg/server/debug" "github.com/owncloud/ocis/v2/services/userlog/pkg/server/http" ) @@ -145,25 +144,18 @@ func Server(cfg *config.Config) *cli.Command { } { - checkHandler := handlers.NewCheckHandler( - handlers.NewCheckHandlerConfiguration(). - WithLogger(logger), - ) - - server := debug.NewService( + debugServer, err := debug.Server( debug.Logger(logger), - debug.Name(cfg.Service.Name), - debug.Version(version.GetString()), - debug.Address(cfg.Debug.Addr), - debug.Token(cfg.Debug.Token), - debug.Pprof(cfg.Debug.Pprof), - debug.Zpages(cfg.Debug.Zpages), - debug.Health(checkHandler), - debug.Ready(checkHandler), + debug.Context(ctx), + debug.Config(cfg), ) + if err != nil { + logger.Info().Err(err).Str("transport", "debug").Msg("Failed to initialize server") + return err + } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/userlog/pkg/server/debug/option.go b/services/userlog/pkg/server/debug/option.go new file mode 100644 index 000000000..6e3607ac6 --- /dev/null +++ b/services/userlog/pkg/server/debug/option.go @@ -0,0 +1,50 @@ +package debug + +import ( + "context" + + "github.com/owncloud/ocis/v2/ocis-pkg/log" + "github.com/owncloud/ocis/v2/services/userlog/pkg/config" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Context context.Context + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/services/userlog/pkg/server/debug/server.go b/services/userlog/pkg/server/debug/server.go new file mode 100644 index 000000000..85136a94d --- /dev/null +++ b/services/userlog/pkg/server/debug/server.go @@ -0,0 +1,31 @@ +package debug + +import ( + "net/http" + + "github.com/owncloud/ocis/v2/ocis-pkg/handlers" + "github.com/owncloud/ocis/v2/ocis-pkg/service/debug" + "github.com/owncloud/ocis/v2/ocis-pkg/version" +) + +// Server initializes the debug service and server. +func Server(opts ...Option) (*http.Server, error) { + options := newOptions(opts...) + + checkHandler := handlers.NewCheckHandler( + handlers.NewCheckHandlerConfiguration(). + WithLogger(options.Logger), + ) + + return debug.NewService( + debug.Logger(options.Logger), + debug.Name(options.Config.Service.Name), + debug.Version(version.GetString()), + debug.Address(options.Config.Debug.Addr), + debug.Token(options.Config.Debug.Token), + debug.Pprof(options.Config.Debug.Pprof), + debug.Zpages(options.Config.Debug.Zpages), + debug.Health(checkHandler), + debug.Ready(checkHandler), + ), nil +} diff --git a/services/users/pkg/command/server.go b/services/users/pkg/command/server.go index 95a899873..aed4caa14 100644 --- a/services/users/pkg/command/server.go +++ b/services/users/pkg/command/server.go @@ -87,6 +87,7 @@ func Server(cfg *config.Config) *cli.Command { } gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) diff --git a/services/web/pkg/command/server.go b/services/web/pkg/command/server.go index 5ba913431..73ceba8cc 100644 --- a/services/web/pkg/command/server.go +++ b/services/web/pkg/command/server.go @@ -93,7 +93,7 @@ func Server(cfg *config.Config) *cli.Command { } { - server, err := debug.Server( + debugServer, err := debug.Server( debug.Logger(logger), debug.Context(ctx), debug.Config(cfg), @@ -103,8 +103,8 @@ func Server(cfg *config.Config) *cli.Command { return err } - gr.Add(server.ListenAndServe, func(_ error) { - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(_ error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/webdav/pkg/command/server.go b/services/webdav/pkg/command/server.go index d7ed38624..869b80f0c 100644 --- a/services/webdav/pkg/command/server.go +++ b/services/webdav/pkg/command/server.go @@ -82,7 +82,7 @@ func Server(cfg *config.Config) *cli.Command { } { - server, err := debug.Server( + debugServer, err := debug.Server( debug.Logger(logger), debug.Context(ctx), debug.Config(cfg), @@ -93,9 +93,8 @@ func Server(cfg *config.Config) *cli.Command { return err } - gr.Add(server.ListenAndServe, func(err error) { - logger.Error().Err(err) - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(err error) { + _ = debugServer.Shutdown(ctx) cancel() }) } diff --git a/services/webfinger/pkg/command/server.go b/services/webfinger/pkg/command/server.go index 0ba9cbe12..008834968 100644 --- a/services/webfinger/pkg/command/server.go +++ b/services/webfinger/pkg/command/server.go @@ -95,7 +95,7 @@ func Server(cfg *config.Config) *cli.Command { } { - server, err := debug.Server( + debugServer, err := debug.Server( debug.Logger(logger), debug.Context(ctx), debug.Config(cfg), @@ -106,9 +106,8 @@ func Server(cfg *config.Config) *cli.Command { return err } - gr.Add(server.ListenAndServe, func(err error) { - logger.Error().Err(err) - _ = server.Shutdown(ctx) + gr.Add(debugServer.ListenAndServe, func(err error) { + _ = debugServer.Shutdown(ctx) cancel() }) }